@solidxai/core-ui 0.1.19 → 0.1.20-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/common/Link.d.ts.map +1 -1
- package/dist/components/common/Link.js +2 -1
- package/dist/components/common/Link.js.map +1 -1
- package/dist/components/common/Link.tsx +2 -1
- package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.d.ts +1 -0
- package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.d.ts.map +1 -1
- package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.js +109 -23
- package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.js.map +1 -1
- package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.tsx +155 -34
- package/dist/components/core/chatter/SolidChatter.js +2 -2
- package/dist/components/core/chatter/SolidChatter.js.map +1 -1
- package/dist/components/core/chatter/SolidChatter.tsx +2 -2
- package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.js +20 -19
- package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.js.map +1 -1
- package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.tsx +16 -16
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.d.ts.map +1 -1
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.js +3 -10
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.js.map +1 -1
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.tsx +3 -8
- package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.d.ts.map +1 -1
- package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.js +36 -9
- package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.js.map +1 -1
- package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.tsx +78 -7
- package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.d.ts +1 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.d.ts.map +1 -1
- package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.js +1 -1
- package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.js.map +1 -1
- package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.tsx +1 -1
- package/dist/components/core/extension/solid-core/moduleMetadata/list/RestoreModulePackageRowAction.d.ts +4 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/RestoreModulePackageRowAction.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/RestoreModulePackageRowAction.js +131 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/RestoreModulePackageRowAction.js.map +1 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/RestoreModulePackageRowAction.tsx +151 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/UpdateModulePackageRowAction.d.ts +4 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/UpdateModulePackageRowAction.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/UpdateModulePackageRowAction.js +13 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/UpdateModulePackageRowAction.js.map +1 -0
- package/dist/components/core/extension/solid-core/moduleMetadata/list/UpdateModulePackageRowAction.tsx +20 -0
- package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormView.js +4 -0
- package/dist/components/core/form/SolidFormView.js.map +1 -1
- package/dist/components/core/form/SolidFormView.tsx +4 -0
- package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.js +50 -15
- package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.tsx +22 -3
- package/dist/components/core/list/SolidListView.d.ts.map +1 -1
- package/dist/components/core/list/SolidListView.js +16 -3
- package/dist/components/core/list/SolidListView.js.map +1 -1
- package/dist/components/core/list/SolidListView.tsx +16 -2
- package/dist/components/core/list/columns/SolidMediaMultipleColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/SolidMediaMultipleColumn.js +4 -1
- package/dist/components/core/list/columns/SolidMediaMultipleColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidMediaMultipleColumn.tsx +4 -1
- package/dist/components/core/module/ModulePackageDialog.css +102 -0
- package/dist/components/core/module/ModulePackageDialog.d.ts +2 -1
- package/dist/components/core/module/ModulePackageDialog.d.ts.map +1 -1
- package/dist/components/core/module/ModulePackageDialog.js +216 -68
- package/dist/components/core/module/ModulePackageDialog.js.map +1 -1
- package/dist/components/core/module/ModulePackageDialog.tsx +356 -76
- package/dist/components/core/solid-agent/SolidAgentChat.d.ts.map +1 -1
- package/dist/components/core/solid-agent/SolidAgentChat.js +9 -3
- package/dist/components/core/solid-agent/SolidAgentChat.js.map +1 -1
- package/dist/components/core/solid-agent/SolidAgentChat.tsx +9 -4
- package/dist/components/core/solid-agent/SolidAgentMarkdown.d.ts.map +1 -1
- package/dist/components/core/solid-agent/SolidAgentMarkdown.js +25 -6
- package/dist/components/core/solid-agent/SolidAgentMarkdown.js.map +1 -1
- package/dist/components/core/solid-agent/SolidAgentMarkdown.tsx +15 -1
- package/dist/components/core/solid-agent/client/agentRuntime.d.ts +5 -0
- package/dist/components/core/solid-agent/client/agentRuntime.d.ts.map +1 -1
- package/dist/components/core/solid-agent/client/agentRuntime.js +77 -20
- package/dist/components/core/solid-agent/client/agentRuntime.js.map +1 -1
- package/dist/components/core/solid-agent/client/agentRuntime.ts +29 -1
- package/dist/components/core/solid-agent/client/agentSocket.d.ts +5 -1
- package/dist/components/core/solid-agent/client/agentSocket.d.ts.map +1 -1
- package/dist/components/core/solid-agent/client/agentSocket.js +27 -4
- package/dist/components/core/solid-agent/client/agentSocket.js.map +1 -1
- package/dist/components/core/solid-agent/client/agentSocket.ts +14 -3
- package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.js +2 -2
- package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.js.map +1 -1
- package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.tsx +5 -5
- package/dist/components/core/solid-agent/embed/agentEmbedProtocol.d.ts +2 -0
- package/dist/components/core/solid-agent/embed/agentEmbedProtocol.d.ts.map +1 -1
- package/dist/components/core/solid-agent/embed/agentEmbedProtocol.js +2 -2
- package/dist/components/core/solid-agent/embed/agentEmbedProtocol.js.map +1 -1
- package/dist/components/core/solid-agent/embed/agentEmbedProtocol.ts +4 -4
- package/dist/components/core/solid-agent/thread/AgentThread.d.ts.map +1 -1
- package/dist/components/core/solid-agent/thread/AgentThread.js +61 -26
- package/dist/components/core/solid-agent/thread/AgentThread.js.map +1 -1
- package/dist/components/core/solid-agent/thread/AgentThread.tsx +74 -40
- package/dist/components/core/solid-agent/thread/SolidAgentChatItem.d.ts +2 -1
- package/dist/components/core/solid-agent/thread/SolidAgentChatItem.d.ts.map +1 -1
- package/dist/components/core/solid-agent/thread/SolidAgentChatItem.js +2 -1
- package/dist/components/core/solid-agent/thread/SolidAgentChatItem.js.map +1 -1
- package/dist/components/core/solid-agent/thread/SolidAgentChatItem.tsx +3 -1
- package/dist/components/core/solid-agent/types.d.ts +3 -0
- package/dist/components/core/solid-agent/types.d.ts.map +1 -1
- package/dist/components/core/solid-agent/types.js +0 -9
- package/dist/components/core/solid-agent/types.js.map +1 -1
- package/dist/components/core/solid-agent/types.ts +4 -2
- package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.d.ts +1 -1
- package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.d.ts.map +1 -1
- package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.js +5 -2
- package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.js.map +1 -1
- package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.tsx +11 -5
- package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.js +3 -0
- package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.js.map +1 -1
- package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.tsx +4 -0
- package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.js +3 -0
- package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.js.map +1 -1
- package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.tsx +4 -0
- package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.js +3 -0
- package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.js.map +1 -1
- package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.tsx +4 -0
- package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.js +3 -0
- package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.js.map +1 -1
- package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.tsx +4 -0
- package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.js +3 -0
- package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.js.map +1 -1
- package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.tsx +4 -0
- package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.js +3 -0
- package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.js.map +1 -1
- package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.tsx +4 -0
- package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.js +3 -0
- package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.js.map +1 -1
- package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.tsx +4 -0
- package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.js +3 -0
- package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.js.map +1 -1
- package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.tsx +4 -0
- package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.js +3 -0
- package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.js.map +1 -1
- package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.tsx +4 -0
- package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.js +19 -0
- package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.js.map +1 -1
- package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.tsx +20 -0
- package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.js +3 -0
- package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.js.map +1 -1
- package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.tsx +4 -0
- package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.js +3 -0
- package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.js.map +1 -1
- package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.tsx +4 -0
- package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.js +3 -0
- package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.js.map +1 -1
- package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.tsx +4 -0
- package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.js +3 -0
- package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.js.map +1 -1
- package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.tsx +4 -0
- package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.js +3 -0
- package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.js.map +1 -1
- package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.tsx +4 -0
- package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.js +3 -0
- package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.js.map +1 -1
- package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.tsx +4 -0
- package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.js +3 -0
- package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.js.map +1 -1
- package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.tsx +4 -0
- package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.js +3 -0
- package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.js.map +1 -1
- package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.tsx +4 -0
- package/dist/components/core/solid-agent/widgets/solidChatWidgets.module.css +9 -1
- package/dist/components/core/users/CreateUser.d.ts.map +1 -1
- package/dist/components/core/users/CreateUser.js +23 -8
- package/dist/components/core/users/CreateUser.js.map +1 -1
- package/dist/components/core/users/CreateUser.tsx +10 -6
- package/dist/components/layout/AdminHeaderActions.d.ts.map +1 -1
- package/dist/components/layout/AdminHeaderActions.js +1 -29
- package/dist/components/layout/AdminHeaderActions.js.map +1 -1
- package/dist/components/layout/AdminHeaderActions.tsx +0 -42
- package/dist/components/layout/AdminTopHeader.js +2 -2
- package/dist/components/layout/AdminTopHeader.js.map +1 -1
- package/dist/components/layout/AdminTopHeader.tsx +2 -2
- package/dist/components/layout/AppSidebar.d.ts.map +1 -1
- package/dist/components/layout/AppSidebar.js +21 -5
- package/dist/components/layout/AppSidebar.js.map +1 -1
- package/dist/components/layout/AppSidebar.tsx +24 -6
- package/dist/components/layout/SolidAiStudioLayout.d.ts +0 -1
- package/dist/components/layout/SolidAiStudioLayout.d.ts.map +1 -1
- package/dist/components/layout/SolidAiStudioLayout.js +8 -161
- package/dist/components/layout/SolidAiStudioLayout.js.map +1 -1
- package/dist/components/layout/SolidAiStudioLayout.tsx +6 -136
- package/dist/components/layout/user-profile-menu.js +10 -10
- package/dist/components/layout/user-profile-menu.js.map +1 -1
- package/dist/components/layout/user-profile-menu.tsx +3 -3
- package/dist/components/shad-cn-ui/SolidLightbox.d.ts +2 -1
- package/dist/components/shad-cn-ui/SolidLightbox.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidLightbox.js +11 -4
- package/dist/components/shad-cn-ui/SolidLightbox.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidLightbox.tsx +14 -1
- package/dist/helpers/modelViewPersistence.d.ts +2 -0
- package/dist/helpers/modelViewPersistence.d.ts.map +1 -1
- package/dist/helpers/modelViewPersistence.js +72 -0
- package/dist/helpers/modelViewPersistence.js.map +1 -1
- package/dist/helpers/modelViewPersistence.ts +79 -0
- package/dist/helpers/registry.d.ts +6 -2
- package/dist/helpers/registry.d.ts.map +1 -1
- package/dist/helpers/registry.js +68 -3
- package/dist/helpers/registry.js.map +1 -1
- package/dist/helpers/registry.ts +62 -4
- package/dist/hooks/useModelsDevModels.d.ts +43 -0
- package/dist/hooks/useModelsDevModels.d.ts.map +1 -0
- package/dist/hooks/useModelsDevModels.js +81 -0
- package/dist/hooks/useModelsDevModels.js.map +1 -0
- package/dist/hooks/useModelsDevModels.ts +106 -0
- package/dist/hooks/useRouter.d.ts.map +1 -1
- package/dist/hooks/useRouter.js +3 -2
- package/dist/hooks/useRouter.js.map +1 -1
- package/dist/hooks/useRouter.ts +3 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.ts +4 -1
- package/dist/modules/solidUiModule.d.ts +3 -2
- package/dist/modules/solidUiModule.d.ts.map +1 -1
- package/dist/modules/solidUiModule.js +1 -1
- package/dist/modules/solidUiModule.js.map +1 -1
- package/dist/modules/solidUiModule.ts +5 -1
- package/dist/redux/api/moduleApi.d.ts +12 -2
- package/dist/redux/api/moduleApi.d.ts.map +1 -1
- package/dist/redux/api/moduleApi.js +33 -3
- package/dist/redux/api/moduleApi.js.map +1 -1
- package/dist/redux/api/moduleApi.ts +17 -2
- package/dist/redux/api/solidChatterMessageApi.d.ts +3 -1
- package/dist/redux/api/solidChatterMessageApi.d.ts.map +1 -1
- package/dist/redux/api/solidChatterMessageApi.js +9 -1
- package/dist/redux/api/solidChatterMessageApi.js.map +1 -1
- package/dist/redux/api/solidChatterMessageApi.ts +9 -1
- package/dist/redux/store/defaultStoreConfig.d.ts +9 -1
- package/dist/redux/store/defaultStoreConfig.d.ts.map +1 -1
- package/dist/resources/globals.css +30 -0
- package/dist/resources/solid-custom.css +10 -6
- package/dist/resources/solid-tailwind-generated.css +1 -1
- package/dist/routes/AppEventListener.d.ts.map +1 -1
- package/dist/routes/AppEventListener.js +3 -3
- package/dist/routes/AppEventListener.js.map +1 -1
- package/dist/routes/AppEventListener.tsx +2 -3
- package/dist/routes/pages/admin/core/AgentHubTagsField.css +21 -0
- package/dist/routes/pages/admin/core/AgentHubTagsField.d.ts +17 -0
- package/dist/routes/pages/admin/core/AgentHubTagsField.d.ts.map +1 -0
- package/dist/routes/pages/admin/core/AgentHubTagsField.js +171 -0
- package/dist/routes/pages/admin/core/AgentHubTagsField.js.map +1 -0
- package/dist/routes/pages/admin/core/AgentHubTagsField.tsx +125 -0
- package/dist/routes/pages/admin/core/AgentPersonaHistory.css +130 -0
- package/dist/routes/pages/admin/core/AgentPersonaHistory.d.ts +7 -0
- package/dist/routes/pages/admin/core/AgentPersonaHistory.d.ts.map +1 -0
- package/dist/routes/pages/admin/core/AgentPersonaHistory.js +228 -0
- package/dist/routes/pages/admin/core/AgentPersonaHistory.js.map +1 -0
- package/dist/routes/pages/admin/core/AgentPersonaHistory.tsx +234 -0
- package/dist/routes/pages/admin/core/AgentRegistryEditorPage.css +13 -14
- package/dist/routes/pages/admin/core/AgentRegistryEditorPage.d.ts.map +1 -1
- package/dist/routes/pages/admin/core/AgentRegistryEditorPage.js +218 -165
- package/dist/routes/pages/admin/core/AgentRegistryEditorPage.js.map +1 -1
- package/dist/routes/pages/admin/core/AgentRegistryEditorPage.tsx +221 -127
- package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.d.ts.map +1 -1
- package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.js +14 -69
- package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.js.map +1 -1
- package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.tsx +15 -83
- package/dist/routes/pages/admin/core/AgentToolActivationDialog.d.ts +11 -0
- package/dist/routes/pages/admin/core/AgentToolActivationDialog.d.ts.map +1 -0
- package/dist/routes/pages/admin/core/AgentToolActivationDialog.js +166 -0
- package/dist/routes/pages/admin/core/AgentToolActivationDialog.js.map +1 -0
- package/dist/routes/pages/admin/core/AgentToolActivationDialog.tsx +140 -0
- package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.css +26 -0
- package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.d.ts.map +1 -1
- package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.js +94 -71
- package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.js.map +1 -1
- package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.tsx +60 -52
- package/dist/routes/pages/admin/core/ArchivedChatterMessagesPage.d.ts +2 -0
- package/dist/routes/pages/admin/core/ArchivedChatterMessagesPage.d.ts.map +1 -0
- package/dist/routes/pages/admin/core/ArchivedChatterMessagesPage.js +108 -0
- package/dist/routes/pages/admin/core/ArchivedChatterMessagesPage.js.map +1 -0
- package/dist/routes/pages/admin/core/ArchivedChatterMessagesPage.tsx +96 -0
- package/dist/routes/solidRoutes.d.ts.map +1 -1
- package/dist/routes/solidRoutes.js +2 -0
- package/dist/routes/solidRoutes.js.map +1 -1
- package/dist/routes/solidRoutes.tsx +2 -0
- package/dist/types/extension-registry.d.ts +12 -0
- package/dist/types/extension-registry.d.ts.map +1 -1
- package/dist/types/extension-registry.js.map +1 -1
- package/dist/types/extension-registry.ts +15 -0
- package/dist/types/solid-core.d.ts +2 -0
- package/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppEventListener.d.ts","sourceRoot":"","sources":["../../src/routes/AppEventListener.tsx"],"names":[],"mappings":"AAkEA,wBAAgB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"AppEventListener.d.ts","sourceRoot":"","sources":["../../src/routes/AppEventListener.tsx"],"names":[],"mappings":"AAkEA,wBAAgB,gBAAgB,4CAwD/B"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { jsx as _jsx, Fragment as _Fragment
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { useEffect } from "react";
|
|
3
3
|
import { eventBus, AppEvents } from "../helpers/eventBus";
|
|
4
4
|
import { usePathname } from "../hooks/usePathname";
|
|
5
|
-
import { SolidStudio
|
|
5
|
+
import { SolidStudio } from "../components/layout/SolidAiStudioLayout";
|
|
6
6
|
import { useDispatch } from "react-redux";
|
|
7
7
|
import { showToast } from "../redux/features/toastSlice";
|
|
8
8
|
import { env } from "../adapters/env";
|
|
@@ -91,6 +91,6 @@ export function AppEventListener() {
|
|
|
91
91
|
}));
|
|
92
92
|
});
|
|
93
93
|
}, [dispatch]);
|
|
94
|
-
return (
|
|
94
|
+
return (_jsx(_Fragment, { children: window.self === window.top && !pathname.startsWith("/embed/agent/") && _jsx(SolidStudio, {}) }));
|
|
95
95
|
}
|
|
96
96
|
//# sourceMappingURL=AppEventListener.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppEventListener.js","sourceRoot":"","sources":["../../src/routes/AppEventListener.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"AppEventListener.js","sourceRoot":"","sources":["../../src/routes/AppEventListener.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect } from \"react\";\nimport { eventBus, AppEvents } from \"../helpers/eventBus\";\nimport { usePathname } from \"../hooks/usePathname\";\nimport { SolidStudio } from \"../components/layout/SolidAiStudioLayout\";\nimport { useDispatch } from \"react-redux\";\nimport { showToast } from \"../redux/features/toastSlice\";\nimport { env } from \"../adapters/env\";\nimport { backendHealthMonitor, type BackendHealthState } from \"../helpers/backendHealthMonitor\";\n\ntype GlobalErrorPayload = {\n status?: number | string;\n message?: string;\n error?: unknown;\n};\n\nfunction isDevMode() {\n const envName = (env(\"VITE_SOLIDX_ENV\") || \"\").toLowerCase();\n return envName === \"dev\" || envName === \"development\";\n}\n\nfunction formatUnknownValue(value: unknown) {\n if (typeof value === \"string\") return value;\n if (value === null || value === undefined) return \"\";\n\n try {\n return JSON.stringify(value, null, 2);\n } catch {\n return String(value);\n }\n}\n\nfunction buildDevErrorDetail(payload?: GlobalErrorPayload) {\n if (!payload) return undefined;\n\n const error = payload.error as any;\n const lines: string[] = [];\n\n if (payload.status !== undefined) {\n lines.push(`Status: ${String(payload.status)}`);\n }\n\n if (payload.message) {\n lines.push(`Summary: ${payload.message}`);\n }\n\n if (error?.message) {\n lines.push(`Error: ${error.message}`);\n }\n\n if (error?.code) {\n lines.push(`Code: ${error.code}`);\n }\n\n const responseData = error?.response?.data ?? error?.data;\n const responseText = formatUnknownValue(responseData);\n if (responseText) {\n lines.push(`Response:\\n${responseText}`);\n }\n\n if (error?.stack) {\n lines.push(`Stack:\\n${error.stack}`);\n }\n\n return lines.length > 0 ? lines.join(\"\\n\\n\") : undefined;\n}\n\nexport function AppEventListener() {\n const pathname = usePathname();\n const dispatch = useDispatch();\n\n useEffect(() => {\n const off = eventBus.on<GlobalErrorPayload>(AppEvents.GlobalError, (payload) => {\n if (!pathname.startsWith(\"/admin\") && !pathname.startsWith(\"/auth\")) {\n return;\n }\n\n dispatch(\n showToast({\n severity: \"error\",\n summary: payload?.message || \"Something went wrong\",\n detail: isDevMode() ? buildDevErrorDetail(payload) : undefined,\n sticky: isDevMode(),\n life: isDevMode() ? 10000 : 4000,\n })\n );\n });\n return () => off();\n }, [dispatch, pathname]);\n\n useEffect(() => {\n let previousStatus: BackendHealthState[\"status\"] = backendHealthMonitor.getState().status;\n\n return backendHealthMonitor.subscribe((state) => {\n const nextStatus = state.status;\n const didBecomeOffline = previousStatus !== \"offline\" && nextStatus === \"offline\";\n previousStatus = nextStatus;\n\n if (!didBecomeOffline) {\n return;\n }\n\n dispatch(\n showToast({\n severity: \"error\",\n summary: \"Server unreachable\",\n detail: isDevMode() ? buildDevErrorDetail({\n status: state.statusCode,\n message: state.message || \"Unable to reach the server. Please try again later.\",\n error: state.error,\n }) : `We have been trying to reconnect to the server for over ${Math.max(1, Math.round(state.unavailableToastDelayMs / 1000))} seconds.`,\n sticky: isDevMode(),\n life: isDevMode() ? 10000 : 5000,\n })\n );\n });\n }, [dispatch]);\n\n return (\n <>\n {window.self === window.top && !pathname.startsWith(\"/embed/agent/\") && <SolidStudio />}\n </>\n );\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useEffect } from "react";
|
|
2
2
|
import { eventBus, AppEvents } from "../helpers/eventBus";
|
|
3
3
|
import { usePathname } from "../hooks/usePathname";
|
|
4
|
-
import { SolidStudio
|
|
4
|
+
import { SolidStudio } from "../components/layout/SolidAiStudioLayout";
|
|
5
5
|
import { useDispatch } from "react-redux";
|
|
6
6
|
import { showToast } from "../redux/features/toastSlice";
|
|
7
7
|
import { env } from "../adapters/env";
|
|
@@ -117,8 +117,7 @@ export function AppEventListener() {
|
|
|
117
117
|
|
|
118
118
|
return (
|
|
119
119
|
<>
|
|
120
|
-
<SolidStudio />
|
|
121
|
-
<PreviewModePersist />
|
|
120
|
+
{window.self === window.top && !pathname.startsWith("/embed/agent/") && <SolidStudio />}
|
|
122
121
|
</>
|
|
123
122
|
);
|
|
124
123
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
.agent-hub-tags { display:flex; min-width:0; flex-direction:column; gap:.5rem; font-size:.875rem; }
|
|
2
|
+
.agent-hub-tags > label { display:flex; align-items:center; gap:.5rem; font-weight:600; }
|
|
3
|
+
.agent-hub-tags__count { min-width:1.3rem; padding:.1rem .35rem; border-radius:999px; background:var(--surface-ground,var(--background)); color:var(--text-color-secondary,var(--muted-foreground)); text-align:center; font-size:.7rem; }
|
|
4
|
+
.agent-hub-tags__selection { display:flex; align-items:center; flex-wrap:wrap; gap:.4rem; min-height:1.75rem; }
|
|
5
|
+
.agent-hub-tags__chip { display:inline-flex; align-items:center; gap:.3rem; max-width:100%; padding:.25rem .6rem; border-radius:999px; color:var(--primary-color,var(--primary)); background:color-mix(in srgb,var(--primary-color,var(--primary)) 11%,transparent); font-size:.78rem; overflow-wrap:anywhere; }
|
|
6
|
+
.agent-hub-tags__chip button { display:grid; flex-shrink:0; width:1.2rem; height:1.2rem; place-items:center; padding:0; border:0; border-radius:50%; background:transparent; color:inherit; cursor:pointer; }
|
|
7
|
+
.agent-hub-tags__chip button:hover { background:color-mix(in srgb,var(--primary-color,var(--primary)) 15%,transparent); }
|
|
8
|
+
.agent-hub-tags__search { display:flex; align-items:center; gap:.5rem; padding:.35rem .5rem; border:1px solid var(--surface-border,var(--border)); border-radius:.5rem; background:var(--surface-ground,var(--background)); }
|
|
9
|
+
.agent-hub-tags__search:focus-within { border-color:var(--primary-color,var(--primary)); }
|
|
10
|
+
.agent-hub-tags__search > svg { flex-shrink:0; color:var(--text-color-secondary,var(--muted-foreground)); }
|
|
11
|
+
.agent-hub-tags__search input { flex:1; width:100%; min-width:0; min-height:2rem; padding:0; border:0; outline:0; color:inherit; background:transparent; font:inherit; font-weight:400; }
|
|
12
|
+
.agent-hub-tags__search .solid-button { flex-shrink:0; }
|
|
13
|
+
.agent-hub-tags__options { max-height:12rem; overflow-y:auto; padding:.3rem; border:1px solid var(--surface-border,var(--border)); border-radius:.5rem; background:var(--surface-card,var(--card)); }
|
|
14
|
+
.agent-hub-tags__options > button { display:flex; justify-content:space-between; align-items:center; gap:.5rem; width:100%; padding:.5rem .6rem; border:0; border-radius:.3rem; background:transparent; color:inherit; text-align:left; font:inherit; overflow-wrap:anywhere; cursor:pointer; }
|
|
15
|
+
.agent-hub-tags__options > button:hover,.agent-hub-tags__options > button.is-active { background:color-mix(in srgb,var(--primary-color,var(--primary)) 8%,transparent); }
|
|
16
|
+
.agent-hub-tags__empty,.agent-hub-tags__hint { color:var(--text-color-secondary,var(--muted-foreground)); font-size:.8rem; font-weight:400; }
|
|
17
|
+
.agent-hub-tags__options > .agent-hub-tags__empty { padding:.6rem; }
|
|
18
|
+
.agent-hub-tags__error { color:var(--red-500,#dc2626); font-size:.8rem; }
|
|
19
|
+
.agent-hub-tags__error button { padding:0; border:0; background:transparent; color:inherit; text-decoration:underline; cursor:pointer; }
|
|
20
|
+
.agent-hub-tags button:focus-visible { outline:2px solid var(--primary-color,var(--primary)); outline-offset:2px; }
|
|
21
|
+
.agent-hub-tags button:disabled { cursor:default; opacity:.55; }
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import "./AgentHubTagsField.css";
|
|
2
|
+
export type AgentHubTag = {
|
|
3
|
+
id: number;
|
|
4
|
+
name: string;
|
|
5
|
+
};
|
|
6
|
+
export declare function agentHubTagsFrom(value: unknown): AgentHubTag[];
|
|
7
|
+
export declare function agentHubTagsPayload(tags: AgentHubTag[]): {
|
|
8
|
+
tagsIds: number[];
|
|
9
|
+
tagsCommand: string;
|
|
10
|
+
};
|
|
11
|
+
export declare function AgentHubTagsField({ value, onChange, disabled, onBusyChange }: {
|
|
12
|
+
value: AgentHubTag[];
|
|
13
|
+
onChange: (tags: AgentHubTag[]) => void;
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
onBusyChange?: (busy: boolean) => void;
|
|
16
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
//# sourceMappingURL=AgentHubTagsField.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentHubTagsField.d.ts","sourceRoot":"","sources":["../../../../../src/routes/pages/admin/core/AgentHubTagsField.tsx"],"names":[],"mappings":"AAIA,OAAO,yBAAyB,CAAC;AAEjC,MAAM,MAAM,WAAW,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,EAAE,CAS9D;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,EAAE;;;EAEtD;AAID,wBAAgB,iBAAiB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAgB,EAAE,YAAY,EAAE,EAAE;IACrF,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,QAAQ,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC,2CA8FA"}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
11
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
12
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
13
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
14
|
+
function step(op) {
|
|
15
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
16
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
17
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
18
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
19
|
+
switch (op[0]) {
|
|
20
|
+
case 0: case 1: t = op; break;
|
|
21
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
22
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
23
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
24
|
+
default:
|
|
25
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
26
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
27
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
28
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
29
|
+
if (t[2]) _.ops.pop();
|
|
30
|
+
_.trys.pop(); continue;
|
|
31
|
+
}
|
|
32
|
+
op = body.call(thisArg, _);
|
|
33
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
34
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
38
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
39
|
+
if (ar || !(i in from)) {
|
|
40
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
41
|
+
ar[i] = from[i];
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
45
|
+
};
|
|
46
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
47
|
+
import React from "react";
|
|
48
|
+
import { Plus, Search, X } from "lucide-react";
|
|
49
|
+
import { createSolidEntityApi } from "../../../../redux/api/solidEntityApi";
|
|
50
|
+
import { SolidButton } from "../../../../components/shad-cn-ui/SolidButton";
|
|
51
|
+
import "./AgentHubTagsField.css";
|
|
52
|
+
export function agentHubTagsFrom(value) {
|
|
53
|
+
if (!Array.isArray(value))
|
|
54
|
+
return [];
|
|
55
|
+
var seen = new Set();
|
|
56
|
+
return value.flatMap(function (tag) {
|
|
57
|
+
var id = Number(tag === null || tag === void 0 ? void 0 : tag.id);
|
|
58
|
+
if (!Number.isInteger(id) || id <= 0 || typeof (tag === null || tag === void 0 ? void 0 : tag.name) !== "string" || seen.has(id))
|
|
59
|
+
return [];
|
|
60
|
+
seen.add(id);
|
|
61
|
+
return [{ id: id, name: tag.name }];
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
export function agentHubTagsPayload(tags) {
|
|
65
|
+
return { tagsIds: tags.map(function (tag) { return tag.id; }), tagsCommand: tags.length ? "set" : "clear" };
|
|
66
|
+
}
|
|
67
|
+
var tagApi = createSolidEntityApi("agentHubTag");
|
|
68
|
+
export function AgentHubTagsField(_a) {
|
|
69
|
+
var _this = this;
|
|
70
|
+
var value = _a.value, onChange = _a.onChange, _b = _a.disabled, disabled = _b === void 0 ? false : _b, onBusyChange = _a.onBusyChange;
|
|
71
|
+
var _c = tagApi.useGetSolidEntitiesQuery("offset=0&limit=1000&fields[0]=id&fields[1]=name", { skip: disabled }), data = _c.data, isFetching = _c.isFetching, isError = _c.isError, refetch = _c.refetch;
|
|
72
|
+
var _d = tagApi.useCreateSolidEntityMutation(), createTag = _d[0], isCreating = _d[1].isLoading;
|
|
73
|
+
var _e = React.useState(""), query = _e[0], setQuery = _e[1];
|
|
74
|
+
var _f = React.useState(false), open = _f[0], setOpen = _f[1];
|
|
75
|
+
var _g = React.useState(-1), activeIndex = _g[0], setActiveIndex = _g[1];
|
|
76
|
+
var _h = React.useState(""), error = _h[0], setError = _h[1];
|
|
77
|
+
var inputRef = React.useRef(null);
|
|
78
|
+
var fieldId = React.useId();
|
|
79
|
+
var name = query.trim();
|
|
80
|
+
var catalog = agentHubTagsFrom(data === null || data === void 0 ? void 0 : data.records);
|
|
81
|
+
var exact = __spreadArray(__spreadArray([], catalog, true), value, true).find(function (tag) { return tag.name.toLowerCase() === name.toLowerCase(); });
|
|
82
|
+
var options = catalog.filter(function (tag) { return !value.some(function (selected) { return selected.id === tag.id; })
|
|
83
|
+
&& tag.name.toLowerCase().includes(name.toLowerCase()); }).sort(function (a, b) { return a.name.localeCompare(b.name); });
|
|
84
|
+
var canCreate = Boolean(name && !exact && !isFetching && !isError);
|
|
85
|
+
var select = function (tag) {
|
|
86
|
+
var _a;
|
|
87
|
+
if (!value.some(function (selected) { return selected.id === tag.id; }))
|
|
88
|
+
onChange(__spreadArray(__spreadArray([], value, true), [tag], false));
|
|
89
|
+
setQuery("");
|
|
90
|
+
setActiveIndex(-1);
|
|
91
|
+
setError("");
|
|
92
|
+
(_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
93
|
+
};
|
|
94
|
+
var add = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
95
|
+
var result, depth, created, failure_1, refreshed, existing, message;
|
|
96
|
+
var _a, _b, _c, _d, _e, _f;
|
|
97
|
+
return __generator(this, function (_g) {
|
|
98
|
+
switch (_g.label) {
|
|
99
|
+
case 0:
|
|
100
|
+
if (disabled || isCreating || !name)
|
|
101
|
+
return [2 /*return*/];
|
|
102
|
+
if (exact) {
|
|
103
|
+
select(exact);
|
|
104
|
+
return [2 /*return*/];
|
|
105
|
+
}
|
|
106
|
+
if (!canCreate)
|
|
107
|
+
return [2 /*return*/];
|
|
108
|
+
setError("");
|
|
109
|
+
onBusyChange === null || onBusyChange === void 0 ? void 0 : onBusyChange(true);
|
|
110
|
+
_g.label = 1;
|
|
111
|
+
case 1:
|
|
112
|
+
_g.trys.push([1, 3, 5, 6]);
|
|
113
|
+
return [4 /*yield*/, createTag({ name: name }).unwrap()];
|
|
114
|
+
case 2:
|
|
115
|
+
result = _g.sent();
|
|
116
|
+
for (depth = 0; depth < 3 && result && !result.id; depth += 1)
|
|
117
|
+
result = result.data;
|
|
118
|
+
created = agentHubTagsFrom([result])[0];
|
|
119
|
+
if (!created)
|
|
120
|
+
throw new Error("The tag could not be loaded. Search for it again.");
|
|
121
|
+
select(created);
|
|
122
|
+
return [3 /*break*/, 6];
|
|
123
|
+
case 3:
|
|
124
|
+
failure_1 = _g.sent();
|
|
125
|
+
return [4 /*yield*/, refetch()];
|
|
126
|
+
case 4:
|
|
127
|
+
refreshed = _g.sent();
|
|
128
|
+
existing = agentHubTagsFrom((_a = refreshed.data) === null || _a === void 0 ? void 0 : _a.records).find(function (tag) { return tag.name.toLowerCase() === name.toLowerCase(); });
|
|
129
|
+
if (existing)
|
|
130
|
+
select(existing);
|
|
131
|
+
else {
|
|
132
|
+
message = (_f = (_d = (_c = (_b = failure_1 === null || failure_1 === void 0 ? void 0 : failure_1.data) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.message) !== null && _d !== void 0 ? _d : (_e = failure_1 === null || failure_1 === void 0 ? void 0 : failure_1.data) === null || _e === void 0 ? void 0 : _e.message) !== null && _f !== void 0 ? _f : failure_1 === null || failure_1 === void 0 ? void 0 : failure_1.message;
|
|
133
|
+
setError(typeof message === "string" ? message : "Could not create this tag. Try again.");
|
|
134
|
+
}
|
|
135
|
+
return [3 /*break*/, 6];
|
|
136
|
+
case 5:
|
|
137
|
+
onBusyChange === null || onBusyChange === void 0 ? void 0 : onBusyChange(false);
|
|
138
|
+
return [7 /*endfinally*/];
|
|
139
|
+
case 6: return [2 /*return*/];
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
}); };
|
|
143
|
+
return _jsxs("div", { className: "agent-hub-tags", onBlur: function (event) {
|
|
144
|
+
if (!event.currentTarget.contains(event.relatedTarget))
|
|
145
|
+
setOpen(false);
|
|
146
|
+
}, children: [_jsxs("label", { htmlFor: fieldId, children: ["Tags ", _jsx("span", { className: "agent-hub-tags__count", children: value.length })] }), _jsxs("div", { className: "agent-hub-tags__selection", children: [value.map(function (tag) { return _jsxs("span", { className: "agent-hub-tags__chip", children: [tag.name, !disabled && _jsx("button", { type: "button", disabled: isCreating, "aria-label": "Remove ".concat(tag.name), onClick: function () { return onChange(value.filter(function (selected) { return selected.id !== tag.id; })); }, children: _jsx(X, { size: 13 }) })] }, tag.id); }), !value.length && _jsx("span", { className: "agent-hub-tags__empty", children: "No tags selected" })] }), !disabled && _jsxs(_Fragment, { children: [_jsxs("div", { className: "agent-hub-tags__search", children: [_jsx(Search, { size: 16, "aria-hidden": "true" }), _jsx("input", { ref: inputRef, id: fieldId, role: "combobox", autoComplete: "off", "aria-expanded": open, "aria-controls": "".concat(fieldId, "-options"), "aria-autocomplete": "list", "aria-activedescendant": open && options[activeIndex] ? "".concat(fieldId, "-option-").concat(activeIndex) : undefined, disabled: isCreating, value: query, placeholder: "Search or create tags\u2026", onFocus: function () { return setOpen(true); }, onChange: function (event) { setQuery(event.target.value); setActiveIndex(-1); setOpen(true); setError(""); }, onKeyDown: function (event) {
|
|
147
|
+
if (event.key === "Escape") {
|
|
148
|
+
event.preventDefault();
|
|
149
|
+
setOpen(false);
|
|
150
|
+
}
|
|
151
|
+
if (event.key === "ArrowDown") {
|
|
152
|
+
event.preventDefault();
|
|
153
|
+
setOpen(true);
|
|
154
|
+
setActiveIndex(function (index) { return Math.min(index + 1, options.length - 1); });
|
|
155
|
+
}
|
|
156
|
+
if (event.key === "ArrowUp") {
|
|
157
|
+
event.preventDefault();
|
|
158
|
+
setActiveIndex(function (index) { return Math.max(index - 1, 0); });
|
|
159
|
+
}
|
|
160
|
+
if (event.key === "Enter") {
|
|
161
|
+
event.preventDefault();
|
|
162
|
+
if (open && options[activeIndex])
|
|
163
|
+
select(options[activeIndex]);
|
|
164
|
+
else
|
|
165
|
+
void add();
|
|
166
|
+
}
|
|
167
|
+
} }), name && _jsx(SolidButton, { variant: "secondary", size: "small", loading: isCreating, disabled: !exact && !canCreate, onClick: function () { return void add(); }, leftIcon: _jsx(Plus, { size: 14 }), children: exact ? "Select" : "Create tag" })] }), isError && _jsxs("div", { className: "agent-hub-tags__error", role: "alert", children: ["Tags could not be loaded. ", _jsx("button", { type: "button", onClick: function () { return void refetch(); }, children: "Retry" })] }), open && _jsx("div", { className: "agent-hub-tags__options", id: "".concat(fieldId, "-options"), role: "listbox", "aria-label": "Available tags", children: isFetching ? _jsx("div", { className: "agent-hub-tags__empty", role: "status", children: "Loading tags\u2026" })
|
|
168
|
+
: options.length ? options.map(function (tag, index) { return _jsxs("button", { id: "".concat(fieldId, "-option-").concat(index), type: "button", role: "option", "aria-selected": false, disabled: isCreating, className: activeIndex === index ? "is-active" : undefined, onMouseDown: function (event) { return event.preventDefault(); }, onClick: function () { return select(tag); }, children: [tag.name, _jsx(Plus, { size: 14 })] }, tag.id); })
|
|
169
|
+
: !isError && _jsx("div", { className: "agent-hub-tags__empty", children: exact ? "Tag already selected." : canCreate ? "Create \u201C".concat(name, "\u201D to add it.") : "No tags available. Type a name to create one." }) }), error && _jsx("small", { className: "agent-hub-tags__error", role: "alert", children: error }), _jsx("small", { className: "agent-hub-tags__hint", children: "Tags are shared across agents, skills, and tools." })] })] });
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=AgentHubTagsField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentHubTagsField.js","sourceRoot":"","sources":["../../../../../src/routes/pages/admin/core/AgentHubTagsField.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from \"react\";\nimport { Plus, Search, X } from \"lucide-react\";\nimport { createSolidEntityApi } from \"../../../../redux/api/solidEntityApi\";\nimport { SolidButton } from \"../../../../components/shad-cn-ui/SolidButton\";\nimport \"./AgentHubTagsField.css\";\n\nexport type AgentHubTag = { id: number; name: string };\n\nexport function agentHubTagsFrom(value: unknown): AgentHubTag[] {\n if (!Array.isArray(value)) return [];\n const seen = new Set<number>();\n return value.flatMap((tag) => {\n const id = Number(tag?.id);\n if (!Number.isInteger(id) || id <= 0 || typeof tag?.name !== \"string\" || seen.has(id)) return [];\n seen.add(id);\n return [{ id, name: tag.name }];\n });\n}\n\nexport function agentHubTagsPayload(tags: AgentHubTag[]) {\n return { tagsIds: tags.map((tag) => tag.id), tagsCommand: tags.length ? \"set\" : \"clear\" };\n}\n\nconst tagApi = createSolidEntityApi(\"agentHubTag\");\n\nexport function AgentHubTagsField({ value, onChange, disabled = false, onBusyChange }: {\n value: AgentHubTag[];\n onChange: (tags: AgentHubTag[]) => void;\n disabled?: boolean;\n onBusyChange?: (busy: boolean) => void;\n}) {\n const { data, isFetching, isError, refetch } = tagApi.useGetSolidEntitiesQuery(\n \"offset=0&limit=1000&fields[0]=id&fields[1]=name\", { skip: disabled });\n const [createTag, { isLoading: isCreating }] = tagApi.useCreateSolidEntityMutation();\n const [query, setQuery] = React.useState(\"\");\n const [open, setOpen] = React.useState(false);\n const [activeIndex, setActiveIndex] = React.useState(-1);\n const [error, setError] = React.useState(\"\");\n const inputRef = React.useRef<HTMLInputElement>(null);\n const fieldId = React.useId();\n const name = query.trim();\n const catalog = agentHubTagsFrom(data?.records);\n const exact = [...catalog, ...value].find((tag) => tag.name.toLowerCase() === name.toLowerCase());\n const options = catalog.filter((tag) => !value.some((selected) => selected.id === tag.id)\n && tag.name.toLowerCase().includes(name.toLowerCase())).sort((a, b) => a.name.localeCompare(b.name));\n const canCreate = Boolean(name && !exact && !isFetching && !isError);\n\n const select = (tag: AgentHubTag) => {\n if (!value.some((selected) => selected.id === tag.id)) onChange([...value, tag]);\n setQuery(\"\");\n setActiveIndex(-1);\n setError(\"\");\n inputRef.current?.focus();\n };\n\n const add = async () => {\n if (disabled || isCreating || !name) return;\n if (exact) { select(exact); return; }\n if (!canCreate) return;\n setError(\"\");\n onBusyChange?.(true);\n try {\n let result = await createTag({ name }).unwrap();\n for (let depth = 0; depth < 3 && result && !result.id; depth += 1) result = result.data;\n const created = agentHubTagsFrom([result])[0];\n if (!created) throw new Error(\"The tag could not be loaded. Search for it again.\");\n select(created);\n } catch (failure: any) {\n const refreshed = await refetch();\n const existing = agentHubTagsFrom(refreshed.data?.records).find((tag) => tag.name.toLowerCase() === name.toLowerCase());\n if (existing) select(existing);\n else {\n const message = failure?.data?.data?.message ?? failure?.data?.message ?? failure?.message;\n setError(typeof message === \"string\" ? message : \"Could not create this tag. Try again.\");\n }\n } finally {\n onBusyChange?.(false);\n }\n };\n\n return <div className=\"agent-hub-tags\" onBlur={(event) => {\n if (!event.currentTarget.contains(event.relatedTarget as Node | null)) setOpen(false);\n }}>\n <label htmlFor={fieldId}>Tags <span className=\"agent-hub-tags__count\">{value.length}</span></label>\n <div className=\"agent-hub-tags__selection\">\n {value.map((tag) => <span className=\"agent-hub-tags__chip\" key={tag.id}>{tag.name}\n {!disabled && <button type=\"button\" disabled={isCreating} aria-label={`Remove ${tag.name}`}\n onClick={() => onChange(value.filter((selected) => selected.id !== tag.id))}><X size={13} /></button>}\n </span>)}\n {!value.length && <span className=\"agent-hub-tags__empty\">No tags selected</span>}\n </div>\n {!disabled && <>\n <div className=\"agent-hub-tags__search\">\n <Search size={16} aria-hidden=\"true\" />\n <input ref={inputRef} id={fieldId} role=\"combobox\" autoComplete=\"off\" aria-expanded={open}\n aria-controls={`${fieldId}-options`} aria-autocomplete=\"list\"\n aria-activedescendant={open && options[activeIndex] ? `${fieldId}-option-${activeIndex}` : undefined}\n disabled={isCreating} value={query} placeholder=\"Search or create tags…\"\n onFocus={() => setOpen(true)}\n onChange={(event) => { setQuery(event.target.value); setActiveIndex(-1); setOpen(true); setError(\"\"); }}\n onKeyDown={(event) => {\n if (event.key === \"Escape\") { event.preventDefault(); setOpen(false); }\n if (event.key === \"ArrowDown\") { event.preventDefault(); setOpen(true); setActiveIndex((index) => Math.min(index + 1, options.length - 1)); }\n if (event.key === \"ArrowUp\") { event.preventDefault(); setActiveIndex((index) => Math.max(index - 1, 0)); }\n if (event.key === \"Enter\") { event.preventDefault(); if (open && options[activeIndex]) select(options[activeIndex]); else void add(); }\n }} />\n {name && <SolidButton variant=\"secondary\" size=\"small\" loading={isCreating}\n disabled={!exact && !canCreate} onClick={() => void add()} leftIcon={<Plus size={14} />}>\n {exact ? \"Select\" : \"Create tag\"}\n </SolidButton>}\n </div>\n {isError && <div className=\"agent-hub-tags__error\" role=\"alert\">Tags could not be loaded. <button type=\"button\" onClick={() => void refetch()}>Retry</button></div>}\n {open && <div className=\"agent-hub-tags__options\" id={`${fieldId}-options`} role=\"listbox\" aria-label=\"Available tags\">\n {isFetching ? <div className=\"agent-hub-tags__empty\" role=\"status\">Loading tags…</div>\n : options.length ? options.map((tag, index) => <button key={tag.id} id={`${fieldId}-option-${index}`}\n type=\"button\" role=\"option\" aria-selected={false} disabled={isCreating}\n className={activeIndex === index ? \"is-active\" : undefined}\n onMouseDown={(event) => event.preventDefault()} onClick={() => select(tag)}>{tag.name}<Plus size={14} /></button>)\n : !isError && <div className=\"agent-hub-tags__empty\">{exact ? \"Tag already selected.\" : canCreate ? `Create “${name}” to add it.` : \"No tags available. Type a name to create one.\"}</div>}\n </div>}\n {error && <small className=\"agent-hub-tags__error\" role=\"alert\">{error}</small>}\n <small className=\"agent-hub-tags__hint\">Tags are shared across agents, skills, and tools.</small>\n </>}\n </div>;\n}\n"]}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Plus, Search, X } from "lucide-react";
|
|
3
|
+
import { createSolidEntityApi } from "../../../../redux/api/solidEntityApi";
|
|
4
|
+
import { SolidButton } from "../../../../components/shad-cn-ui/SolidButton";
|
|
5
|
+
import "./AgentHubTagsField.css";
|
|
6
|
+
|
|
7
|
+
export type AgentHubTag = { id: number; name: string };
|
|
8
|
+
|
|
9
|
+
export function agentHubTagsFrom(value: unknown): AgentHubTag[] {
|
|
10
|
+
if (!Array.isArray(value)) return [];
|
|
11
|
+
const seen = new Set<number>();
|
|
12
|
+
return value.flatMap((tag) => {
|
|
13
|
+
const id = Number(tag?.id);
|
|
14
|
+
if (!Number.isInteger(id) || id <= 0 || typeof tag?.name !== "string" || seen.has(id)) return [];
|
|
15
|
+
seen.add(id);
|
|
16
|
+
return [{ id, name: tag.name }];
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export function agentHubTagsPayload(tags: AgentHubTag[]) {
|
|
21
|
+
return { tagsIds: tags.map((tag) => tag.id), tagsCommand: tags.length ? "set" : "clear" };
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const tagApi = createSolidEntityApi("agentHubTag");
|
|
25
|
+
|
|
26
|
+
export function AgentHubTagsField({ value, onChange, disabled = false, onBusyChange }: {
|
|
27
|
+
value: AgentHubTag[];
|
|
28
|
+
onChange: (tags: AgentHubTag[]) => void;
|
|
29
|
+
disabled?: boolean;
|
|
30
|
+
onBusyChange?: (busy: boolean) => void;
|
|
31
|
+
}) {
|
|
32
|
+
const { data, isFetching, isError, refetch } = tagApi.useGetSolidEntitiesQuery(
|
|
33
|
+
"offset=0&limit=1000&fields[0]=id&fields[1]=name", { skip: disabled });
|
|
34
|
+
const [createTag, { isLoading: isCreating }] = tagApi.useCreateSolidEntityMutation();
|
|
35
|
+
const [query, setQuery] = React.useState("");
|
|
36
|
+
const [open, setOpen] = React.useState(false);
|
|
37
|
+
const [activeIndex, setActiveIndex] = React.useState(-1);
|
|
38
|
+
const [error, setError] = React.useState("");
|
|
39
|
+
const inputRef = React.useRef<HTMLInputElement>(null);
|
|
40
|
+
const fieldId = React.useId();
|
|
41
|
+
const name = query.trim();
|
|
42
|
+
const catalog = agentHubTagsFrom(data?.records);
|
|
43
|
+
const exact = [...catalog, ...value].find((tag) => tag.name.toLowerCase() === name.toLowerCase());
|
|
44
|
+
const options = catalog.filter((tag) => !value.some((selected) => selected.id === tag.id)
|
|
45
|
+
&& tag.name.toLowerCase().includes(name.toLowerCase())).sort((a, b) => a.name.localeCompare(b.name));
|
|
46
|
+
const canCreate = Boolean(name && !exact && !isFetching && !isError);
|
|
47
|
+
|
|
48
|
+
const select = (tag: AgentHubTag) => {
|
|
49
|
+
if (!value.some((selected) => selected.id === tag.id)) onChange([...value, tag]);
|
|
50
|
+
setQuery("");
|
|
51
|
+
setActiveIndex(-1);
|
|
52
|
+
setError("");
|
|
53
|
+
inputRef.current?.focus();
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
const add = async () => {
|
|
57
|
+
if (disabled || isCreating || !name) return;
|
|
58
|
+
if (exact) { select(exact); return; }
|
|
59
|
+
if (!canCreate) return;
|
|
60
|
+
setError("");
|
|
61
|
+
onBusyChange?.(true);
|
|
62
|
+
try {
|
|
63
|
+
let result = await createTag({ name }).unwrap();
|
|
64
|
+
for (let depth = 0; depth < 3 && result && !result.id; depth += 1) result = result.data;
|
|
65
|
+
const created = agentHubTagsFrom([result])[0];
|
|
66
|
+
if (!created) throw new Error("The tag could not be loaded. Search for it again.");
|
|
67
|
+
select(created);
|
|
68
|
+
} catch (failure: any) {
|
|
69
|
+
const refreshed = await refetch();
|
|
70
|
+
const existing = agentHubTagsFrom(refreshed.data?.records).find((tag) => tag.name.toLowerCase() === name.toLowerCase());
|
|
71
|
+
if (existing) select(existing);
|
|
72
|
+
else {
|
|
73
|
+
const message = failure?.data?.data?.message ?? failure?.data?.message ?? failure?.message;
|
|
74
|
+
setError(typeof message === "string" ? message : "Could not create this tag. Try again.");
|
|
75
|
+
}
|
|
76
|
+
} finally {
|
|
77
|
+
onBusyChange?.(false);
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
return <div className="agent-hub-tags" onBlur={(event) => {
|
|
82
|
+
if (!event.currentTarget.contains(event.relatedTarget as Node | null)) setOpen(false);
|
|
83
|
+
}}>
|
|
84
|
+
<label htmlFor={fieldId}>Tags <span className="agent-hub-tags__count">{value.length}</span></label>
|
|
85
|
+
<div className="agent-hub-tags__selection">
|
|
86
|
+
{value.map((tag) => <span className="agent-hub-tags__chip" key={tag.id}>{tag.name}
|
|
87
|
+
{!disabled && <button type="button" disabled={isCreating} aria-label={`Remove ${tag.name}`}
|
|
88
|
+
onClick={() => onChange(value.filter((selected) => selected.id !== tag.id))}><X size={13} /></button>}
|
|
89
|
+
</span>)}
|
|
90
|
+
{!value.length && <span className="agent-hub-tags__empty">No tags selected</span>}
|
|
91
|
+
</div>
|
|
92
|
+
{!disabled && <>
|
|
93
|
+
<div className="agent-hub-tags__search">
|
|
94
|
+
<Search size={16} aria-hidden="true" />
|
|
95
|
+
<input ref={inputRef} id={fieldId} role="combobox" autoComplete="off" aria-expanded={open}
|
|
96
|
+
aria-controls={`${fieldId}-options`} aria-autocomplete="list"
|
|
97
|
+
aria-activedescendant={open && options[activeIndex] ? `${fieldId}-option-${activeIndex}` : undefined}
|
|
98
|
+
disabled={isCreating} value={query} placeholder="Search or create tags…"
|
|
99
|
+
onFocus={() => setOpen(true)}
|
|
100
|
+
onChange={(event) => { setQuery(event.target.value); setActiveIndex(-1); setOpen(true); setError(""); }}
|
|
101
|
+
onKeyDown={(event) => {
|
|
102
|
+
if (event.key === "Escape") { event.preventDefault(); setOpen(false); }
|
|
103
|
+
if (event.key === "ArrowDown") { event.preventDefault(); setOpen(true); setActiveIndex((index) => Math.min(index + 1, options.length - 1)); }
|
|
104
|
+
if (event.key === "ArrowUp") { event.preventDefault(); setActiveIndex((index) => Math.max(index - 1, 0)); }
|
|
105
|
+
if (event.key === "Enter") { event.preventDefault(); if (open && options[activeIndex]) select(options[activeIndex]); else void add(); }
|
|
106
|
+
}} />
|
|
107
|
+
{name && <SolidButton variant="secondary" size="small" loading={isCreating}
|
|
108
|
+
disabled={!exact && !canCreate} onClick={() => void add()} leftIcon={<Plus size={14} />}>
|
|
109
|
+
{exact ? "Select" : "Create tag"}
|
|
110
|
+
</SolidButton>}
|
|
111
|
+
</div>
|
|
112
|
+
{isError && <div className="agent-hub-tags__error" role="alert">Tags could not be loaded. <button type="button" onClick={() => void refetch()}>Retry</button></div>}
|
|
113
|
+
{open && <div className="agent-hub-tags__options" id={`${fieldId}-options`} role="listbox" aria-label="Available tags">
|
|
114
|
+
{isFetching ? <div className="agent-hub-tags__empty" role="status">Loading tags…</div>
|
|
115
|
+
: options.length ? options.map((tag, index) => <button key={tag.id} id={`${fieldId}-option-${index}`}
|
|
116
|
+
type="button" role="option" aria-selected={false} disabled={isCreating}
|
|
117
|
+
className={activeIndex === index ? "is-active" : undefined}
|
|
118
|
+
onMouseDown={(event) => event.preventDefault()} onClick={() => select(tag)}>{tag.name}<Plus size={14} /></button>)
|
|
119
|
+
: !isError && <div className="agent-hub-tags__empty">{exact ? "Tag already selected." : canCreate ? `Create “${name}” to add it.` : "No tags available. Type a name to create one."}</div>}
|
|
120
|
+
</div>}
|
|
121
|
+
{error && <small className="agent-hub-tags__error" role="alert">{error}</small>}
|
|
122
|
+
<small className="agent-hub-tags__hint">Tags are shared across agents, skills, and tools.</small>
|
|
123
|
+
</>}
|
|
124
|
+
</div>;
|
|
125
|
+
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
.persona-history__trigger {
|
|
2
|
+
display: grid;
|
|
3
|
+
flex: 0 0 auto;
|
|
4
|
+
place-items: center;
|
|
5
|
+
width: 2.15rem;
|
|
6
|
+
height: 2.15rem;
|
|
7
|
+
border: 1px solid var(--surface-border, var(--border));
|
|
8
|
+
border-radius: .6rem;
|
|
9
|
+
background: var(--surface-card, var(--card));
|
|
10
|
+
color: var(--text-color-secondary, var(--muted-foreground));
|
|
11
|
+
cursor: pointer;
|
|
12
|
+
transition: color .15s ease, border-color .15s ease, background .15s ease;
|
|
13
|
+
}
|
|
14
|
+
.persona-history__trigger:hover,
|
|
15
|
+
.persona-history__trigger[data-state="open"] {
|
|
16
|
+
border-color: color-mix(in srgb, var(--primary-color, var(--primary)) 42%, var(--surface-border, var(--border)));
|
|
17
|
+
background: color-mix(in srgb, var(--primary-color, var(--primary)) 7%, var(--surface-card, var(--card)));
|
|
18
|
+
color: var(--primary-color, var(--primary));
|
|
19
|
+
}
|
|
20
|
+
.persona-history__trigger:focus-visible,
|
|
21
|
+
.persona-history__selector:focus-visible,
|
|
22
|
+
.persona-history__refresh:focus-visible {
|
|
23
|
+
outline: 2px solid var(--primary-color, var(--primary));
|
|
24
|
+
outline-offset: 2px;
|
|
25
|
+
}
|
|
26
|
+
.persona-history__menu.solid-dropdown-menu-content {
|
|
27
|
+
z-index: calc(var(--z-overlay, 1000) + 10);
|
|
28
|
+
width: min(25rem, calc(100vw - 1.5rem));
|
|
29
|
+
max-height: min(27rem, calc(100vh - 2rem));
|
|
30
|
+
overflow: hidden;
|
|
31
|
+
padding: .4rem;
|
|
32
|
+
border-radius: .8rem;
|
|
33
|
+
box-shadow: 0 18px 50px rgba(15, 23, 42, .2);
|
|
34
|
+
}
|
|
35
|
+
.persona-history__menu-header {
|
|
36
|
+
display: flex;
|
|
37
|
+
align-items: center;
|
|
38
|
+
justify-content: space-between;
|
|
39
|
+
gap: .75rem;
|
|
40
|
+
padding: .55rem .6rem .7rem;
|
|
41
|
+
border-bottom: 1px solid var(--surface-border, var(--border));
|
|
42
|
+
}
|
|
43
|
+
.persona-history__menu-header > span { display: grid; gap: .16rem; }
|
|
44
|
+
.persona-history__menu-header strong { font-size: .87rem; }
|
|
45
|
+
.persona-history__menu-header small,
|
|
46
|
+
.persona-history__menu-heading { color: var(--text-color-secondary, var(--muted-foreground)); font-size: .72rem; }
|
|
47
|
+
.persona-history__menu-heading { padding: .55rem .65rem .45rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
|
|
48
|
+
.persona-history__refresh {
|
|
49
|
+
display: grid;
|
|
50
|
+
flex: 0 0 auto;
|
|
51
|
+
place-items: center;
|
|
52
|
+
width: 1.8rem;
|
|
53
|
+
height: 1.8rem;
|
|
54
|
+
border: 0;
|
|
55
|
+
border-radius: .45rem;
|
|
56
|
+
background: transparent;
|
|
57
|
+
color: var(--text-color-secondary, var(--muted-foreground));
|
|
58
|
+
cursor: pointer;
|
|
59
|
+
}
|
|
60
|
+
.persona-history__refresh:hover { background: var(--surface-hover, #f2f3f4); color: var(--primary-color, var(--primary)); }
|
|
61
|
+
.persona-history__menu-list { max-height: min(22rem, calc(100vh - 7rem)); overflow: auto; padding: .25rem 0; }
|
|
62
|
+
.persona-history__menu-option.solid-dropdown-menu-item {
|
|
63
|
+
display: block;
|
|
64
|
+
min-height: 0;
|
|
65
|
+
padding: .62rem .65rem;
|
|
66
|
+
text-align: left;
|
|
67
|
+
cursor: pointer;
|
|
68
|
+
}
|
|
69
|
+
.persona-history__menu-option[data-highlighted] { background: color-mix(in srgb, var(--primary-color, var(--primary)) 8%, var(--surface-card, var(--card))); }
|
|
70
|
+
.persona-history__item { display: grid; width: 100%; min-width: 0; gap: .32rem; }
|
|
71
|
+
.persona-history__item-main,
|
|
72
|
+
.persona-history__item-meta { display: flex; align-items: center; gap: .42rem; min-width: 0; }
|
|
73
|
+
.persona-history__item-main { justify-content: space-between; }
|
|
74
|
+
.persona-history__item-main strong { overflow: hidden; font-size: .82rem; font-weight: 650; text-overflow: ellipsis; white-space: nowrap; }
|
|
75
|
+
.persona-history__item-meta { overflow: hidden; color: var(--text-color-secondary, var(--muted-foreground)); font-size: .72rem; }
|
|
76
|
+
.persona-history__item-meta > span:not(.persona-history__selected) { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
77
|
+
.persona-history__selected { margin-left: auto; color: var(--primary-color, var(--primary)); font-size: .68rem; font-weight: 700; }
|
|
78
|
+
.persona-history__status { padding: 1.2rem .65rem; color: var(--text-color-secondary, var(--muted-foreground)); font-size: .8rem; text-align: center; }
|
|
79
|
+
.persona-history__status--error { color: #b42318; }
|
|
80
|
+
|
|
81
|
+
.persona-history__dialog.solid-radix-dialog-content {
|
|
82
|
+
display: flex;
|
|
83
|
+
flex-direction: column;
|
|
84
|
+
width: min(1380px, calc(100vw - 3rem));
|
|
85
|
+
height: calc(100dvh - 2rem);
|
|
86
|
+
max-width: calc(100vw - 3rem);
|
|
87
|
+
max-height: calc(100dvh - 2rem);
|
|
88
|
+
overflow: hidden;
|
|
89
|
+
border-radius: 1rem;
|
|
90
|
+
}
|
|
91
|
+
.persona-history__dialog .solid-radix-dialog-header { flex: 0 0 auto; align-items: center; padding: .7rem 1.1rem; border-bottom: 1px solid var(--surface-border, var(--border)); }
|
|
92
|
+
.persona-history__dialog-title { display: inline-flex; align-items: center; gap: .55rem; }
|
|
93
|
+
.persona-history__dialog-title svg { color: var(--primary-color, var(--primary)); }
|
|
94
|
+
.persona-history__dialog-body.solid-radix-dialog-body { display: flex; flex: 1 1 auto; flex-direction: column; min-height: 0; padding: 0; overflow: hidden; }
|
|
95
|
+
.persona-history__compare-controls { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); align-items: center; gap: .65rem; padding: .55rem 1rem; border-bottom: 1px solid var(--surface-border, var(--border)); }
|
|
96
|
+
.persona-history__selector {
|
|
97
|
+
display: flex;
|
|
98
|
+
align-items: center;
|
|
99
|
+
justify-content: space-between;
|
|
100
|
+
gap: .7rem;
|
|
101
|
+
width: 100%;
|
|
102
|
+
min-width: 0;
|
|
103
|
+
padding: .46rem .65rem;
|
|
104
|
+
border: 1px solid var(--surface-border, var(--border));
|
|
105
|
+
border-radius: .65rem;
|
|
106
|
+
background: var(--surface-card, var(--card));
|
|
107
|
+
color: var(--text-color, var(--foreground));
|
|
108
|
+
text-align: left;
|
|
109
|
+
cursor: pointer;
|
|
110
|
+
}
|
|
111
|
+
.persona-history__selector:hover,
|
|
112
|
+
.persona-history__selector[data-state="open"] { border-color: color-mix(in srgb, var(--primary-color, var(--primary)) 42%, var(--surface-border, var(--border))); background: color-mix(in srgb, var(--primary-color, var(--primary)) 4%, var(--surface-card, var(--card))); }
|
|
113
|
+
.persona-history__selector-copy { display: grid; min-width: 0; width: 100%; gap: .1rem; }
|
|
114
|
+
.persona-history__selector-meta { display: flex; justify-content: space-between; align-items: baseline; gap: .5rem; min-width: 0; }
|
|
115
|
+
.persona-history__selector-copy small { color: var(--primary-color, var(--primary)); font-size: .64rem; font-weight: 800; letter-spacing: .07em; }
|
|
116
|
+
.persona-history__selector-meta time { overflow: hidden; color: var(--text-color-secondary, var(--muted-foreground)); font-size: .68rem; font-weight: 400; text-overflow: ellipsis; white-space: nowrap; }
|
|
117
|
+
.persona-history__selector-copy strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
118
|
+
.persona-history__selector-copy strong { font-size: .85rem; }
|
|
119
|
+
.persona-history__selector > svg { flex: 0 0 auto; color: var(--text-color-secondary, var(--muted-foreground)); }
|
|
120
|
+
.persona-history__compare-icon { display: grid; place-items: center; width: 1.7rem; height: 1.7rem; border-radius: 50%; background: var(--surface-ground, var(--background)); color: var(--text-color-secondary, var(--muted-foreground)); }
|
|
121
|
+
.persona-history__diff { flex: 1 1 auto; min-height: 0; overflow: auto; background: var(--surface-card, var(--card)); }
|
|
122
|
+
.persona-history__diff > div { min-width: 760px; }
|
|
123
|
+
.persona-history__diff table { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace; font-size: 12px; }
|
|
124
|
+
.persona-history__diff pre { white-space: pre-wrap !important; overflow-wrap: anywhere; }
|
|
125
|
+
|
|
126
|
+
@media (max-width: 720px) {
|
|
127
|
+
.persona-history__dialog.solid-radix-dialog-content { width: calc(100vw - 1rem); height: calc(100dvh - 1rem); max-width: calc(100vw - 1rem); max-height: calc(100dvh - 1rem); }
|
|
128
|
+
.persona-history__compare-controls { grid-template-columns: minmax(0, 1fr); gap: .35rem; }
|
|
129
|
+
.persona-history__compare-icon { justify-self: center; transform: rotate(90deg); }
|
|
130
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import "./AgentPersonaHistory.css";
|
|
2
|
+
export declare function AgentPersonaHistory({ agentId, savedPrompt, refreshVersion }: {
|
|
3
|
+
agentId: number;
|
|
4
|
+
savedPrompt: string;
|
|
5
|
+
refreshVersion: number;
|
|
6
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
//# sourceMappingURL=AgentPersonaHistory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentPersonaHistory.d.ts","sourceRoot":"","sources":["../../../../../src/routes/pages/admin/core/AgentPersonaHistory.tsx"],"names":[],"mappings":"AAQA,OAAO,2BAA2B,CAAC;AA8HnC,wBAAgB,mBAAmB,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,EAAE;IAC5E,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CACxB,2CA+FA"}
|