@burdenoff/microfe-botmanor 2026.1108.1 → 2026.1109.2
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/botlit/BotlitRoutes.d.ts +2 -0
- package/dist/botlit/BotlitRoutes.js +40 -52
- package/dist/botlit/BotlitRoutes.js.map +1 -1
- package/dist/botlit/BotmanorRoot.d.ts +3 -0
- package/dist/botlit/BotmanorRoot.js +1 -2
- package/dist/botlit/BotmanorRoot.js.map +1 -1
- package/dist/botlit/BotmanorRootInner.d.ts +3 -0
- package/dist/botlit/BotmanorRootInner.js +9 -10
- package/dist/botlit/BotmanorRootInner.js.map +1 -1
- package/dist/botlit/components/AgentApprovalPanel.d.ts +20 -0
- package/dist/botlit/components/AgentApprovalPanel.js +49 -50
- package/dist/botlit/components/AgentApprovalPanel.js.map +1 -1
- package/dist/botlit/components/AiOperationsPanel.d.ts +14 -0
- package/dist/botlit/components/AiOperationsPanel.js +54 -55
- package/dist/botlit/components/AiOperationsPanel.js.map +1 -1
- package/dist/botlit/components/AssistantChannelPanel.d.ts +3 -0
- package/dist/botlit/components/AssistantChannelPanel.js +12 -13
- package/dist/botlit/components/AssistantChannelPanel.js.map +1 -1
- package/dist/botlit/components/AssistantRuntimeSetupPanel.d.ts +4 -0
- package/dist/botlit/components/AssistantRuntimeSetupPanel.js +14 -14
- package/dist/botlit/components/AssistantRuntimeSetupPanel.js.map +1 -1
- package/dist/botlit/components/AssistantWebsitePanel.d.ts +5 -0
- package/dist/botlit/components/AssistantWebsitePanel.js +15 -16
- package/dist/botlit/components/AssistantWebsitePanel.js.map +1 -1
- package/dist/botlit/components/Badge.d.ts +9 -0
- package/dist/botlit/components/Badge.js +1 -2
- package/dist/botlit/components/Badge.js.map +1 -1
- package/dist/botlit/components/Button.d.ts +10 -0
- package/dist/botlit/components/Button.js +1 -2
- package/dist/botlit/components/Button.js.map +1 -1
- package/dist/botlit/components/Card.d.ts +16 -0
- package/dist/botlit/components/Card.js +1 -2
- package/dist/botlit/components/Card.js.map +1 -1
- package/dist/botlit/components/ChannelSelectorSheet.d.ts +23 -0
- package/dist/botlit/components/ChannelSelectorSheet.js +1 -2
- package/dist/botlit/components/ChannelSelectorSheet.js.map +1 -1
- package/dist/botlit/components/EmptyState.d.ts +12 -0
- package/dist/botlit/components/EmptyState.js +1 -2
- package/dist/botlit/components/EmptyState.js.map +1 -1
- package/dist/botlit/components/ErrorState.d.ts +10 -0
- package/dist/botlit/components/ErrorState.js +5 -6
- package/dist/botlit/components/ErrorState.js.map +1 -1
- package/dist/botlit/components/Input.d.ts +27 -0
- package/dist/botlit/components/Input.js +1 -2
- package/dist/botlit/components/Input.js.map +1 -1
- package/dist/botlit/components/KnowledgeSourceImportPanel.d.ts +3 -0
- package/dist/botlit/components/KnowledgeSourceImportPanel.js +12 -13
- package/dist/botlit/components/KnowledgeSourceImportPanel.js.map +1 -1
- package/dist/botlit/components/ModelRegistrationPanel.d.ts +5 -0
- package/dist/botlit/components/ModelRegistrationPanel.js +1 -2
- package/dist/botlit/components/ModelRegistrationPanel.js.map +1 -1
- package/dist/botlit/components/PageLayout.d.ts +12 -0
- package/dist/botlit/components/PageLayout.js +1 -2
- package/dist/botlit/components/PageLayout.js.map +1 -1
- package/dist/botlit/components/QuotaExhaustedDialog.d.ts +9 -0
- package/dist/botlit/components/QuotaExhaustedDialog.js +1 -2
- package/dist/botlit/components/QuotaExhaustedDialog.js.map +1 -1
- package/dist/botlit/components/RetentionStatusPanel.d.ts +2 -0
- package/dist/botlit/components/RetentionStatusPanel.js +18 -19
- package/dist/botlit/components/RetentionStatusPanel.js.map +1 -1
- package/dist/botlit/components/RouteLoader.d.ts +23 -0
- package/dist/botlit/components/RouteLoader.js +1 -2
- package/dist/botlit/components/RouteLoader.js.map +1 -1
- package/dist/botlit/components/VersionHistoryPanel.d.ts +12 -0
- package/dist/botlit/components/VersionHistoryPanel.js +23 -24
- package/dist/botlit/components/VersionHistoryPanel.js.map +1 -1
- package/dist/botlit/components/WorkspaceRequired.d.ts +18 -0
- package/dist/botlit/components/WorkspaceRequired.js +1 -2
- package/dist/botlit/components/WorkspaceRequired.js.map +1 -1
- package/dist/botlit/components/index.d.ts +14 -0
- package/dist/botlit/hooks/index.d.ts +35 -0
- package/dist/botlit/hooks/index.js +16 -16
- package/dist/botlit/hooks/internal/mutationInput.d.ts +56 -0
- package/dist/botlit/hooks/internal/mutationInput.js +1 -2
- package/dist/botlit/hooks/internal/mutationInput.js.map +1 -1
- package/dist/botlit/hooks/internal/workspaceGateway.d.ts +54 -0
- package/dist/botlit/hooks/internal/workspaceGateway.js +17 -19
- package/dist/botlit/hooks/internal/workspaceGateway.js.map +1 -1
- package/dist/botlit/hooks/useA2A.d.ts +104 -0
- package/dist/botlit/hooks/useA2A.js +45 -45
- package/dist/botlit/hooks/useA2A.js.map +1 -1
- package/dist/botlit/hooks/useAgentApprovals.d.ts +62 -0
- package/dist/botlit/hooks/useAgentApprovals.js +38 -39
- package/dist/botlit/hooks/useAgentApprovals.js.map +1 -1
- package/dist/botlit/hooks/useAgents.d.ts +105 -0
- package/dist/botlit/hooks/useAgents.js +53 -54
- package/dist/botlit/hooks/useAgents.js.map +1 -1
- package/dist/botlit/hooks/useAiOperations.d.ts +95 -0
- package/dist/botlit/hooks/useAiOperations.js +20 -19
- package/dist/botlit/hooks/useAiOperations.js.map +1 -1
- package/dist/botlit/hooks/useAssistantChannels.d.ts +16 -0
- package/dist/botlit/hooks/useAssistantChannels.js +1 -2
- package/dist/botlit/hooks/useAssistantChannels.js.map +1 -1
- package/dist/botlit/hooks/useAssistantRuntimeSetup.d.ts +17 -0
- package/dist/botlit/hooks/useAssistantRuntimeSetup.js +1 -2
- package/dist/botlit/hooks/useAssistantRuntimeSetup.js.map +1 -1
- package/dist/botlit/hooks/useAssistantWebsites.d.ts +18 -0
- package/dist/botlit/hooks/useAssistantWebsites.js +1 -2
- package/dist/botlit/hooks/useAssistantWebsites.js.map +1 -1
- package/dist/botlit/hooks/useBotWorkflow.d.ts +22 -0
- package/dist/botlit/hooks/useBotWorkflow.js +1 -2
- package/dist/botlit/hooks/useBotWorkflow.js.map +1 -1
- package/dist/botlit/hooks/useBots.d.ts +68 -0
- package/dist/botlit/hooks/useBots.js +32 -33
- package/dist/botlit/hooks/useBots.js.map +1 -1
- package/dist/botlit/hooks/useBuckets.d.ts +62 -0
- package/dist/botlit/hooks/useBuckets.js +91 -58
- package/dist/botlit/hooks/useBuckets.js.map +1 -1
- package/dist/botlit/hooks/useChannels.d.ts +87 -0
- package/dist/botlit/hooks/useChannels.js +73 -73
- package/dist/botlit/hooks/useChannels.js.map +1 -1
- package/dist/botlit/hooks/useExecutions.d.ts +87 -0
- package/dist/botlit/hooks/useExecutions.js +37 -37
- package/dist/botlit/hooks/useExecutions.js.map +1 -1
- package/dist/botlit/hooks/useKnowledgeBases.d.ts +79 -0
- package/dist/botlit/hooks/useKnowledgeBases.js +40 -39
- package/dist/botlit/hooks/useKnowledgeBases.js.map +1 -1
- package/dist/botlit/hooks/useKnowledgeSourceImports.d.ts +21 -0
- package/dist/botlit/hooks/useKnowledgeSourceImports.js +1 -2
- package/dist/botlit/hooks/useKnowledgeSourceImports.js.map +1 -1
- package/dist/botlit/hooks/useLLMProviders.d.ts +66 -0
- package/dist/botlit/hooks/useLLMProviders.js +25 -26
- package/dist/botlit/hooks/useLLMProviders.js.map +1 -1
- package/dist/botlit/hooks/useMCPServers.d.ts +71 -0
- package/dist/botlit/hooks/useMCPServers.js +40 -38
- package/dist/botlit/hooks/useMCPServers.js.map +1 -1
- package/dist/botlit/hooks/usePolicies.d.ts +60 -0
- package/dist/botlit/hooks/usePolicies.js +49 -49
- package/dist/botlit/hooks/usePolicies.js.map +1 -1
- package/dist/botlit/hooks/usePromptTemplates.d.ts +88 -0
- package/dist/botlit/hooks/usePromptTemplates.js +57 -57
- package/dist/botlit/hooks/usePromptTemplates.js.map +1 -1
- package/dist/botlit/hooks/useRetention.d.ts +26 -0
- package/dist/botlit/hooks/useRetention.js +3 -3
- package/dist/botlit/hooks/useRetention.js.map +1 -1
- package/dist/botlit/hooks/useRetrievalProfiles.d.ts +75 -0
- package/dist/botlit/hooks/useRetrievalProfiles.js +47 -47
- package/dist/botlit/hooks/useRetrievalProfiles.js.map +1 -1
- package/dist/botlit/hooks/useSkills.d.ts +64 -0
- package/dist/botlit/hooks/useSkills.js +53 -53
- package/dist/botlit/hooks/useSkills.js.map +1 -1
- package/dist/botlit/hooks/useStore.d.ts +112 -0
- package/dist/botlit/hooks/useStore.js +55 -55
- package/dist/botlit/hooks/useStore.js.map +1 -1
- package/dist/botlit/hooks/useUserPlatformConnection.d.ts +80 -0
- package/dist/botlit/hooks/useUserPlatformConnection.js +19 -19
- package/dist/botlit/hooks/useUserPlatformConnection.js.map +1 -1
- package/dist/botlit/index.d.ts +15 -0
- package/dist/botlit/index.js +11 -11
- package/dist/botlit/pages/A2AAgentDetailPage.d.ts +6 -0
- package/dist/botlit/pages/A2AAgentDetailPage.js +171 -178
- package/dist/botlit/pages/A2AAgentDetailPage.js.map +1 -1
- package/dist/botlit/pages/A2ARegistryPage.d.ts +2 -0
- package/dist/botlit/pages/A2ARegistryPage.js +25 -26
- package/dist/botlit/pages/A2ARegistryPage.js.map +1 -1
- package/dist/botlit/pages/AgentApprovalsPage.d.ts +2 -0
- package/dist/botlit/pages/AgentApprovalsPage.js +32 -33
- package/dist/botlit/pages/AgentApprovalsPage.js.map +1 -1
- package/dist/botlit/pages/AgentBuilderPage.d.ts +2 -0
- package/dist/botlit/pages/AgentBuilderPage.js +59 -60
- package/dist/botlit/pages/AgentBuilderPage.js.map +1 -1
- package/dist/botlit/pages/AgentDetailPage.d.ts +2 -0
- package/dist/botlit/pages/AgentDetailPage.js +83 -84
- package/dist/botlit/pages/AgentDetailPage.js.map +1 -1
- package/dist/botlit/pages/AgentsListPage.d.ts +2 -0
- package/dist/botlit/pages/AgentsListPage.js +71 -72
- package/dist/botlit/pages/AgentsListPage.js.map +1 -1
- package/dist/botlit/pages/AiOperationsPage.d.ts +2 -0
- package/dist/botlit/pages/AiOperationsPage.js +52 -53
- package/dist/botlit/pages/AiOperationsPage.js.map +1 -1
- package/dist/botlit/pages/BotChannelsTab.d.ts +7 -0
- package/dist/botlit/pages/BotChannelsTab.js +120 -122
- package/dist/botlit/pages/BotChannelsTab.js.map +1 -1
- package/dist/botlit/pages/BotDetailPage.d.ts +7 -0
- package/dist/botlit/pages/BotDetailPage.js +353 -358
- package/dist/botlit/pages/BotDetailPage.js.map +1 -1
- package/dist/botlit/pages/BotWorkflowTab.d.ts +11 -0
- package/dist/botlit/pages/BotWorkflowTab.js +20 -21
- package/dist/botlit/pages/BotWorkflowTab.js.map +1 -1
- package/dist/botlit/pages/BotsListPage.d.ts +2 -0
- package/dist/botlit/pages/BotsListPage.js +52 -53
- package/dist/botlit/pages/BotsListPage.js.map +1 -1
- package/dist/botlit/pages/BucketDetailPage.d.ts +2 -0
- package/dist/botlit/pages/BucketDetailPage.js +251 -0
- package/dist/botlit/pages/BucketDetailPage.js.map +1 -0
- package/dist/botlit/pages/BucketsPage.d.ts +2 -0
- package/dist/botlit/pages/BucketsPage.js +260 -261
- package/dist/botlit/pages/BucketsPage.js.map +1 -1
- package/dist/botlit/pages/ChannelDetailPage.d.ts +6 -0
- package/dist/botlit/pages/ChannelDetailPage.js +97 -96
- package/dist/botlit/pages/ChannelDetailPage.js.map +1 -1
- package/dist/botlit/pages/ChannelRoutesPage.d.ts +2 -0
- package/dist/botlit/pages/ChannelRoutesPage.js +23 -24
- package/dist/botlit/pages/ChannelRoutesPage.js.map +1 -1
- package/dist/botlit/pages/ChannelsPage.d.ts +2 -0
- package/dist/botlit/pages/ChannelsPage.js +44 -45
- package/dist/botlit/pages/ChannelsPage.js.map +1 -1
- package/dist/botlit/pages/ChatPage.d.ts +1 -0
- package/dist/botlit/pages/ChatPage.js +10 -11
- package/dist/botlit/pages/ChatPage.js.map +1 -1
- package/dist/botlit/pages/DashboardPage.d.ts +2 -0
- package/dist/botlit/pages/DashboardPage.js +37 -38
- package/dist/botlit/pages/DashboardPage.js.map +1 -1
- package/dist/botlit/pages/ExecutionDetailPage.d.ts +2 -0
- package/dist/botlit/pages/ExecutionDetailPage.js +47 -48
- package/dist/botlit/pages/ExecutionDetailPage.js.map +1 -1
- package/dist/botlit/pages/ExecutionsPage.d.ts +2 -0
- package/dist/botlit/pages/ExecutionsPage.js +72 -70
- package/dist/botlit/pages/ExecutionsPage.js.map +1 -1
- package/dist/botlit/pages/InstalledPackagesPage.d.ts +2 -0
- package/dist/botlit/pages/InstalledPackagesPage.js +77 -78
- package/dist/botlit/pages/InstalledPackagesPage.js.map +1 -1
- package/dist/botlit/pages/KnowledgeBaseDetailPage.d.ts +6 -0
- package/dist/botlit/pages/KnowledgeBaseDetailPage.js +171 -181
- package/dist/botlit/pages/KnowledgeBaseDetailPage.js.map +1 -1
- package/dist/botlit/pages/KnowledgeBasesPage.d.ts +2 -0
- package/dist/botlit/pages/KnowledgeBasesPage.js +30 -31
- package/dist/botlit/pages/KnowledgeBasesPage.js.map +1 -1
- package/dist/botlit/pages/MCPServerDetailPage.d.ts +6 -0
- package/dist/botlit/pages/MCPServerDetailPage.js +82 -83
- package/dist/botlit/pages/MCPServerDetailPage.js.map +1 -1
- package/dist/botlit/pages/MCPServersPage.d.ts +2 -0
- package/dist/botlit/pages/MCPServersPage.js +54 -55
- package/dist/botlit/pages/MCPServersPage.js.map +1 -1
- package/dist/botlit/pages/PoliciesPage.d.ts +2 -0
- package/dist/botlit/pages/PoliciesPage.js +25 -26
- package/dist/botlit/pages/PoliciesPage.js.map +1 -1
- package/dist/botlit/pages/PolicyDetailPage.d.ts +6 -0
- package/dist/botlit/pages/PolicyDetailPage.js +257 -259
- package/dist/botlit/pages/PolicyDetailPage.js.map +1 -1
- package/dist/botlit/pages/PromptStudioPage.d.ts +2 -0
- package/dist/botlit/pages/PromptStudioPage.js +35 -35
- package/dist/botlit/pages/PromptStudioPage.js.map +1 -1
- package/dist/botlit/pages/PromptTemplateDetailPage.d.ts +6 -0
- package/dist/botlit/pages/PromptTemplateDetailPage.js +363 -362
- package/dist/botlit/pages/PromptTemplateDetailPage.js.map +1 -1
- package/dist/botlit/pages/PromptTemplatesPage.d.ts +2 -0
- package/dist/botlit/pages/PromptTemplatesPage.js +26 -27
- package/dist/botlit/pages/PromptTemplatesPage.js.map +1 -1
- package/dist/botlit/pages/RetrievalProfileDetailPage.d.ts +6 -0
- package/dist/botlit/pages/RetrievalProfileDetailPage.js +150 -158
- package/dist/botlit/pages/RetrievalProfileDetailPage.js.map +1 -1
- package/dist/botlit/pages/RetrievalProfilesPage.d.ts +2 -0
- package/dist/botlit/pages/RetrievalProfilesPage.js +24 -25
- package/dist/botlit/pages/RetrievalProfilesPage.js.map +1 -1
- package/dist/botlit/pages/SettingsPage.d.ts +2 -0
- package/dist/botlit/pages/SettingsPage.js +124 -125
- package/dist/botlit/pages/SettingsPage.js.map +1 -1
- package/dist/botlit/pages/SkillDetailPage.d.ts +6 -0
- package/dist/botlit/pages/SkillDetailPage.js +216 -217
- package/dist/botlit/pages/SkillDetailPage.js.map +1 -1
- package/dist/botlit/pages/SkillsPage.d.ts +2 -0
- package/dist/botlit/pages/SkillsPage.js +24 -25
- package/dist/botlit/pages/SkillsPage.js.map +1 -1
- package/dist/botlit/pages/StorePackageDetailPage.d.ts +2 -0
- package/dist/botlit/pages/StorePackageDetailPage.js +38 -39
- package/dist/botlit/pages/StorePackageDetailPage.js.map +1 -1
- package/dist/botlit/pages/StorePage.d.ts +2 -0
- package/dist/botlit/pages/StorePage.js +135 -136
- package/dist/botlit/pages/StorePage.js.map +1 -1
- package/dist/botlit/pages/index.d.ts +38 -0
- package/dist/botlit/permissions/PermissionRequired.d.ts +20 -0
- package/dist/botlit/permissions/PermissionRequired.js +10 -11
- package/dist/botlit/permissions/PermissionRequired.js.map +1 -1
- package/dist/botlit/permissions/botmanorPermissions.d.ts +82 -0
- package/dist/botlit/permissions/botmanorPermissions.js +1 -2
- package/dist/botlit/permissions/botmanorPermissions.js.map +1 -1
- package/dist/botlit/permissions/index.d.ts +7 -0
- package/dist/botlit/permissions/index.js +4 -3
- package/dist/botlit/permissions/useBotmanorPermissions.d.ts +41 -0
- package/dist/botlit/permissions/useBotmanorPermissions.js +1 -2
- package/dist/botlit/permissions/useBotmanorPermissions.js.map +1 -1
- package/dist/botlit/providers/BotlitProvider.d.ts +14 -0
- package/dist/botlit/providers/BotlitProvider.js +3 -3
- package/dist/botlit/providers/BotlitProvider.js.map +1 -1
- package/dist/botlit/store/botlitStore.d.ts +85 -0
- package/dist/botlit/store/botlitStore.js +1 -2
- package/dist/botlit/store/botlitStore.js.map +1 -1
- package/dist/botlit/store/renamedKeyStorage.d.ts +13 -0
- package/dist/botlit/store/renamedKeyStorage.js +1 -2
- package/dist/botlit/store/renamedKeyStorage.js.map +1 -1
- package/dist/botlit/types/index.d.ts +1008 -0
- package/dist/botlit/utils/cn.d.ts +2 -0
- package/dist/botlit/utils/cn.js +1 -2
- package/dist/botlit/utils/cn.js.map +1 -1
- package/dist/botlit/utils/embedding-models.d.ts +9 -0
- package/dist/botlit/utils/embedding-models.js +1 -2
- package/dist/botlit/utils/embedding-models.js.map +1 -1
- package/dist/botlit/utils/errors.d.ts +19 -0
- package/dist/botlit/utils/errors.js +1 -2
- package/dist/botlit/utils/errors.js.map +1 -1
- package/dist/botlit/utils/formatters.d.ts +38 -0
- package/dist/botlit/utils/formatters.js +0 -1
- package/dist/botlit/utils/formatters.js.map +1 -1
- package/dist/botlit/utils/navigation.d.ts +19 -0
- package/dist/botlit/utils/navigation.js +1 -2
- package/dist/botlit/utils/navigation.js.map +1 -1
- package/dist/botlit/utils/policyConfig.d.ts +68 -0
- package/dist/botlit/utils/policyConfig.js +2 -3
- package/dist/botlit/utils/policyConfig.js.map +1 -1
- package/dist/botlit/utils/unions.d.ts +25 -0
- package/dist/botlit/utils/unions.js +1 -2
- package/dist/botlit/utils/unions.js.map +1 -1
- package/dist/dev/App.d.ts +2 -0
- package/dist/dev/main.d.ts +0 -0
- package/dist/generated/global-operations.d.ts +197 -0
- package/dist/generated/global-operations.js +1 -2
- package/dist/generated/global-operations.js.map +1 -1
- package/dist/generated/global-types.d.ts +27678 -0
- package/dist/generated/global-types.js +1 -2
- package/dist/generated/global-types.js.map +1 -1
- package/dist/generated/wspace-operations.d.ts +5489 -0
- package/dist/generated/wspace-operations.js +88 -84
- package/dist/generated/wspace-operations.js.map +1 -1
- package/dist/generated/wspace-types.d.ts +152017 -0
- package/dist/generated/wspace-types.js +1 -2
- package/dist/generated/wspace-types.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.js +5 -6
- package/dist/shared/hooks/useTr.d.ts +16 -0
- package/dist/shared/hooks/useTr.js +1 -2
- package/dist/shared/hooks/useTr.js.map +1 -1
- package/dist/stories/Badge.stories.d.ts +11 -0
- package/dist/stories/Button.stories.d.ts +13 -0
- package/dist/stories/EmptyState.stories.d.ts +8 -0
- package/dist/stories/StatusBadge.stories.d.ts +9 -0
- package/dist/test/fixtures.d.ts +39 -0
- package/dist/test/happydom.d.ts +1 -0
- package/dist/test/renderPage.d.ts +18 -0
- package/dist/test/setup.d.ts +9 -0
- package/dist/utils/nativeBridge.d.ts +2 -0
- package/dist/utils/nativeBridge.js +1 -2
- package/package.json +87 -60
- package/dist/botlit/hooks/useConversations.js +0 -64
- package/dist/botlit/hooks/useConversations.js.map +0 -1
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { useBotlit as e } from "../providers/BotlitProvider.js";
|
|
2
|
+
import { useTr as t } from "../../shared/hooks/useTr.js";
|
|
3
|
+
import { PageLayout as n } from "../components/PageLayout.js";
|
|
4
4
|
import { BOTMANOR_PERMISSIONS as r } from "../permissions/botmanorPermissions.js";
|
|
5
5
|
import { BotmanorPermissionGate as i } from "../permissions/useBotmanorPermissions.js";
|
|
6
|
-
import {
|
|
7
|
-
import { Button as
|
|
8
|
-
import "../
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import { Input as m } from "../components/Input.js";
|
|
13
|
-
import { ErrorState as h } from "../components/ErrorState.js";
|
|
14
|
-
import { storePackageDescription as g, storePackageName as _, useInstallPackage as v, useInstalledPackages as y, useStorePackages as b } from "../hooks/useStore.js";
|
|
6
|
+
import { Card as a, CardContent as o, CardDescription as s, CardHeader as c, CardTitle as l } from "../components/Card.js";
|
|
7
|
+
import { Button as u } from "../components/Button.js";
|
|
8
|
+
import { Input as ee } from "../components/Input.js";
|
|
9
|
+
import { Badge as d } from "../components/Badge.js";
|
|
10
|
+
import { EmptyState as f } from "../components/EmptyState.js";
|
|
11
|
+
import { ErrorState as p } from "../components/ErrorState.js";
|
|
15
12
|
import "../hooks/index.js";
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
13
|
+
import { formatRelativeTime as m } from "../utils/formatters.js";
|
|
14
|
+
import { storePackageDescription as h, storePackageName as g, useInstallPackage as _, useInstalledPackages as v, useStorePackages as y } from "../hooks/useStore.js";
|
|
15
|
+
import { InstallMode as b, PackageKind as x } from "../../generated/wspace-types.js";
|
|
16
|
+
import "../permissions/index.js";
|
|
17
|
+
import { useMemo as S, useState as C } from "react";
|
|
18
|
+
import { GlassCard as w, PagePurpose as T } from "@burdenoff/fe-libs/ui";
|
|
19
|
+
import { jsx as E, jsxs as D } from "react/jsx-runtime";
|
|
20
|
+
import { Link as O } from "react-router";
|
|
21
|
+
import { Bot as k, Check as A, Database as j, ExternalLink as M, FileText as N, Package as P, Search as F, Shield as I, Sparkles as L, Store as R, Wrench as z } from "lucide-react";
|
|
22
22
|
import { toast as B } from "sonner";
|
|
23
|
-
|
|
23
|
+
// src/botlit/pages/StorePage.tsx
|
|
24
24
|
var V = ({ kind: e, className: t }) => {
|
|
25
25
|
switch (e) {
|
|
26
|
-
case "APP": return /* @__PURE__ */
|
|
26
|
+
case "APP": return /* @__PURE__ */ E(P, { className: t });
|
|
27
27
|
case "AGENT":
|
|
28
|
-
case "A2A_AGENT": return /* @__PURE__ */
|
|
28
|
+
case "A2A_AGENT": return /* @__PURE__ */ E(k, { className: t });
|
|
29
29
|
case "MCP_PACK":
|
|
30
|
-
case "TOOL": return /* @__PURE__ */
|
|
30
|
+
case "TOOL": return /* @__PURE__ */ E(z, { className: t });
|
|
31
31
|
case "PROMPT_TEMPLATE":
|
|
32
|
-
case "PROMPT": return /* @__PURE__ */
|
|
33
|
-
case "SKILL": return /* @__PURE__ */
|
|
32
|
+
case "PROMPT": return /* @__PURE__ */ E(N, { className: t });
|
|
33
|
+
case "SKILL": return /* @__PURE__ */ E(L, { className: t });
|
|
34
34
|
case "RETRIEVAL_PROFILE":
|
|
35
35
|
case "KNOWLEDGE_BASE":
|
|
36
|
-
case "KB_TEMPLATE": return /* @__PURE__ */
|
|
37
|
-
case "POLICY_BUNDLE": return /* @__PURE__ */
|
|
38
|
-
default: return /* @__PURE__ */
|
|
36
|
+
case "KB_TEMPLATE": return /* @__PURE__ */ E(j, { className: t });
|
|
37
|
+
case "POLICY_BUNDLE": return /* @__PURE__ */ E(I, { className: t });
|
|
38
|
+
default: return /* @__PURE__ */ E(P, { className: t });
|
|
39
39
|
}
|
|
40
40
|
};
|
|
41
41
|
function H(e) {
|
|
@@ -59,7 +59,7 @@ function H(e) {
|
|
|
59
59
|
};
|
|
60
60
|
}
|
|
61
61
|
var U = () => {
|
|
62
|
-
let
|
|
62
|
+
let k = t(), { getPath: j } = e(), N = H(k), [P, I] = C(""), [L, z] = C(null), [U, W] = C("recent"), [G, K] = C(null), q = S(() => ({
|
|
63
63
|
search: P,
|
|
64
64
|
kind: L ? [L] : void 0,
|
|
65
65
|
sortBy: U
|
|
@@ -67,179 +67,179 @@ var U = () => {
|
|
|
67
67
|
P,
|
|
68
68
|
L,
|
|
69
69
|
U
|
|
70
|
-
])
|
|
70
|
+
]), { data: J, loading: Y, error: X, refetch: Z } = y(q), { data: Q, refetch: te } = v(), { install: ne } = _(), $ = S(() => new Set(Q.map((e) => e.package?.slug).filter((e) => typeof e == "string")), [Q]), re = async (e, t) => {
|
|
71
71
|
t.preventDefault(), t.stopPropagation(), K(e.slug);
|
|
72
72
|
try {
|
|
73
|
-
await
|
|
73
|
+
await ne({
|
|
74
74
|
packageId: e.id,
|
|
75
|
-
mode:
|
|
76
|
-
}), B.success(
|
|
75
|
+
mode: b.Linked
|
|
76
|
+
}), B.success(k("botlit.store.install.success", "Installed \"{{name}}\"", { name: g(e) })), te();
|
|
77
77
|
} catch (e) {
|
|
78
|
-
B.error(e instanceof Error ? e.message :
|
|
78
|
+
B.error(e instanceof Error ? e.message : k("botlit.store.install.error", "Failed to install package"));
|
|
79
79
|
} finally {
|
|
80
80
|
K(null);
|
|
81
81
|
}
|
|
82
|
-
},
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
82
|
+
}, ie = [
|
|
83
|
+
x.Agent,
|
|
84
|
+
x.McpPack,
|
|
85
|
+
x.Skill,
|
|
86
|
+
x.PromptTemplate,
|
|
87
|
+
x.PolicyBundle
|
|
88
88
|
];
|
|
89
|
-
return /* @__PURE__ */
|
|
90
|
-
title:
|
|
91
|
-
description:
|
|
92
|
-
actions: /* @__PURE__ */
|
|
89
|
+
return /* @__PURE__ */ E(n, {
|
|
90
|
+
title: k("botlit.store.title", "BotManor Store"),
|
|
91
|
+
description: k("botlit.store.description", "Discover and install pre-built agents, tools, and configurations"),
|
|
92
|
+
actions: /* @__PURE__ */ D("div", {
|
|
93
93
|
className: "flex gap-2",
|
|
94
|
-
children: [/* @__PURE__ */
|
|
94
|
+
children: [/* @__PURE__ */ E(u, {
|
|
95
95
|
variant: "outline",
|
|
96
|
-
children: /* @__PURE__ */
|
|
97
|
-
to:
|
|
98
|
-
children:
|
|
96
|
+
children: /* @__PURE__ */ E(O, {
|
|
97
|
+
to: j("store/installed"),
|
|
98
|
+
children: k("botlit.store.actions.viewInstalled", "View Installed ({{count}})", { count: Q.length })
|
|
99
99
|
})
|
|
100
|
-
}), /* @__PURE__ */
|
|
100
|
+
}), /* @__PURE__ */ E(u, {
|
|
101
101
|
variant: "outline",
|
|
102
|
-
leftIcon: /* @__PURE__ */
|
|
103
|
-
children:
|
|
102
|
+
leftIcon: /* @__PURE__ */ E(M, { size: 16 }),
|
|
103
|
+
children: k("botlit.store.actions.publishPackage", "Publish Package")
|
|
104
104
|
})]
|
|
105
105
|
}),
|
|
106
|
-
children: /* @__PURE__ */
|
|
106
|
+
children: /* @__PURE__ */ D("div", {
|
|
107
107
|
className: "space-y-6",
|
|
108
108
|
children: [
|
|
109
|
-
/* @__PURE__ */
|
|
110
|
-
icon: /* @__PURE__ */
|
|
111
|
-
children:
|
|
109
|
+
/* @__PURE__ */ E(T, {
|
|
110
|
+
icon: /* @__PURE__ */ E(R, { size: 18 }),
|
|
111
|
+
children: k("botlit.store.purpose", "The store is a marketplace of ready-made building blocks — full bots, agents, MCP tool packs, prompt templates and policy bundles published by the BotManor team and the community. Browse and install a package to skip the setup and start from a working example, then customise it for your own use case instead of building everything from scratch.")
|
|
112
112
|
}),
|
|
113
|
-
/* @__PURE__ */
|
|
113
|
+
/* @__PURE__ */ D("div", {
|
|
114
114
|
className: "flex flex-wrap items-center gap-4",
|
|
115
115
|
children: [
|
|
116
|
-
/* @__PURE__ */
|
|
116
|
+
/* @__PURE__ */ D("div", {
|
|
117
117
|
className: "relative flex-1 max-w-md",
|
|
118
|
-
children: [/* @__PURE__ */
|
|
119
|
-
placeholder:
|
|
118
|
+
children: [/* @__PURE__ */ E(F, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary" }), /* @__PURE__ */ E(ee, {
|
|
119
|
+
placeholder: k("botlit.store.searchPlaceholder", "Search packages..."),
|
|
120
120
|
value: P,
|
|
121
121
|
onChange: (e) => I(e.target.value),
|
|
122
122
|
className: "pl-9"
|
|
123
123
|
})]
|
|
124
124
|
}),
|
|
125
|
-
/* @__PURE__ */
|
|
125
|
+
/* @__PURE__ */ D("div", {
|
|
126
126
|
className: "flex gap-2",
|
|
127
|
-
children: [/* @__PURE__ */
|
|
127
|
+
children: [/* @__PURE__ */ E(u, {
|
|
128
128
|
variant: L === null ? "default" : "outline",
|
|
129
129
|
size: "sm",
|
|
130
130
|
onClick: () => z(null),
|
|
131
|
-
children:
|
|
132
|
-
}),
|
|
131
|
+
children: k("botlit.store.filters.all", "All")
|
|
132
|
+
}), ie.map((e) => /* @__PURE__ */ E(u, {
|
|
133
133
|
variant: L === e ? "default" : "outline",
|
|
134
134
|
size: "sm",
|
|
135
135
|
onClick: () => z(e),
|
|
136
|
-
leftIcon: /* @__PURE__ */
|
|
136
|
+
leftIcon: /* @__PURE__ */ E(V, {
|
|
137
137
|
kind: e,
|
|
138
138
|
className: "h-4 w-4"
|
|
139
139
|
}),
|
|
140
140
|
children: N[e]
|
|
141
141
|
}, e))]
|
|
142
142
|
}),
|
|
143
|
-
/* @__PURE__ */
|
|
144
|
-
"aria-label":
|
|
143
|
+
/* @__PURE__ */ D("select", {
|
|
144
|
+
"aria-label": k("botlit.store.filters.sortLabel", "Sort packages"),
|
|
145
145
|
className: "h-9 px-3 border border-border-default rounded-md bg-bg-surface text-sm",
|
|
146
146
|
value: U,
|
|
147
147
|
onChange: (e) => W(e.target.value),
|
|
148
|
-
children: [/* @__PURE__ */
|
|
148
|
+
children: [/* @__PURE__ */ E("option", {
|
|
149
149
|
value: "recent",
|
|
150
|
-
children:
|
|
151
|
-
}), /* @__PURE__ */
|
|
150
|
+
children: k("botlit.store.sort.recent", "Recently Published")
|
|
151
|
+
}), /* @__PURE__ */ E("option", {
|
|
152
152
|
value: "name",
|
|
153
|
-
children:
|
|
153
|
+
children: k("botlit.store.sort.name", "Name (A–Z)")
|
|
154
154
|
})]
|
|
155
155
|
})
|
|
156
156
|
]
|
|
157
157
|
}),
|
|
158
|
-
/* @__PURE__ */
|
|
158
|
+
/* @__PURE__ */ D("div", {
|
|
159
159
|
className: "grid grid-cols-1 md:grid-cols-3 gap-4",
|
|
160
|
-
children: [/* @__PURE__ */
|
|
160
|
+
children: [/* @__PURE__ */ E(w, {
|
|
161
161
|
treatment: "glass",
|
|
162
162
|
glow: !0,
|
|
163
163
|
className: "md:col-span-2 p-6",
|
|
164
|
-
children: /* @__PURE__ */
|
|
164
|
+
children: /* @__PURE__ */ D("div", {
|
|
165
165
|
className: "flex items-start gap-4",
|
|
166
|
-
children: [/* @__PURE__ */
|
|
166
|
+
children: [/* @__PURE__ */ E("div", {
|
|
167
167
|
className: "p-3 bg-action-primary-bg/20 rounded-lg",
|
|
168
|
-
children: /* @__PURE__ */
|
|
169
|
-
}), /* @__PURE__ */
|
|
170
|
-
/* @__PURE__ */
|
|
168
|
+
children: /* @__PURE__ */ E(R, { className: "h-8 w-8 text-primary" })
|
|
169
|
+
}), /* @__PURE__ */ D("div", { children: [
|
|
170
|
+
/* @__PURE__ */ E("h3", {
|
|
171
171
|
className: "text-lg font-semibold text-text-primary",
|
|
172
|
-
children:
|
|
172
|
+
children: k("botlit.store.featured.title", "Welcome to the BotManor Store")
|
|
173
173
|
}),
|
|
174
|
-
/* @__PURE__ */
|
|
174
|
+
/* @__PURE__ */ E("p", {
|
|
175
175
|
className: "text-sm text-text-secondary mt-1",
|
|
176
|
-
children:
|
|
176
|
+
children: k("botlit.store.featured.description", "Discover production-ready agents, tool packs, and configurations built by the community and BotManor team. Install packages to jumpstart your AI applications.")
|
|
177
177
|
}),
|
|
178
|
-
/* @__PURE__ */
|
|
178
|
+
/* @__PURE__ */ D("div", {
|
|
179
179
|
className: "flex gap-4 mt-4",
|
|
180
|
-
children: [/* @__PURE__ */
|
|
180
|
+
children: [/* @__PURE__ */ D("div", {
|
|
181
181
|
className: "text-center",
|
|
182
|
-
children: [/* @__PURE__ */
|
|
182
|
+
children: [/* @__PURE__ */ E("p", {
|
|
183
183
|
className: "text-2xl font-bold tabular-nums",
|
|
184
|
-
children:
|
|
185
|
-
}), /* @__PURE__ */
|
|
184
|
+
children: J.length
|
|
185
|
+
}), /* @__PURE__ */ E("p", {
|
|
186
186
|
className: "text-xs text-text-secondary",
|
|
187
|
-
children:
|
|
187
|
+
children: k("botlit.store.featured.packages", "Packages")
|
|
188
188
|
})]
|
|
189
|
-
}), /* @__PURE__ */
|
|
189
|
+
}), /* @__PURE__ */ D("div", {
|
|
190
190
|
className: "text-center",
|
|
191
|
-
children: [/* @__PURE__ */
|
|
191
|
+
children: [/* @__PURE__ */ E("p", {
|
|
192
192
|
className: "text-2xl font-bold tabular-nums",
|
|
193
|
-
children:
|
|
194
|
-
}), /* @__PURE__ */
|
|
193
|
+
children: Q.length
|
|
194
|
+
}), /* @__PURE__ */ E("p", {
|
|
195
195
|
className: "text-xs text-text-secondary",
|
|
196
|
-
children:
|
|
196
|
+
children: k("botlit.store.featured.installed", "Installed")
|
|
197
197
|
})]
|
|
198
198
|
})]
|
|
199
199
|
})
|
|
200
200
|
] })]
|
|
201
201
|
})
|
|
202
|
-
}), /* @__PURE__ */
|
|
202
|
+
}), /* @__PURE__ */ D(a, { children: [/* @__PURE__ */ E(c, {
|
|
203
203
|
className: "pb-2",
|
|
204
|
-
children: /* @__PURE__ */
|
|
204
|
+
children: /* @__PURE__ */ E(l, {
|
|
205
205
|
className: "text-sm",
|
|
206
|
-
children:
|
|
206
|
+
children: k("botlit.store.featured.quickInstall", "Quick Install")
|
|
207
207
|
})
|
|
208
|
-
}), /* @__PURE__ */
|
|
208
|
+
}), /* @__PURE__ */ E(o, {
|
|
209
209
|
className: "space-y-2",
|
|
210
|
-
children:
|
|
210
|
+
children: J.slice(0, 3).map((e) => /* @__PURE__ */ D("div", {
|
|
211
211
|
className: "flex items-center justify-between p-2 bg-bg-sunken rounded",
|
|
212
|
-
children: [/* @__PURE__ */
|
|
212
|
+
children: [/* @__PURE__ */ D("div", {
|
|
213
213
|
className: "flex items-center gap-2",
|
|
214
|
-
children: [/* @__PURE__ */
|
|
214
|
+
children: [/* @__PURE__ */ E(V, {
|
|
215
215
|
kind: e.kind,
|
|
216
216
|
className: "h-4 w-4 text-text-secondary"
|
|
217
|
-
}), /* @__PURE__ */
|
|
217
|
+
}), /* @__PURE__ */ E("span", {
|
|
218
218
|
className: "text-sm truncate max-w-[150px]",
|
|
219
|
-
children:
|
|
219
|
+
children: g(e)
|
|
220
220
|
})]
|
|
221
|
-
}), $.has(e.slug) ? /* @__PURE__ */
|
|
221
|
+
}), $.has(e.slug) ? /* @__PURE__ */ D(d, {
|
|
222
222
|
variant: "success",
|
|
223
223
|
className: "text-xs",
|
|
224
|
-
children: [/* @__PURE__ */
|
|
224
|
+
children: [/* @__PURE__ */ E(A, {
|
|
225
225
|
size: 12,
|
|
226
226
|
className: "mr-1"
|
|
227
|
-
}),
|
|
228
|
-
}) : /* @__PURE__ */
|
|
227
|
+
}), k("botlit.store.install.installedBadge", "Installed")]
|
|
228
|
+
}) : /* @__PURE__ */ E(i, {
|
|
229
229
|
permission: r.STORE_CREATE,
|
|
230
|
-
children: /* @__PURE__ */
|
|
230
|
+
children: /* @__PURE__ */ E(u, {
|
|
231
231
|
size: "sm",
|
|
232
232
|
variant: "ghost",
|
|
233
233
|
className: "h-6 text-xs",
|
|
234
|
-
onClick: (t) => void
|
|
234
|
+
onClick: (t) => void re(e, t),
|
|
235
235
|
isLoading: G === e.slug,
|
|
236
|
-
children:
|
|
236
|
+
children: k("botlit.store.install.action", "Install")
|
|
237
237
|
})
|
|
238
238
|
})]
|
|
239
239
|
}, e.id))
|
|
240
240
|
})] })]
|
|
241
241
|
}),
|
|
242
|
-
|
|
242
|
+
Y ? /* @__PURE__ */ E("div", {
|
|
243
243
|
className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",
|
|
244
244
|
children: [
|
|
245
245
|
1,
|
|
@@ -248,31 +248,31 @@ var U = () => {
|
|
|
248
248
|
4,
|
|
249
249
|
5,
|
|
250
250
|
6
|
|
251
|
-
].map((e) => /* @__PURE__ */
|
|
252
|
-
}) :
|
|
251
|
+
].map((e) => /* @__PURE__ */ E("div", { className: "h-56 bg-bg-sunken motion-safe:animate-vc-shimmer rounded-lg" }, e))
|
|
252
|
+
}) : X ? /* @__PURE__ */ E(p, {
|
|
253
253
|
resource: "store packages",
|
|
254
|
-
error:
|
|
255
|
-
onRetry: () => void
|
|
256
|
-
}) :
|
|
254
|
+
error: X,
|
|
255
|
+
onRetry: () => void Z()
|
|
256
|
+
}) : J.length > 0 ? /* @__PURE__ */ E("div", {
|
|
257
257
|
className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",
|
|
258
|
-
children:
|
|
259
|
-
to:
|
|
260
|
-
children: /* @__PURE__ */
|
|
258
|
+
children: J.map((e) => /* @__PURE__ */ E(O, {
|
|
259
|
+
to: j(`store/package/${e.slug}`),
|
|
260
|
+
children: /* @__PURE__ */ D(a, {
|
|
261
261
|
className: "h-full hover:border-primary/50 transition-colors cursor-pointer",
|
|
262
|
-
children: [/* @__PURE__ */
|
|
262
|
+
children: [/* @__PURE__ */ E(c, { children: /* @__PURE__ */ D("div", {
|
|
263
263
|
className: "flex items-start justify-between",
|
|
264
|
-
children: [/* @__PURE__ */
|
|
264
|
+
children: [/* @__PURE__ */ D("div", {
|
|
265
265
|
className: "flex items-center gap-3",
|
|
266
|
-
children: [/* @__PURE__ */
|
|
266
|
+
children: [/* @__PURE__ */ E("div", {
|
|
267
267
|
className: "p-2 bg-action-primary-bg/10 rounded-lg",
|
|
268
|
-
children: /* @__PURE__ */
|
|
268
|
+
children: /* @__PURE__ */ E(V, {
|
|
269
269
|
kind: e.kind,
|
|
270
270
|
className: "h-5 w-5 text-primary"
|
|
271
271
|
})
|
|
272
|
-
}), /* @__PURE__ */
|
|
272
|
+
}), /* @__PURE__ */ D("div", { children: [/* @__PURE__ */ E(l, {
|
|
273
273
|
className: "text-base",
|
|
274
|
-
children:
|
|
275
|
-
}), /* @__PURE__ */
|
|
274
|
+
children: g(e)
|
|
275
|
+
}), /* @__PURE__ */ D(s, {
|
|
276
276
|
className: "text-xs",
|
|
277
277
|
children: [
|
|
278
278
|
e.slug,
|
|
@@ -280,43 +280,42 @@ var U = () => {
|
|
|
280
280
|
e.version
|
|
281
281
|
]
|
|
282
282
|
})] })]
|
|
283
|
-
}), $.has(e.slug) && /* @__PURE__ */
|
|
283
|
+
}), $.has(e.slug) && /* @__PURE__ */ D(d, {
|
|
284
284
|
variant: "success",
|
|
285
285
|
className: "text-xs",
|
|
286
|
-
children: [/* @__PURE__ */
|
|
286
|
+
children: [/* @__PURE__ */ E(A, {
|
|
287
287
|
size: 10,
|
|
288
288
|
className: "mr-1"
|
|
289
|
-
}),
|
|
289
|
+
}), k("botlit.store.install.installedBadge", "Installed")]
|
|
290
290
|
})]
|
|
291
|
-
}) }), /* @__PURE__ */
|
|
291
|
+
}) }), /* @__PURE__ */ E(o, { children: /* @__PURE__ */ D("div", {
|
|
292
292
|
className: "space-y-3",
|
|
293
|
-
children: [/* @__PURE__ */
|
|
293
|
+
children: [/* @__PURE__ */ E("p", {
|
|
294
294
|
className: "text-sm text-text-secondary line-clamp-2",
|
|
295
|
-
children:
|
|
296
|
-
}), /* @__PURE__ */
|
|
295
|
+
children: h(e)
|
|
296
|
+
}), /* @__PURE__ */ D("div", {
|
|
297
297
|
className: "pt-3 border-t border-border-subtle flex items-center justify-between",
|
|
298
|
-
children: [/* @__PURE__ */
|
|
298
|
+
children: [/* @__PURE__ */ E(d, {
|
|
299
299
|
variant: "outline",
|
|
300
300
|
className: "text-xs",
|
|
301
301
|
children: N[e.kind] ?? e.kind
|
|
302
|
-
}), /* @__PURE__ */
|
|
302
|
+
}), /* @__PURE__ */ E("span", {
|
|
303
303
|
className: "text-xs text-text-secondary",
|
|
304
|
-
children:
|
|
304
|
+
children: m(e.publishedAt)
|
|
305
305
|
})]
|
|
306
306
|
})]
|
|
307
307
|
}) })]
|
|
308
308
|
})
|
|
309
309
|
}, e.id))
|
|
310
|
-
}) : /* @__PURE__ */
|
|
310
|
+
}) : /* @__PURE__ */ E(f, {
|
|
311
311
|
illustration: "empty-search",
|
|
312
|
-
title:
|
|
313
|
-
description: P || L ?
|
|
312
|
+
title: k("botlit.store.empty.title", "No packages found"),
|
|
313
|
+
description: P || L ? k("botlit.store.empty.descriptionFiltered", "Try adjusting your search or filters.") : k("botlit.store.empty.descriptionNoPackages", "No packages available in the store yet.")
|
|
314
314
|
})
|
|
315
315
|
]
|
|
316
316
|
})
|
|
317
317
|
});
|
|
318
318
|
};
|
|
319
|
-
//#endregion
|
|
320
319
|
export { U as StorePage };
|
|
321
320
|
|
|
322
321
|
//# sourceMappingURL=StorePage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StorePage.js","names":[],"sources":["../../../src/botlit/pages/StorePage.tsx"],"sourcesContent":["/**\n * Store Page\n * @module botlit/pages\n */\n\nimport type { FC, MouseEvent } from 'react';\nimport { useMemo, useState } from 'react';\nimport { Link } from 'react-router';\nimport { useBotlit } from '../providers/BotlitProvider';\nimport {\n Search as SearchIcon,\n Store,\n Package,\n Bot,\n Wrench,\n FileText,\n Sparkles,\n Database,\n Shield,\n Check,\n ExternalLink,\n} from 'lucide-react';\nimport { toast } from 'sonner';\nimport { useTr } from '../../shared/hooks/useTr';\nimport { PagePurpose, GlassCard } from '@burdenoff/fe-libs/ui';\nimport { PageLayout } from '../components/PageLayout';\nimport { Card, CardHeader, CardTitle, CardContent, CardDescription } from '../components/Card';\nimport { Button } from '../components/Button';\nimport { Input } from '../components/Input';\nimport { Badge } from '../components/Badge';\nimport { EmptyState } from '../components/EmptyState';\nimport { ErrorState } from '../components/ErrorState';\nimport {\n useStorePackages,\n useInstalledPackages,\n useInstallPackage,\n storePackageName,\n storePackageDescription,\n type StorePackageRecord,\n type StoreSortBy,\n} from '../hooks';\nimport { formatRelativeTime } from '../utils/formatters';\nimport {\n InstallMode as GqlInstallMode,\n PackageKind as GqlPackageKind,\n} from '../../generated/wspace-types';\nimport type { PackageKind } from '../types';\nimport { BOTMANOR_PERMISSIONS, BotmanorPermissionGate } from '../permissions';\n\nconst KindIcon: FC<{ kind: string; className?: string }> = ({ kind, className }) => {\n switch (kind) {\n case 'APP':\n return <Package className={className} />;\n case 'AGENT':\n case 'A2A_AGENT':\n return <Bot className={className} />;\n case 'MCP_PACK':\n case 'TOOL':\n return <Wrench className={className} />;\n case 'PROMPT_TEMPLATE':\n case 'PROMPT':\n return <FileText className={className} />;\n case 'SKILL':\n return <Sparkles className={className} />;\n case 'RETRIEVAL_PROFILE':\n case 'KNOWLEDGE_BASE':\n case 'KB_TEMPLATE':\n return <Database className={className} />;\n case 'POLICY_BUNDLE':\n return <Shield className={className} />;\n default:\n return <Package className={className} />;\n }\n};\n\nfunction useKindLabel(t: ReturnType<typeof useTr>): Record<string, string> {\n return {\n APP: t('botlit.store.kindLabel.APP', 'Bot'),\n AGENT: t('botlit.store.kindLabel.AGENT', 'Agent'),\n MCP_PACK: t('botlit.store.kindLabel.MCP_PACK', 'MCP Pack'),\n PROMPT_TEMPLATE: t('botlit.store.kindLabel.PROMPT_TEMPLATE', 'Prompt Template'),\n PROMPT: t('botlit.store.kindLabel.PROMPT', 'Prompt'),\n SKILL: t('botlit.store.kindLabel.SKILL', 'Skill'),\n RETRIEVAL_PROFILE: t('botlit.store.kindLabel.RETRIEVAL_PROFILE', 'Retrieval Profile'),\n POLICY_BUNDLE: t('botlit.store.kindLabel.POLICY_BUNDLE', 'Policy Bundle'),\n CHANNEL_TEMPLATE: t('botlit.store.kindLabel.CHANNEL_TEMPLATE', 'Channel Template'),\n A2A_AGENT: t('botlit.store.kindLabel.A2A_AGENT', 'A2A Agent'),\n KB_TEMPLATE: t('botlit.store.kindLabel.KB_TEMPLATE', 'KB Template'),\n KNOWLEDGE_BASE: t('botlit.store.kindLabel.KNOWLEDGE_BASE', 'Knowledge Base'),\n INTEGRATION: t('botlit.store.kindLabel.INTEGRATION', 'Integration'),\n TEMPLATE: t('botlit.store.kindLabel.TEMPLATE', 'Template'),\n TOOL: t('botlit.store.kindLabel.TOOL', 'Tool'),\n WORKFLOW: t('botlit.store.kindLabel.WORKFLOW', 'Workflow'),\n };\n}\n\nexport const StorePage: FC = () => {\n const t = useTr();\n const { getPath } = useBotlit();\n const kindLabel = useKindLabel(t);\n const [search, setSearch] = useState('');\n const [selectedKind, setSelectedKind] = useState<PackageKind | null>(null);\n const [sortBy, setSortBy] = useState<StoreSortBy>('recent');\n const [installingSlug, setInstallingSlug] = useState<string | null>(null);\n\n const storeFilter = useMemo(\n () => ({ search, kind: selectedKind ? [selectedKind] : undefined, sortBy }),\n [search, selectedKind, sortBy]\n );\n const { data: packages, loading, error, refetch } = useStorePackages(storeFilter);\n const { data: installed, refetch: refetchInstalled } = useInstalledPackages();\n const { install } = useInstallPackage();\n\n const installedSlugs = useMemo(\n () =>\n new Set(\n installed\n .map((entry) => entry.package?.slug)\n .filter((slug): slug is string => typeof slug === 'string')\n ),\n [installed]\n );\n\n const handleInstall = async (pkg: StorePackageRecord, e: MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setInstallingSlug(pkg.slug);\n try {\n await install({ packageId: pkg.id, mode: GqlInstallMode.Linked });\n toast.success(\n t('botlit.store.install.success', 'Installed \"{{name}}\"', {\n name: storePackageName(pkg),\n })\n );\n void refetchInstalled();\n } catch (err) {\n toast.error(\n err instanceof Error\n ? err.message\n : t('botlit.store.install.error', 'Failed to install package')\n );\n } finally {\n setInstallingSlug(null);\n }\n };\n\n const kinds: PackageKind[] = [\n GqlPackageKind.Agent,\n GqlPackageKind.McpPack,\n GqlPackageKind.Skill,\n GqlPackageKind.PromptTemplate,\n GqlPackageKind.PolicyBundle,\n ];\n\n return (\n <PageLayout\n title={t('botlit.store.title', 'BotManor Store')}\n description={t(\n 'botlit.store.description',\n 'Discover and install pre-built agents, tools, and configurations'\n )}\n actions={\n <div className=\"flex gap-2\">\n <Button variant=\"outline\">\n <Link to={getPath('store/installed')}>\n {t('botlit.store.actions.viewInstalled', 'View Installed ({{count}})', {\n count: installed.length,\n })}\n </Link>\n </Button>\n <Button variant=\"outline\" leftIcon={<ExternalLink size={16} />}>\n {t('botlit.store.actions.publishPackage', 'Publish Package')}\n </Button>\n </div>\n }\n >\n <div className=\"space-y-6\">\n <PagePurpose icon={<Store size={18} />}>\n {t(\n 'botlit.store.purpose',\n 'The store is a marketplace of ready-made building blocks — full bots, agents, MCP tool packs, prompt templates and policy bundles published by the BotManor team and the community. Browse and install a package to skip the setup and start from a working example, then customise it for your own use case instead of building everything from scratch.'\n )}\n </PagePurpose>\n\n {/* Search and Filters */}\n <div className=\"flex flex-wrap items-center gap-4\">\n <div className=\"relative flex-1 max-w-md\">\n <SearchIcon className=\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary\" />\n <Input\n placeholder={t('botlit.store.searchPlaceholder', 'Search packages...')}\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n className=\"pl-9\"\n />\n </div>\n\n {/* Kind Filters */}\n <div className=\"flex gap-2\">\n <Button\n variant={selectedKind === null ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() => setSelectedKind(null)}\n >\n {t('botlit.store.filters.all', 'All')}\n </Button>\n {kinds.map((kind) => (\n <Button\n key={kind}\n variant={selectedKind === kind ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() => setSelectedKind(kind)}\n leftIcon={<KindIcon kind={kind} className=\"h-4 w-4\" />}\n >\n {kindLabel[kind]}\n </Button>\n ))}\n </div>\n\n {/* Sort */}\n <select\n aria-label={t('botlit.store.filters.sortLabel', 'Sort packages')}\n className=\"h-9 px-3 border border-border-default rounded-md bg-bg-surface text-sm\"\n value={sortBy}\n onChange={(e) => setSortBy(e.target.value as StoreSortBy)}\n >\n <option value=\"recent\">{t('botlit.store.sort.recent', 'Recently Published')}</option>\n <option value=\"name\">{t('botlit.store.sort.name', 'Name (A–Z)')}</option>\n </select>\n </div>\n\n {/* Featured Section */}\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-4\">\n <GlassCard treatment=\"glass\" glow className=\"md:col-span-2 p-6\">\n <div className=\"flex items-start gap-4\">\n <div className=\"p-3 bg-action-primary-bg/20 rounded-lg\">\n <Store className=\"h-8 w-8 text-primary\" />\n </div>\n <div>\n <h3 className=\"text-lg font-semibold text-text-primary\">\n {t('botlit.store.featured.title', 'Welcome to the BotManor Store')}\n </h3>\n <p className=\"text-sm text-text-secondary mt-1\">\n {t(\n 'botlit.store.featured.description',\n 'Discover production-ready agents, tool packs, and configurations built by the community and BotManor team. Install packages to jumpstart your AI applications.'\n )}\n </p>\n <div className=\"flex gap-4 mt-4\">\n <div className=\"text-center\">\n <p className=\"text-2xl font-bold tabular-nums\">{packages.length}</p>\n <p className=\"text-xs text-text-secondary\">\n {t('botlit.store.featured.packages', 'Packages')}\n </p>\n </div>\n <div className=\"text-center\">\n <p className=\"text-2xl font-bold tabular-nums\">{installed.length}</p>\n <p className=\"text-xs text-text-secondary\">\n {t('botlit.store.featured.installed', 'Installed')}\n </p>\n </div>\n </div>\n </div>\n </div>\n </GlassCard>\n <Card>\n <CardHeader className=\"pb-2\">\n <CardTitle className=\"text-sm\">\n {t('botlit.store.featured.quickInstall', 'Quick Install')}\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-2\">\n {packages.slice(0, 3).map((pkg: StorePackageRecord) => (\n <div\n key={pkg.id}\n className=\"flex items-center justify-between p-2 bg-bg-sunken rounded\"\n >\n <div className=\"flex items-center gap-2\">\n <KindIcon kind={pkg.kind} className=\"h-4 w-4 text-text-secondary\" />\n <span className=\"text-sm truncate max-w-[150px]\">{storePackageName(pkg)}</span>\n </div>\n {installedSlugs.has(pkg.slug) ? (\n <Badge variant=\"success\" className=\"text-xs\">\n <Check size={12} className=\"mr-1\" />\n {t('botlit.store.install.installedBadge', 'Installed')}\n </Badge>\n ) : (\n <BotmanorPermissionGate permission={BOTMANOR_PERMISSIONS.STORE_CREATE}>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n className=\"h-6 text-xs\"\n onClick={(e) => void handleInstall(pkg, e)}\n isLoading={installingSlug === pkg.slug}\n >\n {t('botlit.store.install.action', 'Install')}\n </Button>\n </BotmanorPermissionGate>\n )}\n </div>\n ))}\n </CardContent>\n </Card>\n </div>\n\n {/* Packages Grid */}\n {loading ? (\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4\">\n {[1, 2, 3, 4, 5, 6].map((i) => (\n <div\n key={i}\n className=\"h-56 bg-bg-sunken motion-safe:animate-vc-shimmer rounded-lg\"\n />\n ))}\n </div>\n ) : error ? (\n <ErrorState resource=\"store packages\" error={error} onRetry={() => void refetch()} />\n ) : packages.length > 0 ? (\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4\">\n {packages.map((pkg: StorePackageRecord) => (\n <Link key={pkg.id} to={getPath(`store/package/${pkg.slug}`)}>\n <Card className=\"h-full hover:border-primary/50 transition-colors cursor-pointer\">\n <CardHeader>\n <div className=\"flex items-start justify-between\">\n <div className=\"flex items-center gap-3\">\n <div className=\"p-2 bg-action-primary-bg/10 rounded-lg\">\n <KindIcon kind={pkg.kind} className=\"h-5 w-5 text-primary\" />\n </div>\n <div>\n <CardTitle className=\"text-base\">{storePackageName(pkg)}</CardTitle>\n <CardDescription className=\"text-xs\">\n {pkg.slug} v{pkg.version}\n </CardDescription>\n </div>\n </div>\n {installedSlugs.has(pkg.slug) && (\n <Badge variant=\"success\" className=\"text-xs\">\n <Check size={10} className=\"mr-1\" />\n {t('botlit.store.install.installedBadge', 'Installed')}\n </Badge>\n )}\n </div>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-3\">\n <p className=\"text-sm text-text-secondary line-clamp-2\">\n {storePackageDescription(pkg)}\n </p>\n\n {/* Footer */}\n <div className=\"pt-3 border-t border-border-subtle flex items-center justify-between\">\n <Badge variant=\"outline\" className=\"text-xs\">\n {kindLabel[pkg.kind] ?? pkg.kind}\n </Badge>\n <span className=\"text-xs text-text-secondary\">\n {formatRelativeTime(pkg.publishedAt)}\n </span>\n </div>\n </div>\n </CardContent>\n </Card>\n </Link>\n ))}\n </div>\n ) : (\n <EmptyState\n illustration=\"empty-search\"\n title={t('botlit.store.empty.title', 'No packages found')}\n description={\n search || selectedKind\n ? t(\n 'botlit.store.empty.descriptionFiltered',\n 'Try adjusting your search or filters.'\n )\n : t(\n 'botlit.store.empty.descriptionNoPackages',\n 'No packages available in the store yet.'\n )\n }\n />\n )}\n </div>\n </PageLayout>\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"StorePage.js","names":["GqlInstallMode","GqlPackageKind","SearchIcon","KindIcon","kind","Package","Bot","Wrench","FileText","Sparkles","Database","Shield","useKindLabel","t","StorePage","useTr","useBotlit","kindLabel","search","setSearch","useState","selectedKind","setSelectedKind","sortBy","setSortBy","installingSlug","setInstallingSlug","storeFilter","useMemo","packages","useStorePackages","installed","refetchInstalled","useInstalledPackages","useInstallPackage","installedSlugs","entry","slug","handleInstall","e","pkg","install","InstallMode","toast","storePackageName","err","kinds","PackageKind","PageLayout","Button","Link","getPath","ExternalLink","PagePurpose","Store","Search","Input","GlassCard","Card","CardHeader","CardTitle","CardContent","Badge","Check","BotmanorPermissionGate","BOTMANOR_PERMISSIONS","loading","i","error","ErrorState","refetch","CardDescription","storePackageDescription","formatRelativeTime","EmptyState"],"sources":["../../../src/botlit/pages/StorePage.tsx"],"sourcesContent":["/**\n * Store Page\n * @module botlit/pages\n */\n\nimport type { FC, MouseEvent } from 'react';\nimport { useMemo, useState } from 'react';\nimport { Link } from 'react-router';\nimport { useBotlit } from '../providers/BotlitProvider';\nimport {\n Search as SearchIcon,\n Store,\n Package,\n Bot,\n Wrench,\n FileText,\n Sparkles,\n Database,\n Shield,\n Check,\n ExternalLink,\n} from 'lucide-react';\nimport { toast } from 'sonner';\nimport { useTr } from '../../shared/hooks/useTr';\nimport { PagePurpose, GlassCard } from '@burdenoff/fe-libs/ui';\nimport { PageLayout } from '../components/PageLayout';\nimport { Card, CardHeader, CardTitle, CardContent, CardDescription } from '../components/Card';\nimport { Button } from '../components/Button';\nimport { Input } from '../components/Input';\nimport { Badge } from '../components/Badge';\nimport { EmptyState } from '../components/EmptyState';\nimport { ErrorState } from '../components/ErrorState';\nimport {\n useStorePackages,\n useInstalledPackages,\n useInstallPackage,\n storePackageName,\n storePackageDescription,\n type StorePackageRecord,\n type StoreSortBy,\n} from '../hooks';\nimport { formatRelativeTime } from '../utils/formatters';\nimport {\n InstallMode as GqlInstallMode,\n PackageKind as GqlPackageKind,\n} from '../../generated/wspace-types';\nimport type { PackageKind } from '../types';\nimport { BOTMANOR_PERMISSIONS, BotmanorPermissionGate } from '../permissions';\n\nconst KindIcon: FC<{ kind: string; className?: string }> = ({ kind, className }) => {\n switch (kind) {\n case 'APP':\n return <Package className={className} />;\n case 'AGENT':\n case 'A2A_AGENT':\n return <Bot className={className} />;\n case 'MCP_PACK':\n case 'TOOL':\n return <Wrench className={className} />;\n case 'PROMPT_TEMPLATE':\n case 'PROMPT':\n return <FileText className={className} />;\n case 'SKILL':\n return <Sparkles className={className} />;\n case 'RETRIEVAL_PROFILE':\n case 'KNOWLEDGE_BASE':\n case 'KB_TEMPLATE':\n return <Database className={className} />;\n case 'POLICY_BUNDLE':\n return <Shield className={className} />;\n default:\n return <Package className={className} />;\n }\n};\n\nfunction useKindLabel(t: ReturnType<typeof useTr>): Record<string, string> {\n return {\n APP: t('botlit.store.kindLabel.APP', 'Bot'),\n AGENT: t('botlit.store.kindLabel.AGENT', 'Agent'),\n MCP_PACK: t('botlit.store.kindLabel.MCP_PACK', 'MCP Pack'),\n PROMPT_TEMPLATE: t('botlit.store.kindLabel.PROMPT_TEMPLATE', 'Prompt Template'),\n PROMPT: t('botlit.store.kindLabel.PROMPT', 'Prompt'),\n SKILL: t('botlit.store.kindLabel.SKILL', 'Skill'),\n RETRIEVAL_PROFILE: t('botlit.store.kindLabel.RETRIEVAL_PROFILE', 'Retrieval Profile'),\n POLICY_BUNDLE: t('botlit.store.kindLabel.POLICY_BUNDLE', 'Policy Bundle'),\n CHANNEL_TEMPLATE: t('botlit.store.kindLabel.CHANNEL_TEMPLATE', 'Channel Template'),\n A2A_AGENT: t('botlit.store.kindLabel.A2A_AGENT', 'A2A Agent'),\n KB_TEMPLATE: t('botlit.store.kindLabel.KB_TEMPLATE', 'KB Template'),\n KNOWLEDGE_BASE: t('botlit.store.kindLabel.KNOWLEDGE_BASE', 'Knowledge Base'),\n INTEGRATION: t('botlit.store.kindLabel.INTEGRATION', 'Integration'),\n TEMPLATE: t('botlit.store.kindLabel.TEMPLATE', 'Template'),\n TOOL: t('botlit.store.kindLabel.TOOL', 'Tool'),\n WORKFLOW: t('botlit.store.kindLabel.WORKFLOW', 'Workflow'),\n };\n}\n\nexport const StorePage: FC = () => {\n const t = useTr();\n const { getPath } = useBotlit();\n const kindLabel = useKindLabel(t);\n const [search, setSearch] = useState('');\n const [selectedKind, setSelectedKind] = useState<PackageKind | null>(null);\n const [sortBy, setSortBy] = useState<StoreSortBy>('recent');\n const [installingSlug, setInstallingSlug] = useState<string | null>(null);\n\n const storeFilter = useMemo(\n () => ({ search, kind: selectedKind ? [selectedKind] : undefined, sortBy }),\n [search, selectedKind, sortBy]\n );\n const { data: packages, loading, error, refetch } = useStorePackages(storeFilter);\n const { data: installed, refetch: refetchInstalled } = useInstalledPackages();\n const { install } = useInstallPackage();\n\n const installedSlugs = useMemo(\n () =>\n new Set(\n installed\n .map((entry) => entry.package?.slug)\n .filter((slug): slug is string => typeof slug === 'string')\n ),\n [installed]\n );\n\n const handleInstall = async (pkg: StorePackageRecord, e: MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setInstallingSlug(pkg.slug);\n try {\n await install({ packageId: pkg.id, mode: GqlInstallMode.Linked });\n toast.success(\n t('botlit.store.install.success', 'Installed \"{{name}}\"', {\n name: storePackageName(pkg),\n })\n );\n void refetchInstalled();\n } catch (err) {\n toast.error(\n err instanceof Error\n ? err.message\n : t('botlit.store.install.error', 'Failed to install package')\n );\n } finally {\n setInstallingSlug(null);\n }\n };\n\n const kinds: PackageKind[] = [\n GqlPackageKind.Agent,\n GqlPackageKind.McpPack,\n GqlPackageKind.Skill,\n GqlPackageKind.PromptTemplate,\n GqlPackageKind.PolicyBundle,\n ];\n\n return (\n <PageLayout\n title={t('botlit.store.title', 'BotManor Store')}\n description={t(\n 'botlit.store.description',\n 'Discover and install pre-built agents, tools, and configurations'\n )}\n actions={\n <div className=\"flex gap-2\">\n <Button variant=\"outline\">\n <Link to={getPath('store/installed')}>\n {t('botlit.store.actions.viewInstalled', 'View Installed ({{count}})', {\n count: installed.length,\n })}\n </Link>\n </Button>\n <Button variant=\"outline\" leftIcon={<ExternalLink size={16} />}>\n {t('botlit.store.actions.publishPackage', 'Publish Package')}\n </Button>\n </div>\n }\n >\n <div className=\"space-y-6\">\n <PagePurpose icon={<Store size={18} />}>\n {t(\n 'botlit.store.purpose',\n 'The store is a marketplace of ready-made building blocks — full bots, agents, MCP tool packs, prompt templates and policy bundles published by the BotManor team and the community. Browse and install a package to skip the setup and start from a working example, then customise it for your own use case instead of building everything from scratch.'\n )}\n </PagePurpose>\n\n {/* Search and Filters */}\n <div className=\"flex flex-wrap items-center gap-4\">\n <div className=\"relative flex-1 max-w-md\">\n <SearchIcon className=\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-secondary\" />\n <Input\n placeholder={t('botlit.store.searchPlaceholder', 'Search packages...')}\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n className=\"pl-9\"\n />\n </div>\n\n {/* Kind Filters */}\n <div className=\"flex gap-2\">\n <Button\n variant={selectedKind === null ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() => setSelectedKind(null)}\n >\n {t('botlit.store.filters.all', 'All')}\n </Button>\n {kinds.map((kind) => (\n <Button\n key={kind}\n variant={selectedKind === kind ? 'default' : 'outline'}\n size=\"sm\"\n onClick={() => setSelectedKind(kind)}\n leftIcon={<KindIcon kind={kind} className=\"h-4 w-4\" />}\n >\n {kindLabel[kind]}\n </Button>\n ))}\n </div>\n\n {/* Sort */}\n <select\n aria-label={t('botlit.store.filters.sortLabel', 'Sort packages')}\n className=\"h-9 px-3 border border-border-default rounded-md bg-bg-surface text-sm\"\n value={sortBy}\n onChange={(e) => setSortBy(e.target.value as StoreSortBy)}\n >\n <option value=\"recent\">{t('botlit.store.sort.recent', 'Recently Published')}</option>\n <option value=\"name\">{t('botlit.store.sort.name', 'Name (A–Z)')}</option>\n </select>\n </div>\n\n {/* Featured Section */}\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-4\">\n <GlassCard treatment=\"glass\" glow className=\"md:col-span-2 p-6\">\n <div className=\"flex items-start gap-4\">\n <div className=\"p-3 bg-action-primary-bg/20 rounded-lg\">\n <Store className=\"h-8 w-8 text-primary\" />\n </div>\n <div>\n <h3 className=\"text-lg font-semibold text-text-primary\">\n {t('botlit.store.featured.title', 'Welcome to the BotManor Store')}\n </h3>\n <p className=\"text-sm text-text-secondary mt-1\">\n {t(\n 'botlit.store.featured.description',\n 'Discover production-ready agents, tool packs, and configurations built by the community and BotManor team. Install packages to jumpstart your AI applications.'\n )}\n </p>\n <div className=\"flex gap-4 mt-4\">\n <div className=\"text-center\">\n <p className=\"text-2xl font-bold tabular-nums\">{packages.length}</p>\n <p className=\"text-xs text-text-secondary\">\n {t('botlit.store.featured.packages', 'Packages')}\n </p>\n </div>\n <div className=\"text-center\">\n <p className=\"text-2xl font-bold tabular-nums\">{installed.length}</p>\n <p className=\"text-xs text-text-secondary\">\n {t('botlit.store.featured.installed', 'Installed')}\n </p>\n </div>\n </div>\n </div>\n </div>\n </GlassCard>\n <Card>\n <CardHeader className=\"pb-2\">\n <CardTitle className=\"text-sm\">\n {t('botlit.store.featured.quickInstall', 'Quick Install')}\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-2\">\n {packages.slice(0, 3).map((pkg: StorePackageRecord) => (\n <div\n key={pkg.id}\n className=\"flex items-center justify-between p-2 bg-bg-sunken rounded\"\n >\n <div className=\"flex items-center gap-2\">\n <KindIcon kind={pkg.kind} className=\"h-4 w-4 text-text-secondary\" />\n <span className=\"text-sm truncate max-w-[150px]\">{storePackageName(pkg)}</span>\n </div>\n {installedSlugs.has(pkg.slug) ? (\n <Badge variant=\"success\" className=\"text-xs\">\n <Check size={12} className=\"mr-1\" />\n {t('botlit.store.install.installedBadge', 'Installed')}\n </Badge>\n ) : (\n <BotmanorPermissionGate permission={BOTMANOR_PERMISSIONS.STORE_CREATE}>\n <Button\n size=\"sm\"\n variant=\"ghost\"\n className=\"h-6 text-xs\"\n onClick={(e) => void handleInstall(pkg, e)}\n isLoading={installingSlug === pkg.slug}\n >\n {t('botlit.store.install.action', 'Install')}\n </Button>\n </BotmanorPermissionGate>\n )}\n </div>\n ))}\n </CardContent>\n </Card>\n </div>\n\n {/* Packages Grid */}\n {loading ? (\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4\">\n {[1, 2, 3, 4, 5, 6].map((i) => (\n <div\n key={i}\n className=\"h-56 bg-bg-sunken motion-safe:animate-vc-shimmer rounded-lg\"\n />\n ))}\n </div>\n ) : error ? (\n <ErrorState resource=\"store packages\" error={error} onRetry={() => void refetch()} />\n ) : packages.length > 0 ? (\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4\">\n {packages.map((pkg: StorePackageRecord) => (\n <Link key={pkg.id} to={getPath(`store/package/${pkg.slug}`)}>\n <Card className=\"h-full hover:border-primary/50 transition-colors cursor-pointer\">\n <CardHeader>\n <div className=\"flex items-start justify-between\">\n <div className=\"flex items-center gap-3\">\n <div className=\"p-2 bg-action-primary-bg/10 rounded-lg\">\n <KindIcon kind={pkg.kind} className=\"h-5 w-5 text-primary\" />\n </div>\n <div>\n <CardTitle className=\"text-base\">{storePackageName(pkg)}</CardTitle>\n <CardDescription className=\"text-xs\">\n {pkg.slug} v{pkg.version}\n </CardDescription>\n </div>\n </div>\n {installedSlugs.has(pkg.slug) && (\n <Badge variant=\"success\" className=\"text-xs\">\n <Check size={10} className=\"mr-1\" />\n {t('botlit.store.install.installedBadge', 'Installed')}\n </Badge>\n )}\n </div>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-3\">\n <p className=\"text-sm text-text-secondary line-clamp-2\">\n {storePackageDescription(pkg)}\n </p>\n\n {/* Footer */}\n <div className=\"pt-3 border-t border-border-subtle flex items-center justify-between\">\n <Badge variant=\"outline\" className=\"text-xs\">\n {kindLabel[pkg.kind] ?? pkg.kind}\n </Badge>\n <span className=\"text-xs text-text-secondary\">\n {formatRelativeTime(pkg.publishedAt)}\n </span>\n </div>\n </div>\n </CardContent>\n </Card>\n </Link>\n ))}\n </div>\n ) : (\n <EmptyState\n illustration=\"empty-search\"\n title={t('botlit.store.empty.title', 'No packages found')}\n description={\n search || selectedKind\n ? t(\n 'botlit.store.empty.descriptionFiltered',\n 'Try adjusting your search or filters.'\n )\n : t(\n 'botlit.store.empty.descriptionNoPackages',\n 'No packages available in the store yet.'\n )\n }\n />\n )}\n </div>\n </PageLayout>\n );\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pages Index
|
|
3
|
+
* @module botlit/pages
|
|
4
|
+
*/
|
|
5
|
+
export { DashboardPage } from './DashboardPage';
|
|
6
|
+
export { BotsListPage } from './BotsListPage';
|
|
7
|
+
export { BotDetailPage } from './BotDetailPage';
|
|
8
|
+
export { AgentsListPage } from './AgentsListPage';
|
|
9
|
+
export { AgentDetailPage } from './AgentDetailPage';
|
|
10
|
+
export { AgentBuilderPage } from './AgentBuilderPage';
|
|
11
|
+
export { KnowledgeBasesPage } from './KnowledgeBasesPage';
|
|
12
|
+
export { KnowledgeBaseDetailPage } from './KnowledgeBaseDetailPage';
|
|
13
|
+
export { RetrievalProfilesPage } from './RetrievalProfilesPage';
|
|
14
|
+
export { RetrievalProfileDetailPage } from './RetrievalProfileDetailPage';
|
|
15
|
+
export { MCPServersPage } from './MCPServersPage';
|
|
16
|
+
export { MCPServerDetailPage } from './MCPServerDetailPage';
|
|
17
|
+
export { A2ARegistryPage } from './A2ARegistryPage';
|
|
18
|
+
export { A2AAgentDetailPage } from './A2AAgentDetailPage';
|
|
19
|
+
export { ChannelsPage } from './ChannelsPage';
|
|
20
|
+
export { ChannelDetailPage } from './ChannelDetailPage';
|
|
21
|
+
export { ChannelRoutesPage } from './ChannelRoutesPage';
|
|
22
|
+
export { PoliciesPage } from './PoliciesPage';
|
|
23
|
+
export { PolicyDetailPage } from './PolicyDetailPage';
|
|
24
|
+
export { SkillsPage } from './SkillsPage';
|
|
25
|
+
export { SkillDetailPage } from './SkillDetailPage';
|
|
26
|
+
export { PromptTemplatesPage } from './PromptTemplatesPage';
|
|
27
|
+
export { PromptTemplateDetailPage } from './PromptTemplateDetailPage';
|
|
28
|
+
export { PromptStudioPage } from './PromptStudioPage';
|
|
29
|
+
export { ExecutionsPage } from './ExecutionsPage';
|
|
30
|
+
export { AiOperationsPage } from './AiOperationsPage';
|
|
31
|
+
export { ExecutionDetailPage } from './ExecutionDetailPage';
|
|
32
|
+
export { BucketsPage } from './BucketsPage';
|
|
33
|
+
export { BucketDetailPage } from './BucketDetailPage';
|
|
34
|
+
export { StorePage } from './StorePage';
|
|
35
|
+
export { StorePackageDetailPage } from './StorePackageDetailPage';
|
|
36
|
+
export { InstalledPackagesPage } from './InstalledPackagesPage';
|
|
37
|
+
export { ChatPage } from './ChatPage';
|
|
38
|
+
export { SettingsPage } from './SettingsPage';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { FC, ReactNode } from 'react';
|
|
2
|
+
import { BotmanorPermission } from './botmanorPermissions';
|
|
3
|
+
export interface PermissionRequiredStateProps {
|
|
4
|
+
/** Page title, e.g. "Create Policy". */
|
|
5
|
+
title: string;
|
|
6
|
+
/** Where "Back" goes, relative to the BotManor mount (e.g. `policies`). */
|
|
7
|
+
backTo: string;
|
|
8
|
+
/** Label for the back link, e.g. "Back to policies". */
|
|
9
|
+
backLabel: string;
|
|
10
|
+
}
|
|
11
|
+
export declare const PermissionRequiredState: FC<PermissionRequiredStateProps>;
|
|
12
|
+
export interface RequirePermissionProps extends PermissionRequiredStateProps {
|
|
13
|
+
permission: BotmanorPermission;
|
|
14
|
+
children: ReactNode;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Render a create page only for members who may create; everyone else gets the
|
|
18
|
+
* permission-required state. Nothing renders while permissions load.
|
|
19
|
+
*/
|
|
20
|
+
export declare const RequirePermission: FC<RequirePermissionProps>;
|