@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
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { CreateSkillInput, UpdateSkillInput } from '../../generated/wspace-types';
|
|
2
|
+
import { GraphQLInput } from './internal/mutationInput';
|
|
3
|
+
import { QueryResult } from './internal/workspaceGateway';
|
|
4
|
+
export interface SkillRecord {
|
|
5
|
+
id: string;
|
|
6
|
+
name: string;
|
|
7
|
+
status: string;
|
|
8
|
+
visibility: string;
|
|
9
|
+
description?: string | null;
|
|
10
|
+
bucketId?: string | null;
|
|
11
|
+
promptTemplateId?: string | null;
|
|
12
|
+
retrievalProfileId?: string | null;
|
|
13
|
+
toolPolicyId?: string | null;
|
|
14
|
+
toolPackDeps: string[];
|
|
15
|
+
recommendedPolicies: string[];
|
|
16
|
+
capabilityFlags?: Record<string, unknown> | null;
|
|
17
|
+
metadata?: Record<string, unknown> | null;
|
|
18
|
+
revision: number;
|
|
19
|
+
tags: string[];
|
|
20
|
+
createdAt: string;
|
|
21
|
+
updatedAt: string;
|
|
22
|
+
createdById: string;
|
|
23
|
+
updatedById: string;
|
|
24
|
+
workspaceId: string;
|
|
25
|
+
}
|
|
26
|
+
export interface SkillFilterVariables {
|
|
27
|
+
search?: string;
|
|
28
|
+
status?: string;
|
|
29
|
+
visibility?: string;
|
|
30
|
+
bucketId?: string;
|
|
31
|
+
promptTemplateId?: string;
|
|
32
|
+
retrievalProfileId?: string;
|
|
33
|
+
toolPolicyId?: string;
|
|
34
|
+
}
|
|
35
|
+
/** `CreateSkillInput` minus the `workspaceId` the hook supplies. */
|
|
36
|
+
export type CreateSkillVariables = Omit<GraphQLInput<CreateSkillInput>, 'workspaceId'>;
|
|
37
|
+
export interface UpdateSkillVariables {
|
|
38
|
+
skillId: string;
|
|
39
|
+
input: GraphQLInput<UpdateSkillInput>;
|
|
40
|
+
}
|
|
41
|
+
export declare const skillKeys: {
|
|
42
|
+
all: readonly ["skills"];
|
|
43
|
+
lists: () => readonly ["skills", "list"];
|
|
44
|
+
list: (filter?: SkillFilterVariables) => readonly ["skills", "list", SkillFilterVariables | undefined];
|
|
45
|
+
details: () => readonly ["skills", "detail"];
|
|
46
|
+
detail: (id: string) => readonly ["skills", "detail", string];
|
|
47
|
+
};
|
|
48
|
+
export declare function useSkills(filter?: SkillFilterVariables): QueryResult<SkillRecord[]>;
|
|
49
|
+
export declare function useSkill(skillId: string | undefined): QueryResult<SkillRecord | null>;
|
|
50
|
+
export declare function useCreateSkill(): {
|
|
51
|
+
create: (input: CreateSkillVariables) => Promise<SkillRecord>;
|
|
52
|
+
loading: boolean;
|
|
53
|
+
error: Error | undefined;
|
|
54
|
+
};
|
|
55
|
+
export declare function useUpdateSkill(): {
|
|
56
|
+
update: (input: UpdateSkillVariables) => Promise<SkillRecord>;
|
|
57
|
+
loading: boolean;
|
|
58
|
+
error: Error | undefined;
|
|
59
|
+
};
|
|
60
|
+
export declare function useDeleteSkill(): {
|
|
61
|
+
remove: (input: string) => Promise<boolean>;
|
|
62
|
+
loading: boolean;
|
|
63
|
+
error: Error | undefined;
|
|
64
|
+
};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { CreateSkillDocument as e, DeleteSkillDocument as t, GetSkillDocument as n, ListSkillsDocument as r, UpdateSkillDocument as i } from "../../generated/wspace-operations.js";
|
|
2
|
+
import { buildMutationInput as a, fieldsOf as o } from "./internal/mutationInput.js";
|
|
3
3
|
import { useWorkspaceId as s, useWorkspaceMutation as c, useWorkspaceQuery as l } from "./internal/workspaceGateway.js";
|
|
4
4
|
import { useCallback as u, useMemo as d } from "react";
|
|
5
|
-
|
|
6
|
-
var f = 100, p =
|
|
5
|
+
// src/botlit/hooks/useSkills.ts
|
|
6
|
+
var f = 100, p = o({
|
|
7
7
|
bucketId: !0,
|
|
8
8
|
capabilityFlags: !0,
|
|
9
9
|
description: !0,
|
|
@@ -18,7 +18,7 @@ var f = 100, p = t({
|
|
|
18
18
|
toolPolicyId: !0,
|
|
19
19
|
visibility: !0,
|
|
20
20
|
workspaceId: !0
|
|
21
|
-
}), m =
|
|
21
|
+
}), m = o({
|
|
22
22
|
bucketId: !0,
|
|
23
23
|
capabilityFlags: !0,
|
|
24
24
|
description: !0,
|
|
@@ -37,34 +37,34 @@ function g(e) {
|
|
|
37
37
|
return e?.listSkills ?? h;
|
|
38
38
|
}
|
|
39
39
|
function _(e) {
|
|
40
|
-
let t = s(), { search: n, status:
|
|
40
|
+
let t = s(), { search: n, status: i, visibility: a, bucketId: o, promptTemplateId: c, retrievalProfileId: u, toolPolicyId: p } = e ?? {}, m = d(() => ({
|
|
41
|
+
filters: {
|
|
42
|
+
workspaceId: t,
|
|
43
|
+
search: n || void 0,
|
|
44
|
+
status: i,
|
|
45
|
+
visibility: a,
|
|
46
|
+
bucketId: o,
|
|
47
|
+
promptTemplateId: c,
|
|
48
|
+
retrievalProfileId: u,
|
|
49
|
+
toolPolicyId: p
|
|
50
|
+
},
|
|
51
|
+
pagination: {
|
|
52
|
+
limit: f,
|
|
53
|
+
offset: 0
|
|
54
|
+
}
|
|
55
|
+
}), [
|
|
56
|
+
t,
|
|
57
|
+
n,
|
|
58
|
+
i,
|
|
59
|
+
a,
|
|
60
|
+
o,
|
|
61
|
+
c,
|
|
62
|
+
u,
|
|
63
|
+
p
|
|
64
|
+
]);
|
|
41
65
|
return l({
|
|
42
|
-
document:
|
|
43
|
-
variables:
|
|
44
|
-
filters: {
|
|
45
|
-
workspaceId: t,
|
|
46
|
-
search: n || void 0,
|
|
47
|
-
status: r,
|
|
48
|
-
visibility: i,
|
|
49
|
-
bucketId: o,
|
|
50
|
-
promptTemplateId: c,
|
|
51
|
-
retrievalProfileId: u,
|
|
52
|
-
toolPolicyId: p
|
|
53
|
-
},
|
|
54
|
-
pagination: {
|
|
55
|
-
limit: f,
|
|
56
|
-
offset: 0
|
|
57
|
-
}
|
|
58
|
-
}), [
|
|
59
|
-
t,
|
|
60
|
-
n,
|
|
61
|
-
r,
|
|
62
|
-
i,
|
|
63
|
-
o,
|
|
64
|
-
c,
|
|
65
|
-
u,
|
|
66
|
-
p
|
|
67
|
-
]),
|
|
66
|
+
document: r,
|
|
67
|
+
variables: m,
|
|
68
68
|
select: g,
|
|
69
69
|
fallback: h,
|
|
70
70
|
enabled: !!t,
|
|
@@ -72,9 +72,10 @@ function _(e) {
|
|
|
72
72
|
});
|
|
73
73
|
}
|
|
74
74
|
function v(e) {
|
|
75
|
+
let t = d(() => ({ id: e ?? "" }), [e]);
|
|
75
76
|
return l({
|
|
76
|
-
document:
|
|
77
|
-
variables:
|
|
77
|
+
document: n,
|
|
78
|
+
variables: t,
|
|
78
79
|
select: (e) => e?.getSkill ?? null,
|
|
79
80
|
fallback: null,
|
|
80
81
|
enabled: !!e,
|
|
@@ -82,12 +83,12 @@ function v(e) {
|
|
|
82
83
|
});
|
|
83
84
|
}
|
|
84
85
|
function y() {
|
|
85
|
-
let t = s(),
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
86
|
+
let t = s(), n = u((e) => ({ input: a({
|
|
87
|
+
...e,
|
|
88
|
+
workspaceId: t
|
|
89
|
+
}, p) }), [t]), [r, i] = c({
|
|
90
|
+
document: e,
|
|
91
|
+
variables: n,
|
|
91
92
|
select: (e) => e?.createSkill,
|
|
92
93
|
errorMessage: "Failed to create skill"
|
|
93
94
|
});
|
|
@@ -98,35 +99,34 @@ function y() {
|
|
|
98
99
|
};
|
|
99
100
|
}
|
|
100
101
|
function b() {
|
|
101
|
-
let [
|
|
102
|
-
document:
|
|
103
|
-
variables: ({ skillId:
|
|
104
|
-
id:
|
|
105
|
-
input:
|
|
102
|
+
let [e, t] = c({
|
|
103
|
+
document: i,
|
|
104
|
+
variables: ({ skillId: e, input: t }) => ({
|
|
105
|
+
id: e,
|
|
106
|
+
input: a(t, m)
|
|
106
107
|
}),
|
|
107
108
|
select: (e) => e?.updateSkill,
|
|
108
109
|
errorMessage: "Failed to update skill"
|
|
109
110
|
});
|
|
110
111
|
return {
|
|
111
|
-
update:
|
|
112
|
-
loading:
|
|
113
|
-
error:
|
|
112
|
+
update: e,
|
|
113
|
+
loading: t.loading,
|
|
114
|
+
error: t.error
|
|
114
115
|
};
|
|
115
116
|
}
|
|
116
117
|
function x() {
|
|
117
|
-
let [e,
|
|
118
|
-
document:
|
|
118
|
+
let [e, n] = c({
|
|
119
|
+
document: t,
|
|
119
120
|
variables: (e) => ({ id: e }),
|
|
120
121
|
select: (e) => e?.deleteSkill,
|
|
121
122
|
errorMessage: "Failed to delete skill"
|
|
122
123
|
});
|
|
123
124
|
return {
|
|
124
125
|
remove: e,
|
|
125
|
-
loading:
|
|
126
|
-
error:
|
|
126
|
+
loading: n.loading,
|
|
127
|
+
error: n.error
|
|
127
128
|
};
|
|
128
129
|
}
|
|
129
|
-
//#endregion
|
|
130
130
|
export { y as useCreateSkill, x as useDeleteSkill, v as useSkill, _ as useSkills, b as useUpdateSkill };
|
|
131
131
|
|
|
132
132
|
//# sourceMappingURL=useSkills.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSkills.js","names":[],"sources":["../../../src/botlit/hooks/useSkills.ts"],"sourcesContent":["/**\n * Skills Hooks\n * @module botlit/hooks\n *\n * Backed by the live `listSkills` / `getSkill` operations and the\n * create/update/delete mutations on wspace-botlit-svc.\n */\n\nimport { useCallback, useMemo } from 'react';\nimport {\n CreateSkillDocument,\n DeleteSkillDocument,\n GetSkillDocument,\n ListSkillsDocument,\n UpdateSkillDocument,\n type CreateSkillMutation,\n type DeleteSkillMutation,\n type GetSkillQuery,\n type ListSkillsQuery,\n type UpdateSkillMutation,\n} from '../../generated/wspace-operations';\nimport type { CreateSkillInput, UpdateSkillInput } from '../../generated/wspace-types';\nimport { buildMutationInput, fieldsOf, type GraphQLInput } from './internal/mutationInput';\nimport {\n useWorkspaceId,\n useWorkspaceMutation,\n useWorkspaceQuery,\n type QueryResult,\n} from './internal/workspaceGateway';\n\nconst LIST_LIMIT = 100;\n\nexport interface SkillRecord {\n id: string;\n name: string;\n status: string;\n visibility: string;\n description?: string | null;\n bucketId?: string | null;\n promptTemplateId?: string | null;\n retrievalProfileId?: string | null;\n toolPolicyId?: string | null;\n toolPackDeps: string[];\n recommendedPolicies: string[];\n capabilityFlags?: Record<string, unknown> | null;\n metadata?: Record<string, unknown> | null;\n revision: number;\n tags: string[];\n createdAt: string;\n updatedAt: string;\n createdById: string;\n updatedById: string;\n workspaceId: string;\n}\n\nexport interface SkillFilterVariables {\n search?: string;\n status?: string;\n visibility?: string;\n bucketId?: string;\n promptTemplateId?: string;\n retrievalProfileId?: string;\n toolPolicyId?: string;\n}\n\n/** `CreateSkillInput` minus the `workspaceId` the hook supplies. */\nexport type CreateSkillVariables = Omit<GraphQLInput<CreateSkillInput>, 'workspaceId'>;\n\nexport interface UpdateSkillVariables {\n skillId: string;\n input: GraphQLInput<UpdateSkillInput>;\n}\n\nconst CREATE_SKILL_FIELDS = fieldsOf<CreateSkillInput>({\n bucketId: true,\n capabilityFlags: true,\n description: true,\n metadata: true,\n name: true,\n promptTemplateId: true,\n recommendedPolicies: true,\n retrievalProfileId: true,\n status: true,\n tags: true,\n toolPackDeps: true,\n toolPolicyId: true,\n visibility: true,\n workspaceId: true,\n});\n\nconst UPDATE_SKILL_FIELDS = fieldsOf<UpdateSkillInput>({\n bucketId: true,\n capabilityFlags: true,\n description: true,\n metadata: true,\n name: true,\n promptTemplateId: true,\n recommendedPolicies: true,\n retrievalProfileId: true,\n status: true,\n tags: true,\n toolPackDeps: true,\n toolPolicyId: true,\n visibility: true,\n});\n\nconst NO_SKILLS: SkillRecord[] = [];\n\nfunction selectSkills(data: ListSkillsQuery | undefined): SkillRecord[] {\n return data?.listSkills ?? NO_SKILLS;\n}\n\nexport const skillKeys = {\n all: ['skills'] as const,\n lists: () => [...skillKeys.all, 'list'] as const,\n list: (filter?: SkillFilterVariables) => [...skillKeys.lists(), filter] as const,\n details: () => [...skillKeys.all, 'detail'] as const,\n detail: (id: string) => [...skillKeys.details(), id] as const,\n};\n\nexport function useSkills(filter?: SkillFilterVariables): QueryResult<SkillRecord[]> {\n const workspaceId = useWorkspaceId();\n const {\n search,\n status,\n visibility,\n bucketId,\n promptTemplateId,\n retrievalProfileId,\n toolPolicyId,\n } = filter ?? {};\n\n const variables = useMemo(\n () => ({\n filters: {\n workspaceId,\n search: search || undefined,\n status,\n visibility,\n bucketId,\n promptTemplateId,\n retrievalProfileId,\n toolPolicyId,\n },\n pagination: { limit: LIST_LIMIT, offset: 0 },\n }),\n [\n workspaceId,\n search,\n status,\n visibility,\n bucketId,\n promptTemplateId,\n retrievalProfileId,\n toolPolicyId,\n ]\n );\n\n return useWorkspaceQuery<ListSkillsQuery, SkillRecord[]>({\n document: ListSkillsDocument,\n variables,\n select: selectSkills,\n fallback: NO_SKILLS,\n enabled: Boolean(workspaceId),\n errorMessage: 'Failed to load skills',\n });\n}\n\nexport function useSkill(skillId: string | undefined): QueryResult<SkillRecord | null> {\n const variables = useMemo(() => ({ id: skillId ?? '' }), [skillId]);\n\n return useWorkspaceQuery<GetSkillQuery, SkillRecord | null>({\n document: GetSkillDocument,\n variables,\n select: (data) => data?.getSkill ?? null,\n fallback: null,\n enabled: Boolean(skillId),\n errorMessage: 'Failed to load skill',\n });\n}\n\nexport function useCreateSkill() {\n const workspaceId = useWorkspaceId();\n\n const variables = useCallback(\n (input: CreateSkillVariables) => ({\n input: buildMutationInput({ ...input, workspaceId }, CREATE_SKILL_FIELDS),\n }),\n [workspaceId]\n );\n\n const [create, state] = useWorkspaceMutation<\n CreateSkillMutation,\n CreateSkillVariables,\n SkillRecord\n >({\n document: CreateSkillDocument,\n variables,\n select: (data) => data?.createSkill,\n errorMessage: 'Failed to create skill',\n });\n\n return { create, loading: state.loading, error: state.error };\n}\n\nexport function useUpdateSkill() {\n const [update, state] = useWorkspaceMutation<\n UpdateSkillMutation,\n UpdateSkillVariables,\n SkillRecord\n >({\n document: UpdateSkillDocument,\n variables: ({ skillId, input }) => ({\n id: skillId,\n input: buildMutationInput(input, UPDATE_SKILL_FIELDS),\n }),\n select: (data) => data?.updateSkill,\n errorMessage: 'Failed to update skill',\n });\n\n return { update, loading: state.loading, error: state.error };\n}\n\nexport function useDeleteSkill() {\n const [remove, state] = useWorkspaceMutation<DeleteSkillMutation, string, boolean>({\n document: DeleteSkillDocument,\n variables: (skillId) => ({ id: skillId }),\n select: (data) => data?.deleteSkill,\n errorMessage: 'Failed to delete skill',\n });\n\n return { remove, loading: state.loading, error: state.error };\n}\n"],"mappings":";;;;;AA8BA,
|
|
1
|
+
{"version":3,"file":"useSkills.js","names":["LIST_LIMIT","CREATE_SKILL_FIELDS","fieldsOf","UPDATE_SKILL_FIELDS","NO_SKILLS","selectSkills","data","useSkills","workspaceId","useWorkspaceId","filter","variables","useMemo","search","status","visibility","bucketId","promptTemplateId","retrievalProfileId","toolPolicyId","useWorkspaceQuery","ListSkillsDocument","useSkill","skillId","GetSkillDocument","useCreateSkill","useCallback","buildMutationInput","input","create","state","useWorkspaceMutation","CreateSkillDocument","useUpdateSkill","update","UpdateSkillDocument","useDeleteSkill","remove","DeleteSkillDocument"],"sources":["../../../src/botlit/hooks/useSkills.ts"],"sourcesContent":["/**\n * Skills Hooks\n * @module botlit/hooks\n *\n * Backed by the live `listSkills` / `getSkill` operations and the\n * create/update/delete mutations on wspace-botlit-svc.\n */\n\nimport { useCallback, useMemo } from 'react';\nimport {\n CreateSkillDocument,\n DeleteSkillDocument,\n GetSkillDocument,\n ListSkillsDocument,\n UpdateSkillDocument,\n type CreateSkillMutation,\n type DeleteSkillMutation,\n type GetSkillQuery,\n type ListSkillsQuery,\n type UpdateSkillMutation,\n} from '../../generated/wspace-operations';\nimport type { CreateSkillInput, UpdateSkillInput } from '../../generated/wspace-types';\nimport { buildMutationInput, fieldsOf, type GraphQLInput } from './internal/mutationInput';\nimport {\n useWorkspaceId,\n useWorkspaceMutation,\n useWorkspaceQuery,\n type QueryResult,\n} from './internal/workspaceGateway';\n\nconst LIST_LIMIT = 100;\n\nexport interface SkillRecord {\n id: string;\n name: string;\n status: string;\n visibility: string;\n description?: string | null;\n bucketId?: string | null;\n promptTemplateId?: string | null;\n retrievalProfileId?: string | null;\n toolPolicyId?: string | null;\n toolPackDeps: string[];\n recommendedPolicies: string[];\n capabilityFlags?: Record<string, unknown> | null;\n metadata?: Record<string, unknown> | null;\n revision: number;\n tags: string[];\n createdAt: string;\n updatedAt: string;\n createdById: string;\n updatedById: string;\n workspaceId: string;\n}\n\nexport interface SkillFilterVariables {\n search?: string;\n status?: string;\n visibility?: string;\n bucketId?: string;\n promptTemplateId?: string;\n retrievalProfileId?: string;\n toolPolicyId?: string;\n}\n\n/** `CreateSkillInput` minus the `workspaceId` the hook supplies. */\nexport type CreateSkillVariables = Omit<GraphQLInput<CreateSkillInput>, 'workspaceId'>;\n\nexport interface UpdateSkillVariables {\n skillId: string;\n input: GraphQLInput<UpdateSkillInput>;\n}\n\nconst CREATE_SKILL_FIELDS = fieldsOf<CreateSkillInput>({\n bucketId: true,\n capabilityFlags: true,\n description: true,\n metadata: true,\n name: true,\n promptTemplateId: true,\n recommendedPolicies: true,\n retrievalProfileId: true,\n status: true,\n tags: true,\n toolPackDeps: true,\n toolPolicyId: true,\n visibility: true,\n workspaceId: true,\n});\n\nconst UPDATE_SKILL_FIELDS = fieldsOf<UpdateSkillInput>({\n bucketId: true,\n capabilityFlags: true,\n description: true,\n metadata: true,\n name: true,\n promptTemplateId: true,\n recommendedPolicies: true,\n retrievalProfileId: true,\n status: true,\n tags: true,\n toolPackDeps: true,\n toolPolicyId: true,\n visibility: true,\n});\n\nconst NO_SKILLS: SkillRecord[] = [];\n\nfunction selectSkills(data: ListSkillsQuery | undefined): SkillRecord[] {\n return data?.listSkills ?? NO_SKILLS;\n}\n\nexport const skillKeys = {\n all: ['skills'] as const,\n lists: () => [...skillKeys.all, 'list'] as const,\n list: (filter?: SkillFilterVariables) => [...skillKeys.lists(), filter] as const,\n details: () => [...skillKeys.all, 'detail'] as const,\n detail: (id: string) => [...skillKeys.details(), id] as const,\n};\n\nexport function useSkills(filter?: SkillFilterVariables): QueryResult<SkillRecord[]> {\n const workspaceId = useWorkspaceId();\n const {\n search,\n status,\n visibility,\n bucketId,\n promptTemplateId,\n retrievalProfileId,\n toolPolicyId,\n } = filter ?? {};\n\n const variables = useMemo(\n () => ({\n filters: {\n workspaceId,\n search: search || undefined,\n status,\n visibility,\n bucketId,\n promptTemplateId,\n retrievalProfileId,\n toolPolicyId,\n },\n pagination: { limit: LIST_LIMIT, offset: 0 },\n }),\n [\n workspaceId,\n search,\n status,\n visibility,\n bucketId,\n promptTemplateId,\n retrievalProfileId,\n toolPolicyId,\n ]\n );\n\n return useWorkspaceQuery<ListSkillsQuery, SkillRecord[]>({\n document: ListSkillsDocument,\n variables,\n select: selectSkills,\n fallback: NO_SKILLS,\n enabled: Boolean(workspaceId),\n errorMessage: 'Failed to load skills',\n });\n}\n\nexport function useSkill(skillId: string | undefined): QueryResult<SkillRecord | null> {\n const variables = useMemo(() => ({ id: skillId ?? '' }), [skillId]);\n\n return useWorkspaceQuery<GetSkillQuery, SkillRecord | null>({\n document: GetSkillDocument,\n variables,\n select: (data) => data?.getSkill ?? null,\n fallback: null,\n enabled: Boolean(skillId),\n errorMessage: 'Failed to load skill',\n });\n}\n\nexport function useCreateSkill() {\n const workspaceId = useWorkspaceId();\n\n const variables = useCallback(\n (input: CreateSkillVariables) => ({\n input: buildMutationInput({ ...input, workspaceId }, CREATE_SKILL_FIELDS),\n }),\n [workspaceId]\n );\n\n const [create, state] = useWorkspaceMutation<\n CreateSkillMutation,\n CreateSkillVariables,\n SkillRecord\n >({\n document: CreateSkillDocument,\n variables,\n select: (data) => data?.createSkill,\n errorMessage: 'Failed to create skill',\n });\n\n return { create, loading: state.loading, error: state.error };\n}\n\nexport function useUpdateSkill() {\n const [update, state] = useWorkspaceMutation<\n UpdateSkillMutation,\n UpdateSkillVariables,\n SkillRecord\n >({\n document: UpdateSkillDocument,\n variables: ({ skillId, input }) => ({\n id: skillId,\n input: buildMutationInput(input, UPDATE_SKILL_FIELDS),\n }),\n select: (data) => data?.updateSkill,\n errorMessage: 'Failed to update skill',\n });\n\n return { update, loading: state.loading, error: state.error };\n}\n\nexport function useDeleteSkill() {\n const [remove, state] = useWorkspaceMutation<DeleteSkillMutation, string, boolean>({\n document: DeleteSkillDocument,\n variables: (skillId) => ({ id: skillId }),\n select: (data) => data?.deleteSkill,\n errorMessage: 'Failed to delete skill',\n });\n\n return { remove, loading: state.loading, error: state.error };\n}\n"],"mappings":";;;;;AA8BA,IAAMA,IAAa,KA2CbC,IAAsBC,EAA2B;CACrD,UAAU;CACV,iBAAiB;CACjB,aAAa;CACb,UAAU;CACV,MAAM;CACN,kBAAkB;CAClB,qBAAqB;CACrB,oBAAoB;CACpB,QAAQ;CACR,MAAM;CACN,cAAc;CACd,cAAc;CACd,YAAY;CACZ,aAAa;AACf,CAAC,GAEKC,IAAsBD,EAA2B;CACrD,UAAU;CACV,iBAAiB;CACjB,aAAa;CACb,UAAU;CACV,MAAM;CACN,kBAAkB;CAClB,qBAAqB;CACrB,oBAAoB;CACpB,QAAQ;CACR,MAAM;CACN,cAAc;CACd,cAAc;CACd,YAAY;AACd,CAAC,GAEKE,IAA2B,CAAC;AAElC,SAASC,EAAa,GAAkD;CACtE,OAAOC,GAAM,cAAcF;AAC7B;AAUA,SAAgBG,EAAU,GAA2D;CACnF,IAAMC,IAAcC,EAAe,GAC7B,EACJ,WACA,WACA,eACA,aACA,qBACA,uBACA,oBACEC,KAAU,CAAC,GAETC,IAAYC,SACT;EACL,SAAS;GACP;GACA,QAAQC,KAAU,KAAA;GAClB;GACA;GACA;GACA;GACA;GACA;EACF;EACA,YAAY;GAAE,OAAOb;GAAY,QAAQ;EAAE;CAC7C,IACA;EACEQ;EACAK;EACAC;EACAC;EACAC;EACAC;EACAC;EACAC;CACF,CACF;CAEA,OAAOC,EAAkD;EACvD,UAAUC;EACV;EACA,QAAQhB;EACR,UAAUD;EACV,SAAS,EAAQI;EACjB,cAAc;CAChB,CAAC;AACH;AAEA,SAAgBc,EAAS,GAA8D;CACrF,IAAMX,IAAYC,SAAe,EAAE,IAAIW,KAAW,GAAG,IAAI,CAACA,CAAO,CAAC;CAElE,OAAOH,EAAqD;EAC1D,UAAUI;EACV;EACA,SAAS,MAASlB,GAAM,YAAY;EACpC,UAAU;EACV,SAAS,EAAQiB;EACjB,cAAc;CAChB,CAAC;AACH;AAEA,SAAgBE,IAAiB;CAC/B,IAAMjB,IAAcC,EAAe,GAE7BE,IAAYe,GACf,OAAiC,EAChC,OAAOC,EAAmB;EAAE,GAAGC;EAAO;CAAY,GAAG3B,CAAmB,EAC1E,IACA,CAACO,CAAW,CACd,GAEM,CAACqB,GAAQC,KAASC,EAItB;EACA,UAAUC;EACV;EACA,SAAS,MAAS1B,GAAM;EACxB,cAAc;CAChB,CAAC;CAED,OAAO;EAAE;EAAQ,SAASwB,EAAM;EAAS,OAAOA,EAAM;CAAM;AAC9D;AAEA,SAAgBG,IAAiB;CAC/B,IAAM,CAACC,GAAQJ,KAASC,EAItB;EACA,UAAUI;EACV,YAAY,EAAE,YAAS,gBAAa;GAClC,IAAIZ;GACJ,OAAOI,EAAmBC,GAAOzB,CAAmB;EACtD;EACA,SAAS,MAASG,GAAM;EACxB,cAAc;CAChB,CAAC;CAED,OAAO;EAAE;EAAQ,SAASwB,EAAM;EAAS,OAAOA,EAAM;CAAM;AAC9D;AAEA,SAAgBM,IAAiB;CAC/B,IAAM,CAACC,GAAQP,KAASC,EAA2D;EACjF,UAAUO;EACV,YAAY,OAAa,EAAE,IAAIf,EAAQ;EACvC,SAAS,MAASjB,GAAM;EACxB,cAAc;CAChB,CAAC;CAED,OAAO;EAAE;EAAQ,SAASwB,EAAM;EAAS,OAAOA,EAAM;CAAM;AAC9D"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { ForkInstalledPackageInput, InstallPackageInput, UpdateInstalledPackageInput } from '../../generated/wspace-types';
|
|
2
|
+
import { GraphQLInput } from './internal/mutationInput';
|
|
3
|
+
import { QueryResult } from './internal/workspaceGateway';
|
|
4
|
+
export interface StorePackageRecord {
|
|
5
|
+
id: string;
|
|
6
|
+
slug: string;
|
|
7
|
+
kind: string;
|
|
8
|
+
version: string;
|
|
9
|
+
manifest: Record<string, unknown>;
|
|
10
|
+
readme?: string | null;
|
|
11
|
+
metadata?: Record<string, unknown> | null;
|
|
12
|
+
publishedAt?: string | null;
|
|
13
|
+
publishedBy?: string | null;
|
|
14
|
+
createdAt: string;
|
|
15
|
+
updatedAt: string;
|
|
16
|
+
}
|
|
17
|
+
export interface InstalledPackageRecord {
|
|
18
|
+
id: string;
|
|
19
|
+
packageId: string;
|
|
20
|
+
installedVersion: string;
|
|
21
|
+
mode: string;
|
|
22
|
+
bindings?: Record<string, unknown> | null;
|
|
23
|
+
pinnedByEnv?: Record<string, unknown> | null;
|
|
24
|
+
metadata?: Record<string, unknown> | null;
|
|
25
|
+
installedAt: string;
|
|
26
|
+
installedBy: string;
|
|
27
|
+
createdAt: string;
|
|
28
|
+
updatedAt: string;
|
|
29
|
+
workspaceId: string;
|
|
30
|
+
package?: StorePackageRecord | null;
|
|
31
|
+
}
|
|
32
|
+
/** Sort orders the service data actually supports (no rating/downloads exist). */
|
|
33
|
+
export type StoreSortBy = 'recent' | 'name';
|
|
34
|
+
export interface StoreFilter {
|
|
35
|
+
search?: string;
|
|
36
|
+
kind?: string[];
|
|
37
|
+
sortBy?: StoreSortBy;
|
|
38
|
+
}
|
|
39
|
+
/** `InstallPackageInput` minus the `workspaceId` the hook supplies. */
|
|
40
|
+
export type InstallPackageVariables = Omit<GraphQLInput<InstallPackageInput>, 'workspaceId'>;
|
|
41
|
+
export interface UpdateInstalledPackageVariables {
|
|
42
|
+
installedId: string;
|
|
43
|
+
input: GraphQLInput<UpdateInstalledPackageInput>;
|
|
44
|
+
}
|
|
45
|
+
export interface PinPackageVersionVariables {
|
|
46
|
+
installedId: string;
|
|
47
|
+
environment: string;
|
|
48
|
+
version: string;
|
|
49
|
+
/** Existing pins — passed through so pinning one environment never drops the others. */
|
|
50
|
+
pinnedByEnv?: Record<string, unknown> | null;
|
|
51
|
+
}
|
|
52
|
+
/** `ForkInstalledPackageInput` minus the `workspaceId` the hook supplies. */
|
|
53
|
+
export type ForkPackageVariables = Omit<GraphQLInput<ForkInstalledPackageInput>, 'workspaceId'>;
|
|
54
|
+
/** An installed package whose store listing has moved on to a newer version. */
|
|
55
|
+
export interface OutdatedPackage {
|
|
56
|
+
installed: InstalledPackageRecord;
|
|
57
|
+
installedVersion: string;
|
|
58
|
+
latestVersion: string;
|
|
59
|
+
}
|
|
60
|
+
/** Display name from the package manifest, falling back to the slug. */
|
|
61
|
+
export declare function storePackageName(pkg: Pick<StorePackageRecord, 'manifest' | 'slug'> | null | undefined): string;
|
|
62
|
+
export declare function storePackageDescription(pkg: Pick<StorePackageRecord, 'manifest'> | null | undefined): string | undefined;
|
|
63
|
+
export declare const storeKeys: {
|
|
64
|
+
all: readonly ["store"];
|
|
65
|
+
packages: () => readonly ["store", "packages"];
|
|
66
|
+
packageList: (filter?: StoreFilter) => readonly ["store", "packages", "list", StoreFilter | undefined];
|
|
67
|
+
packageDetail: (slug: string) => readonly ["store", "packages", "detail", string];
|
|
68
|
+
installed: () => readonly ["store", "installed"];
|
|
69
|
+
installedList: () => readonly ["store", "installed", "list"];
|
|
70
|
+
installedDetail: (id: string) => readonly ["store", "installed", "detail", string];
|
|
71
|
+
};
|
|
72
|
+
export declare function useStorePackages(filter?: StoreFilter): QueryResult<StorePackageRecord[]>;
|
|
73
|
+
/** Store packages are addressed by slug in the UI, so this resolves by slug. */
|
|
74
|
+
export declare function useStorePackage(slug: string | undefined): QueryResult<StorePackageRecord | null>;
|
|
75
|
+
export declare function useInstalledPackages(): QueryResult<InstalledPackageRecord[]>;
|
|
76
|
+
export declare function useInstalledPackage(packageId: string | undefined): QueryResult<InstalledPackageRecord | null>;
|
|
77
|
+
/**
|
|
78
|
+
* Installed packages whose store listing now publishes a different version.
|
|
79
|
+
* Derived from the store package returned alongside each install — the service
|
|
80
|
+
* has no dedicated "check for updates" operation.
|
|
81
|
+
*/
|
|
82
|
+
export declare function useCheckPackageUpdates(): QueryResult<OutdatedPackage[]>;
|
|
83
|
+
export declare function useInstallPackage(): {
|
|
84
|
+
install: (input: InstallPackageVariables) => Promise<InstalledPackageRecord>;
|
|
85
|
+
loading: boolean;
|
|
86
|
+
error: Error | undefined;
|
|
87
|
+
};
|
|
88
|
+
export declare function useUpdateInstalledPackage(): {
|
|
89
|
+
update: (input: UpdateInstalledPackageVariables) => Promise<InstalledPackageRecord>;
|
|
90
|
+
loading: boolean;
|
|
91
|
+
error: Error | undefined;
|
|
92
|
+
};
|
|
93
|
+
export declare function useUninstallPackage(): {
|
|
94
|
+
uninstall: (input: string) => Promise<boolean>;
|
|
95
|
+
loading: boolean;
|
|
96
|
+
error: Error | undefined;
|
|
97
|
+
};
|
|
98
|
+
/**
|
|
99
|
+
* Pins one environment to a version. Implemented as a targeted merge into
|
|
100
|
+
* `pinnedByEnv` via `updateInstalledPackage` — the service has no dedicated pin
|
|
101
|
+
* mutation, and replacing the whole map would drop the other environments.
|
|
102
|
+
*/
|
|
103
|
+
export declare function usePinPackageVersion(): {
|
|
104
|
+
pin: (input: PinPackageVersionVariables) => Promise<InstalledPackageRecord>;
|
|
105
|
+
loading: boolean;
|
|
106
|
+
error: Error | undefined;
|
|
107
|
+
};
|
|
108
|
+
export declare function useForkPackage(): {
|
|
109
|
+
fork: (input: ForkPackageVariables) => Promise<InstalledPackageRecord>;
|
|
110
|
+
loading: boolean;
|
|
111
|
+
error: Error | undefined;
|
|
112
|
+
};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { GetStorePackageBySlugDocument as e, InstallPackageDocument as t, ListInstalledPackagesDocument as n, ListStorePackagesDocument as r, UninstallPackageDocument as i, UpdateInstalledPackageDocument as a } from "../../generated/wspace-operations.js";
|
|
2
|
+
import { buildMutationInput as o, fieldsOf as s } from "./internal/mutationInput.js";
|
|
3
3
|
import { useWorkspaceId as c, useWorkspaceMutation as l, useWorkspaceQuery as u } from "./internal/workspaceGateway.js";
|
|
4
4
|
import { useCallback as d, useMemo as f } from "react";
|
|
5
|
-
|
|
6
|
-
var p = 100, m =
|
|
5
|
+
// src/botlit/hooks/useStore.ts
|
|
6
|
+
var p = 100, m = s({
|
|
7
7
|
bindings: !0,
|
|
8
8
|
metadata: !0,
|
|
9
9
|
mode: !0,
|
|
@@ -11,14 +11,14 @@ var p = 100, m = t({
|
|
|
11
11
|
pinnedByEnv: !0,
|
|
12
12
|
version: !0,
|
|
13
13
|
workspaceId: !0
|
|
14
|
-
}), h =
|
|
14
|
+
}), h = s({
|
|
15
15
|
bindings: !0,
|
|
16
16
|
installedVersion: !0,
|
|
17
17
|
metadata: !0,
|
|
18
18
|
mode: !0,
|
|
19
19
|
pinnedByEnv: !0
|
|
20
20
|
});
|
|
21
|
-
|
|
21
|
+
s({
|
|
22
22
|
installedPackageId: !0,
|
|
23
23
|
metadata: !0,
|
|
24
24
|
newName: !0,
|
|
@@ -46,51 +46,52 @@ function C(e) {
|
|
|
46
46
|
return e?.listInstalledPackages ?? _;
|
|
47
47
|
}
|
|
48
48
|
function w(e) {
|
|
49
|
-
let t = e?.search?.trim() ?? "", n = e?.kind?.[0],
|
|
49
|
+
let t = e?.search?.trim() ?? "", n = e?.kind?.[0], i = e?.sortBy ?? "recent", a = f(() => ({
|
|
50
|
+
filters: {
|
|
51
|
+
search: t || void 0,
|
|
52
|
+
kind: n
|
|
53
|
+
},
|
|
54
|
+
pagination: {
|
|
55
|
+
limit: p,
|
|
56
|
+
offset: 0
|
|
57
|
+
}
|
|
58
|
+
}), [t, n]), o = d((e) => {
|
|
59
|
+
let t = S(e);
|
|
60
|
+
if (t.length === 0) return t;
|
|
61
|
+
let n = [...t];
|
|
62
|
+
return i === "name" ? n.sort((e, t) => b(e).localeCompare(b(t))) : n.sort((e, t) => (t.publishedAt ?? "").localeCompare(e.publishedAt ?? "")), n;
|
|
63
|
+
}, [i]);
|
|
50
64
|
return u({
|
|
51
|
-
document:
|
|
52
|
-
variables:
|
|
53
|
-
|
|
54
|
-
search: t || void 0,
|
|
55
|
-
kind: n
|
|
56
|
-
},
|
|
57
|
-
pagination: {
|
|
58
|
-
limit: p,
|
|
59
|
-
offset: 0
|
|
60
|
-
}
|
|
61
|
-
}), [t, n]),
|
|
62
|
-
select: d((e) => {
|
|
63
|
-
let t = S(e);
|
|
64
|
-
if (t.length === 0) return t;
|
|
65
|
-
let n = [...t];
|
|
66
|
-
return r === "name" ? n.sort((e, t) => b(e).localeCompare(b(t))) : n.sort((e, t) => (t.publishedAt ?? "").localeCompare(e.publishedAt ?? "")), n;
|
|
67
|
-
}, [r]),
|
|
65
|
+
document: r,
|
|
66
|
+
variables: a,
|
|
67
|
+
select: o,
|
|
68
68
|
fallback: g,
|
|
69
69
|
enabled: !0,
|
|
70
70
|
errorMessage: "Failed to load store packages"
|
|
71
71
|
});
|
|
72
72
|
}
|
|
73
|
-
function T(
|
|
73
|
+
function T(t) {
|
|
74
|
+
let n = f(() => ({ slug: t ?? "" }), [t]);
|
|
74
75
|
return u({
|
|
75
|
-
document:
|
|
76
|
-
variables:
|
|
76
|
+
document: e,
|
|
77
|
+
variables: n,
|
|
77
78
|
select: (e) => e?.getStorePackageBySlug ?? null,
|
|
78
79
|
fallback: null,
|
|
79
|
-
enabled: !!
|
|
80
|
+
enabled: !!t,
|
|
80
81
|
errorMessage: "Failed to load store package"
|
|
81
82
|
});
|
|
82
83
|
}
|
|
83
84
|
function E() {
|
|
84
|
-
let e = c()
|
|
85
|
+
let e = c(), t = f(() => ({
|
|
86
|
+
filters: { workspaceId: e ?? "" },
|
|
87
|
+
pagination: {
|
|
88
|
+
limit: p,
|
|
89
|
+
offset: 0
|
|
90
|
+
}
|
|
91
|
+
}), [e]);
|
|
85
92
|
return u({
|
|
86
|
-
document:
|
|
87
|
-
variables:
|
|
88
|
-
filters: { workspaceId: e ?? "" },
|
|
89
|
-
pagination: {
|
|
90
|
-
limit: p,
|
|
91
|
-
offset: 0
|
|
92
|
-
}
|
|
93
|
-
}), [e]),
|
|
93
|
+
document: n,
|
|
94
|
+
variables: t,
|
|
94
95
|
select: C,
|
|
95
96
|
fallback: _,
|
|
96
97
|
enabled: !!e,
|
|
@@ -98,40 +99,40 @@ function E() {
|
|
|
98
99
|
});
|
|
99
100
|
}
|
|
100
101
|
function D() {
|
|
101
|
-
let
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
102
|
+
let e = c(), n = d((t) => ({ input: o({
|
|
103
|
+
...t,
|
|
104
|
+
workspaceId: e
|
|
105
|
+
}, m) }), [e]), [r, i] = l({
|
|
106
|
+
document: t,
|
|
107
|
+
variables: n,
|
|
107
108
|
select: (e) => e?.installPackage,
|
|
108
109
|
errorMessage: "Failed to install package"
|
|
109
110
|
});
|
|
110
111
|
return {
|
|
111
|
-
install:
|
|
112
|
+
install: r,
|
|
112
113
|
loading: i.loading,
|
|
113
114
|
error: i.error
|
|
114
115
|
};
|
|
115
116
|
}
|
|
116
117
|
function O() {
|
|
117
|
-
let [
|
|
118
|
-
document:
|
|
119
|
-
variables: ({ installedId:
|
|
120
|
-
id:
|
|
121
|
-
input:
|
|
118
|
+
let [e, t] = l({
|
|
119
|
+
document: a,
|
|
120
|
+
variables: ({ installedId: e, input: t }) => ({
|
|
121
|
+
id: e,
|
|
122
|
+
input: o(t, h)
|
|
122
123
|
}),
|
|
123
124
|
select: (e) => e?.updateInstalledPackage,
|
|
124
125
|
errorMessage: "Failed to update installed package"
|
|
125
126
|
});
|
|
126
127
|
return {
|
|
127
|
-
update:
|
|
128
|
-
loading:
|
|
129
|
-
error:
|
|
128
|
+
update: e,
|
|
129
|
+
loading: t.loading,
|
|
130
|
+
error: t.error
|
|
130
131
|
};
|
|
131
132
|
}
|
|
132
133
|
function k() {
|
|
133
134
|
let [e, t] = l({
|
|
134
|
-
document:
|
|
135
|
+
document: i,
|
|
135
136
|
variables: (e) => ({ id: e }),
|
|
136
137
|
select: (e) => e?.uninstallPackage,
|
|
137
138
|
errorMessage: "Failed to uninstall package"
|
|
@@ -144,7 +145,7 @@ function k() {
|
|
|
144
145
|
}
|
|
145
146
|
function A() {
|
|
146
147
|
let [e, t] = l({
|
|
147
|
-
document:
|
|
148
|
+
document: a,
|
|
148
149
|
variables: ({ installedId: e, environment: t, version: n, pinnedByEnv: r }) => ({
|
|
149
150
|
id: e,
|
|
150
151
|
input: { pinnedByEnv: {
|
|
@@ -161,7 +162,6 @@ function A() {
|
|
|
161
162
|
error: t.error
|
|
162
163
|
};
|
|
163
164
|
}
|
|
164
|
-
//#endregion
|
|
165
165
|
export { x as storePackageDescription, b as storePackageName, D as useInstallPackage, E as useInstalledPackages, A as usePinPackageVersion, T as useStorePackage, w as useStorePackages, k as useUninstallPackage, O as useUpdateInstalledPackage };
|
|
166
166
|
|
|
167
167
|
//# sourceMappingURL=useStore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useStore.js","names":[],"sources":["../../../src/botlit/hooks/useStore.ts"],"sourcesContent":["/**\n * Store Hooks\n * @module botlit/hooks\n *\n * Backed by the live `listStorePackages` / `getStorePackageBySlug` /\n * `listInstalledPackages` operations and the install/update/uninstall/fork\n * mutations on wspace-botlit-svc.\n *\n * A `StorePackage` carries its human metadata (name, description, author,\n * tags…) inside the `manifest` JSON — the helpers below read it safely rather\n * than assuming top-level columns that the service does not expose.\n */\n\nimport { useCallback, useMemo } from 'react';\nimport {\n ForkInstalledPackageDocument,\n GetInstalledPackageDocument,\n GetStorePackageBySlugDocument,\n InstallPackageDocument,\n ListInstalledPackagesDocument,\n ListStorePackagesDocument,\n UninstallPackageDocument,\n UpdateInstalledPackageDocument,\n type ForkInstalledPackageMutation,\n type GetInstalledPackageQuery,\n type GetStorePackageBySlugQuery,\n type InstallPackageMutation,\n type ListInstalledPackagesQuery,\n type ListStorePackagesQuery,\n type UninstallPackageMutation,\n type UpdateInstalledPackageMutation,\n} from '../../generated/wspace-operations';\nimport type {\n ForkInstalledPackageInput,\n InstallPackageInput,\n UpdateInstalledPackageInput,\n} from '../../generated/wspace-types';\nimport { buildMutationInput, fieldsOf, type GraphQLInput } from './internal/mutationInput';\nimport {\n useWorkspaceId,\n useWorkspaceMutation,\n useWorkspaceQuery,\n type QueryResult,\n} from './internal/workspaceGateway';\n\nconst LIST_LIMIT = 100;\n\nexport interface StorePackageRecord {\n id: string;\n slug: string;\n kind: string;\n version: string;\n manifest: Record<string, unknown>;\n readme?: string | null;\n metadata?: Record<string, unknown> | null;\n publishedAt?: string | null;\n publishedBy?: string | null;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface InstalledPackageRecord {\n id: string;\n packageId: string;\n installedVersion: string;\n mode: string;\n bindings?: Record<string, unknown> | null;\n pinnedByEnv?: Record<string, unknown> | null;\n metadata?: Record<string, unknown> | null;\n installedAt: string;\n installedBy: string;\n createdAt: string;\n updatedAt: string;\n workspaceId: string;\n package?: StorePackageRecord | null;\n}\n\n/** Sort orders the service data actually supports (no rating/downloads exist). */\nexport type StoreSortBy = 'recent' | 'name';\n\nexport interface StoreFilter {\n search?: string;\n kind?: string[];\n sortBy?: StoreSortBy;\n}\n\n/** `InstallPackageInput` minus the `workspaceId` the hook supplies. */\nexport type InstallPackageVariables = Omit<GraphQLInput<InstallPackageInput>, 'workspaceId'>;\n\nexport interface UpdateInstalledPackageVariables {\n installedId: string;\n input: GraphQLInput<UpdateInstalledPackageInput>;\n}\n\nconst INSTALL_PACKAGE_FIELDS = fieldsOf<InstallPackageInput>({\n bindings: true,\n metadata: true,\n mode: true,\n packageId: true,\n pinnedByEnv: true,\n version: true,\n workspaceId: true,\n});\n\nconst UPDATE_INSTALLED_FIELDS = fieldsOf<UpdateInstalledPackageInput>({\n bindings: true,\n installedVersion: true,\n metadata: true,\n mode: true,\n pinnedByEnv: true,\n});\n\nconst FORK_PACKAGE_FIELDS = fieldsOf<ForkInstalledPackageInput>({\n installedPackageId: true,\n metadata: true,\n newName: true,\n workspaceId: true,\n});\n\nexport interface PinPackageVersionVariables {\n installedId: string;\n environment: string;\n version: string;\n /** Existing pins — passed through so pinning one environment never drops the others. */\n pinnedByEnv?: Record<string, unknown> | null;\n}\n\n/** `ForkInstalledPackageInput` minus the `workspaceId` the hook supplies. */\nexport type ForkPackageVariables = Omit<GraphQLInput<ForkInstalledPackageInput>, 'workspaceId'>;\n\n/** An installed package whose store listing has moved on to a newer version. */\nexport interface OutdatedPackage {\n installed: InstalledPackageRecord;\n installedVersion: string;\n latestVersion: string;\n}\n\nconst NO_PACKAGES: StorePackageRecord[] = [];\nconst NO_INSTALLED: InstalledPackageRecord[] = [];\nconst NO_OUTDATED: OutdatedPackage[] = [];\n\nfunction manifestSection(\n pkg: Pick<StorePackageRecord, 'manifest'> | null | undefined,\n key: string\n): Record<string, unknown> | undefined {\n const section = pkg?.manifest?.[key];\n return section && typeof section === 'object' && !Array.isArray(section)\n ? (section as Record<string, unknown>)\n : undefined;\n}\n\nfunction manifestString(\n pkg: Pick<StorePackageRecord, 'manifest'> | null | undefined,\n key: string\n): string | undefined {\n const value = manifestSection(pkg, 'package')?.[key];\n return typeof value === 'string' ? value : undefined;\n}\n\n/** Display name from the package manifest, falling back to the slug. */\nexport function storePackageName(\n pkg: Pick<StorePackageRecord, 'manifest' | 'slug'> | null | undefined\n): string {\n return manifestString(pkg, 'name') ?? pkg?.slug ?? '';\n}\n\nexport function storePackageDescription(\n pkg: Pick<StorePackageRecord, 'manifest'> | null | undefined\n): string | undefined {\n return manifestString(pkg, 'description');\n}\n\nfunction selectPackages(data: ListStorePackagesQuery | undefined): StorePackageRecord[] {\n return data?.listStorePackages ?? NO_PACKAGES;\n}\n\nfunction selectInstalled(data: ListInstalledPackagesQuery | undefined): InstalledPackageRecord[] {\n return data?.listInstalledPackages ?? NO_INSTALLED;\n}\n\nexport const storeKeys = {\n all: ['store'] as const,\n packages: () => [...storeKeys.all, 'packages'] as const,\n packageList: (filter?: StoreFilter) => [...storeKeys.packages(), 'list', filter] as const,\n packageDetail: (slug: string) => [...storeKeys.packages(), 'detail', slug] as const,\n installed: () => [...storeKeys.all, 'installed'] as const,\n installedList: () => [...storeKeys.installed(), 'list'] as const,\n installedDetail: (id: string) => [...storeKeys.installed(), 'detail', id] as const,\n};\n\nexport function useStorePackages(filter?: StoreFilter): QueryResult<StorePackageRecord[]> {\n const search = filter?.search?.trim() ?? '';\n const kind = filter?.kind?.[0];\n const sortBy = filter?.sortBy ?? 'recent';\n\n const variables = useMemo(\n () => ({\n filters: { search: search || undefined, kind },\n pagination: { limit: LIST_LIMIT, offset: 0 },\n }),\n [search, kind]\n );\n\n const select = useCallback(\n (data: ListStorePackagesQuery | undefined): StorePackageRecord[] => {\n const rows = selectPackages(data);\n if (rows.length === 0) return rows;\n const sorted = [...rows];\n if (sortBy === 'name') {\n sorted.sort((a, b) => storePackageName(a).localeCompare(storePackageName(b)));\n } else {\n sorted.sort((a, b) => (b.publishedAt ?? '').localeCompare(a.publishedAt ?? ''));\n }\n return sorted;\n },\n [sortBy]\n );\n\n return useWorkspaceQuery<ListStorePackagesQuery, StorePackageRecord[]>({\n document: ListStorePackagesDocument,\n variables,\n select,\n fallback: NO_PACKAGES,\n // The store catalogue is workspace-independent.\n enabled: true,\n errorMessage: 'Failed to load store packages',\n });\n}\n\n/** Store packages are addressed by slug in the UI, so this resolves by slug. */\nexport function useStorePackage(slug: string | undefined): QueryResult<StorePackageRecord | null> {\n const variables = useMemo(() => ({ slug: slug ?? '' }), [slug]);\n\n return useWorkspaceQuery<GetStorePackageBySlugQuery, StorePackageRecord | null>({\n document: GetStorePackageBySlugDocument,\n variables,\n select: (data) => data?.getStorePackageBySlug ?? null,\n fallback: null,\n enabled: Boolean(slug),\n errorMessage: 'Failed to load store package',\n });\n}\n\nexport function useInstalledPackages(): QueryResult<InstalledPackageRecord[]> {\n const workspaceId = useWorkspaceId();\n\n const variables = useMemo(\n () => ({\n filters: { workspaceId: workspaceId ?? '' },\n pagination: { limit: LIST_LIMIT, offset: 0 },\n }),\n [workspaceId]\n );\n\n return useWorkspaceQuery<ListInstalledPackagesQuery, InstalledPackageRecord[]>({\n document: ListInstalledPackagesDocument,\n variables,\n select: selectInstalled,\n fallback: NO_INSTALLED,\n enabled: Boolean(workspaceId),\n errorMessage: 'Failed to load installed packages',\n });\n}\n\nexport function useInstalledPackage(\n packageId: string | undefined\n): QueryResult<InstalledPackageRecord | null> {\n const variables = useMemo(() => ({ id: packageId ?? '' }), [packageId]);\n\n return useWorkspaceQuery<GetInstalledPackageQuery, InstalledPackageRecord | null>({\n document: GetInstalledPackageDocument,\n variables,\n select: (data) => data?.getInstalledPackage ?? null,\n fallback: null,\n enabled: Boolean(packageId),\n errorMessage: 'Failed to load installed package',\n });\n}\n\n/**\n * Installed packages whose store listing now publishes a different version.\n * Derived from the store package returned alongside each install — the service\n * has no dedicated \"check for updates\" operation.\n */\nexport function useCheckPackageUpdates(): QueryResult<OutdatedPackage[]> {\n const workspaceId = useWorkspaceId();\n\n const variables = useMemo(\n () => ({\n filters: { workspaceId: workspaceId ?? '' },\n pagination: { limit: LIST_LIMIT, offset: 0 },\n }),\n [workspaceId]\n );\n\n const select = useCallback((data: ListInstalledPackagesQuery | undefined): OutdatedPackage[] => {\n const rows = selectInstalled(data);\n const outdated: OutdatedPackage[] = [];\n for (const installed of rows) {\n const latestVersion = installed.package?.version;\n if (latestVersion && latestVersion !== installed.installedVersion) {\n outdated.push({ installed, installedVersion: installed.installedVersion, latestVersion });\n }\n }\n return outdated;\n }, []);\n\n return useWorkspaceQuery<ListInstalledPackagesQuery, OutdatedPackage[]>({\n document: ListInstalledPackagesDocument,\n variables,\n select,\n fallback: NO_OUTDATED,\n enabled: Boolean(workspaceId),\n errorMessage: 'Failed to check for package updates',\n });\n}\n\nexport function useInstallPackage() {\n const workspaceId = useWorkspaceId();\n\n const variables = useCallback(\n (input: InstallPackageVariables) => ({\n input: buildMutationInput({ ...input, workspaceId }, INSTALL_PACKAGE_FIELDS),\n }),\n [workspaceId]\n );\n\n const [install, state] = useWorkspaceMutation<\n InstallPackageMutation,\n InstallPackageVariables,\n InstalledPackageRecord\n >({\n document: InstallPackageDocument,\n variables,\n select: (data) => data?.installPackage,\n errorMessage: 'Failed to install package',\n });\n\n return { install, loading: state.loading, error: state.error };\n}\n\nexport function useUpdateInstalledPackage() {\n const [update, state] = useWorkspaceMutation<\n UpdateInstalledPackageMutation,\n UpdateInstalledPackageVariables,\n InstalledPackageRecord\n >({\n document: UpdateInstalledPackageDocument,\n variables: ({ installedId, input }) => ({\n id: installedId,\n input: buildMutationInput(input, UPDATE_INSTALLED_FIELDS),\n }),\n select: (data) => data?.updateInstalledPackage,\n errorMessage: 'Failed to update installed package',\n });\n\n return { update, loading: state.loading, error: state.error };\n}\n\nexport function useUninstallPackage() {\n const [uninstall, state] = useWorkspaceMutation<UninstallPackageMutation, string, boolean>({\n document: UninstallPackageDocument,\n variables: (installedId) => ({ id: installedId }),\n select: (data) => data?.uninstallPackage,\n errorMessage: 'Failed to uninstall package',\n });\n\n return { uninstall, loading: state.loading, error: state.error };\n}\n\n/**\n * Pins one environment to a version. Implemented as a targeted merge into\n * `pinnedByEnv` via `updateInstalledPackage` — the service has no dedicated pin\n * mutation, and replacing the whole map would drop the other environments.\n */\nexport function usePinPackageVersion() {\n const [update, state] = useWorkspaceMutation<\n UpdateInstalledPackageMutation,\n PinPackageVersionVariables,\n InstalledPackageRecord\n >({\n document: UpdateInstalledPackageDocument,\n variables: ({ installedId, environment, version, pinnedByEnv }) => ({\n id: installedId,\n input: { pinnedByEnv: { ...(pinnedByEnv ?? {}), [environment]: version } },\n }),\n select: (data) => data?.updateInstalledPackage,\n errorMessage: 'Failed to pin package version',\n });\n\n return { pin: update, loading: state.loading, error: state.error };\n}\n\nexport function useForkPackage() {\n const workspaceId = useWorkspaceId();\n\n const variables = useCallback(\n (input: ForkPackageVariables) => ({\n input: buildMutationInput({ ...input, workspaceId }, FORK_PACKAGE_FIELDS),\n }),\n [workspaceId]\n );\n\n const [fork, state] = useWorkspaceMutation<\n ForkInstalledPackageMutation,\n ForkPackageVariables,\n InstalledPackageRecord\n >({\n document: ForkInstalledPackageDocument,\n variables,\n select: (data) => data?.forkInstalledPackage,\n errorMessage: 'Failed to fork package',\n });\n\n return { fork, loading: state.loading, error: state.error };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useStore.js","names":["LIST_LIMIT","INSTALL_PACKAGE_FIELDS","fieldsOf","UPDATE_INSTALLED_FIELDS","NO_PACKAGES","NO_INSTALLED","manifestSection","section","pkg","key","manifestString","value","storePackageName","storePackageDescription","selectPackages","data","selectInstalled","useStorePackages","search","filter","kind","sortBy","variables","useMemo","select","useCallback","rows","sorted","a","b","useWorkspaceQuery","ListStorePackagesDocument","useStorePackage","slug","GetStorePackageBySlugDocument","useInstalledPackages","workspaceId","useWorkspaceId","ListInstalledPackagesDocument","useInstallPackage","buildMutationInput","input","install","state","useWorkspaceMutation","InstallPackageDocument","useUpdateInstalledPackage","update","UpdateInstalledPackageDocument","installedId","useUninstallPackage","uninstall","UninstallPackageDocument","usePinPackageVersion","pinnedByEnv","environment","version"],"sources":["../../../src/botlit/hooks/useStore.ts"],"sourcesContent":["/**\n * Store Hooks\n * @module botlit/hooks\n *\n * Backed by the live `listStorePackages` / `getStorePackageBySlug` /\n * `listInstalledPackages` operations and the install/update/uninstall/fork\n * mutations on wspace-botlit-svc.\n *\n * A `StorePackage` carries its human metadata (name, description, author,\n * tags…) inside the `manifest` JSON — the helpers below read it safely rather\n * than assuming top-level columns that the service does not expose.\n */\n\nimport { useCallback, useMemo } from 'react';\nimport {\n ForkInstalledPackageDocument,\n GetInstalledPackageDocument,\n GetStorePackageBySlugDocument,\n InstallPackageDocument,\n ListInstalledPackagesDocument,\n ListStorePackagesDocument,\n UninstallPackageDocument,\n UpdateInstalledPackageDocument,\n type ForkInstalledPackageMutation,\n type GetInstalledPackageQuery,\n type GetStorePackageBySlugQuery,\n type InstallPackageMutation,\n type ListInstalledPackagesQuery,\n type ListStorePackagesQuery,\n type UninstallPackageMutation,\n type UpdateInstalledPackageMutation,\n} from '../../generated/wspace-operations';\nimport type {\n ForkInstalledPackageInput,\n InstallPackageInput,\n UpdateInstalledPackageInput,\n} from '../../generated/wspace-types';\nimport { buildMutationInput, fieldsOf, type GraphQLInput } from './internal/mutationInput';\nimport {\n useWorkspaceId,\n useWorkspaceMutation,\n useWorkspaceQuery,\n type QueryResult,\n} from './internal/workspaceGateway';\n\nconst LIST_LIMIT = 100;\n\nexport interface StorePackageRecord {\n id: string;\n slug: string;\n kind: string;\n version: string;\n manifest: Record<string, unknown>;\n readme?: string | null;\n metadata?: Record<string, unknown> | null;\n publishedAt?: string | null;\n publishedBy?: string | null;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface InstalledPackageRecord {\n id: string;\n packageId: string;\n installedVersion: string;\n mode: string;\n bindings?: Record<string, unknown> | null;\n pinnedByEnv?: Record<string, unknown> | null;\n metadata?: Record<string, unknown> | null;\n installedAt: string;\n installedBy: string;\n createdAt: string;\n updatedAt: string;\n workspaceId: string;\n package?: StorePackageRecord | null;\n}\n\n/** Sort orders the service data actually supports (no rating/downloads exist). */\nexport type StoreSortBy = 'recent' | 'name';\n\nexport interface StoreFilter {\n search?: string;\n kind?: string[];\n sortBy?: StoreSortBy;\n}\n\n/** `InstallPackageInput` minus the `workspaceId` the hook supplies. */\nexport type InstallPackageVariables = Omit<GraphQLInput<InstallPackageInput>, 'workspaceId'>;\n\nexport interface UpdateInstalledPackageVariables {\n installedId: string;\n input: GraphQLInput<UpdateInstalledPackageInput>;\n}\n\nconst INSTALL_PACKAGE_FIELDS = fieldsOf<InstallPackageInput>({\n bindings: true,\n metadata: true,\n mode: true,\n packageId: true,\n pinnedByEnv: true,\n version: true,\n workspaceId: true,\n});\n\nconst UPDATE_INSTALLED_FIELDS = fieldsOf<UpdateInstalledPackageInput>({\n bindings: true,\n installedVersion: true,\n metadata: true,\n mode: true,\n pinnedByEnv: true,\n});\n\nconst FORK_PACKAGE_FIELDS = fieldsOf<ForkInstalledPackageInput>({\n installedPackageId: true,\n metadata: true,\n newName: true,\n workspaceId: true,\n});\n\nexport interface PinPackageVersionVariables {\n installedId: string;\n environment: string;\n version: string;\n /** Existing pins — passed through so pinning one environment never drops the others. */\n pinnedByEnv?: Record<string, unknown> | null;\n}\n\n/** `ForkInstalledPackageInput` minus the `workspaceId` the hook supplies. */\nexport type ForkPackageVariables = Omit<GraphQLInput<ForkInstalledPackageInput>, 'workspaceId'>;\n\n/** An installed package whose store listing has moved on to a newer version. */\nexport interface OutdatedPackage {\n installed: InstalledPackageRecord;\n installedVersion: string;\n latestVersion: string;\n}\n\nconst NO_PACKAGES: StorePackageRecord[] = [];\nconst NO_INSTALLED: InstalledPackageRecord[] = [];\nconst NO_OUTDATED: OutdatedPackage[] = [];\n\nfunction manifestSection(\n pkg: Pick<StorePackageRecord, 'manifest'> | null | undefined,\n key: string\n): Record<string, unknown> | undefined {\n const section = pkg?.manifest?.[key];\n return section && typeof section === 'object' && !Array.isArray(section)\n ? (section as Record<string, unknown>)\n : undefined;\n}\n\nfunction manifestString(\n pkg: Pick<StorePackageRecord, 'manifest'> | null | undefined,\n key: string\n): string | undefined {\n const value = manifestSection(pkg, 'package')?.[key];\n return typeof value === 'string' ? value : undefined;\n}\n\n/** Display name from the package manifest, falling back to the slug. */\nexport function storePackageName(\n pkg: Pick<StorePackageRecord, 'manifest' | 'slug'> | null | undefined\n): string {\n return manifestString(pkg, 'name') ?? pkg?.slug ?? '';\n}\n\nexport function storePackageDescription(\n pkg: Pick<StorePackageRecord, 'manifest'> | null | undefined\n): string | undefined {\n return manifestString(pkg, 'description');\n}\n\nfunction selectPackages(data: ListStorePackagesQuery | undefined): StorePackageRecord[] {\n return data?.listStorePackages ?? NO_PACKAGES;\n}\n\nfunction selectInstalled(data: ListInstalledPackagesQuery | undefined): InstalledPackageRecord[] {\n return data?.listInstalledPackages ?? NO_INSTALLED;\n}\n\nexport const storeKeys = {\n all: ['store'] as const,\n packages: () => [...storeKeys.all, 'packages'] as const,\n packageList: (filter?: StoreFilter) => [...storeKeys.packages(), 'list', filter] as const,\n packageDetail: (slug: string) => [...storeKeys.packages(), 'detail', slug] as const,\n installed: () => [...storeKeys.all, 'installed'] as const,\n installedList: () => [...storeKeys.installed(), 'list'] as const,\n installedDetail: (id: string) => [...storeKeys.installed(), 'detail', id] as const,\n};\n\nexport function useStorePackages(filter?: StoreFilter): QueryResult<StorePackageRecord[]> {\n const search = filter?.search?.trim() ?? '';\n const kind = filter?.kind?.[0];\n const sortBy = filter?.sortBy ?? 'recent';\n\n const variables = useMemo(\n () => ({\n filters: { search: search || undefined, kind },\n pagination: { limit: LIST_LIMIT, offset: 0 },\n }),\n [search, kind]\n );\n\n const select = useCallback(\n (data: ListStorePackagesQuery | undefined): StorePackageRecord[] => {\n const rows = selectPackages(data);\n if (rows.length === 0) return rows;\n const sorted = [...rows];\n if (sortBy === 'name') {\n sorted.sort((a, b) => storePackageName(a).localeCompare(storePackageName(b)));\n } else {\n sorted.sort((a, b) => (b.publishedAt ?? '').localeCompare(a.publishedAt ?? ''));\n }\n return sorted;\n },\n [sortBy]\n );\n\n return useWorkspaceQuery<ListStorePackagesQuery, StorePackageRecord[]>({\n document: ListStorePackagesDocument,\n variables,\n select,\n fallback: NO_PACKAGES,\n // The store catalogue is workspace-independent.\n enabled: true,\n errorMessage: 'Failed to load store packages',\n });\n}\n\n/** Store packages are addressed by slug in the UI, so this resolves by slug. */\nexport function useStorePackage(slug: string | undefined): QueryResult<StorePackageRecord | null> {\n const variables = useMemo(() => ({ slug: slug ?? '' }), [slug]);\n\n return useWorkspaceQuery<GetStorePackageBySlugQuery, StorePackageRecord | null>({\n document: GetStorePackageBySlugDocument,\n variables,\n select: (data) => data?.getStorePackageBySlug ?? null,\n fallback: null,\n enabled: Boolean(slug),\n errorMessage: 'Failed to load store package',\n });\n}\n\nexport function useInstalledPackages(): QueryResult<InstalledPackageRecord[]> {\n const workspaceId = useWorkspaceId();\n\n const variables = useMemo(\n () => ({\n filters: { workspaceId: workspaceId ?? '' },\n pagination: { limit: LIST_LIMIT, offset: 0 },\n }),\n [workspaceId]\n );\n\n return useWorkspaceQuery<ListInstalledPackagesQuery, InstalledPackageRecord[]>({\n document: ListInstalledPackagesDocument,\n variables,\n select: selectInstalled,\n fallback: NO_INSTALLED,\n enabled: Boolean(workspaceId),\n errorMessage: 'Failed to load installed packages',\n });\n}\n\nexport function useInstalledPackage(\n packageId: string | undefined\n): QueryResult<InstalledPackageRecord | null> {\n const variables = useMemo(() => ({ id: packageId ?? '' }), [packageId]);\n\n return useWorkspaceQuery<GetInstalledPackageQuery, InstalledPackageRecord | null>({\n document: GetInstalledPackageDocument,\n variables,\n select: (data) => data?.getInstalledPackage ?? null,\n fallback: null,\n enabled: Boolean(packageId),\n errorMessage: 'Failed to load installed package',\n });\n}\n\n/**\n * Installed packages whose store listing now publishes a different version.\n * Derived from the store package returned alongside each install — the service\n * has no dedicated \"check for updates\" operation.\n */\nexport function useCheckPackageUpdates(): QueryResult<OutdatedPackage[]> {\n const workspaceId = useWorkspaceId();\n\n const variables = useMemo(\n () => ({\n filters: { workspaceId: workspaceId ?? '' },\n pagination: { limit: LIST_LIMIT, offset: 0 },\n }),\n [workspaceId]\n );\n\n const select = useCallback((data: ListInstalledPackagesQuery | undefined): OutdatedPackage[] => {\n const rows = selectInstalled(data);\n const outdated: OutdatedPackage[] = [];\n for (const installed of rows) {\n const latestVersion = installed.package?.version;\n if (latestVersion && latestVersion !== installed.installedVersion) {\n outdated.push({ installed, installedVersion: installed.installedVersion, latestVersion });\n }\n }\n return outdated;\n }, []);\n\n return useWorkspaceQuery<ListInstalledPackagesQuery, OutdatedPackage[]>({\n document: ListInstalledPackagesDocument,\n variables,\n select,\n fallback: NO_OUTDATED,\n enabled: Boolean(workspaceId),\n errorMessage: 'Failed to check for package updates',\n });\n}\n\nexport function useInstallPackage() {\n const workspaceId = useWorkspaceId();\n\n const variables = useCallback(\n (input: InstallPackageVariables) => ({\n input: buildMutationInput({ ...input, workspaceId }, INSTALL_PACKAGE_FIELDS),\n }),\n [workspaceId]\n );\n\n const [install, state] = useWorkspaceMutation<\n InstallPackageMutation,\n InstallPackageVariables,\n InstalledPackageRecord\n >({\n document: InstallPackageDocument,\n variables,\n select: (data) => data?.installPackage,\n errorMessage: 'Failed to install package',\n });\n\n return { install, loading: state.loading, error: state.error };\n}\n\nexport function useUpdateInstalledPackage() {\n const [update, state] = useWorkspaceMutation<\n UpdateInstalledPackageMutation,\n UpdateInstalledPackageVariables,\n InstalledPackageRecord\n >({\n document: UpdateInstalledPackageDocument,\n variables: ({ installedId, input }) => ({\n id: installedId,\n input: buildMutationInput(input, UPDATE_INSTALLED_FIELDS),\n }),\n select: (data) => data?.updateInstalledPackage,\n errorMessage: 'Failed to update installed package',\n });\n\n return { update, loading: state.loading, error: state.error };\n}\n\nexport function useUninstallPackage() {\n const [uninstall, state] = useWorkspaceMutation<UninstallPackageMutation, string, boolean>({\n document: UninstallPackageDocument,\n variables: (installedId) => ({ id: installedId }),\n select: (data) => data?.uninstallPackage,\n errorMessage: 'Failed to uninstall package',\n });\n\n return { uninstall, loading: state.loading, error: state.error };\n}\n\n/**\n * Pins one environment to a version. Implemented as a targeted merge into\n * `pinnedByEnv` via `updateInstalledPackage` — the service has no dedicated pin\n * mutation, and replacing the whole map would drop the other environments.\n */\nexport function usePinPackageVersion() {\n const [update, state] = useWorkspaceMutation<\n UpdateInstalledPackageMutation,\n PinPackageVersionVariables,\n InstalledPackageRecord\n >({\n document: UpdateInstalledPackageDocument,\n variables: ({ installedId, environment, version, pinnedByEnv }) => ({\n id: installedId,\n input: { pinnedByEnv: { ...(pinnedByEnv ?? {}), [environment]: version } },\n }),\n select: (data) => data?.updateInstalledPackage,\n errorMessage: 'Failed to pin package version',\n });\n\n return { pin: update, loading: state.loading, error: state.error };\n}\n\nexport function useForkPackage() {\n const workspaceId = useWorkspaceId();\n\n const variables = useCallback(\n (input: ForkPackageVariables) => ({\n input: buildMutationInput({ ...input, workspaceId }, FORK_PACKAGE_FIELDS),\n }),\n [workspaceId]\n );\n\n const [fork, state] = useWorkspaceMutation<\n ForkInstalledPackageMutation,\n ForkPackageVariables,\n InstalledPackageRecord\n >({\n document: ForkInstalledPackageDocument,\n variables,\n select: (data) => data?.forkInstalledPackage,\n errorMessage: 'Failed to fork package',\n });\n\n return { fork, loading: state.loading, error: state.error };\n}\n"],"mappings":"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"}
|