@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,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { CreateChannelConnectorDocument as e, CreateChannelRouteDocument as t, DeleteChannelConnectorDocument as n, DeleteChannelRouteDocument as r, GetChannelConnectorDocument as i, ListChannelConnectorsDocument as a, ListChannelRoutesDocument as o, UpdateChannelConnectorDocument as s } from "../../generated/wspace-operations.js";
|
|
2
|
+
import { buildMutationInput as c, fieldsOf as l } from "./internal/mutationInput.js";
|
|
3
3
|
import { useWorkspaceId as u, useWorkspaceMutation as d, useWorkspaceQuery as f } from "./internal/workspaceGateway.js";
|
|
4
4
|
import { useCallback as p, useMemo as m } from "react";
|
|
5
|
-
|
|
6
|
-
var h = 100, g =
|
|
5
|
+
// src/botlit/hooks/useChannels.ts
|
|
6
|
+
var h = 100, g = l({
|
|
7
7
|
bucketId: !0,
|
|
8
8
|
credentialsRefId: !0,
|
|
9
9
|
defaultPolicyBindings: !0,
|
|
@@ -15,7 +15,7 @@ var h = 100, g = t({
|
|
|
15
15
|
type: !0,
|
|
16
16
|
visibility: !0,
|
|
17
17
|
workspaceId: !0
|
|
18
|
-
}), _ =
|
|
18
|
+
}), _ = l({
|
|
19
19
|
bucketId: !0,
|
|
20
20
|
credentialsRefId: !0,
|
|
21
21
|
defaultPolicyBindings: !0,
|
|
@@ -25,7 +25,7 @@ var h = 100, g = t({
|
|
|
25
25
|
status: !0,
|
|
26
26
|
tags: !0,
|
|
27
27
|
visibility: !0
|
|
28
|
-
}), v =
|
|
28
|
+
}), v = l({
|
|
29
29
|
appId: !0,
|
|
30
30
|
connectorId: !0,
|
|
31
31
|
formatPolicyId: !0,
|
|
@@ -35,7 +35,7 @@ var h = 100, g = t({
|
|
|
35
35
|
routingOverrides: !0,
|
|
36
36
|
workspaceId: !0
|
|
37
37
|
});
|
|
38
|
-
|
|
38
|
+
l({
|
|
39
39
|
appId: !0,
|
|
40
40
|
formatPolicyId: !0,
|
|
41
41
|
locationId: !0,
|
|
@@ -78,28 +78,28 @@ function O(e, t) {
|
|
|
78
78
|
return typeof n == "string" ? n : void 0;
|
|
79
79
|
}
|
|
80
80
|
function k(e) {
|
|
81
|
-
let t = u(), n = e?.search, r = e?.type?.[0], i = e?.status?.[0],
|
|
81
|
+
let t = u(), n = e?.search, r = e?.type?.[0], i = e?.status?.[0], o = e?.bucketId, s = m(() => ({
|
|
82
|
+
filters: {
|
|
83
|
+
workspaceId: t,
|
|
84
|
+
search: n || void 0,
|
|
85
|
+
type: r,
|
|
86
|
+
status: i,
|
|
87
|
+
bucketId: o
|
|
88
|
+
},
|
|
89
|
+
pagination: {
|
|
90
|
+
limit: h,
|
|
91
|
+
offset: 0
|
|
92
|
+
}
|
|
93
|
+
}), [
|
|
94
|
+
t,
|
|
95
|
+
n,
|
|
96
|
+
r,
|
|
97
|
+
i,
|
|
98
|
+
o
|
|
99
|
+
]);
|
|
82
100
|
return f({
|
|
83
|
-
document:
|
|
84
|
-
variables:
|
|
85
|
-
filters: {
|
|
86
|
-
workspaceId: t,
|
|
87
|
-
search: n || void 0,
|
|
88
|
-
type: r,
|
|
89
|
-
status: i,
|
|
90
|
-
bucketId: a
|
|
91
|
-
},
|
|
92
|
-
pagination: {
|
|
93
|
-
limit: h,
|
|
94
|
-
offset: 0
|
|
95
|
-
}
|
|
96
|
-
}), [
|
|
97
|
-
t,
|
|
98
|
-
n,
|
|
99
|
-
r,
|
|
100
|
-
i,
|
|
101
|
-
a
|
|
102
|
-
]),
|
|
101
|
+
document: a,
|
|
102
|
+
variables: s,
|
|
103
103
|
select: x,
|
|
104
104
|
fallback: y,
|
|
105
105
|
enabled: !!t,
|
|
@@ -107,9 +107,10 @@ function k(e) {
|
|
|
107
107
|
});
|
|
108
108
|
}
|
|
109
109
|
function A(e) {
|
|
110
|
+
let t = m(() => ({ id: e ?? "" }), [e]);
|
|
110
111
|
return f({
|
|
111
|
-
document:
|
|
112
|
-
variables:
|
|
112
|
+
document: i,
|
|
113
|
+
variables: t,
|
|
113
114
|
select: S,
|
|
114
115
|
fallback: null,
|
|
115
116
|
enabled: !!e,
|
|
@@ -117,23 +118,23 @@ function A(e) {
|
|
|
117
118
|
});
|
|
118
119
|
}
|
|
119
120
|
function j() {
|
|
120
|
-
let t = u()
|
|
121
|
+
let t = u(), n = p((e) => ({ input: c({
|
|
122
|
+
...e,
|
|
123
|
+
workspaceId: t
|
|
124
|
+
}, g) }), [t]);
|
|
121
125
|
return d({
|
|
122
|
-
document:
|
|
123
|
-
variables:
|
|
124
|
-
...n,
|
|
125
|
-
workspaceId: t
|
|
126
|
-
}, g) }), [t]),
|
|
126
|
+
document: e,
|
|
127
|
+
variables: n,
|
|
127
128
|
select: (e) => e?.createChannelConnector,
|
|
128
129
|
errorMessage: "Failed to create channel connector"
|
|
129
130
|
});
|
|
130
131
|
}
|
|
131
132
|
function M() {
|
|
132
133
|
return d({
|
|
133
|
-
document:
|
|
134
|
-
variables: ({ connectorId:
|
|
135
|
-
id:
|
|
136
|
-
input:
|
|
134
|
+
document: s,
|
|
135
|
+
variables: ({ connectorId: e, input: t }) => ({
|
|
136
|
+
id: e,
|
|
137
|
+
input: c(t, _)
|
|
137
138
|
}),
|
|
138
139
|
select: (e) => e?.updateChannelConnector,
|
|
139
140
|
errorMessage: "Failed to update channel connector"
|
|
@@ -141,26 +142,26 @@ function M() {
|
|
|
141
142
|
}
|
|
142
143
|
function N() {
|
|
143
144
|
return d({
|
|
144
|
-
document:
|
|
145
|
+
document: n,
|
|
145
146
|
variables: (e) => ({ id: e }),
|
|
146
147
|
select: (e) => e?.deleteChannelConnector,
|
|
147
148
|
errorMessage: "Failed to delete channel connector"
|
|
148
149
|
});
|
|
149
150
|
}
|
|
150
151
|
function P(e) {
|
|
151
|
-
let t = u()
|
|
152
|
+
let t = u(), n = m(() => ({
|
|
153
|
+
filters: {
|
|
154
|
+
workspaceId: t,
|
|
155
|
+
connectorId: e || void 0
|
|
156
|
+
},
|
|
157
|
+
pagination: {
|
|
158
|
+
limit: h,
|
|
159
|
+
offset: 0
|
|
160
|
+
}
|
|
161
|
+
}), [t, e]);
|
|
152
162
|
return f({
|
|
153
|
-
document:
|
|
154
|
-
variables:
|
|
155
|
-
filters: {
|
|
156
|
-
workspaceId: t,
|
|
157
|
-
connectorId: e || void 0
|
|
158
|
-
},
|
|
159
|
-
pagination: {
|
|
160
|
-
limit: h,
|
|
161
|
-
offset: 0
|
|
162
|
-
}
|
|
163
|
-
}), [t, e]),
|
|
163
|
+
document: o,
|
|
164
|
+
variables: n,
|
|
164
165
|
select: C,
|
|
165
166
|
fallback: b,
|
|
166
167
|
enabled: !!t,
|
|
@@ -168,19 +169,19 @@ function P(e) {
|
|
|
168
169
|
});
|
|
169
170
|
}
|
|
170
171
|
function F(e) {
|
|
171
|
-
let t = u()
|
|
172
|
+
let t = u(), n = m(() => ({
|
|
173
|
+
filters: {
|
|
174
|
+
workspaceId: t,
|
|
175
|
+
appId: e
|
|
176
|
+
},
|
|
177
|
+
pagination: {
|
|
178
|
+
limit: h,
|
|
179
|
+
offset: 0
|
|
180
|
+
}
|
|
181
|
+
}), [t, e]);
|
|
172
182
|
return f({
|
|
173
|
-
document:
|
|
174
|
-
variables:
|
|
175
|
-
filters: {
|
|
176
|
-
workspaceId: t,
|
|
177
|
-
appId: e
|
|
178
|
-
},
|
|
179
|
-
pagination: {
|
|
180
|
-
limit: h,
|
|
181
|
-
offset: 0
|
|
182
|
-
}
|
|
183
|
-
}), [t, e]),
|
|
183
|
+
document: o,
|
|
184
|
+
variables: n,
|
|
184
185
|
select: C,
|
|
185
186
|
fallback: b,
|
|
186
187
|
enabled: !!t && !!e,
|
|
@@ -188,26 +189,25 @@ function F(e) {
|
|
|
188
189
|
});
|
|
189
190
|
}
|
|
190
191
|
function I() {
|
|
191
|
-
let
|
|
192
|
+
let e = u(), n = p((t) => ({ input: c({
|
|
193
|
+
...t,
|
|
194
|
+
workspaceId: e
|
|
195
|
+
}, v) }), [e]);
|
|
192
196
|
return d({
|
|
193
|
-
document:
|
|
194
|
-
variables:
|
|
195
|
-
...n,
|
|
196
|
-
workspaceId: t
|
|
197
|
-
}, v) }), [t]),
|
|
197
|
+
document: t,
|
|
198
|
+
variables: n,
|
|
198
199
|
select: (e) => e?.createChannelRoute,
|
|
199
200
|
errorMessage: "Failed to create channel route"
|
|
200
201
|
});
|
|
201
202
|
}
|
|
202
203
|
function L() {
|
|
203
204
|
return d({
|
|
204
|
-
document:
|
|
205
|
+
document: r,
|
|
205
206
|
variables: (e) => ({ id: e }),
|
|
206
207
|
select: (e) => e?.deleteChannelRoute,
|
|
207
208
|
errorMessage: "Failed to delete channel route"
|
|
208
209
|
});
|
|
209
210
|
}
|
|
210
|
-
//#endregion
|
|
211
211
|
export { w as WIDGET_METADATA_KEY, E as readWidgetConfig, O as routeMetadataString, F as useBotChannelRoutes, A as useChannelConnector, k as useChannelConnectors, P as useChannelRoutes, j as useCreateChannelConnector, I as useCreateChannelRoute, N as useDeleteChannelConnector, L as useDeleteChannelRoute, M as useUpdateChannelConnector };
|
|
212
212
|
|
|
213
213
|
//# sourceMappingURL=useChannels.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useChannels.js","names":[],"sources":["../../../src/botlit/hooks/useChannels.ts"],"sourcesContent":["/**\n * Channels Hooks\n * @module botlit/hooks\n *\n * Backed by the live `listChannelConnectors` / `listChannelRoutes` operations\n * (and their get/create/update/delete counterparts) on wspace-botlit-svc.\n *\n * Connectors are the platform integrations (Slack, web widget, webhook…).\n * Routes bind a location on a connector to a bot app.\n */\n\nimport { useCallback, useMemo } from 'react';\nimport {\n CreateChannelConnectorDocument,\n CreateChannelRouteDocument,\n DeleteChannelConnectorDocument,\n DeleteChannelRouteDocument,\n GetChannelConnectorDocument,\n GetChannelRouteDocument,\n ListChannelConnectorsDocument,\n ListChannelRoutesDocument,\n UpdateChannelConnectorDocument,\n UpdateChannelRouteDocument,\n type CreateChannelConnectorMutation,\n type CreateChannelRouteMutation,\n type DeleteChannelConnectorMutation,\n type DeleteChannelRouteMutation,\n type GetChannelConnectorQuery,\n type GetChannelRouteQuery,\n type ListChannelConnectorsQuery,\n type ListChannelRoutesQuery,\n type UpdateChannelConnectorMutation,\n type UpdateChannelRouteMutation,\n} from '../../generated/wspace-operations';\nimport type {\n CreateChannelConnectorInput,\n CreateChannelRouteInput,\n UpdateChannelConnectorInput,\n UpdateChannelRouteInput,\n} from '../../generated/wspace-types';\nimport type { ChannelFilter } from '../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 ChannelConnectorRecord {\n id: string;\n name: string;\n type: string;\n status: string;\n visibility: string;\n description?: string | null;\n bucketId?: string | null;\n credentialsRefId?: string | null;\n defaultPolicyBindings?: 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 ChannelRouteRecord {\n id: string;\n appId: string;\n connectorId: string;\n locationId: string;\n formatPolicyId?: string | null;\n policyBindings?: Record<string, unknown> | null;\n routingOverrides?: Record<string, unknown> | null;\n metadata?: Record<string, unknown> | null;\n revision: number;\n createdAt: string;\n updatedAt: string;\n workspaceId: string;\n}\n\n/** `CreateChannelConnectorInput` minus the `workspaceId` the hook supplies. */\nexport type CreateChannelConnectorVariables = Omit<\n GraphQLInput<CreateChannelConnectorInput>,\n 'workspaceId'\n>;\n\nexport interface UpdateChannelConnectorVariables {\n connectorId: string;\n input: GraphQLInput<UpdateChannelConnectorInput>;\n}\n\n/** `CreateChannelRouteInput` minus the `workspaceId` the hook supplies. */\nexport type CreateChannelRouteVariables = Omit<\n GraphQLInput<CreateChannelRouteInput>,\n 'workspaceId'\n>;\n\nexport interface UpdateChannelRouteVariables {\n routeId: string;\n input: GraphQLInput<UpdateChannelRouteInput>;\n}\n\nconst CREATE_CONNECTOR_FIELDS = fieldsOf<CreateChannelConnectorInput>({\n bucketId: true,\n credentialsRefId: true,\n defaultPolicyBindings: true,\n description: true,\n metadata: true,\n name: true,\n status: true,\n tags: true,\n type: true,\n visibility: true,\n workspaceId: true,\n});\n\nconst UPDATE_CONNECTOR_FIELDS = fieldsOf<UpdateChannelConnectorInput>({\n bucketId: true,\n credentialsRefId: true,\n defaultPolicyBindings: true,\n description: true,\n metadata: true,\n name: true,\n status: true,\n tags: true,\n visibility: true,\n});\n\nconst CREATE_ROUTE_FIELDS = fieldsOf<CreateChannelRouteInput>({\n appId: true,\n connectorId: true,\n formatPolicyId: true,\n locationId: true,\n metadata: true,\n policyBindings: true,\n routingOverrides: true,\n workspaceId: true,\n});\n\nconst UPDATE_ROUTE_FIELDS = fieldsOf<UpdateChannelRouteInput>({\n appId: true,\n formatPolicyId: true,\n locationId: true,\n metadata: true,\n policyBindings: true,\n routingOverrides: true,\n});\n\nconst NO_CONNECTORS: ChannelConnectorRecord[] = [];\nconst NO_ROUTES: ChannelRouteRecord[] = [];\n\nfunction selectConnectors(data: ListChannelConnectorsQuery | undefined): ChannelConnectorRecord[] {\n return data?.listChannelConnectors ?? NO_CONNECTORS;\n}\n\nfunction selectConnector(\n data: GetChannelConnectorQuery | undefined\n): ChannelConnectorRecord | null {\n return data?.getChannelConnector ?? null;\n}\n\nfunction selectRoutes(data: ListChannelRoutesQuery | undefined): ChannelRouteRecord[] {\n return data?.listChannelRoutes ?? NO_ROUTES;\n}\n\nfunction selectRoute(data: GetChannelRouteQuery | undefined): ChannelRouteRecord | null {\n return data?.getChannelRoute ?? null;\n}\n\n/**\n * Web-widget appearance settings.\n *\n * `ChannelConnector` has no widget column — the settings live under\n * `metadata.webWidget`, which is where the connector form writes them.\n */\nexport interface ChannelWidgetConfig {\n allowedOrigins: string[];\n primaryColor: string;\n fontFamily: string;\n starterPrompts: string[];\n}\n\nexport const WIDGET_METADATA_KEY = 'webWidget';\n\nconst DEFAULT_WIDGET_CONFIG: ChannelWidgetConfig = {\n allowedOrigins: [],\n primaryColor: '#3b82f6',\n fontFamily: 'Inter, sans-serif',\n starterPrompts: [],\n};\n\n/** Reads the widget settings back, or `undefined` when none were saved. */\nexport function readWidgetConfig(\n connector: Pick<ChannelConnectorRecord, 'metadata'>\n): ChannelWidgetConfig | undefined {\n const stored = connector.metadata?.[WIDGET_METADATA_KEY];\n if (typeof stored !== 'object' || stored === null || Array.isArray(stored)) return undefined;\n\n const source = stored as Record<string, unknown>;\n return {\n allowedOrigins: jsonStringList(source.allowedOrigins),\n primaryColor:\n typeof source.primaryColor === 'string'\n ? source.primaryColor\n : DEFAULT_WIDGET_CONFIG.primaryColor,\n fontFamily:\n typeof source.fontFamily === 'string' ? source.fontFamily : DEFAULT_WIDGET_CONFIG.fontFamily,\n starterPrompts: jsonStringList(source.starterPrompts),\n };\n}\n\nfunction jsonStringList(value: unknown): string[] {\n return Array.isArray(value)\n ? value.filter((entry): entry is string => typeof entry === 'string')\n : [];\n}\n\n/** Reads a display label the UI stashed on the route's free-form metadata. */\nexport function routeMetadataString(\n route: Pick<ChannelRouteRecord, 'metadata'>,\n key: string\n): string | undefined {\n const value = route.metadata?.[key];\n return typeof value === 'string' ? value : undefined;\n}\n\nexport const channelKeys = {\n all: ['channels'] as const,\n connectors: () => [...channelKeys.all, 'connectors'] as const,\n connectorList: (filter?: ChannelFilter) => [...channelKeys.connectors(), 'list', filter] as const,\n connectorDetail: (id: string) => [...channelKeys.connectors(), 'detail', id] as const,\n routes: () => [...channelKeys.all, 'routes'] as const,\n routeList: (connectorId?: string) => [...channelKeys.routes(), 'list', connectorId] as const,\n routeDetail: (id: string) => [...channelKeys.routes(), 'detail', id] as const,\n};\n\n// ============================================================================\n// Connectors\n// ============================================================================\n\nexport function useChannelConnectors(\n filter?: ChannelFilter\n): QueryResult<ChannelConnectorRecord[]> {\n const workspaceId = useWorkspaceId();\n const search = filter?.search;\n const type = filter?.type?.[0];\n const status = filter?.status?.[0];\n const bucketId = filter?.bucketId;\n\n const variables = useMemo(\n () => ({\n filters: {\n workspaceId,\n search: search || undefined,\n type,\n status,\n bucketId,\n },\n pagination: { limit: LIST_LIMIT, offset: 0 },\n }),\n [workspaceId, search, type, status, bucketId]\n );\n\n return useWorkspaceQuery<ListChannelConnectorsQuery, ChannelConnectorRecord[]>({\n document: ListChannelConnectorsDocument,\n variables,\n select: selectConnectors,\n fallback: NO_CONNECTORS,\n enabled: Boolean(workspaceId),\n errorMessage: 'Failed to load channel connectors',\n });\n}\n\nexport function useChannelConnector(\n connectorId: string | undefined\n): QueryResult<ChannelConnectorRecord | null> {\n const variables = useMemo(() => ({ id: connectorId ?? '' }), [connectorId]);\n\n return useWorkspaceQuery<GetChannelConnectorQuery, ChannelConnectorRecord | null>({\n document: GetChannelConnectorDocument,\n variables,\n select: selectConnector,\n fallback: null,\n enabled: Boolean(connectorId),\n errorMessage: 'Failed to load channel connector',\n });\n}\n\nexport function useCreateChannelConnector() {\n const workspaceId = useWorkspaceId();\n\n const variables = useCallback(\n (input: CreateChannelConnectorVariables) => ({\n input: buildMutationInput({ ...input, workspaceId }, CREATE_CONNECTOR_FIELDS),\n }),\n [workspaceId]\n );\n\n return useWorkspaceMutation<\n CreateChannelConnectorMutation,\n CreateChannelConnectorVariables,\n ChannelConnectorRecord\n >({\n document: CreateChannelConnectorDocument,\n variables,\n select: (data) => data?.createChannelConnector,\n errorMessage: 'Failed to create channel connector',\n });\n}\n\nexport function useUpdateChannelConnector() {\n return useWorkspaceMutation<\n UpdateChannelConnectorMutation,\n UpdateChannelConnectorVariables,\n ChannelConnectorRecord\n >({\n document: UpdateChannelConnectorDocument,\n variables: ({ connectorId, input }) => ({\n id: connectorId,\n input: buildMutationInput(input, UPDATE_CONNECTOR_FIELDS),\n }),\n select: (data) => data?.updateChannelConnector,\n errorMessage: 'Failed to update channel connector',\n });\n}\n\nexport function useDeleteChannelConnector() {\n return useWorkspaceMutation<DeleteChannelConnectorMutation, string, boolean>({\n document: DeleteChannelConnectorDocument,\n variables: (connectorId) => ({ id: connectorId }),\n select: (data) => data?.deleteChannelConnector,\n errorMessage: 'Failed to delete channel connector',\n });\n}\n\n// ============================================================================\n// Routes\n// ============================================================================\n\nexport function useChannelRoutes(connectorId?: string): QueryResult<ChannelRouteRecord[]> {\n const workspaceId = useWorkspaceId();\n\n const variables = useMemo(\n () => ({\n filters: { workspaceId, connectorId: connectorId || undefined },\n pagination: { limit: LIST_LIMIT, offset: 0 },\n }),\n [workspaceId, connectorId]\n );\n\n return useWorkspaceQuery<ListChannelRoutesQuery, ChannelRouteRecord[]>({\n document: ListChannelRoutesDocument,\n variables,\n select: selectRoutes,\n fallback: NO_ROUTES,\n enabled: Boolean(workspaceId),\n errorMessage: 'Failed to load channel routes',\n });\n}\n\n/** Routes bound to a specific bot app (Bot Detail → Channels tab). */\nexport function useBotChannelRoutes(botId: string | undefined): QueryResult<ChannelRouteRecord[]> {\n const workspaceId = useWorkspaceId();\n\n const variables = useMemo(\n () => ({\n filters: { workspaceId, appId: botId },\n pagination: { limit: LIST_LIMIT, offset: 0 },\n }),\n [workspaceId, botId]\n );\n\n return useWorkspaceQuery<ListChannelRoutesQuery, ChannelRouteRecord[]>({\n document: ListChannelRoutesDocument,\n variables,\n select: selectRoutes,\n fallback: NO_ROUTES,\n enabled: Boolean(workspaceId) && Boolean(botId),\n errorMessage: 'Failed to load channel routes for this bot',\n });\n}\n\nexport function useChannelRoute(\n routeId: string | undefined\n): QueryResult<ChannelRouteRecord | null> {\n const variables = useMemo(() => ({ id: routeId ?? '' }), [routeId]);\n\n return useWorkspaceQuery<GetChannelRouteQuery, ChannelRouteRecord | null>({\n document: GetChannelRouteDocument,\n variables,\n select: selectRoute,\n fallback: null,\n enabled: Boolean(routeId),\n errorMessage: 'Failed to load channel route',\n });\n}\n\nexport function useCreateChannelRoute() {\n const workspaceId = useWorkspaceId();\n\n const variables = useCallback(\n (input: CreateChannelRouteVariables) => ({\n input: buildMutationInput({ ...input, workspaceId }, CREATE_ROUTE_FIELDS),\n }),\n [workspaceId]\n );\n\n return useWorkspaceMutation<\n CreateChannelRouteMutation,\n CreateChannelRouteVariables,\n ChannelRouteRecord\n >({\n document: CreateChannelRouteDocument,\n variables,\n select: (data) => data?.createChannelRoute,\n errorMessage: 'Failed to create channel route',\n });\n}\n\nexport function useUpdateChannelRoute() {\n return useWorkspaceMutation<\n UpdateChannelRouteMutation,\n UpdateChannelRouteVariables,\n ChannelRouteRecord\n >({\n document: UpdateChannelRouteDocument,\n variables: ({ routeId, input }) => ({\n id: routeId,\n input: buildMutationInput(input, UPDATE_ROUTE_FIELDS),\n }),\n select: (data) => data?.updateChannelRoute,\n errorMessage: 'Failed to update channel route',\n });\n}\n\nexport function useDeleteChannelRoute() {\n return useWorkspaceMutation<DeleteChannelRouteMutation, string, boolean>({\n document: DeleteChannelRouteDocument,\n variables: (routeId) => ({ id: routeId }),\n select: (data) => data?.deleteChannelRoute,\n errorMessage: 'Failed to delete channel route',\n });\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useChannels.js","names":["LIST_LIMIT","CREATE_CONNECTOR_FIELDS","fieldsOf","UPDATE_CONNECTOR_FIELDS","CREATE_ROUTE_FIELDS","NO_CONNECTORS","NO_ROUTES","selectConnectors","data","selectConnector","selectRoutes","WIDGET_METADATA_KEY","DEFAULT_WIDGET_CONFIG","readWidgetConfig","stored","connector","source","jsonStringList","value","entry","routeMetadataString","route","key","useChannelConnectors","workspaceId","useWorkspaceId","search","filter","type","status","bucketId","variables","useMemo","useWorkspaceQuery","ListChannelConnectorsDocument","useChannelConnector","connectorId","GetChannelConnectorDocument","useCreateChannelConnector","useCallback","buildMutationInput","input","useWorkspaceMutation","CreateChannelConnectorDocument","useUpdateChannelConnector","UpdateChannelConnectorDocument","useDeleteChannelConnector","DeleteChannelConnectorDocument","useChannelRoutes","ListChannelRoutesDocument","useBotChannelRoutes","botId","useCreateChannelRoute","CreateChannelRouteDocument","useDeleteChannelRoute","DeleteChannelRouteDocument","routeId"],"sources":["../../../src/botlit/hooks/useChannels.ts"],"sourcesContent":["/**\n * Channels Hooks\n * @module botlit/hooks\n *\n * Backed by the live `listChannelConnectors` / `listChannelRoutes` operations\n * (and their get/create/update/delete counterparts) on wspace-botlit-svc.\n *\n * Connectors are the platform integrations (Slack, web widget, webhook…).\n * Routes bind a location on a connector to a bot app.\n */\n\nimport { useCallback, useMemo } from 'react';\nimport {\n CreateChannelConnectorDocument,\n CreateChannelRouteDocument,\n DeleteChannelConnectorDocument,\n DeleteChannelRouteDocument,\n GetChannelConnectorDocument,\n GetChannelRouteDocument,\n ListChannelConnectorsDocument,\n ListChannelRoutesDocument,\n UpdateChannelConnectorDocument,\n UpdateChannelRouteDocument,\n type CreateChannelConnectorMutation,\n type CreateChannelRouteMutation,\n type DeleteChannelConnectorMutation,\n type DeleteChannelRouteMutation,\n type GetChannelConnectorQuery,\n type GetChannelRouteQuery,\n type ListChannelConnectorsQuery,\n type ListChannelRoutesQuery,\n type UpdateChannelConnectorMutation,\n type UpdateChannelRouteMutation,\n} from '../../generated/wspace-operations';\nimport type {\n CreateChannelConnectorInput,\n CreateChannelRouteInput,\n UpdateChannelConnectorInput,\n UpdateChannelRouteInput,\n} from '../../generated/wspace-types';\nimport type { ChannelFilter } from '../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 ChannelConnectorRecord {\n id: string;\n name: string;\n type: string;\n status: string;\n visibility: string;\n description?: string | null;\n bucketId?: string | null;\n credentialsRefId?: string | null;\n defaultPolicyBindings?: 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 ChannelRouteRecord {\n id: string;\n appId: string;\n connectorId: string;\n locationId: string;\n formatPolicyId?: string | null;\n policyBindings?: Record<string, unknown> | null;\n routingOverrides?: Record<string, unknown> | null;\n metadata?: Record<string, unknown> | null;\n revision: number;\n createdAt: string;\n updatedAt: string;\n workspaceId: string;\n}\n\n/** `CreateChannelConnectorInput` minus the `workspaceId` the hook supplies. */\nexport type CreateChannelConnectorVariables = Omit<\n GraphQLInput<CreateChannelConnectorInput>,\n 'workspaceId'\n>;\n\nexport interface UpdateChannelConnectorVariables {\n connectorId: string;\n input: GraphQLInput<UpdateChannelConnectorInput>;\n}\n\n/** `CreateChannelRouteInput` minus the `workspaceId` the hook supplies. */\nexport type CreateChannelRouteVariables = Omit<\n GraphQLInput<CreateChannelRouteInput>,\n 'workspaceId'\n>;\n\nexport interface UpdateChannelRouteVariables {\n routeId: string;\n input: GraphQLInput<UpdateChannelRouteInput>;\n}\n\nconst CREATE_CONNECTOR_FIELDS = fieldsOf<CreateChannelConnectorInput>({\n bucketId: true,\n credentialsRefId: true,\n defaultPolicyBindings: true,\n description: true,\n metadata: true,\n name: true,\n status: true,\n tags: true,\n type: true,\n visibility: true,\n workspaceId: true,\n});\n\nconst UPDATE_CONNECTOR_FIELDS = fieldsOf<UpdateChannelConnectorInput>({\n bucketId: true,\n credentialsRefId: true,\n defaultPolicyBindings: true,\n description: true,\n metadata: true,\n name: true,\n status: true,\n tags: true,\n visibility: true,\n});\n\nconst CREATE_ROUTE_FIELDS = fieldsOf<CreateChannelRouteInput>({\n appId: true,\n connectorId: true,\n formatPolicyId: true,\n locationId: true,\n metadata: true,\n policyBindings: true,\n routingOverrides: true,\n workspaceId: true,\n});\n\nconst UPDATE_ROUTE_FIELDS = fieldsOf<UpdateChannelRouteInput>({\n appId: true,\n formatPolicyId: true,\n locationId: true,\n metadata: true,\n policyBindings: true,\n routingOverrides: true,\n});\n\nconst NO_CONNECTORS: ChannelConnectorRecord[] = [];\nconst NO_ROUTES: ChannelRouteRecord[] = [];\n\nfunction selectConnectors(data: ListChannelConnectorsQuery | undefined): ChannelConnectorRecord[] {\n return data?.listChannelConnectors ?? NO_CONNECTORS;\n}\n\nfunction selectConnector(\n data: GetChannelConnectorQuery | undefined\n): ChannelConnectorRecord | null {\n return data?.getChannelConnector ?? null;\n}\n\nfunction selectRoutes(data: ListChannelRoutesQuery | undefined): ChannelRouteRecord[] {\n return data?.listChannelRoutes ?? NO_ROUTES;\n}\n\nfunction selectRoute(data: GetChannelRouteQuery | undefined): ChannelRouteRecord | null {\n return data?.getChannelRoute ?? null;\n}\n\n/**\n * Web-widget appearance settings.\n *\n * `ChannelConnector` has no widget column — the settings live under\n * `metadata.webWidget`, which is where the connector form writes them.\n */\nexport interface ChannelWidgetConfig {\n allowedOrigins: string[];\n primaryColor: string;\n fontFamily: string;\n starterPrompts: string[];\n}\n\nexport const WIDGET_METADATA_KEY = 'webWidget';\n\nconst DEFAULT_WIDGET_CONFIG: ChannelWidgetConfig = {\n allowedOrigins: [],\n primaryColor: '#3b82f6',\n fontFamily: 'Inter, sans-serif',\n starterPrompts: [],\n};\n\n/** Reads the widget settings back, or `undefined` when none were saved. */\nexport function readWidgetConfig(\n connector: Pick<ChannelConnectorRecord, 'metadata'>\n): ChannelWidgetConfig | undefined {\n const stored = connector.metadata?.[WIDGET_METADATA_KEY];\n if (typeof stored !== 'object' || stored === null || Array.isArray(stored)) return undefined;\n\n const source = stored as Record<string, unknown>;\n return {\n allowedOrigins: jsonStringList(source.allowedOrigins),\n primaryColor:\n typeof source.primaryColor === 'string'\n ? source.primaryColor\n : DEFAULT_WIDGET_CONFIG.primaryColor,\n fontFamily:\n typeof source.fontFamily === 'string' ? source.fontFamily : DEFAULT_WIDGET_CONFIG.fontFamily,\n starterPrompts: jsonStringList(source.starterPrompts),\n };\n}\n\nfunction jsonStringList(value: unknown): string[] {\n return Array.isArray(value)\n ? value.filter((entry): entry is string => typeof entry === 'string')\n : [];\n}\n\n/** Reads a display label the UI stashed on the route's free-form metadata. */\nexport function routeMetadataString(\n route: Pick<ChannelRouteRecord, 'metadata'>,\n key: string\n): string | undefined {\n const value = route.metadata?.[key];\n return typeof value === 'string' ? value : undefined;\n}\n\nexport const channelKeys = {\n all: ['channels'] as const,\n connectors: () => [...channelKeys.all, 'connectors'] as const,\n connectorList: (filter?: ChannelFilter) => [...channelKeys.connectors(), 'list', filter] as const,\n connectorDetail: (id: string) => [...channelKeys.connectors(), 'detail', id] as const,\n routes: () => [...channelKeys.all, 'routes'] as const,\n routeList: (connectorId?: string) => [...channelKeys.routes(), 'list', connectorId] as const,\n routeDetail: (id: string) => [...channelKeys.routes(), 'detail', id] as const,\n};\n\n// ============================================================================\n// Connectors\n// ============================================================================\n\nexport function useChannelConnectors(\n filter?: ChannelFilter\n): QueryResult<ChannelConnectorRecord[]> {\n const workspaceId = useWorkspaceId();\n const search = filter?.search;\n const type = filter?.type?.[0];\n const status = filter?.status?.[0];\n const bucketId = filter?.bucketId;\n\n const variables = useMemo(\n () => ({\n filters: {\n workspaceId,\n search: search || undefined,\n type,\n status,\n bucketId,\n },\n pagination: { limit: LIST_LIMIT, offset: 0 },\n }),\n [workspaceId, search, type, status, bucketId]\n );\n\n return useWorkspaceQuery<ListChannelConnectorsQuery, ChannelConnectorRecord[]>({\n document: ListChannelConnectorsDocument,\n variables,\n select: selectConnectors,\n fallback: NO_CONNECTORS,\n enabled: Boolean(workspaceId),\n errorMessage: 'Failed to load channel connectors',\n });\n}\n\nexport function useChannelConnector(\n connectorId: string | undefined\n): QueryResult<ChannelConnectorRecord | null> {\n const variables = useMemo(() => ({ id: connectorId ?? '' }), [connectorId]);\n\n return useWorkspaceQuery<GetChannelConnectorQuery, ChannelConnectorRecord | null>({\n document: GetChannelConnectorDocument,\n variables,\n select: selectConnector,\n fallback: null,\n enabled: Boolean(connectorId),\n errorMessage: 'Failed to load channel connector',\n });\n}\n\nexport function useCreateChannelConnector() {\n const workspaceId = useWorkspaceId();\n\n const variables = useCallback(\n (input: CreateChannelConnectorVariables) => ({\n input: buildMutationInput({ ...input, workspaceId }, CREATE_CONNECTOR_FIELDS),\n }),\n [workspaceId]\n );\n\n return useWorkspaceMutation<\n CreateChannelConnectorMutation,\n CreateChannelConnectorVariables,\n ChannelConnectorRecord\n >({\n document: CreateChannelConnectorDocument,\n variables,\n select: (data) => data?.createChannelConnector,\n errorMessage: 'Failed to create channel connector',\n });\n}\n\nexport function useUpdateChannelConnector() {\n return useWorkspaceMutation<\n UpdateChannelConnectorMutation,\n UpdateChannelConnectorVariables,\n ChannelConnectorRecord\n >({\n document: UpdateChannelConnectorDocument,\n variables: ({ connectorId, input }) => ({\n id: connectorId,\n input: buildMutationInput(input, UPDATE_CONNECTOR_FIELDS),\n }),\n select: (data) => data?.updateChannelConnector,\n errorMessage: 'Failed to update channel connector',\n });\n}\n\nexport function useDeleteChannelConnector() {\n return useWorkspaceMutation<DeleteChannelConnectorMutation, string, boolean>({\n document: DeleteChannelConnectorDocument,\n variables: (connectorId) => ({ id: connectorId }),\n select: (data) => data?.deleteChannelConnector,\n errorMessage: 'Failed to delete channel connector',\n });\n}\n\n// ============================================================================\n// Routes\n// ============================================================================\n\nexport function useChannelRoutes(connectorId?: string): QueryResult<ChannelRouteRecord[]> {\n const workspaceId = useWorkspaceId();\n\n const variables = useMemo(\n () => ({\n filters: { workspaceId, connectorId: connectorId || undefined },\n pagination: { limit: LIST_LIMIT, offset: 0 },\n }),\n [workspaceId, connectorId]\n );\n\n return useWorkspaceQuery<ListChannelRoutesQuery, ChannelRouteRecord[]>({\n document: ListChannelRoutesDocument,\n variables,\n select: selectRoutes,\n fallback: NO_ROUTES,\n enabled: Boolean(workspaceId),\n errorMessage: 'Failed to load channel routes',\n });\n}\n\n/** Routes bound to a specific bot app (Bot Detail → Channels tab). */\nexport function useBotChannelRoutes(botId: string | undefined): QueryResult<ChannelRouteRecord[]> {\n const workspaceId = useWorkspaceId();\n\n const variables = useMemo(\n () => ({\n filters: { workspaceId, appId: botId },\n pagination: { limit: LIST_LIMIT, offset: 0 },\n }),\n [workspaceId, botId]\n );\n\n return useWorkspaceQuery<ListChannelRoutesQuery, ChannelRouteRecord[]>({\n document: ListChannelRoutesDocument,\n variables,\n select: selectRoutes,\n fallback: NO_ROUTES,\n enabled: Boolean(workspaceId) && Boolean(botId),\n errorMessage: 'Failed to load channel routes for this bot',\n });\n}\n\nexport function useChannelRoute(\n routeId: string | undefined\n): QueryResult<ChannelRouteRecord | null> {\n const variables = useMemo(() => ({ id: routeId ?? '' }), [routeId]);\n\n return useWorkspaceQuery<GetChannelRouteQuery, ChannelRouteRecord | null>({\n document: GetChannelRouteDocument,\n variables,\n select: selectRoute,\n fallback: null,\n enabled: Boolean(routeId),\n errorMessage: 'Failed to load channel route',\n });\n}\n\nexport function useCreateChannelRoute() {\n const workspaceId = useWorkspaceId();\n\n const variables = useCallback(\n (input: CreateChannelRouteVariables) => ({\n input: buildMutationInput({ ...input, workspaceId }, CREATE_ROUTE_FIELDS),\n }),\n [workspaceId]\n );\n\n return useWorkspaceMutation<\n CreateChannelRouteMutation,\n CreateChannelRouteVariables,\n ChannelRouteRecord\n >({\n document: CreateChannelRouteDocument,\n variables,\n select: (data) => data?.createChannelRoute,\n errorMessage: 'Failed to create channel route',\n });\n}\n\nexport function useUpdateChannelRoute() {\n return useWorkspaceMutation<\n UpdateChannelRouteMutation,\n UpdateChannelRouteVariables,\n ChannelRouteRecord\n >({\n document: UpdateChannelRouteDocument,\n variables: ({ routeId, input }) => ({\n id: routeId,\n input: buildMutationInput(input, UPDATE_ROUTE_FIELDS),\n }),\n select: (data) => data?.updateChannelRoute,\n errorMessage: 'Failed to update channel route',\n });\n}\n\nexport function useDeleteChannelRoute() {\n return useWorkspaceMutation<DeleteChannelRouteMutation, string, boolean>({\n document: DeleteChannelRouteDocument,\n variables: (routeId) => ({ id: routeId }),\n select: (data) => data?.deleteChannelRoute,\n errorMessage: 'Failed to delete channel route',\n });\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { CreateExecutionInput, ExecutionStatus } from '../../generated/wspace-types';
|
|
2
|
+
import { GraphQLInput } from './internal/mutationInput';
|
|
3
|
+
import { QueryResult } from './internal/workspaceGateway';
|
|
4
|
+
export interface ExecutionRecord {
|
|
5
|
+
id: string;
|
|
6
|
+
status: string;
|
|
7
|
+
type: string;
|
|
8
|
+
input: string;
|
|
9
|
+
output?: string | null;
|
|
10
|
+
agentId?: string | null;
|
|
11
|
+
appId?: string | null;
|
|
12
|
+
conversationId?: string | null;
|
|
13
|
+
cost?: number | null;
|
|
14
|
+
duration?: number | null;
|
|
15
|
+
tokensUsed?: number | null;
|
|
16
|
+
errorCode?: string | null;
|
|
17
|
+
errorMessage?: string | null;
|
|
18
|
+
errorDetails?: Record<string, unknown> | null;
|
|
19
|
+
metadata?: Record<string, unknown> | null;
|
|
20
|
+
completedAt?: string | null;
|
|
21
|
+
createdAt: string;
|
|
22
|
+
workspaceId: string;
|
|
23
|
+
}
|
|
24
|
+
export interface ExecutionMetricsRecord {
|
|
25
|
+
executionId: string;
|
|
26
|
+
cost: number;
|
|
27
|
+
inputTokens: number;
|
|
28
|
+
outputTokens: number;
|
|
29
|
+
totalTokens: number;
|
|
30
|
+
ragChunks: number;
|
|
31
|
+
toolCalls: number;
|
|
32
|
+
}
|
|
33
|
+
export interface ExecutionsFilter {
|
|
34
|
+
search?: string;
|
|
35
|
+
status?: string[];
|
|
36
|
+
agentId?: string;
|
|
37
|
+
appId?: string;
|
|
38
|
+
conversationId?: string;
|
|
39
|
+
type?: string;
|
|
40
|
+
}
|
|
41
|
+
export interface ExecutionMetricsFilter {
|
|
42
|
+
agentId?: string;
|
|
43
|
+
appId?: string;
|
|
44
|
+
startDate?: string;
|
|
45
|
+
endDate?: string;
|
|
46
|
+
}
|
|
47
|
+
export interface CreateExecutionVariables {
|
|
48
|
+
input: GraphQLInput<CreateExecutionInput>;
|
|
49
|
+
}
|
|
50
|
+
export interface UpdateExecutionStatusVariables {
|
|
51
|
+
id: string;
|
|
52
|
+
status: ExecutionStatus;
|
|
53
|
+
output?: string;
|
|
54
|
+
error?: Record<string, unknown>;
|
|
55
|
+
}
|
|
56
|
+
export declare const executionKeys: {
|
|
57
|
+
all: readonly ["executions"];
|
|
58
|
+
lists: () => readonly ["executions", "list"];
|
|
59
|
+
list: (filter?: ExecutionsFilter) => readonly ["executions", "list", ExecutionsFilter | undefined];
|
|
60
|
+
details: () => readonly ["executions", "detail"];
|
|
61
|
+
detail: (id: string) => readonly ["executions", "detail", string];
|
|
62
|
+
metrics: () => readonly ["executions", "metrics"];
|
|
63
|
+
};
|
|
64
|
+
export declare function useExecutions(filter?: ExecutionsFilter): QueryResult<ExecutionRecord[]>;
|
|
65
|
+
export declare function useExecution(executionId: string | undefined): QueryResult<ExecutionRecord | null>;
|
|
66
|
+
/**
|
|
67
|
+
* Token/cost metrics for the workspace, optionally narrowed to an agent, app or
|
|
68
|
+
* date window. Returns `null` when the service has nothing recorded yet.
|
|
69
|
+
*/
|
|
70
|
+
export declare function useExecutionMetrics(filter?: ExecutionMetricsFilter): QueryResult<ExecutionMetricsRecord | null>;
|
|
71
|
+
export interface ExecutionRollup {
|
|
72
|
+
total: number;
|
|
73
|
+
succeeded: number;
|
|
74
|
+
failed: number;
|
|
75
|
+
successRate: number;
|
|
76
|
+
avgDurationMs: number;
|
|
77
|
+
totalCost: number;
|
|
78
|
+
totalTokens: number;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Rolls a list of executions up into the headline numbers shown above the table.
|
|
82
|
+
* Derived purely from the rows that were actually loaded — no server aggregate
|
|
83
|
+
* exists for this, so callers must label it as such.
|
|
84
|
+
*/
|
|
85
|
+
export declare function summariseExecutions(executions: readonly ExecutionRecord[]): ExecutionRollup;
|
|
86
|
+
export declare function useCreateExecution(): readonly [(input: CreateExecutionVariables) => Promise<ExecutionRecord>, import('./internal/workspaceGateway').MutationState<ExecutionRecord>];
|
|
87
|
+
export declare function useUpdateExecutionStatus(): readonly [(input: UpdateExecutionStatusVariables) => Promise<ExecutionRecord>, import('./internal/workspaceGateway').MutationState<ExecutionRecord>];
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { CreateExecutionDocument as e, GetExecutionDocument as t, ListExecutionsDocument as n } from "../../generated/wspace-operations.js";
|
|
2
|
+
import { buildMutationInput as r, fieldsOf as i } from "./internal/mutationInput.js";
|
|
3
3
|
import { useWorkspaceId as a, useWorkspaceMutation as o, useWorkspaceQuery as s } from "./internal/workspaceGateway.js";
|
|
4
4
|
import { useCallback as c, useMemo as l } from "react";
|
|
5
|
-
|
|
6
|
-
var u = 100, d =
|
|
5
|
+
// src/botlit/hooks/useExecutions.ts
|
|
6
|
+
var u = 100, d = i({
|
|
7
7
|
agentId: !0,
|
|
8
8
|
appId: !0,
|
|
9
9
|
conversationId: !0,
|
|
@@ -11,48 +11,49 @@ var u = 100, d = t({
|
|
|
11
11
|
metadata: !0,
|
|
12
12
|
type: !0,
|
|
13
13
|
workspaceId: !0
|
|
14
|
-
}), f = new Set(["COMPLETED"]), p = [];
|
|
14
|
+
}), f = /* @__PURE__ */ new Set(["COMPLETED"]), p = [];
|
|
15
15
|
function m(e, t) {
|
|
16
16
|
return e.id.toLowerCase().includes(t) || (e.agentId ?? "").toLowerCase().includes(t) || (e.appId ?? "").toLowerCase().includes(t) || e.input.toLowerCase().includes(t);
|
|
17
17
|
}
|
|
18
18
|
function h(e) {
|
|
19
|
-
let t = a(),
|
|
19
|
+
let t = a(), r = e?.search?.trim().toLowerCase() ?? "", i = e?.status, o = i?.length === 1 ? i[0] : void 0, d = i?.join(",") ?? "", { agentId: f, appId: h, conversationId: g, type: _ } = e ?? {}, v = l(() => ({
|
|
20
|
+
filters: {
|
|
21
|
+
workspaceId: t,
|
|
22
|
+
status: o,
|
|
23
|
+
agentId: f,
|
|
24
|
+
appId: h,
|
|
25
|
+
conversationId: g,
|
|
26
|
+
type: _
|
|
27
|
+
},
|
|
28
|
+
pagination: {
|
|
29
|
+
limit: u,
|
|
30
|
+
offset: 0
|
|
31
|
+
}
|
|
32
|
+
}), [
|
|
33
|
+
t,
|
|
34
|
+
o,
|
|
35
|
+
f,
|
|
36
|
+
h,
|
|
37
|
+
g,
|
|
38
|
+
_
|
|
39
|
+
]), y = c((e) => {
|
|
40
|
+
let t = e?.listExecutions ?? p, n = d ? new Set(d.split(",")) : void 0, i = n && n.size > 1 ? t.filter((e) => n.has(e.status)) : t;
|
|
41
|
+
return r ? i.filter((e) => m(e, r)) : i;
|
|
42
|
+
}, [r, d]);
|
|
20
43
|
return s({
|
|
21
|
-
document:
|
|
22
|
-
variables:
|
|
23
|
-
|
|
24
|
-
workspaceId: t,
|
|
25
|
-
status: o,
|
|
26
|
-
agentId: f,
|
|
27
|
-
appId: h,
|
|
28
|
-
conversationId: g,
|
|
29
|
-
type: _
|
|
30
|
-
},
|
|
31
|
-
pagination: {
|
|
32
|
-
limit: u,
|
|
33
|
-
offset: 0
|
|
34
|
-
}
|
|
35
|
-
}), [
|
|
36
|
-
t,
|
|
37
|
-
o,
|
|
38
|
-
f,
|
|
39
|
-
h,
|
|
40
|
-
g,
|
|
41
|
-
_
|
|
42
|
-
]),
|
|
43
|
-
select: c((e) => {
|
|
44
|
-
let t = e?.listExecutions ?? p, r = d ? new Set(d.split(",")) : void 0, i = r && r.size > 1 ? t.filter((e) => r.has(e.status)) : t;
|
|
45
|
-
return n ? i.filter((e) => m(e, n)) : i;
|
|
46
|
-
}, [n, d]),
|
|
44
|
+
document: n,
|
|
45
|
+
variables: v,
|
|
46
|
+
select: y,
|
|
47
47
|
fallback: p,
|
|
48
48
|
enabled: !!t,
|
|
49
49
|
errorMessage: "Failed to load executions"
|
|
50
50
|
});
|
|
51
51
|
}
|
|
52
52
|
function g(e) {
|
|
53
|
+
let n = l(() => ({ id: e ?? "" }), [e]);
|
|
53
54
|
return s({
|
|
54
|
-
document:
|
|
55
|
-
variables:
|
|
55
|
+
document: t,
|
|
56
|
+
variables: n,
|
|
56
57
|
select: (e) => e?.getExecution ?? null,
|
|
57
58
|
fallback: null,
|
|
58
59
|
enabled: !!e,
|
|
@@ -74,13 +75,12 @@ function _(e) {
|
|
|
74
75
|
}
|
|
75
76
|
function v() {
|
|
76
77
|
return o({
|
|
77
|
-
document:
|
|
78
|
-
variables: ({ input:
|
|
78
|
+
document: e,
|
|
79
|
+
variables: ({ input: e }) => ({ input: r(e, d) }),
|
|
79
80
|
select: (e) => e?.createExecution,
|
|
80
81
|
errorMessage: "Failed to start execution"
|
|
81
82
|
});
|
|
82
83
|
}
|
|
83
|
-
//#endregion
|
|
84
84
|
export { _ as summariseExecutions, v as useCreateExecution, g as useExecution, h as useExecutions };
|
|
85
85
|
|
|
86
86
|
//# sourceMappingURL=useExecutions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useExecutions.js","names":[],"sources":["../../../src/botlit/hooks/useExecutions.ts"],"sourcesContent":["/**\n * Executions Hooks\n * @module botlit/hooks\n *\n * Backed by the live `listExecutions` / `getExecution` / `getExecutionMetrics`\n * operations plus the `createExecution` / `updateExecutionStatus` mutations on\n * wspace-botlit-svc.\n *\n * Note on filtering: `ExecutionFilterInput` accepts a SINGLE status and has no\n * free-text field, so multi-status selections and search are narrowed on the\n * client over the fetched page.\n */\n\nimport { useCallback, useMemo } from 'react';\nimport {\n CreateExecutionDocument,\n GetExecutionDocument,\n GetExecutionMetricsDocument,\n ListExecutionsDocument,\n UpdateExecutionStatusDocument,\n type CreateExecutionMutation,\n type GetExecutionMetricsQuery,\n type GetExecutionQuery,\n type ListExecutionsQuery,\n type UpdateExecutionStatusMutation,\n} from '../../generated/wspace-operations';\nimport type { CreateExecutionInput, ExecutionStatus } 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 ExecutionRecord {\n id: string;\n status: string;\n type: string;\n input: string;\n output?: string | null;\n agentId?: string | null;\n appId?: string | null;\n conversationId?: string | null;\n cost?: number | null;\n duration?: number | null;\n tokensUsed?: number | null;\n errorCode?: string | null;\n errorMessage?: string | null;\n errorDetails?: Record<string, unknown> | null;\n metadata?: Record<string, unknown> | null;\n completedAt?: string | null;\n createdAt: string;\n workspaceId: string;\n}\n\nexport interface ExecutionMetricsRecord {\n executionId: string;\n cost: number;\n inputTokens: number;\n outputTokens: number;\n totalTokens: number;\n ragChunks: number;\n toolCalls: number;\n}\n\nexport interface ExecutionsFilter {\n search?: string;\n status?: string[];\n agentId?: string;\n appId?: string;\n conversationId?: string;\n type?: string;\n}\n\nexport interface ExecutionMetricsFilter {\n agentId?: string;\n appId?: string;\n startDate?: string;\n endDate?: string;\n}\n\nexport interface CreateExecutionVariables {\n input: GraphQLInput<CreateExecutionInput>;\n}\n\nconst CREATE_EXECUTION_FIELDS = fieldsOf<CreateExecutionInput>({\n agentId: true,\n appId: true,\n conversationId: true,\n input: true,\n metadata: true,\n type: true,\n workspaceId: true,\n});\n\nexport interface UpdateExecutionStatusVariables {\n id: string;\n status: ExecutionStatus;\n output?: string;\n error?: Record<string, unknown>;\n}\n\n/** Terminal statuses that count as a successful run. */\nconst SUCCESS_STATUSES = new Set(['COMPLETED']);\n\nconst NO_EXECUTIONS: ExecutionRecord[] = [];\n\nexport const executionKeys = {\n all: ['executions'] as const,\n lists: () => [...executionKeys.all, 'list'] as const,\n list: (filter?: ExecutionsFilter) => [...executionKeys.lists(), filter] as const,\n details: () => [...executionKeys.all, 'detail'] as const,\n detail: (id: string) => [...executionKeys.details(), id] as const,\n metrics: () => [...executionKeys.all, 'metrics'] as const,\n};\n\nfunction matchesSearch(execution: ExecutionRecord, needle: string): boolean {\n return (\n execution.id.toLowerCase().includes(needle) ||\n (execution.agentId ?? '').toLowerCase().includes(needle) ||\n (execution.appId ?? '').toLowerCase().includes(needle) ||\n execution.input.toLowerCase().includes(needle)\n );\n}\n\nexport function useExecutions(filter?: ExecutionsFilter): QueryResult<ExecutionRecord[]> {\n const workspaceId = useWorkspaceId();\n const search = filter?.search?.trim().toLowerCase() ?? '';\n const statuses = filter?.status;\n const singleStatus = statuses?.length === 1 ? statuses[0] : undefined;\n const statusKey = statuses?.join(',') ?? '';\n const { agentId, appId, conversationId, type } = filter ?? {};\n\n const variables = useMemo(\n () => ({\n filters: {\n workspaceId,\n status: singleStatus,\n agentId,\n appId,\n conversationId,\n type,\n },\n pagination: { limit: LIST_LIMIT, offset: 0 },\n }),\n [workspaceId, singleStatus, agentId, appId, conversationId, type]\n );\n\n const select = useCallback(\n (data: ListExecutionsQuery | undefined): ExecutionRecord[] => {\n const rows: ExecutionRecord[] = data?.listExecutions ?? NO_EXECUTIONS;\n const wanted = statusKey ? new Set(statusKey.split(',')) : undefined;\n const narrowed =\n // A single status is already applied server-side.\n wanted && wanted.size > 1 ? rows.filter((row) => wanted.has(row.status)) : rows;\n return search ? narrowed.filter((row) => matchesSearch(row, search)) : narrowed;\n },\n [search, statusKey]\n );\n\n return useWorkspaceQuery<ListExecutionsQuery, ExecutionRecord[]>({\n document: ListExecutionsDocument,\n variables,\n select,\n fallback: NO_EXECUTIONS,\n enabled: Boolean(workspaceId),\n errorMessage: 'Failed to load executions',\n });\n}\n\nexport function useExecution(executionId: string | undefined): QueryResult<ExecutionRecord | null> {\n const variables = useMemo(() => ({ id: executionId ?? '' }), [executionId]);\n\n return useWorkspaceQuery<GetExecutionQuery, ExecutionRecord | null>({\n document: GetExecutionDocument,\n variables,\n select: (data) => data?.getExecution ?? null,\n fallback: null,\n enabled: Boolean(executionId),\n errorMessage: 'Failed to load execution',\n });\n}\n\n/**\n * Token/cost metrics for the workspace, optionally narrowed to an agent, app or\n * date window. Returns `null` when the service has nothing recorded yet.\n */\nexport function useExecutionMetrics(\n filter?: ExecutionMetricsFilter\n): QueryResult<ExecutionMetricsRecord | null> {\n const workspaceId = useWorkspaceId();\n const { agentId, appId, startDate, endDate } = filter ?? {};\n\n const variables = useMemo(\n () => ({ filter: { workspaceId, agentId, appId, startDate, endDate } }),\n [workspaceId, agentId, appId, startDate, endDate]\n );\n\n return useWorkspaceQuery<GetExecutionMetricsQuery, ExecutionMetricsRecord | null>({\n document: GetExecutionMetricsDocument,\n variables,\n select: (data) => data?.getExecutionMetrics ?? null,\n fallback: null,\n enabled: Boolean(workspaceId),\n errorMessage: 'Failed to load execution metrics',\n });\n}\n\nexport interface ExecutionRollup {\n total: number;\n succeeded: number;\n failed: number;\n successRate: number;\n avgDurationMs: number;\n totalCost: number;\n totalTokens: number;\n}\n\n/**\n * Rolls a list of executions up into the headline numbers shown above the table.\n * Derived purely from the rows that were actually loaded — no server aggregate\n * exists for this, so callers must label it as such.\n */\nexport function summariseExecutions(executions: readonly ExecutionRecord[]): ExecutionRollup {\n const total = executions.length;\n let succeeded = 0;\n let failed = 0;\n let durationSum = 0;\n let durationCount = 0;\n let totalCost = 0;\n let totalTokens = 0;\n\n for (const execution of executions) {\n if (SUCCESS_STATUSES.has(execution.status)) succeeded += 1;\n if (execution.status === 'FAILED' || execution.status === 'TIMEOUT') failed += 1;\n if (typeof execution.duration === 'number') {\n durationSum += execution.duration;\n durationCount += 1;\n }\n totalCost += execution.cost ?? 0;\n totalTokens += execution.tokensUsed ?? 0;\n }\n\n return {\n total,\n succeeded,\n failed,\n successRate: total > 0 ? succeeded / total : 0,\n avgDurationMs: durationCount > 0 ? durationSum / durationCount : 0,\n totalCost,\n totalTokens,\n };\n}\n\nexport function useCreateExecution() {\n return useWorkspaceMutation<CreateExecutionMutation, CreateExecutionVariables, ExecutionRecord>({\n document: CreateExecutionDocument,\n variables: ({ input }) => ({ input: buildMutationInput(input, CREATE_EXECUTION_FIELDS) }),\n select: (data) => data?.createExecution,\n errorMessage: 'Failed to start execution',\n });\n}\n\nexport function useUpdateExecutionStatus() {\n return useWorkspaceMutation<\n UpdateExecutionStatusMutation,\n UpdateExecutionStatusVariables,\n ExecutionRecord\n >({\n document: UpdateExecutionStatusDocument,\n variables: ({ id, status, output, error }) => ({\n id,\n input: {\n status,\n output,\n // The subgraph takes the failure as a message plus a JSON detail blob\n // (UpdateExecutionStatusInput); pass the caller's object through whole.\n errorMessage: typeof error?.message === 'string' ? error.message : undefined,\n errorDetails: error,\n },\n }),\n select: (data) => data?.updateExecutionStatus,\n errorMessage: 'Failed to update execution status',\n });\n}\n"],"mappings":";;;;;AAmCA,IAAM,IAAa,KAqDb,IAA0B,EAA+B;CAC7D,SAAS;CACT,OAAO;CACP,gBAAgB;CAChB,OAAO;CACP,UAAU;CACV,MAAM;CACN,aAAa;CACd,CAAC,EAUI,IAAmB,IAAI,IAAI,CAAC,YAAY,CAAC,EAEzC,IAAmC,EAAE;AAW3C,SAAS,EAAc,GAA4B,GAAyB;AAC1E,QACE,EAAU,GAAG,aAAa,CAAC,SAAS,EAAO,KAC1C,EAAU,WAAW,IAAI,aAAa,CAAC,SAAS,EAAO,KACvD,EAAU,SAAS,IAAI,aAAa,CAAC,SAAS,EAAO,IACtD,EAAU,MAAM,aAAa,CAAC,SAAS,EAAO;;AAIlD,SAAgB,EAAc,GAA2D;CACvF,IAAM,IAAc,GAAgB,EAC9B,IAAS,GAAQ,QAAQ,MAAM,CAAC,aAAa,IAAI,IACjD,IAAW,GAAQ,QACnB,IAAe,GAAU,WAAW,IAAI,EAAS,KAAK,KAAA,GACtD,IAAY,GAAU,KAAK,IAAI,IAAI,IACnC,EAAE,YAAS,UAAO,mBAAgB,YAAS,KAAU,EAAE;AA6B7D,QAAO,EAA0D;EAC/D,UAAU;EACV,WA7BgB,SACT;GACL,SAAS;IACP;IACA,QAAQ;IACR;IACA;IACA;IACA;IACD;GACD,YAAY;IAAE,OAAO;IAAY,QAAQ;IAAG;GAC7C,GACD;GAAC;GAAa;GAAc;GAAS;GAAO;GAAgB;GAAK,CAClE;EAiBC,QAfa,GACZ,MAA6D;GAC5D,IAAM,IAA0B,GAAM,kBAAkB,GAClD,IAAS,IAAY,IAAI,IAAI,EAAU,MAAM,IAAI,CAAC,GAAG,KAAA,GACrD,IAEJ,KAAU,EAAO,OAAO,IAAI,EAAK,QAAQ,MAAQ,EAAO,IAAI,EAAI,OAAO,CAAC,GAAG;AAC7E,UAAO,IAAS,EAAS,QAAQ,MAAQ,EAAc,GAAK,EAAO,CAAC,GAAG;KAEzE,CAAC,GAAQ,EAAU,CACpB;EAMC,UAAU;EACV,SAAS,EAAQ;EACjB,cAAc;EACf,CAAC;;AAGJ,SAAgB,EAAa,GAAsE;AAGjG,QAAO,EAA6D;EAClE,UAAU;EACV,WAJgB,SAAe,EAAE,IAAI,KAAe,IAAI,GAAG,CAAC,EAAY,CAAC;EAKzE,SAAS,MAAS,GAAM,gBAAgB;EACxC,UAAU;EACV,SAAS,EAAQ;EACjB,cAAc;EACf,CAAC;;AA2CJ,SAAgB,EAAoB,GAAyD;CAC3F,IAAM,IAAQ,EAAW,QACrB,IAAY,GACZ,IAAS,GACT,IAAc,GACd,IAAgB,GAChB,IAAY,GACZ,IAAc;AAElB,MAAK,IAAM,KAAa,EAQtB,CAPI,EAAiB,IAAI,EAAU,OAAO,KAAE,KAAa,KACrD,EAAU,WAAW,YAAY,EAAU,WAAW,eAAW,KAAU,IAC3E,OAAO,EAAU,YAAa,aAChC,KAAe,EAAU,UACzB,KAAiB,IAEnB,KAAa,EAAU,QAAQ,GAC/B,KAAe,EAAU,cAAc;AAGzC,QAAO;EACL;EACA;EACA;EACA,aAAa,IAAQ,IAAI,IAAY,IAAQ;EAC7C,eAAe,IAAgB,IAAI,IAAc,IAAgB;EACjE;EACA;EACD;;AAGH,SAAgB,IAAqB;AACnC,QAAO,EAAyF;EAC9F,UAAU;EACV,YAAY,EAAE,gBAAa,EAAE,OAAO,EAAmB,GAAO,EAAwB,EAAE;EACxF,SAAS,MAAS,GAAM;EACxB,cAAc;EACf,CAAC"}
|
|
1
|
+
{"version":3,"file":"useExecutions.js","names":["LIST_LIMIT","CREATE_EXECUTION_FIELDS","fieldsOf","SUCCESS_STATUSES","NO_EXECUTIONS","matchesSearch","execution","needle","useExecutions","workspaceId","useWorkspaceId","search","filter","statuses","singleStatus","statusKey","variables","useMemo","agentId","appId","conversationId","type","select","useCallback","rows","data","wanted","narrowed","row","useWorkspaceQuery","ListExecutionsDocument","useExecution","executionId","GetExecutionDocument","summariseExecutions","total","executions","succeeded","failed","durationSum","durationCount","totalCost","totalTokens","useCreateExecution","useWorkspaceMutation","CreateExecutionDocument","buildMutationInput","input"],"sources":["../../../src/botlit/hooks/useExecutions.ts"],"sourcesContent":["/**\n * Executions Hooks\n * @module botlit/hooks\n *\n * Backed by the live `listExecutions` / `getExecution` / `getExecutionMetrics`\n * operations plus the `createExecution` / `updateExecutionStatus` mutations on\n * wspace-botlit-svc.\n *\n * Note on filtering: `ExecutionFilterInput` accepts a SINGLE status and has no\n * free-text field, so multi-status selections and search are narrowed on the\n * client over the fetched page.\n */\n\nimport { useCallback, useMemo } from 'react';\nimport {\n CreateExecutionDocument,\n GetExecutionDocument,\n GetExecutionMetricsDocument,\n ListExecutionsDocument,\n UpdateExecutionStatusDocument,\n type CreateExecutionMutation,\n type GetExecutionMetricsQuery,\n type GetExecutionQuery,\n type ListExecutionsQuery,\n type UpdateExecutionStatusMutation,\n} from '../../generated/wspace-operations';\nimport type { CreateExecutionInput, ExecutionStatus } 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 ExecutionRecord {\n id: string;\n status: string;\n type: string;\n input: string;\n output?: string | null;\n agentId?: string | null;\n appId?: string | null;\n conversationId?: string | null;\n cost?: number | null;\n duration?: number | null;\n tokensUsed?: number | null;\n errorCode?: string | null;\n errorMessage?: string | null;\n errorDetails?: Record<string, unknown> | null;\n metadata?: Record<string, unknown> | null;\n completedAt?: string | null;\n createdAt: string;\n workspaceId: string;\n}\n\nexport interface ExecutionMetricsRecord {\n executionId: string;\n cost: number;\n inputTokens: number;\n outputTokens: number;\n totalTokens: number;\n ragChunks: number;\n toolCalls: number;\n}\n\nexport interface ExecutionsFilter {\n search?: string;\n status?: string[];\n agentId?: string;\n appId?: string;\n conversationId?: string;\n type?: string;\n}\n\nexport interface ExecutionMetricsFilter {\n agentId?: string;\n appId?: string;\n startDate?: string;\n endDate?: string;\n}\n\nexport interface CreateExecutionVariables {\n input: GraphQLInput<CreateExecutionInput>;\n}\n\nconst CREATE_EXECUTION_FIELDS = fieldsOf<CreateExecutionInput>({\n agentId: true,\n appId: true,\n conversationId: true,\n input: true,\n metadata: true,\n type: true,\n workspaceId: true,\n});\n\nexport interface UpdateExecutionStatusVariables {\n id: string;\n status: ExecutionStatus;\n output?: string;\n error?: Record<string, unknown>;\n}\n\n/** Terminal statuses that count as a successful run. */\nconst SUCCESS_STATUSES = new Set(['COMPLETED']);\n\nconst NO_EXECUTIONS: ExecutionRecord[] = [];\n\nexport const executionKeys = {\n all: ['executions'] as const,\n lists: () => [...executionKeys.all, 'list'] as const,\n list: (filter?: ExecutionsFilter) => [...executionKeys.lists(), filter] as const,\n details: () => [...executionKeys.all, 'detail'] as const,\n detail: (id: string) => [...executionKeys.details(), id] as const,\n metrics: () => [...executionKeys.all, 'metrics'] as const,\n};\n\nfunction matchesSearch(execution: ExecutionRecord, needle: string): boolean {\n return (\n execution.id.toLowerCase().includes(needle) ||\n (execution.agentId ?? '').toLowerCase().includes(needle) ||\n (execution.appId ?? '').toLowerCase().includes(needle) ||\n execution.input.toLowerCase().includes(needle)\n );\n}\n\nexport function useExecutions(filter?: ExecutionsFilter): QueryResult<ExecutionRecord[]> {\n const workspaceId = useWorkspaceId();\n const search = filter?.search?.trim().toLowerCase() ?? '';\n const statuses = filter?.status;\n const singleStatus = statuses?.length === 1 ? statuses[0] : undefined;\n const statusKey = statuses?.join(',') ?? '';\n const { agentId, appId, conversationId, type } = filter ?? {};\n\n const variables = useMemo(\n () => ({\n filters: {\n workspaceId,\n status: singleStatus,\n agentId,\n appId,\n conversationId,\n type,\n },\n pagination: { limit: LIST_LIMIT, offset: 0 },\n }),\n [workspaceId, singleStatus, agentId, appId, conversationId, type]\n );\n\n const select = useCallback(\n (data: ListExecutionsQuery | undefined): ExecutionRecord[] => {\n const rows: ExecutionRecord[] = data?.listExecutions ?? NO_EXECUTIONS;\n const wanted = statusKey ? new Set(statusKey.split(',')) : undefined;\n const narrowed =\n // A single status is already applied server-side.\n wanted && wanted.size > 1 ? rows.filter((row) => wanted.has(row.status)) : rows;\n return search ? narrowed.filter((row) => matchesSearch(row, search)) : narrowed;\n },\n [search, statusKey]\n );\n\n return useWorkspaceQuery<ListExecutionsQuery, ExecutionRecord[]>({\n document: ListExecutionsDocument,\n variables,\n select,\n fallback: NO_EXECUTIONS,\n enabled: Boolean(workspaceId),\n errorMessage: 'Failed to load executions',\n });\n}\n\nexport function useExecution(executionId: string | undefined): QueryResult<ExecutionRecord | null> {\n const variables = useMemo(() => ({ id: executionId ?? '' }), [executionId]);\n\n return useWorkspaceQuery<GetExecutionQuery, ExecutionRecord | null>({\n document: GetExecutionDocument,\n variables,\n select: (data) => data?.getExecution ?? null,\n fallback: null,\n enabled: Boolean(executionId),\n errorMessage: 'Failed to load execution',\n });\n}\n\n/**\n * Token/cost metrics for the workspace, optionally narrowed to an agent, app or\n * date window. Returns `null` when the service has nothing recorded yet.\n */\nexport function useExecutionMetrics(\n filter?: ExecutionMetricsFilter\n): QueryResult<ExecutionMetricsRecord | null> {\n const workspaceId = useWorkspaceId();\n const { agentId, appId, startDate, endDate } = filter ?? {};\n\n const variables = useMemo(\n () => ({ filter: { workspaceId, agentId, appId, startDate, endDate } }),\n [workspaceId, agentId, appId, startDate, endDate]\n );\n\n return useWorkspaceQuery<GetExecutionMetricsQuery, ExecutionMetricsRecord | null>({\n document: GetExecutionMetricsDocument,\n variables,\n select: (data) => data?.getExecutionMetrics ?? null,\n fallback: null,\n enabled: Boolean(workspaceId),\n errorMessage: 'Failed to load execution metrics',\n });\n}\n\nexport interface ExecutionRollup {\n total: number;\n succeeded: number;\n failed: number;\n successRate: number;\n avgDurationMs: number;\n totalCost: number;\n totalTokens: number;\n}\n\n/**\n * Rolls a list of executions up into the headline numbers shown above the table.\n * Derived purely from the rows that were actually loaded — no server aggregate\n * exists for this, so callers must label it as such.\n */\nexport function summariseExecutions(executions: readonly ExecutionRecord[]): ExecutionRollup {\n const total = executions.length;\n let succeeded = 0;\n let failed = 0;\n let durationSum = 0;\n let durationCount = 0;\n let totalCost = 0;\n let totalTokens = 0;\n\n for (const execution of executions) {\n if (SUCCESS_STATUSES.has(execution.status)) succeeded += 1;\n if (execution.status === 'FAILED' || execution.status === 'TIMEOUT') failed += 1;\n if (typeof execution.duration === 'number') {\n durationSum += execution.duration;\n durationCount += 1;\n }\n totalCost += execution.cost ?? 0;\n totalTokens += execution.tokensUsed ?? 0;\n }\n\n return {\n total,\n succeeded,\n failed,\n successRate: total > 0 ? succeeded / total : 0,\n avgDurationMs: durationCount > 0 ? durationSum / durationCount : 0,\n totalCost,\n totalTokens,\n };\n}\n\nexport function useCreateExecution() {\n return useWorkspaceMutation<CreateExecutionMutation, CreateExecutionVariables, ExecutionRecord>({\n document: CreateExecutionDocument,\n variables: ({ input }) => ({ input: buildMutationInput(input, CREATE_EXECUTION_FIELDS) }),\n select: (data) => data?.createExecution,\n errorMessage: 'Failed to start execution',\n });\n}\n\nexport function useUpdateExecutionStatus() {\n return useWorkspaceMutation<\n UpdateExecutionStatusMutation,\n UpdateExecutionStatusVariables,\n ExecutionRecord\n >({\n document: UpdateExecutionStatusDocument,\n variables: ({ id, status, output, error }) => ({\n id,\n input: {\n status,\n output,\n // The subgraph takes the failure as a message plus a JSON detail blob\n // (UpdateExecutionStatusInput); pass the caller's object through whole.\n errorMessage: typeof error?.message === 'string' ? error.message : undefined,\n errorDetails: error,\n },\n }),\n select: (data) => data?.updateExecutionStatus,\n errorMessage: 'Failed to update execution status',\n });\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { CreateKnowledgeBaseInput, UpdateKnowledgeBaseInput } from '../../generated/wspace-types';
|
|
2
|
+
import { BaseFilter } from '../types';
|
|
3
|
+
import { GraphQLInput } from './internal/mutationInput';
|
|
4
|
+
import { QueryResult } from './internal/workspaceGateway';
|
|
5
|
+
export interface KnowledgeBaseRecord {
|
|
6
|
+
id: string;
|
|
7
|
+
name: string;
|
|
8
|
+
description?: string | null;
|
|
9
|
+
indexStatus: string;
|
|
10
|
+
embeddingModel: string;
|
|
11
|
+
embeddingDimensions: number;
|
|
12
|
+
chunkingStrategy: string;
|
|
13
|
+
chunkSize: number;
|
|
14
|
+
chunkOverlap: number;
|
|
15
|
+
totalDocuments: number;
|
|
16
|
+
totalChunks: number;
|
|
17
|
+
vectorCount: number;
|
|
18
|
+
lastIndexedAt?: string | null;
|
|
19
|
+
metadata?: Record<string, unknown> | null;
|
|
20
|
+
createdAt: string;
|
|
21
|
+
updatedAt: string;
|
|
22
|
+
createdById: string;
|
|
23
|
+
updatedById: string;
|
|
24
|
+
workspaceId: string;
|
|
25
|
+
}
|
|
26
|
+
export interface KnowledgeDocumentRecord {
|
|
27
|
+
id: string;
|
|
28
|
+
knowledgeBaseId: string;
|
|
29
|
+
title: string;
|
|
30
|
+
fileId: string;
|
|
31
|
+
status: string;
|
|
32
|
+
chunkCount: number;
|
|
33
|
+
processingError?: string | null;
|
|
34
|
+
processedAt?: string | null;
|
|
35
|
+
addedAt: string;
|
|
36
|
+
addedById: string;
|
|
37
|
+
updatedAt: string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* `CreateKnowledgeBaseInput` minus the `workspaceId` the hook supplies.
|
|
41
|
+
* `embeddingModel`/`embeddingDimensions` are required by the service.
|
|
42
|
+
*/
|
|
43
|
+
export type CreateKnowledgeBaseVariables = Omit<GraphQLInput<CreateKnowledgeBaseInput>, 'workspaceId'>;
|
|
44
|
+
export interface UpdateKnowledgeBaseVariables {
|
|
45
|
+
kbId: string;
|
|
46
|
+
input: GraphQLInput<UpdateKnowledgeBaseInput>;
|
|
47
|
+
}
|
|
48
|
+
export declare const knowledgeBaseKeys: {
|
|
49
|
+
all: readonly ["knowledgeBases"];
|
|
50
|
+
lists: () => readonly ["knowledgeBases", "list"];
|
|
51
|
+
list: (filter?: BaseFilter) => readonly ["knowledgeBases", "list", BaseFilter | undefined];
|
|
52
|
+
details: () => readonly ["knowledgeBases", "detail"];
|
|
53
|
+
detail: (id: string) => readonly ["knowledgeBases", "detail", string];
|
|
54
|
+
documents: (kbId: string) => readonly ["knowledgeBases", "detail", string, "documents"];
|
|
55
|
+
};
|
|
56
|
+
export declare function useKnowledgeBases(filter?: BaseFilter): QueryResult<KnowledgeBaseRecord[]>;
|
|
57
|
+
export declare function useKnowledgeBase(kbId: string | undefined): QueryResult<KnowledgeBaseRecord | null>;
|
|
58
|
+
export declare function useKnowledgeDocuments(kbId: string | undefined): QueryResult<KnowledgeDocumentRecord[]>;
|
|
59
|
+
export declare function useCreateKnowledgeBase(): readonly [(input: CreateKnowledgeBaseVariables) => Promise<{
|
|
60
|
+
id: string;
|
|
61
|
+
name: string;
|
|
62
|
+
workspaceId: string;
|
|
63
|
+
}>, import('./internal/workspaceGateway').MutationState<{
|
|
64
|
+
id: string;
|
|
65
|
+
name: string;
|
|
66
|
+
workspaceId: string;
|
|
67
|
+
}>];
|
|
68
|
+
export declare function useUpdateKnowledgeBase(): readonly [(input: UpdateKnowledgeBaseVariables) => Promise<{
|
|
69
|
+
id: string;
|
|
70
|
+
name: string;
|
|
71
|
+
indexStatus: string;
|
|
72
|
+
}>, import('./internal/workspaceGateway').MutationState<{
|
|
73
|
+
id: string;
|
|
74
|
+
name: string;
|
|
75
|
+
indexStatus: string;
|
|
76
|
+
}>];
|
|
77
|
+
/** Re-indexes every document in the knowledge base (`rebuildKnowledgeBaseIndex`). */
|
|
78
|
+
export declare function useRebuildKnowledgeBaseIndex(): readonly [(input: string) => Promise<boolean>, import('./internal/workspaceGateway').MutationState<boolean>];
|
|
79
|
+
export declare function useDeleteKnowledgeBase(): readonly [(input: string) => Promise<boolean>, import('./internal/workspaceGateway').MutationState<boolean>];
|