@stigmer/react 3.1.17 → 3.2.0
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/agent-instance/AgentInstanceList.d.ts.map +1 -1
- package/agent-instance/AgentInstanceList.js +11 -3
- package/agent-instance/AgentInstanceList.js.map +1 -1
- package/channel/AgentChannelsPanel.d.ts +60 -0
- package/channel/AgentChannelsPanel.d.ts.map +1 -0
- package/channel/AgentChannelsPanel.js +255 -0
- package/channel/AgentChannelsPanel.js.map +1 -0
- package/channel/ChannelConversationsDialog.d.ts +41 -0
- package/channel/ChannelConversationsDialog.d.ts.map +1 -0
- package/channel/ChannelConversationsDialog.js +94 -0
- package/channel/ChannelConversationsDialog.js.map +1 -0
- package/channel/ChannelCredentialsDialog.d.ts +37 -0
- package/channel/ChannelCredentialsDialog.d.ts.map +1 -0
- package/channel/ChannelCredentialsDialog.js +75 -0
- package/channel/ChannelCredentialsDialog.js.map +1 -0
- package/channel/ChannelToolCredentials.d.ts +31 -0
- package/channel/ChannelToolCredentials.d.ts.map +1 -0
- package/channel/ChannelToolCredentials.js +41 -0
- package/channel/ChannelToolCredentials.js.map +1 -0
- package/channel/ConnectSlackDialog.d.ts +61 -0
- package/channel/ConnectSlackDialog.d.ts.map +1 -0
- package/channel/ConnectSlackDialog.js +238 -0
- package/channel/ConnectSlackDialog.js.map +1 -0
- package/channel/ConnectWhatsAppDialog.d.ts +70 -0
- package/channel/ConnectWhatsAppDialog.d.ts.map +1 -0
- package/channel/ConnectWhatsAppDialog.js +256 -0
- package/channel/ConnectWhatsAppDialog.js.map +1 -0
- package/channel/SlackMarkIcon.d.ts +11 -0
- package/channel/SlackMarkIcon.d.ts.map +1 -0
- package/channel/SlackMarkIcon.js +13 -0
- package/channel/SlackMarkIcon.js.map +1 -0
- package/channel/WhatsAppMarkIcon.d.ts +12 -0
- package/channel/WhatsAppMarkIcon.d.ts.map +1 -0
- package/channel/WhatsAppMarkIcon.js +14 -0
- package/channel/WhatsAppMarkIcon.js.map +1 -0
- package/channel/connect/ServingAppSection.d.ts +57 -0
- package/channel/connect/ServingAppSection.d.ts.map +1 -0
- package/channel/connect/ServingAppSection.js +49 -0
- package/channel/connect/ServingAppSection.js.map +1 -0
- package/channel/connect/ToolCredentialsSection.d.ts +20 -0
- package/channel/connect/ToolCredentialsSection.d.ts.map +1 -0
- package/channel/connect/ToolCredentialsSection.js +22 -0
- package/channel/connect/ToolCredentialsSection.js.map +1 -0
- package/channel/connect/VerbatimRefusal.d.ts +16 -0
- package/channel/connect/VerbatimRefusal.d.ts.map +1 -0
- package/channel/connect/VerbatimRefusal.js +18 -0
- package/channel/connect/VerbatimRefusal.js.map +1 -0
- package/channel/connect/icons.d.ts +16 -0
- package/channel/connect/icons.d.ts.map +1 -0
- package/channel/connect/icons.js +21 -0
- package/channel/connect/icons.js.map +1 -0
- package/channel/index.d.ts +36 -0
- package/channel/index.d.ts.map +1 -0
- package/channel/index.js +19 -0
- package/channel/index.js.map +1 -0
- package/channel/providerPresentation.d.ts +44 -0
- package/channel/providerPresentation.d.ts.map +1 -0
- package/channel/providerPresentation.js +106 -0
- package/channel/providerPresentation.js.map +1 -0
- package/channel/providers.d.ts +62 -0
- package/channel/providers.d.ts.map +1 -0
- package/channel/providers.js +26 -0
- package/channel/providers.js.map +1 -0
- package/channel/useAgentChannel.d.ts +31 -0
- package/channel/useAgentChannel.d.ts.map +1 -0
- package/channel/useAgentChannel.js +34 -0
- package/channel/useAgentChannel.js.map +1 -0
- package/channel/useAgentChannelList.d.ts +43 -0
- package/channel/useAgentChannelList.d.ts.map +1 -0
- package/channel/useAgentChannelList.js +39 -0
- package/channel/useAgentChannelList.js.map +1 -0
- package/channel/useChannelSessions.d.ts +47 -0
- package/channel/useChannelSessions.d.ts.map +1 -0
- package/channel/useChannelSessions.js +38 -0
- package/channel/useChannelSessions.js.map +1 -0
- package/channel/useChannelToolReadiness.d.ts +23 -0
- package/channel/useChannelToolReadiness.d.ts.map +1 -0
- package/channel/useChannelToolReadiness.js +28 -0
- package/channel/useChannelToolReadiness.js.map +1 -0
- package/channel/useConnectSlackChannel.d.ts +75 -0
- package/channel/useConnectSlackChannel.d.ts.map +1 -0
- package/channel/useConnectSlackChannel.js +115 -0
- package/channel/useConnectSlackChannel.js.map +1 -0
- package/channel/useCreateAgentChannel.d.ts +42 -0
- package/channel/useCreateAgentChannel.d.ts.map +1 -0
- package/channel/useCreateAgentChannel.js +48 -0
- package/channel/useCreateAgentChannel.js.map +1 -0
- package/channel/useDeleteAgentChannel.d.ts +40 -0
- package/channel/useDeleteAgentChannel.d.ts.map +1 -0
- package/channel/useDeleteAgentChannel.js +44 -0
- package/channel/useDeleteAgentChannel.js.map +1 -0
- package/channel/useInstallChannel.d.ts +60 -0
- package/channel/useInstallChannel.d.ts.map +1 -0
- package/channel/useInstallChannel.js +63 -0
- package/channel/useInstallChannel.js.map +1 -0
- package/channel/useOrgAgentChannelList.d.ts +32 -0
- package/channel/useOrgAgentChannelList.d.ts.map +1 -0
- package/channel/useOrgAgentChannelList.js +29 -0
- package/channel/useOrgAgentChannelList.js.map +1 -0
- package/channel/useSaveAgentChannel.d.ts +63 -0
- package/channel/useSaveAgentChannel.d.ts.map +1 -0
- package/channel/useSaveAgentChannel.js +104 -0
- package/channel/useSaveAgentChannel.js.map +1 -0
- package/channel-app/ChannelAppDetailPanel.d.ts +46 -0
- package/channel-app/ChannelAppDetailPanel.d.ts.map +1 -0
- package/channel-app/ChannelAppDetailPanel.js +142 -0
- package/channel-app/ChannelAppDetailPanel.js.map +1 -0
- package/channel-app/ChannelAppListPanel.d.ts +36 -0
- package/channel-app/ChannelAppListPanel.d.ts.map +1 -0
- package/channel-app/ChannelAppListPanel.js +63 -0
- package/channel-app/ChannelAppListPanel.js.map +1 -0
- package/channel-app/CreateChannelAppForm.d.ts +54 -0
- package/channel-app/CreateChannelAppForm.d.ts.map +1 -0
- package/channel-app/CreateChannelAppForm.js +140 -0
- package/channel-app/CreateChannelAppForm.js.map +1 -0
- package/channel-app/index.d.ts +18 -0
- package/channel-app/index.d.ts.map +1 -0
- package/channel-app/index.js +10 -0
- package/channel-app/index.js.map +1 -0
- package/channel-app/internal.d.ts +33 -0
- package/channel-app/internal.d.ts.map +1 -0
- package/channel-app/internal.js +44 -0
- package/channel-app/internal.js.map +1 -0
- package/channel-app/slackAppSetup.d.ts +80 -0
- package/channel-app/slackAppSetup.d.ts.map +1 -0
- package/channel-app/slackAppSetup.js +123 -0
- package/channel-app/slackAppSetup.js.map +1 -0
- package/channel-app/useChannelAppList.d.ts +35 -0
- package/channel-app/useChannelAppList.d.ts.map +1 -0
- package/channel-app/useChannelAppList.js +34 -0
- package/channel-app/useChannelAppList.js.map +1 -0
- package/channel-app/useCreateChannelApp.d.ts +39 -0
- package/channel-app/useCreateChannelApp.d.ts.map +1 -0
- package/channel-app/useCreateChannelApp.js +50 -0
- package/channel-app/useCreateChannelApp.js.map +1 -0
- package/channel-app/useDeleteChannelApp.d.ts +31 -0
- package/channel-app/useDeleteChannelApp.d.ts.map +1 -0
- package/channel-app/useDeleteChannelApp.js +43 -0
- package/channel-app/useDeleteChannelApp.js.map +1 -0
- package/channel-app/useUpdateChannelApp.d.ts +39 -0
- package/channel-app/useUpdateChannelApp.d.ts.map +1 -0
- package/channel-app/useUpdateChannelApp.js +50 -0
- package/channel-app/useUpdateChannelApp.js.map +1 -0
- package/channel-app/whatsappAppSetup.d.ts +51 -0
- package/channel-app/whatsappAppSetup.d.ts.map +1 -0
- package/channel-app/whatsappAppSetup.js +57 -0
- package/channel-app/whatsappAppSetup.js.map +1 -0
- package/environment/index.d.ts +2 -0
- package/environment/index.d.ts.map +1 -1
- package/environment/index.js +1 -0
- package/environment/index.js.map +1 -1
- package/environment/useToolCredentialsReadiness.d.ts +52 -0
- package/environment/useToolCredentialsReadiness.d.ts.map +1 -0
- package/environment/useToolCredentialsReadiness.js +84 -0
- package/environment/useToolCredentialsReadiness.js.map +1 -0
- package/execution/ArtifactContentBody.d.ts.map +1 -1
- package/execution/ArtifactContentBody.js +5 -21
- package/execution/ArtifactContentBody.js.map +1 -1
- package/execution/ArtifactFileContent.d.ts +28 -0
- package/execution/ArtifactFileContent.d.ts.map +1 -0
- package/execution/ArtifactFileContent.js +36 -0
- package/execution/ArtifactFileContent.js.map +1 -0
- package/execution/ArtifactRow.d.ts +8 -20
- package/execution/ArtifactRow.d.ts.map +1 -1
- package/execution/ArtifactRow.js +12 -45
- package/execution/ArtifactRow.js.map +1 -1
- package/execution/ArtifactRowView.d.ts +43 -0
- package/execution/ArtifactRowView.d.ts.map +1 -0
- package/execution/ArtifactRowView.js +35 -0
- package/execution/ArtifactRowView.js.map +1 -0
- package/execution/FileChangesView.d.ts.map +1 -1
- package/execution/FileChangesView.js +1 -61
- package/execution/FileChangesView.js.map +1 -1
- package/execution/SubAgentSection.d.ts.map +1 -1
- package/execution/SubAgentSection.js +4 -15
- package/execution/SubAgentSection.js.map +1 -1
- package/execution/ToolCallItem.d.ts.map +1 -1
- package/execution/ToolCallItem.js +16 -61
- package/execution/ToolCallItem.js.map +1 -1
- package/execution/agent-execution-document.d.ts +31 -0
- package/execution/agent-execution-document.d.ts.map +1 -0
- package/execution/agent-execution-document.js +48 -0
- package/execution/agent-execution-document.js.map +1 -0
- package/{session → execution}/artifact-document.d.ts +2 -3
- package/execution/artifact-document.d.ts.map +1 -0
- package/execution/artifact-document.js +23 -0
- package/execution/artifact-document.js.map +1 -0
- package/execution/artifact-row-item.d.ts +56 -0
- package/execution/artifact-row-item.d.ts.map +1 -0
- package/execution/artifact-row-item.js +57 -0
- package/execution/artifact-row-item.js.map +1 -0
- package/execution/deriveExecutionFileChanges.d.ts +55 -0
- package/execution/deriveExecutionFileChanges.d.ts.map +1 -0
- package/execution/deriveExecutionFileChanges.js +216 -0
- package/execution/deriveExecutionFileChanges.js.map +1 -0
- package/execution/file-change-document.d.ts +22 -0
- package/execution/file-change-document.d.ts.map +1 -0
- package/execution/file-change-document.js +34 -0
- package/execution/file-change-document.js.map +1 -0
- package/execution/index.d.ts +14 -0
- package/execution/index.d.ts.map +1 -1
- package/execution/index.js +9 -0
- package/execution/index.js.map +1 -1
- package/execution/useArtifactContentById.d.ts +61 -0
- package/execution/useArtifactContentById.d.ts.map +1 -0
- package/execution/useArtifactContentById.js +63 -0
- package/execution/useArtifactContentById.js.map +1 -0
- package/execution/useArtifactDownload.d.ts +4 -3
- package/execution/useArtifactDownload.d.ts.map +1 -1
- package/execution/useArtifactDownload.js +4 -3
- package/execution/useArtifactDownload.js.map +1 -1
- package/execution/useCreateAgentExecution.d.ts +1 -1
- package/execution/useLiveAgentExecution.d.ts +59 -0
- package/execution/useLiveAgentExecution.d.ts.map +1 -0
- package/execution/useLiveAgentExecution.js +73 -0
- package/execution/useLiveAgentExecution.js.map +1 -0
- package/index.d.ts +15 -10
- package/index.d.ts.map +1 -1
- package/index.js +21 -6
- package/index.js.map +1 -1
- package/internal/DecisionButton.d.ts +4 -3
- package/internal/DecisionButton.d.ts.map +1 -1
- package/internal/DecisionButton.js +4 -3
- package/internal/DecisionButton.js.map +1 -1
- package/internal/oauthPopup.d.ts +101 -0
- package/internal/oauthPopup.d.ts.map +1 -0
- package/internal/oauthPopup.js +208 -0
- package/internal/oauthPopup.js.map +1 -0
- package/internal/store/index.d.ts +0 -2
- package/internal/store/index.d.ts.map +1 -1
- package/internal/store/index.js +0 -1
- package/internal/store/index.js.map +1 -1
- package/internal/store/workflow-execution-event-store.d.ts +34 -1
- package/internal/store/workflow-execution-event-store.d.ts.map +1 -1
- package/internal/store/workflow-execution-event-store.js +81 -3
- package/internal/store/workflow-execution-event-store.js.map +1 -1
- package/internal/store/workspace-file-selection-store.d.ts +1 -2
- package/internal/store/workspace-file-selection-store.d.ts.map +1 -1
- package/internal/store/workspace-file-selection-store.js +2 -5
- package/internal/store/workspace-file-selection-store.js.map +1 -1
- package/internal/thread-card/ThreadCardShell.d.ts +91 -0
- package/internal/thread-card/ThreadCardShell.d.ts.map +1 -0
- package/internal/thread-card/ThreadCardShell.js +41 -0
- package/internal/thread-card/ThreadCardShell.js.map +1 -0
- package/internal/thread-card/glyphs.d.ts +34 -0
- package/internal/thread-card/glyphs.d.ts.map +1 -0
- package/internal/thread-card/glyphs.js +50 -0
- package/internal/thread-card/glyphs.js.map +1 -0
- package/internal/thread-card/index.d.ts +3 -0
- package/internal/thread-card/index.d.ts.map +1 -0
- package/internal/thread-card/index.js +3 -0
- package/internal/thread-card/index.js.map +1 -0
- package/internal/useRevealLine.d.ts +2 -2
- package/internal/useRevealLine.js +2 -2
- package/mcp-server/OAuthCallbackHandler.js +1 -1
- package/mcp-server/OAuthCallbackHandler.js.map +1 -1
- package/mcp-server/useMcpServerOAuthConnect.d.ts +4 -23
- package/mcp-server/useMcpServerOAuthConnect.d.ts.map +1 -1
- package/mcp-server/useMcpServerOAuthConnect.js +12 -145
- package/mcp-server/useMcpServerOAuthConnect.js.map +1 -1
- package/package.json +4 -4
- package/session/NewSessionViewer.d.ts.map +1 -1
- package/session/NewSessionViewer.js +0 -1
- package/session/NewSessionViewer.js.map +1 -1
- package/session/SessionPanelChip.d.ts +7 -22
- package/session/SessionPanelChip.d.ts.map +1 -1
- package/session/SessionPanelChip.js +8 -36
- package/session/SessionPanelChip.js.map +1 -1
- package/session/SessionViewer.d.ts +7 -4
- package/session/SessionViewer.d.ts.map +1 -1
- package/session/SessionViewer.js +32 -30
- package/session/SessionViewer.js.map +1 -1
- package/session/audience.d.ts +15 -1
- package/session/audience.d.ts.map +1 -1
- package/session/channelOrigin.d.ts +33 -0
- package/session/channelOrigin.d.ts.map +1 -0
- package/session/channelOrigin.js +36 -0
- package/session/channelOrigin.js.map +1 -0
- package/session/facets/index.d.ts +0 -2
- package/session/facets/index.d.ts.map +1 -1
- package/session/facets/index.js +0 -1
- package/session/facets/index.js.map +1 -1
- package/session/index.d.ts +2 -2
- package/session/index.d.ts.map +1 -1
- package/session/index.js +5 -3
- package/session/index.js.map +1 -1
- package/session/useSessionFileChanges.d.ts +10 -34
- package/session/useSessionFileChanges.d.ts.map +1 -1
- package/session/useSessionFileChanges.js +9 -141
- package/session/useSessionFileChanges.js.map +1 -1
- package/session/useSessionPanel.d.ts +5 -15
- package/session/useSessionPanel.d.ts.map +1 -1
- package/session/useSessionPanel.js +3 -35
- package/session/useSessionPanel.js.map +1 -1
- package/session/useSessionRailViews.d.ts +3 -6
- package/session/useSessionRailViews.d.ts.map +1 -1
- package/session/useSessionRailViews.js +3 -17
- package/session/useSessionRailViews.js.map +1 -1
- package/settings/ChannelAppsSection.d.ts +13 -0
- package/settings/ChannelAppsSection.d.ts.map +1 -0
- package/settings/ChannelAppsSection.js +48 -0
- package/settings/ChannelAppsSection.js.map +1 -0
- package/settings/index.d.ts +1 -0
- package/settings/index.d.ts.map +1 -1
- package/settings/index.js +1 -0
- package/settings/index.js.map +1 -1
- package/settings/settings-nav.d.ts.map +1 -1
- package/settings/settings-nav.js +6 -1
- package/settings/settings-nav.js.map +1 -1
- package/sharing/AgentShareList.d.ts.map +1 -1
- package/sharing/AgentShareList.js +11 -3
- package/sharing/AgentShareList.js.map +1 -1
- package/sharing/ShareAgentDialog.js +1 -1
- package/sharing/useShareToolReadiness.d.ts +9 -38
- package/sharing/useShareToolReadiness.d.ts.map +1 -1
- package/sharing/useShareToolReadiness.js +7 -72
- package/sharing/useShareToolReadiness.js.map +1 -1
- package/src/agent-instance/AgentInstanceList.tsx +60 -42
- package/src/agent-instance/__tests__/AgentInstanceList.test.tsx +161 -0
- package/src/channel/AgentChannelsPanel.tsx +688 -0
- package/src/channel/ChannelConversationsDialog.tsx +267 -0
- package/src/channel/ChannelCredentialsDialog.tsx +219 -0
- package/src/channel/ChannelToolCredentials.tsx +124 -0
- package/src/channel/ConnectSlackDialog.tsx +611 -0
- package/src/channel/ConnectWhatsAppDialog.tsx +624 -0
- package/src/channel/SlackMarkIcon.tsx +21 -0
- package/src/channel/WhatsAppMarkIcon.tsx +22 -0
- package/src/channel/__tests__/AgentChannelsPanel.test.tsx +638 -0
- package/src/channel/__tests__/ChannelConversationsDialog.test.tsx +114 -0
- package/src/channel/__tests__/ChannelCredentialsDialog.test.tsx +240 -0
- package/src/channel/__tests__/ConnectSlackDialog.test.tsx +659 -0
- package/src/channel/__tests__/ConnectWhatsAppDialog.test.tsx +564 -0
- package/src/channel/__tests__/providers.test.ts +118 -0
- package/src/channel/__tests__/useAgentChannel.test.tsx +116 -0
- package/src/channel/__tests__/useAgentChannelList.test.tsx +166 -0
- package/src/channel/__tests__/useChannelSessions.test.tsx +95 -0
- package/src/channel/__tests__/useChannelToolReadiness.test.tsx +158 -0
- package/src/channel/__tests__/useConnectSlackChannel.test.tsx +276 -0
- package/src/channel/__tests__/useDeleteAgentChannel.test.tsx +97 -0
- package/src/channel/__tests__/useInstallChannel.test.tsx +177 -0
- package/src/channel/__tests__/useSaveAgentChannel.test.tsx +294 -0
- package/src/channel/connect/ServingAppSection.tsx +185 -0
- package/src/channel/connect/ToolCredentialsSection.tsx +67 -0
- package/src/channel/connect/VerbatimRefusal.tsx +27 -0
- package/src/channel/connect/icons.tsx +42 -0
- package/src/channel/index.ts +65 -0
- package/src/channel/providerPresentation.ts +154 -0
- package/src/channel/providers.ts +73 -0
- package/src/channel/useAgentChannel.ts +58 -0
- package/src/channel/useAgentChannelList.ts +69 -0
- package/src/channel/useChannelSessions.ts +73 -0
- package/src/channel/useChannelToolReadiness.ts +39 -0
- package/src/channel/useConnectSlackChannel.ts +195 -0
- package/src/channel/useCreateAgentChannel.ts +73 -0
- package/src/channel/useDeleteAgentChannel.ts +71 -0
- package/src/channel/useInstallChannel.ts +117 -0
- package/src/channel/useOrgAgentChannelList.ts +60 -0
- package/src/channel/useSaveAgentChannel.ts +133 -0
- package/src/channel-app/ChannelAppDetailPanel.tsx +510 -0
- package/src/channel-app/ChannelAppListPanel.tsx +201 -0
- package/src/channel-app/CreateChannelAppForm.tsx +529 -0
- package/src/channel-app/__tests__/channelAppWhatsApp.test.tsx +270 -0
- package/src/channel-app/__tests__/slackAppSetup.test.ts +75 -0
- package/src/channel-app/__tests__/useChannelAppHooks.test.tsx +157 -0
- package/src/channel-app/__tests__/whatsappAppSetup.test.ts +39 -0
- package/src/channel-app/index.ts +30 -0
- package/src/channel-app/internal.tsx +180 -0
- package/src/channel-app/slackAppSetup.ts +153 -0
- package/src/channel-app/useChannelAppList.ts +59 -0
- package/src/channel-app/useCreateChannelApp.ts +70 -0
- package/src/channel-app/useDeleteChannelApp.ts +62 -0
- package/src/channel-app/useUpdateChannelApp.ts +70 -0
- package/src/channel-app/whatsappAppSetup.ts +62 -0
- package/src/environment/index.ts +2 -0
- package/src/environment/useToolCredentialsReadiness.ts +122 -0
- package/src/execution/ArtifactContentBody.tsx +6 -88
- package/src/execution/ArtifactFileContent.tsx +110 -0
- package/src/execution/ArtifactRow.tsx +28 -118
- package/src/execution/ArtifactRowView.tsx +137 -0
- package/src/execution/FileChangesView.tsx +4 -69
- package/src/execution/SubAgentSection.tsx +2 -36
- package/src/execution/ToolCallItem.tsx +48 -175
- package/src/execution/__tests__/ArtifactFileContent.test.tsx +60 -0
- package/src/execution/__tests__/ArtifactRowView.test.tsx +78 -0
- package/src/execution/__tests__/agent-execution-document.test.ts +45 -0
- package/src/execution/__tests__/artifact-row-item.test.ts +128 -0
- package/src/execution/__tests__/deriveExecutionFileChanges.test.ts +270 -0
- package/src/execution/__tests__/useArtifactContentById.test.tsx +85 -0
- package/src/execution/__tests__/useLiveAgentExecution.test.tsx +202 -0
- package/src/execution/agent-execution-document.ts +54 -0
- package/src/execution/artifact-document.ts +24 -0
- package/src/execution/artifact-row-item.ts +97 -0
- package/src/execution/deriveExecutionFileChanges.ts +237 -0
- package/src/execution/file-change-document.ts +37 -0
- package/src/execution/index.ts +36 -0
- package/src/execution/useArtifactContentById.ts +120 -0
- package/src/execution/useArtifactDownload.ts +4 -3
- package/src/execution/useCreateAgentExecution.ts +1 -1
- package/src/execution/useLiveAgentExecution.ts +127 -0
- package/src/index.ts +155 -11
- package/src/internal/DecisionButton.tsx +4 -3
- package/src/internal/__tests__/ThreadCardShell.test.tsx +105 -0
- package/src/internal/__tests__/oauthPopup.test.ts +245 -0
- package/src/internal/oauthPopup.ts +261 -0
- package/src/internal/store/__tests__/workflow-execution-event-store.test.ts +375 -5
- package/src/internal/store/index.ts +0 -3
- package/src/internal/store/workflow-execution-event-store.ts +123 -4
- package/src/internal/store/workspace-file-selection-store.ts +2 -5
- package/src/internal/thread-card/ThreadCardShell.tsx +189 -0
- package/src/internal/thread-card/glyphs.tsx +108 -0
- package/src/internal/thread-card/index.ts +19 -0
- package/src/internal/useRevealLine.ts +2 -2
- package/src/mcp-server/OAuthCallbackHandler.tsx +2 -2
- package/src/mcp-server/useMcpServerOAuthConnect.ts +22 -184
- package/src/session/NewSessionViewer.tsx +0 -1
- package/src/session/SessionPanelChip.tsx +10 -96
- package/src/session/SessionViewer.tsx +170 -144
- package/src/session/__tests__/SessionViewer-artifactTabs.test.tsx +1 -1
- package/src/session/__tests__/observerAudience.test.tsx +241 -0
- package/src/session/__tests__/useSessionPanel.test.ts +6 -61
- package/src/session/__tests__/useSessionRailViews.test.tsx +5 -27
- package/src/session/audience.ts +15 -1
- package/src/session/channelOrigin.ts +45 -0
- package/src/session/facets/index.ts +0 -3
- package/src/session/index.ts +9 -6
- package/src/session/useSessionFileChanges.ts +12 -153
- package/src/session/useSessionPanel.ts +8 -51
- package/src/session/useSessionRailViews.tsx +2 -27
- package/src/settings/ChannelAppsSection.tsx +133 -0
- package/src/settings/index.ts +1 -0
- package/src/settings/settings-nav.ts +6 -0
- package/src/sharing/AgentShareList.tsx +85 -64
- package/src/sharing/ShareAgentDialog.tsx +1 -1
- package/src/sharing/__tests__/AgentShareList.test.tsx +92 -12
- package/src/sharing/useShareToolReadiness.ts +13 -101
- package/src/workflow/WorkflowAgentExecutionDocument.tsx +283 -0
- package/src/workflow/WorkflowApprovalList.tsx +158 -0
- package/src/workflow/WorkflowArtifactDocument.tsx +257 -0
- package/src/workflow/WorkflowExecutionGraph.tsx +40 -78
- package/src/workflow/WorkflowExecutionViewer.tsx +610 -287
- package/src/workflow/WorkflowFileReviewList.tsx +1 -1
- package/src/workflow/WorkflowTaskApprovalCard.tsx +5 -4
- package/src/workflow/WorkflowTaskApprovalSummary.tsx +6 -6
- package/src/workflow/__tests__/WorkflowAgentExecutionDocument.test.tsx +651 -0
- package/src/workflow/__tests__/WorkflowApprovalList.test.tsx +229 -0
- package/src/workflow/__tests__/WorkflowArtifactDocument.test.tsx +90 -0
- package/src/workflow/__tests__/WorkflowArtifactsTab.test.tsx +85 -0
- package/src/workflow/__tests__/WorkflowChangesTab.test.tsx +113 -0
- package/src/workflow/__tests__/WorkflowExecutionViewer.approvals.test.tsx +473 -0
- package/src/workflow/__tests__/WorkflowExecutionViewer.reconciliation.test.tsx +632 -0
- package/src/workflow/__tests__/WorkflowTaskApprovalSummary.test.tsx +1 -1
- package/src/workflow/__tests__/WorkflowTaskThread.test.tsx +947 -0
- package/src/workflow/__tests__/WorkflowUsageTab.test.tsx +163 -0
- package/src/workflow/__tests__/agent-call-live-experience.test.ts +6 -53
- package/src/workflow/__tests__/derive-execution-overlays.test.ts +4 -0
- package/src/workflow/__tests__/deriveWorkflowArtifactItems.test.ts +71 -0
- package/src/workflow/__tests__/deriveWorkflowUsageItems.test.ts +132 -0
- package/src/workflow/__tests__/execution-graph.test.ts +8 -0
- package/src/workflow/__tests__/project-thread-items.test.ts +428 -0
- package/src/workflow/__tests__/structured-data-viewer.test.tsx +1 -1
- package/src/workflow/__tests__/task-approval.test.ts +149 -0
- package/src/workflow/__tests__/task-detail-io.test.ts +40 -0
- package/src/workflow/__tests__/task-presentation.test.ts +479 -0
- package/src/workflow/__tests__/useActiveTaskName.test.ts +4 -0
- package/src/workflow/__tests__/useApprovalBoundary.test.ts +158 -0
- package/src/workflow/__tests__/useExecutionAnnouncements.test.ts +4 -0
- package/src/workflow/__tests__/useFollowExecution.test.ts +2 -89
- package/src/workflow/__tests__/useWorkflowExecutionFileChanges.test.tsx +412 -0
- package/src/workflow/__tests__/useWorkflowExecutionPanel.test.ts +297 -0
- package/src/workflow/__tests__/useWorkflowExecutionRailViews.test.tsx +115 -0
- package/src/workflow/deriveWorkflowArtifactItems.ts +59 -0
- package/src/workflow/deriveWorkflowUsageItems.ts +73 -0
- package/src/workflow/diagnosis-document.ts +31 -0
- package/src/workflow/execution/index.ts +0 -15
- package/src/workflow/facets/WorkflowArtifactsTab.tsx +99 -0
- package/src/workflow/facets/WorkflowChangesTab.tsx +129 -0
- package/src/workflow/facets/WorkflowUsageTab.tsx +258 -0
- package/src/workflow/format-utils.ts +2 -3
- package/src/workflow/index.ts +106 -62
- package/src/workflow/inspector/index.ts +0 -4
- package/src/workflow/instance/WorkflowInstanceList.tsx +59 -41
- package/src/workflow/instance/__tests__/WorkflowInstanceList.test.tsx +156 -0
- package/src/workflow/task-detail/index.ts +11 -0
- package/src/workflow/task-detail/task-approval.ts +158 -0
- package/src/workflow/task-detail/task-detail-io.ts +65 -0
- package/src/workflow/thread/WorkflowTaskThread.tsx +845 -0
- package/src/workflow/thread/project-thread-items.ts +235 -0
- package/src/workflow/thread/task-presentation.ts +427 -0
- package/src/workflow/thread/thread-presentation.ts +59 -0
- package/src/workflow/thread/useWorkflowThreadItems.ts +34 -0
- package/src/workflow/useApprovalBoundary.ts +72 -0
- package/src/workflow/useFollowExecution.ts +0 -26
- package/src/workflow/useWorkflowArtifactDownload.ts +68 -0
- package/src/workflow/useWorkflowExecutionActions.ts +3 -2
- package/src/workflow/useWorkflowExecutionFileChanges.ts +341 -0
- package/src/workflow/useWorkflowExecutionGraph.ts +3 -43
- package/src/workflow/useWorkflowExecutionPanel.ts +292 -0
- package/src/workflow/useWorkflowExecutionRailViews.tsx +173 -0
- package/src/workspace/FileViewer.tsx +3 -3
- package/src/workspace/PanelChip.tsx +103 -0
- package/src/workspace/WorkspaceSurface.tsx +50 -6
- package/src/workspace/__tests__/WorkspaceSurface.test.tsx +110 -0
- package/src/workspace/index.ts +3 -0
- package/styles.css +1 -1
- package/workflow/WorkflowAgentExecutionDocument.d.ts +79 -0
- package/workflow/WorkflowAgentExecutionDocument.d.ts.map +1 -0
- package/workflow/WorkflowAgentExecutionDocument.js +87 -0
- package/workflow/WorkflowAgentExecutionDocument.js.map +1 -0
- package/workflow/WorkflowApprovalList.d.ts +62 -0
- package/workflow/WorkflowApprovalList.d.ts.map +1 -0
- package/workflow/WorkflowApprovalList.js +52 -0
- package/workflow/WorkflowApprovalList.js.map +1 -0
- package/workflow/WorkflowArtifactDocument.d.ts +29 -0
- package/workflow/WorkflowArtifactDocument.d.ts.map +1 -0
- package/workflow/WorkflowArtifactDocument.js +89 -0
- package/workflow/WorkflowArtifactDocument.js.map +1 -0
- package/workflow/WorkflowExecutionGraph.d.ts +15 -13
- package/workflow/WorkflowExecutionGraph.d.ts.map +1 -1
- package/workflow/WorkflowExecutionGraph.js +18 -53
- package/workflow/WorkflowExecutionGraph.js.map +1 -1
- package/workflow/WorkflowExecutionViewer.d.ts +8 -5
- package/workflow/WorkflowExecutionViewer.d.ts.map +1 -1
- package/workflow/WorkflowExecutionViewer.js +329 -54
- package/workflow/WorkflowExecutionViewer.js.map +1 -1
- package/workflow/WorkflowFileReviewList.d.ts +1 -1
- package/workflow/WorkflowFileReviewList.js +1 -1
- package/workflow/WorkflowTaskApprovalCard.d.ts +4 -3
- package/workflow/WorkflowTaskApprovalCard.d.ts.map +1 -1
- package/workflow/WorkflowTaskApprovalCard.js +5 -4
- package/workflow/WorkflowTaskApprovalCard.js.map +1 -1
- package/workflow/WorkflowTaskApprovalSummary.d.ts +6 -6
- package/workflow/WorkflowTaskApprovalSummary.js +5 -5
- package/workflow/deriveWorkflowArtifactItems.d.ts +30 -0
- package/workflow/deriveWorkflowArtifactItems.d.ts.map +1 -0
- package/workflow/deriveWorkflowArtifactItems.js +38 -0
- package/workflow/deriveWorkflowArtifactItems.js.map +1 -0
- package/workflow/deriveWorkflowUsageItems.d.ts +36 -0
- package/workflow/deriveWorkflowUsageItems.d.ts.map +1 -0
- package/workflow/deriveWorkflowUsageItems.js +50 -0
- package/workflow/deriveWorkflowUsageItems.js.map +1 -0
- package/workflow/diagnosis-document.d.ts +17 -0
- package/workflow/diagnosis-document.d.ts.map +1 -0
- package/workflow/diagnosis-document.js +29 -0
- package/workflow/diagnosis-document.js.map +1 -0
- package/workflow/execution/index.d.ts +0 -2
- package/workflow/execution/index.d.ts.map +1 -1
- package/workflow/execution/index.js +0 -2
- package/workflow/execution/index.js.map +1 -1
- package/workflow/facets/WorkflowArtifactsTab.d.ts +26 -0
- package/workflow/facets/WorkflowArtifactsTab.d.ts.map +1 -0
- package/workflow/facets/WorkflowArtifactsTab.js +34 -0
- package/workflow/facets/WorkflowArtifactsTab.js.map +1 -0
- package/workflow/facets/WorkflowChangesTab.d.ts +37 -0
- package/workflow/facets/WorkflowChangesTab.d.ts.map +1 -0
- package/workflow/facets/WorkflowChangesTab.js +50 -0
- package/workflow/facets/WorkflowChangesTab.js.map +1 -0
- package/workflow/facets/WorkflowUsageTab.d.ts +27 -0
- package/workflow/facets/WorkflowUsageTab.d.ts.map +1 -0
- package/workflow/facets/WorkflowUsageTab.js +87 -0
- package/workflow/facets/WorkflowUsageTab.js.map +1 -0
- package/workflow/format-utils.d.ts +2 -3
- package/workflow/format-utils.d.ts.map +1 -1
- package/workflow/format-utils.js +2 -3
- package/workflow/format-utils.js.map +1 -1
- package/workflow/index.d.ts +21 -10
- package/workflow/index.d.ts.map +1 -1
- package/workflow/index.js +29 -14
- package/workflow/index.js.map +1 -1
- package/workflow/inspector/index.d.ts +0 -2
- package/workflow/inspector/index.d.ts.map +1 -1
- package/workflow/inspector/index.js +0 -2
- package/workflow/inspector/index.js.map +1 -1
- package/workflow/instance/WorkflowInstanceList.d.ts.map +1 -1
- package/workflow/instance/WorkflowInstanceList.js +11 -3
- package/workflow/instance/WorkflowInstanceList.js.map +1 -1
- package/workflow/task-detail/StructuredDataViewer.d.ts.map +1 -0
- package/workflow/task-detail/StructuredDataViewer.js.map +1 -0
- package/workflow/task-detail/index.d.ts +4 -0
- package/workflow/task-detail/index.d.ts.map +1 -0
- package/workflow/task-detail/index.js +4 -0
- package/workflow/task-detail/index.js.map +1 -0
- package/workflow/task-detail/task-approval.d.ts +89 -0
- package/workflow/task-detail/task-approval.d.ts.map +1 -0
- package/workflow/task-detail/task-approval.js +84 -0
- package/workflow/task-detail/task-approval.js.map +1 -0
- package/workflow/task-detail/task-detail-io.d.ts +39 -0
- package/workflow/task-detail/task-detail-io.d.ts.map +1 -0
- package/workflow/task-detail/task-detail-io.js +42 -0
- package/workflow/task-detail/task-detail-io.js.map +1 -0
- package/workflow/thread/WorkflowTaskThread.d.ts +91 -0
- package/workflow/thread/WorkflowTaskThread.d.ts.map +1 -0
- package/workflow/thread/WorkflowTaskThread.js +318 -0
- package/workflow/thread/WorkflowTaskThread.js.map +1 -0
- package/workflow/thread/project-thread-items.d.ts +108 -0
- package/workflow/thread/project-thread-items.d.ts.map +1 -0
- package/workflow/thread/project-thread-items.js +126 -0
- package/workflow/thread/project-thread-items.js.map +1 -0
- package/workflow/thread/task-presentation.d.ts +73 -0
- package/workflow/thread/task-presentation.d.ts.map +1 -0
- package/workflow/thread/task-presentation.js +331 -0
- package/workflow/thread/task-presentation.js.map +1 -0
- package/workflow/thread/thread-presentation.d.ts +28 -0
- package/workflow/thread/thread-presentation.d.ts.map +1 -0
- package/workflow/thread/thread-presentation.js +28 -0
- package/workflow/thread/thread-presentation.js.map +1 -0
- package/workflow/thread/useWorkflowThreadItems.d.ts +16 -0
- package/workflow/thread/useWorkflowThreadItems.d.ts.map +1 -0
- package/workflow/thread/useWorkflowThreadItems.js +22 -0
- package/workflow/thread/useWorkflowThreadItems.js.map +1 -0
- package/workflow/useApprovalBoundary.d.ts +38 -0
- package/workflow/useApprovalBoundary.d.ts.map +1 -0
- package/workflow/useApprovalBoundary.js +55 -0
- package/workflow/useApprovalBoundary.js.map +1 -0
- package/workflow/useFollowExecution.d.ts +0 -20
- package/workflow/useFollowExecution.d.ts.map +1 -1
- package/workflow/useFollowExecution.js +0 -17
- package/workflow/useFollowExecution.js.map +1 -1
- package/workflow/useWorkflowArtifactDownload.d.ts +28 -0
- package/workflow/useWorkflowArtifactDownload.d.ts.map +1 -0
- package/workflow/useWorkflowArtifactDownload.js +45 -0
- package/workflow/useWorkflowArtifactDownload.js.map +1 -0
- package/workflow/useWorkflowExecutionActions.d.ts +3 -2
- package/workflow/useWorkflowExecutionActions.d.ts.map +1 -1
- package/workflow/useWorkflowExecutionActions.js.map +1 -1
- package/workflow/useWorkflowExecutionFileChanges.d.ts +107 -0
- package/workflow/useWorkflowExecutionFileChanges.d.ts.map +1 -0
- package/workflow/useWorkflowExecutionFileChanges.js +244 -0
- package/workflow/useWorkflowExecutionFileChanges.js.map +1 -0
- package/workflow/useWorkflowExecutionGraph.d.ts +1 -14
- package/workflow/useWorkflowExecutionGraph.d.ts.map +1 -1
- package/workflow/useWorkflowExecutionGraph.js +2 -25
- package/workflow/useWorkflowExecutionGraph.js.map +1 -1
- package/workflow/useWorkflowExecutionPanel.d.ts +108 -0
- package/workflow/useWorkflowExecutionPanel.d.ts.map +1 -0
- package/workflow/useWorkflowExecutionPanel.js +103 -0
- package/workflow/useWorkflowExecutionPanel.js.map +1 -0
- package/workflow/useWorkflowExecutionRailViews.d.ts +46 -0
- package/workflow/useWorkflowExecutionRailViews.d.ts.map +1 -0
- package/workflow/useWorkflowExecutionRailViews.js +81 -0
- package/workflow/useWorkflowExecutionRailViews.js.map +1 -0
- package/workspace/FileViewer.d.ts +1 -1
- package/workspace/FileViewer.js +3 -3
- package/workspace/FileViewer.js.map +1 -1
- package/workspace/PanelChip.d.ts +27 -0
- package/workspace/PanelChip.d.ts.map +1 -0
- package/workspace/PanelChip.js +42 -0
- package/workspace/PanelChip.js.map +1 -0
- package/workspace/WorkspaceSurface.d.ts +25 -1
- package/workspace/WorkspaceSurface.d.ts.map +1 -1
- package/workspace/WorkspaceSurface.js +21 -9
- package/workspace/WorkspaceSurface.js.map +1 -1
- package/workspace/index.d.ts +3 -1
- package/workspace/index.d.ts.map +1 -1
- package/workspace/index.js +1 -0
- package/workspace/index.js.map +1 -1
- package/execution/ThreadSelectionContext.d.ts +0 -17
- package/execution/ThreadSelectionContext.d.ts.map +0 -1
- package/execution/ThreadSelectionContext.js +0 -18
- package/execution/ThreadSelectionContext.js.map +0 -1
- package/execution/useThreadSelection.d.ts +0 -35
- package/execution/useThreadSelection.d.ts.map +0 -1
- package/execution/useThreadSelection.js +0 -65
- package/execution/useThreadSelection.js.map +0 -1
- package/internal/store/selection-store.d.ts +0 -53
- package/internal/store/selection-store.d.ts.map +0 -1
- package/internal/store/selection-store.js +0 -88
- package/internal/store/selection-store.js.map +0 -1
- package/session/artifact-document.d.ts.map +0 -1
- package/session/artifact-document.js +0 -22
- package/session/artifact-document.js.map +0 -1
- package/session/facets/InspectTab.d.ts +0 -13
- package/session/facets/InspectTab.d.ts.map +0 -1
- package/session/facets/InspectTab.js +0 -19
- package/session/facets/InspectTab.js.map +0 -1
- package/src/execution/ThreadSelectionContext.tsx +0 -20
- package/src/execution/useThreadSelection.ts +0 -95
- package/src/internal/store/__tests__/selection-store.test.ts +0 -115
- package/src/internal/store/selection-store.ts +0 -112
- package/src/session/artifact-document.ts +0 -23
- package/src/session/facets/InspectTab.tsx +0 -57
- package/src/workflow/WorkflowExecutionApprovalCard.tsx +0 -154
- package/src/workflow/WorkflowExecutionArtifactPanel.tsx +0 -107
- package/src/workflow/WorkflowExecutionCostPanel.tsx +0 -120
- package/src/workflow/WorkflowExecutionTaskPanel.tsx +0 -129
- package/src/workflow/WorkflowExecutionTimeline.tsx +0 -151
- package/src/workflow/WorkflowExecutionTimelineEvent.tsx +0 -497
- package/src/workflow/__tests__/ExecutionInspector.test.tsx +0 -155
- package/src/workflow/__tests__/WorkflowExecutionApprovalCard.test.tsx +0 -129
- package/src/workflow/__tests__/derive-task-detail.test.ts +0 -1265
- package/src/workflow/__tests__/derive-waterfall-entries.test.ts +0 -521
- package/src/workflow/__tests__/execution-inspector.test.tsx +0 -332
- package/src/workflow/execution/derive-waterfall-entries.ts +0 -377
- package/src/workflow/execution/useWaterfallEntries.ts +0 -125
- package/src/workflow/execution-inspector/AgentCallTab.tsx +0 -169
- package/src/workflow/execution-inspector/ErrorTab.tsx +0 -110
- package/src/workflow/execution-inspector/EventLogTab.tsx +0 -79
- package/src/workflow/execution-inspector/ExecutionInspector.tsx +0 -341
- package/src/workflow/execution-inspector/InputOutputTab.tsx +0 -325
- package/src/workflow/execution-inspector/RetriesTab.tsx +0 -68
- package/src/workflow/execution-inspector/SummaryTab.tsx +0 -62
- package/src/workflow/execution-inspector/derive-task-detail.ts +0 -584
- package/src/workflow/execution-inspector/index.ts +0 -14
- package/src/workflow/execution-inspector/useExecutionTaskDetail.ts +0 -55
- package/src/workflow/inspector/ExecutionInspectorAdapter.tsx +0 -40
- package/src/workflow/waterfall/WaterfallBar.tsx +0 -167
- package/src/workflow/waterfall/WaterfallRow.tsx +0 -112
- package/src/workflow/waterfall/WaterfallScale.tsx +0 -52
- package/src/workflow/waterfall/WaterfallTimeline.tsx +0 -138
- package/src/workflow/waterfall/WaterfallTooltip.tsx +0 -74
- package/src/workflow/waterfall/index.ts +0 -5
- package/workflow/WorkflowExecutionApprovalCard.d.ts +0 -34
- package/workflow/WorkflowExecutionApprovalCard.d.ts.map +0 -1
- package/workflow/WorkflowExecutionApprovalCard.js +0 -46
- package/workflow/WorkflowExecutionApprovalCard.js.map +0 -1
- package/workflow/WorkflowExecutionArtifactPanel.d.ts +0 -15
- package/workflow/WorkflowExecutionArtifactPanel.d.ts.map +0 -1
- package/workflow/WorkflowExecutionArtifactPanel.js +0 -46
- package/workflow/WorkflowExecutionArtifactPanel.js.map +0 -1
- package/workflow/WorkflowExecutionCostPanel.d.ts +0 -18
- package/workflow/WorkflowExecutionCostPanel.d.ts.map +0 -1
- package/workflow/WorkflowExecutionCostPanel.js +0 -31
- package/workflow/WorkflowExecutionCostPanel.js.map +0 -1
- package/workflow/WorkflowExecutionTaskPanel.d.ts +0 -24
- package/workflow/WorkflowExecutionTaskPanel.d.ts.map +0 -1
- package/workflow/WorkflowExecutionTaskPanel.js +0 -51
- package/workflow/WorkflowExecutionTaskPanel.js.map +0 -1
- package/workflow/WorkflowExecutionTimeline.d.ts +0 -42
- package/workflow/WorkflowExecutionTimeline.d.ts.map +0 -1
- package/workflow/WorkflowExecutionTimeline.js +0 -52
- package/workflow/WorkflowExecutionTimeline.js.map +0 -1
- package/workflow/WorkflowExecutionTimelineEvent.d.ts +0 -25
- package/workflow/WorkflowExecutionTimelineEvent.d.ts.map +0 -1
- package/workflow/WorkflowExecutionTimelineEvent.js +0 -179
- package/workflow/WorkflowExecutionTimelineEvent.js.map +0 -1
- package/workflow/execution/derive-waterfall-entries.d.ts +0 -85
- package/workflow/execution/derive-waterfall-entries.d.ts.map +0 -1
- package/workflow/execution/derive-waterfall-entries.js +0 -268
- package/workflow/execution/derive-waterfall-entries.js.map +0 -1
- package/workflow/execution/useWaterfallEntries.d.ts +0 -25
- package/workflow/execution/useWaterfallEntries.d.ts.map +0 -1
- package/workflow/execution/useWaterfallEntries.js +0 -67
- package/workflow/execution/useWaterfallEntries.js.map +0 -1
- package/workflow/execution-inspector/AgentCallTab.d.ts +0 -21
- package/workflow/execution-inspector/AgentCallTab.d.ts.map +0 -1
- package/workflow/execution-inspector/AgentCallTab.js +0 -36
- package/workflow/execution-inspector/AgentCallTab.js.map +0 -1
- package/workflow/execution-inspector/ErrorTab.d.ts +0 -9
- package/workflow/execution-inspector/ErrorTab.d.ts.map +0 -1
- package/workflow/execution-inspector/ErrorTab.js +0 -29
- package/workflow/execution-inspector/ErrorTab.js.map +0 -1
- package/workflow/execution-inspector/EventLogTab.d.ts +0 -11
- package/workflow/execution-inspector/EventLogTab.d.ts.map +0 -1
- package/workflow/execution-inspector/EventLogTab.js +0 -47
- package/workflow/execution-inspector/EventLogTab.js.map +0 -1
- package/workflow/execution-inspector/ExecutionInspector.d.ts +0 -69
- package/workflow/execution-inspector/ExecutionInspector.d.ts.map +0 -1
- package/workflow/execution-inspector/ExecutionInspector.js +0 -145
- package/workflow/execution-inspector/ExecutionInspector.js.map +0 -1
- package/workflow/execution-inspector/InputOutputTab.d.ts +0 -20
- package/workflow/execution-inspector/InputOutputTab.d.ts.map +0 -1
- package/workflow/execution-inspector/InputOutputTab.js +0 -124
- package/workflow/execution-inspector/InputOutputTab.js.map +0 -1
- package/workflow/execution-inspector/RetriesTab.d.ts +0 -7
- package/workflow/execution-inspector/RetriesTab.d.ts.map +0 -1
- package/workflow/execution-inspector/RetriesTab.js +0 -11
- package/workflow/execution-inspector/RetriesTab.js.map +0 -1
- package/workflow/execution-inspector/StructuredDataViewer.d.ts.map +0 -1
- package/workflow/execution-inspector/StructuredDataViewer.js.map +0 -1
- package/workflow/execution-inspector/SummaryTab.d.ts +0 -7
- package/workflow/execution-inspector/SummaryTab.d.ts.map +0 -1
- package/workflow/execution-inspector/SummaryTab.js +0 -10
- package/workflow/execution-inspector/SummaryTab.js.map +0 -1
- package/workflow/execution-inspector/derive-task-detail.d.ts +0 -140
- package/workflow/execution-inspector/derive-task-detail.d.ts.map +0 -1
- package/workflow/execution-inspector/derive-task-detail.js +0 -366
- package/workflow/execution-inspector/derive-task-detail.js.map +0 -1
- package/workflow/execution-inspector/index.d.ts +0 -4
- package/workflow/execution-inspector/index.d.ts.map +0 -1
- package/workflow/execution-inspector/index.js +0 -4
- package/workflow/execution-inspector/index.js.map +0 -1
- package/workflow/execution-inspector/useExecutionTaskDetail.d.ts +0 -38
- package/workflow/execution-inspector/useExecutionTaskDetail.d.ts.map +0 -1
- package/workflow/execution-inspector/useExecutionTaskDetail.js +0 -37
- package/workflow/execution-inspector/useExecutionTaskDetail.js.map +0 -1
- package/workflow/inspector/ExecutionInspectorAdapter.d.ts +0 -26
- package/workflow/inspector/ExecutionInspectorAdapter.d.ts.map +0 -1
- package/workflow/inspector/ExecutionInspectorAdapter.js +0 -23
- package/workflow/inspector/ExecutionInspectorAdapter.js.map +0 -1
- package/workflow/waterfall/WaterfallBar.d.ts +0 -19
- package/workflow/waterfall/WaterfallBar.d.ts.map +0 -1
- package/workflow/waterfall/WaterfallBar.js +0 -70
- package/workflow/waterfall/WaterfallBar.js.map +0 -1
- package/workflow/waterfall/WaterfallRow.d.ts +0 -18
- package/workflow/waterfall/WaterfallRow.d.ts.map +0 -1
- package/workflow/waterfall/WaterfallRow.js +0 -45
- package/workflow/waterfall/WaterfallRow.js.map +0 -1
- package/workflow/waterfall/WaterfallScale.d.ts +0 -14
- package/workflow/waterfall/WaterfallScale.d.ts.map +0 -1
- package/workflow/waterfall/WaterfallScale.js +0 -22
- package/workflow/waterfall/WaterfallScale.js.map +0 -1
- package/workflow/waterfall/WaterfallTimeline.d.ts +0 -46
- package/workflow/waterfall/WaterfallTimeline.d.ts.map +0 -1
- package/workflow/waterfall/WaterfallTimeline.js +0 -60
- package/workflow/waterfall/WaterfallTimeline.js.map +0 -1
- package/workflow/waterfall/WaterfallTooltip.d.ts +0 -15
- package/workflow/waterfall/WaterfallTooltip.d.ts.map +0 -1
- package/workflow/waterfall/WaterfallTooltip.js +0 -20
- package/workflow/waterfall/WaterfallTooltip.js.map +0 -1
- package/workflow/waterfall/index.d.ts +0 -6
- package/workflow/waterfall/index.d.ts.map +0 -1
- package/workflow/waterfall/index.js +0 -6
- package/workflow/waterfall/index.js.map +0 -1
- /package/src/workflow/{execution-inspector → task-detail}/StructuredDataViewer.tsx +0 -0
- /package/workflow/{execution-inspector → task-detail}/StructuredDataViewer.d.ts +0 -0
- /package/workflow/{execution-inspector → task-detail}/StructuredDataViewer.js +0 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { Agent } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/api_pb";
|
|
2
|
+
import type { AgentChannel } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/api_pb";
|
|
3
|
+
/** Props for {@link ChannelCredentialsDialog}. */
|
|
4
|
+
export interface ChannelCredentialsDialogProps {
|
|
5
|
+
/** Whether the dialog is open. */
|
|
6
|
+
readonly open: boolean;
|
|
7
|
+
/** Called when the dialog requests an open-state change. */
|
|
8
|
+
readonly onOpenChange: (open: boolean) => void;
|
|
9
|
+
/** The agent the channel serves (drives the readiness hint). */
|
|
10
|
+
readonly agent: Agent;
|
|
11
|
+
/** The channel whose credential bindings are edited. */
|
|
12
|
+
readonly channel: AgentChannel;
|
|
13
|
+
/** Called after a successful save (hosts typically pass `refetch`). */
|
|
14
|
+
readonly onSaved?: () => void;
|
|
15
|
+
/**
|
|
16
|
+
* When `false`, renders as an in-flow open dialog instead of a
|
|
17
|
+
* top-layer modal — for embedding in constrained surfaces
|
|
18
|
+
* (documentation demos, visual tests). Interactive hosts keep the
|
|
19
|
+
* default.
|
|
20
|
+
* @default true
|
|
21
|
+
*/
|
|
22
|
+
readonly modal?: boolean;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Edits an installed channel's tool-credential bindings
|
|
26
|
+
* (`AgentChannelSpec.environment_refs`) after the fact — the companion
|
|
27
|
+
* to binding at connect time in {@link ConnectSlackDialog}. Saves are
|
|
28
|
+
* full-input applies via {@link agentChannelToInput}, so the agent
|
|
29
|
+
* reference, provider marker, and install status all survive; an
|
|
30
|
+
* emptied list is an explicit unbind.
|
|
31
|
+
*
|
|
32
|
+
* Built on the native `<dialog>` element, matching the SDK's modal
|
|
33
|
+
* convention. Most hosts mount it via {@link AgentChannelsPanel}'s
|
|
34
|
+
* channel card action.
|
|
35
|
+
*/
|
|
36
|
+
export declare function ChannelCredentialsDialog({ open, onOpenChange, agent, channel, onSaved, modal, }: ChannelCredentialsDialogProps): import("react/jsx-runtime").JSX.Element;
|
|
37
|
+
//# sourceMappingURL=ChannelCredentialsDialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChannelCredentialsDialog.d.ts","sourceRoot":"","sources":["../../src/channel/ChannelCredentialsDialog.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oDAAoD,CAAC;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2DAA2D,CAAC;AAK9F,kDAAkD;AAClD,MAAM,WAAW,6BAA6B;IAC5C,kCAAkC;IAClC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,4DAA4D;IAC5D,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,gEAAgE;IAChE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,wDAAwD;IACxD,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,uEAAuE;IACvE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CAAC,EACvC,IAAI,EACJ,YAAY,EACZ,KAAK,EACL,OAAO,EACP,OAAO,EACP,KAAY,GACb,EAAE,6BAA6B,2CA8C/B"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useCallback, useRef, useState } from "react";
|
|
4
|
+
import { cn } from "@stigmer/theme";
|
|
5
|
+
import { getUserMessage } from "@stigmer/sdk";
|
|
6
|
+
import { Button } from "../button/Button.js";
|
|
7
|
+
import { ChannelToolCredentials } from "./ChannelToolCredentials.js";
|
|
8
|
+
import { agentChannelToInput, useSaveAgentChannel } from "./useSaveAgentChannel.js";
|
|
9
|
+
/**
|
|
10
|
+
* Edits an installed channel's tool-credential bindings
|
|
11
|
+
* (`AgentChannelSpec.environment_refs`) after the fact — the companion
|
|
12
|
+
* to binding at connect time in {@link ConnectSlackDialog}. Saves are
|
|
13
|
+
* full-input applies via {@link agentChannelToInput}, so the agent
|
|
14
|
+
* reference, provider marker, and install status all survive; an
|
|
15
|
+
* emptied list is an explicit unbind.
|
|
16
|
+
*
|
|
17
|
+
* Built on the native `<dialog>` element, matching the SDK's modal
|
|
18
|
+
* convention. Most hosts mount it via {@link AgentChannelsPanel}'s
|
|
19
|
+
* channel card action.
|
|
20
|
+
*/
|
|
21
|
+
export function ChannelCredentialsDialog({ open, onOpenChange, agent, channel, onSaved, modal = true, }) {
|
|
22
|
+
const dialogRef = useRef(null);
|
|
23
|
+
const handleClose = useCallback(() => {
|
|
24
|
+
dialogRef.current?.close();
|
|
25
|
+
onOpenChange(false);
|
|
26
|
+
}, [onOpenChange]);
|
|
27
|
+
// Sync native dialog open state (matches the SDK dialog convention).
|
|
28
|
+
const prevOpenRef = useRef(false);
|
|
29
|
+
if (modal && open !== prevOpenRef.current) {
|
|
30
|
+
prevOpenRef.current = open;
|
|
31
|
+
if (open) {
|
|
32
|
+
requestAnimationFrame(() => {
|
|
33
|
+
if (dialogRef.current && !dialogRef.current.open) {
|
|
34
|
+
dialogRef.current.showModal();
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
else if (dialogRef.current?.open) {
|
|
39
|
+
dialogRef.current.close();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return (_jsx("dialog", { ref: dialogRef, open: modal ? undefined : open, onClose: handleClose, className: cn("w-full max-w-md rounded-xl border border-border bg-popover p-0 shadow-xl", modal ? "fixed inset-0 m-auto backdrop:bg-black/50" : "relative"), "aria-labelledby": "channel-credentials-title", children: open && (_jsx(ChannelCredentialsDialogBody, { agent: agent, channel: channel, onSaved: onSaved, onClose: handleClose })) }));
|
|
43
|
+
}
|
|
44
|
+
function ChannelCredentialsDialogBody({ agent, channel, onSaved, onClose, }) {
|
|
45
|
+
const channelName = channel.metadata?.name || channel.metadata?.slug || "this channel";
|
|
46
|
+
const org = channel.metadata?.org ?? "";
|
|
47
|
+
const { save, isPending, error, clearError } = useSaveAgentChannel();
|
|
48
|
+
const [draft, setDraft] = useState(() => (channel.spec?.environmentRefs ?? []).map((ref) => ({
|
|
49
|
+
org: ref.org,
|
|
50
|
+
slug: ref.slug,
|
|
51
|
+
})));
|
|
52
|
+
const handleSave = useCallback(async () => {
|
|
53
|
+
try {
|
|
54
|
+
// Full-input apply: only the binding list changes; an empty draft
|
|
55
|
+
// is an explicit unbind (apply semantics replace the spec).
|
|
56
|
+
await save({
|
|
57
|
+
...agentChannelToInput(channel),
|
|
58
|
+
environmentRefs: [...draft],
|
|
59
|
+
});
|
|
60
|
+
onSaved?.();
|
|
61
|
+
onClose();
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
// Surfaced through the hook's error state below.
|
|
65
|
+
}
|
|
66
|
+
}, [channel, draft, onClose, onSaved, save]);
|
|
67
|
+
return (_jsxs("div", { className: "flex flex-col", children: [_jsxs("div", { className: "flex items-start justify-between gap-3 border-b border-border px-5 py-4", children: [_jsxs("div", { className: "min-w-0", children: [_jsx("h2", { id: "channel-credentials-title", className: "text-sm font-semibold text-foreground", children: "Tool credentials" }), _jsx("p", { className: "mt-0.5 truncate text-xs text-muted-foreground", children: channelName })] }), _jsx("button", { type: "button", onClick: onClose, "aria-label": "Close dialog", className: cn("rounded p-1 text-muted-foreground", "hover:bg-accent-hover hover:text-foreground", "focus:outline-none focus:ring-1 focus:ring-ring"), children: _jsx(CloseIcon, {}) })] }), _jsxs("div", { className: "px-5 py-4", children: [_jsx(ChannelToolCredentials, { agent: agent, org: org, value: draft, onChange: setDraft, disabled: isPending, enabled: channel.spec?.enabled ?? false }), error && (_jsx("div", { role: "alert", className: "mt-3 rounded-md border border-destructive/30 bg-destructive-subtle px-3 py-2 text-xs text-destructive", children: getUserMessage(error) }))] }), _jsxs("div", { className: "flex justify-end gap-2 border-t border-border px-5 py-3", children: [_jsx(Button, { variant: "ghost", size: "sm", onClick: () => {
|
|
68
|
+
clearError();
|
|
69
|
+
onClose();
|
|
70
|
+
}, disabled: isPending, children: "Cancel" }), _jsx(Button, { variant: "primary", size: "sm", onClick: () => void handleSave(), disabled: isPending, children: "Save" })] })] }));
|
|
71
|
+
}
|
|
72
|
+
function CloseIcon() {
|
|
73
|
+
return (_jsx("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", "aria-hidden": "true", children: _jsx("path", { d: "m3 3 8 8M11 3l-8 8" }) }));
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=ChannelCredentialsDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChannelCredentialsDialog.js","sourceRoot":"","sources":["../../src/channel/ChannelCredentialsDialog.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Agent } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/api_pb";
|
|
2
|
+
import type { ResourceRef } from "@stigmer/sdk";
|
|
3
|
+
/** Props for {@link ChannelToolCredentials}. */
|
|
4
|
+
export interface ChannelToolCredentialsProps {
|
|
5
|
+
/** The agent the channel serves (drives the readiness check). */
|
|
6
|
+
readonly agent: Agent;
|
|
7
|
+
/** Organization the environments are listed from (the channel's org). */
|
|
8
|
+
readonly org: string;
|
|
9
|
+
/** Currently bound environment references, in merge order. */
|
|
10
|
+
readonly value: readonly ResourceRef[];
|
|
11
|
+
/** Called when the binding list changes. */
|
|
12
|
+
readonly onChange: (refs: ResourceRef[]) => void;
|
|
13
|
+
/** Disable all interactions (e.g. while a save is in flight). */
|
|
14
|
+
readonly disabled?: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Whether the channel serves traffic. A paused channel needs no
|
|
17
|
+
* readiness warning — the hint stays silent when `false`.
|
|
18
|
+
* @default true
|
|
19
|
+
*/
|
|
20
|
+
readonly enabled?: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* The channel's credential-binding surface: explanatory copy, the
|
|
24
|
+
* org-shared environment picker, and the readiness hint. Shared by the
|
|
25
|
+
* connect dialog (binding at connect time) and the channel card's
|
|
26
|
+
* credentials dialog (editing later) so the two surfaces can never
|
|
27
|
+
* drift — the {@link ShareAgentDialog} ToolCredentialsSection pattern,
|
|
28
|
+
* applied to channels.
|
|
29
|
+
*/
|
|
30
|
+
export declare function ChannelToolCredentials({ agent, org, value, onChange, disabled, enabled, }: ChannelToolCredentialsProps): import("react/jsx-runtime").JSX.Element;
|
|
31
|
+
//# sourceMappingURL=ChannelToolCredentials.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChannelToolCredentials.d.ts","sourceRoot":"","sources":["../../src/channel/ChannelToolCredentials.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oDAAoD,CAAC;AAEhF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAIhD,gDAAgD;AAChD,MAAM,WAAW,2BAA2B;IAC1C,iEAAiE;IACjE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,yEAAyE;IACzE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,8DAA8D;IAC9D,QAAQ,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;IACvC,4CAA4C;IAC5C,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;IACjD,iEAAiE;IACjE,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,KAAK,EACL,GAAG,EACH,KAAK,EACL,QAAQ,EACR,QAAgB,EAChB,OAAc,GACf,EAAE,2BAA2B,2CA8B7B"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useCallback } from "react";
|
|
4
|
+
import { ApiResourceVisibility } from "@stigmer/protos/ai/stigmer/commons/apiresource/enum_pb";
|
|
5
|
+
import { EnvironmentPicker } from "../environment/EnvironmentPicker.js";
|
|
6
|
+
import { useChannelToolReadiness } from "./useChannelToolReadiness.js";
|
|
7
|
+
/**
|
|
8
|
+
* The channel's credential-binding surface: explanatory copy, the
|
|
9
|
+
* org-shared environment picker, and the readiness hint. Shared by the
|
|
10
|
+
* connect dialog (binding at connect time) and the channel card's
|
|
11
|
+
* credentials dialog (editing later) so the two surfaces can never
|
|
12
|
+
* drift — the {@link ShareAgentDialog} ToolCredentialsSection pattern,
|
|
13
|
+
* applied to channels.
|
|
14
|
+
*/
|
|
15
|
+
export function ChannelToolCredentials({ agent, org, value, onChange, disabled = false, enabled = true, }) {
|
|
16
|
+
// Only org-shared environments are usable by channel executions (the
|
|
17
|
+
// runtime merge skips private ones), so offering others would bind
|
|
18
|
+
// credentials that silently never apply.
|
|
19
|
+
const onlyOrgShared = useCallback((env) => env.metadata?.visibility === ApiResourceVisibility.visibility_org, []);
|
|
20
|
+
return (_jsxs("div", { className: "flex flex-col gap-2", children: [_jsx("p", { className: "text-[0.65rem] text-muted-foreground", children: "Environments whose values workspace conversations can use \u2014 bind one holding the credentials this agent's tools need (a read-only token is safest). Only environments shared with your organization can be bound; share one first in Settings \u2192 Environments. Secret values stay hidden from workspace members either way." }), _jsx(EnvironmentPicker, { org: org, value: value, onChange: onChange, disabled: disabled, filterEnvironment: onlyOrgShared }), _jsx(ChannelToolReadinessHint, { agent: agent, enabled: enabled, value: value })] }));
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Pre-flight hint for tool-using agents: channel conversations receive
|
|
24
|
+
* credentials only from the channel's own environment bindings, so a
|
|
25
|
+
* tool-using agent with no bindings (`needs-credentials`) or a binding
|
|
26
|
+
* that is still private (`blocked`) will refuse the first message that
|
|
27
|
+
* needs a tool. Renders nothing when there is nothing to fix.
|
|
28
|
+
*/
|
|
29
|
+
function ChannelToolReadinessHint({ agent, enabled, value, }) {
|
|
30
|
+
const readiness = useChannelToolReadiness(agent, enabled, value);
|
|
31
|
+
if (readiness.status === "needs-credentials") {
|
|
32
|
+
return (_jsx("p", { className: "text-xs text-warning", role: "status", children: "Workspace conversations can't use this agent's tools yet: no credentials are bound to this channel. Bind an org-shared environment above." }));
|
|
33
|
+
}
|
|
34
|
+
if (readiness.status !== "blocked") {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
const envList = readiness.privateEnvironments.join(", ");
|
|
38
|
+
const plural = readiness.privateEnvironments.length > 1;
|
|
39
|
+
return (_jsxs("p", { className: "text-xs text-warning", role: "status", children: ["Workspace conversations can't use this agent's tools yet: the environment", plural ? "s" : "", " ", _jsx("span", { className: "font-medium", children: envList }), " ", plural ? "are" : "is", " private. Share ", plural ? "them" : "it", " with your organization (Settings \u2192 Environments) so channel conversations can use the credentials. Secret values stay hidden either way."] }));
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=ChannelToolCredentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChannelToolCredentials.js","sourceRoot":"","sources":["../../src/channel/ChannelToolCredentials.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,wDAAwD,CAAC;AAI/F,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAsBvE;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CAAC,EACrC,KAAK,EACL,GAAG,EACH,KAAK,EACL,QAAQ,EACR,QAAQ,GAAG,KAAK,EAChB,OAAO,GAAG,IAAI,GACc;IAC5B,qEAAqE;IACrE,mEAAmE;IACnE,yCAAyC;IACzC,MAAM,aAAa,GAAG,WAAW,CAC/B,CAAC,GAAgB,EAAE,EAAE,CACnB,GAAG,CAAC,QAAQ,EAAE,UAAU,KAAK,qBAAqB,CAAC,cAAc,EACnE,EAAE,CACH,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAC,qBAAqB,aAClC,YAAG,SAAS,EAAC,sCAAsC,qVAO/C,EACJ,KAAC,iBAAiB,IAChB,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,iBAAiB,EAAE,aAAa,GAChC,EACF,KAAC,wBAAwB,IAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAI,IACtE,CACP,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,wBAAwB,CAAC,EAChC,KAAK,EACL,OAAO,EACP,KAAK,GAKN;IACC,MAAM,SAAS,GAAG,uBAAuB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAEjE,IAAI,SAAS,CAAC,MAAM,KAAK,mBAAmB,EAAE,CAAC;QAC7C,OAAO,CACL,YAAG,SAAS,EAAC,sBAAsB,EAAC,IAAI,EAAC,QAAQ,0JAI7C,CACL,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,SAAS,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,SAAS,CAAC,mBAAmB,CAAC,MAAM,GAAG,CAAC,CAAC;IAExD,OAAO,CACL,aAAG,SAAS,EAAC,sBAAsB,EAAC,IAAI,EAAC,QAAQ,0FAE/B,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,EACtC,eAAM,SAAS,EAAC,aAAa,YAAE,OAAO,GAAQ,EAAC,GAAG,EACjD,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,sBAAkB,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,sJAI5D,CACL,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { Agent } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/api_pb";
|
|
2
|
+
import type { AgentChannel } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/api_pb";
|
|
3
|
+
/** Props for {@link ConnectSlackDialog}. */
|
|
4
|
+
export interface ConnectSlackDialogProps {
|
|
5
|
+
/** Whether the dialog is open. */
|
|
6
|
+
readonly open: boolean;
|
|
7
|
+
/** Called when the dialog requests an open-state change. */
|
|
8
|
+
readonly onOpenChange: (open: boolean) => void;
|
|
9
|
+
/** The agent the channel connects. */
|
|
10
|
+
readonly agent: Agent;
|
|
11
|
+
/**
|
|
12
|
+
* An existing channel to (re)connect — a `pending_install` channel
|
|
13
|
+
* whose install never completed, or a `revoked` one being re-installed.
|
|
14
|
+
* When omitted, the dialog opens in **create mode**: a name step
|
|
15
|
+
* creates a new channel, then runs the install flow on it.
|
|
16
|
+
*/
|
|
17
|
+
readonly channel?: AgentChannel | null;
|
|
18
|
+
/**
|
|
19
|
+
* Called after the channel set changes (created, or install completed).
|
|
20
|
+
* Hosts typically pass the channel list's `refetch`.
|
|
21
|
+
*/
|
|
22
|
+
readonly onChannelsChanged?: () => void;
|
|
23
|
+
/**
|
|
24
|
+
* When `false`, renders as an in-flow open dialog instead of a
|
|
25
|
+
* top-layer modal — no `showModal()`, no backdrop, no focus trap.
|
|
26
|
+
* For embedding the dialog in a constrained surface (documentation
|
|
27
|
+
* demos, visual tests). Interactive hosts keep the default.
|
|
28
|
+
* @default true
|
|
29
|
+
*/
|
|
30
|
+
readonly modal?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Where the host manages Channel Apps (the console passes
|
|
33
|
+
* `/settings/channel-apps`). When provided, the "Connect as" section
|
|
34
|
+
* and install refusals render a "Register a channel app" link there.
|
|
35
|
+
* SDK components never hardcode host routes — hosts inject the
|
|
36
|
+
* destination (the `onConnectExternal` delegate convention). Absent,
|
|
37
|
+
* the affordance degrades to plain guidance text.
|
|
38
|
+
*/
|
|
39
|
+
readonly channelAppsHref?: string;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* The connect flow for a Slack channel: create the {@link AgentChannel}
|
|
43
|
+
* (create mode), then run the "Add to Slack" OAuth install in a popup
|
|
44
|
+
* and report progress phase by phase.
|
|
45
|
+
*
|
|
46
|
+
* Requires a deployment with platform Slack app credentials — on a
|
|
47
|
+
* `local` (OSS) backend the flow is preempted with a cloud-feature
|
|
48
|
+
* notice, matching the server's FAILED_PRECONDITION refusal. Install
|
|
49
|
+
* refusals (unconfigured deployment, duplicate workspace, Enterprise
|
|
50
|
+
* Grid) render the server's copy verbatim — the server owns that
|
|
51
|
+
* vocabulary.
|
|
52
|
+
*
|
|
53
|
+
* Built on the native `<dialog>` element for focus trapping and escape
|
|
54
|
+
* handling, matching the SDK's modal convention ({@link ShareAgentDialog}).
|
|
55
|
+
* All visual properties flow through `--stgm-*` design tokens.
|
|
56
|
+
*
|
|
57
|
+
* Most hosts mount it via {@link AgentChannelsPanel} (the Channels tab).
|
|
58
|
+
* Render it directly only when you own the open-state.
|
|
59
|
+
*/
|
|
60
|
+
export declare function ConnectSlackDialog({ open, onOpenChange, agent, channel, onChannelsChanged, modal, channelAppsHref, }: ConnectSlackDialogProps): import("react/jsx-runtime").JSX.Element;
|
|
61
|
+
//# sourceMappingURL=ConnectSlackDialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConnectSlackDialog.d.ts","sourceRoot":"","sources":["../../src/channel/ConnectSlackDialog.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oDAAoD,CAAC;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2DAA2D,CAAC;AAkB9F,4CAA4C;AAC5C,MAAM,WAAW,uBAAuB;IACtC,kCAAkC;IAClC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,4DAA4D;IAC5D,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,sCAAsC;IACtC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACvC;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IACxC;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB;;;;;;;OAOG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,IAAI,EACJ,YAAY,EACZ,KAAK,EACL,OAAO,EACP,iBAAiB,EACjB,KAAY,EACZ,eAAe,GAChB,EAAE,uBAAuB,2CAiDzB"}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { useCallback, useMemo, useRef, useState } from "react";
|
|
4
|
+
import { cn } from "@stigmer/theme";
|
|
5
|
+
import { getErrorReason } from "@stigmer/sdk";
|
|
6
|
+
import { AgentChannelInstallState } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/status_pb";
|
|
7
|
+
import { Button } from "../button/Button.js";
|
|
8
|
+
import { useChannelAppList } from "../channel-app/useChannelAppList.js";
|
|
9
|
+
import { useDeploymentMode } from "../deployment-mode.js";
|
|
10
|
+
import { CloudFeatureNotice } from "../internal/CloudFeatureNotice.js";
|
|
11
|
+
import { RegisterChannelAppAffordance, ServingAppSection, } from "./connect/ServingAppSection.js";
|
|
12
|
+
import { ToolCredentialsSection } from "./connect/ToolCredentialsSection.js";
|
|
13
|
+
import { RefusalBox, VerbatimRefusal } from "./connect/VerbatimRefusal.js";
|
|
14
|
+
import { CheckIcon, CloseIcon, Spinner } from "./connect/icons.js";
|
|
15
|
+
import { useConnectSlackChannel } from "./useConnectSlackChannel.js";
|
|
16
|
+
import { useCreateAgentChannel } from "./useCreateAgentChannel.js";
|
|
17
|
+
import { useOrgAgentChannelList } from "./useOrgAgentChannelList.js";
|
|
18
|
+
import { SlackMarkIcon } from "./SlackMarkIcon.js";
|
|
19
|
+
/**
|
|
20
|
+
* The connect flow for a Slack channel: create the {@link AgentChannel}
|
|
21
|
+
* (create mode), then run the "Add to Slack" OAuth install in a popup
|
|
22
|
+
* and report progress phase by phase.
|
|
23
|
+
*
|
|
24
|
+
* Requires a deployment with platform Slack app credentials — on a
|
|
25
|
+
* `local` (OSS) backend the flow is preempted with a cloud-feature
|
|
26
|
+
* notice, matching the server's FAILED_PRECONDITION refusal. Install
|
|
27
|
+
* refusals (unconfigured deployment, duplicate workspace, Enterprise
|
|
28
|
+
* Grid) render the server's copy verbatim — the server owns that
|
|
29
|
+
* vocabulary.
|
|
30
|
+
*
|
|
31
|
+
* Built on the native `<dialog>` element for focus trapping and escape
|
|
32
|
+
* handling, matching the SDK's modal convention ({@link ShareAgentDialog}).
|
|
33
|
+
* All visual properties flow through `--stgm-*` design tokens.
|
|
34
|
+
*
|
|
35
|
+
* Most hosts mount it via {@link AgentChannelsPanel} (the Channels tab).
|
|
36
|
+
* Render it directly only when you own the open-state.
|
|
37
|
+
*/
|
|
38
|
+
export function ConnectSlackDialog({ open, onOpenChange, agent, channel, onChannelsChanged, modal = true, channelAppsHref, }) {
|
|
39
|
+
const dialogRef = useRef(null);
|
|
40
|
+
const handleClose = useCallback(() => {
|
|
41
|
+
dialogRef.current?.close();
|
|
42
|
+
onOpenChange(false);
|
|
43
|
+
}, [onOpenChange]);
|
|
44
|
+
// Sync native dialog open state (matches the SDK dialog convention).
|
|
45
|
+
// Non-modal hosts pass `open` as a plain attribute instead — the dialog
|
|
46
|
+
// renders in-flow with no top layer to manage.
|
|
47
|
+
const prevOpenRef = useRef(false);
|
|
48
|
+
if (modal && open !== prevOpenRef.current) {
|
|
49
|
+
prevOpenRef.current = open;
|
|
50
|
+
if (open) {
|
|
51
|
+
requestAnimationFrame(() => {
|
|
52
|
+
if (dialogRef.current && !dialogRef.current.open) {
|
|
53
|
+
dialogRef.current.showModal();
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
else if (dialogRef.current?.open) {
|
|
58
|
+
dialogRef.current.close();
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return (_jsx("dialog", { ref: dialogRef, open: modal ? undefined : open, onClose: handleClose, className: cn("w-full max-w-md rounded-xl border border-border bg-popover p-0 shadow-xl", modal ? "fixed inset-0 m-auto backdrop:bg-black/50" : "relative"), "aria-labelledby": "connect-slack-title", children: open && (_jsx(ConnectSlackDialogBody, { agent: agent, channel: channel ?? null, onChannelsChanged: onChannelsChanged, onClose: handleClose, channelAppsHref: channelAppsHref })) }));
|
|
62
|
+
}
|
|
63
|
+
function ConnectSlackDialogBody({ agent, channel, onChannelsChanged, onClose, channelAppsHref, }) {
|
|
64
|
+
const deploymentMode = useDeploymentMode();
|
|
65
|
+
const agentName = agent.metadata?.name || agent.metadata?.slug || "this agent";
|
|
66
|
+
const org = agent.metadata?.org ?? "";
|
|
67
|
+
const { createChannel, isPending: isCreating } = useCreateAgentChannel();
|
|
68
|
+
const slack = useConnectSlackChannel();
|
|
69
|
+
const [name, setName] = useState(() => channel ? (channel.metadata?.name ?? "") : `${agentName} Slack`);
|
|
70
|
+
// Tool credentials bound at connect time (create mode only — a
|
|
71
|
+
// reconnect keeps the channel's existing bindings untouched; edits go
|
|
72
|
+
// through the channel card's credentials dialog).
|
|
73
|
+
const [environmentRefs, setEnvironmentRefs] = useState([]);
|
|
74
|
+
// The serving app (create mode only): null = the platform Stigmer app;
|
|
75
|
+
// a ref = one of the org's own channel apps (BYO — the bot carries that
|
|
76
|
+
// app's name, and each app is its own bot identity). A reconnect keeps
|
|
77
|
+
// the channel's existing binding — an installed channel's app_ref is
|
|
78
|
+
// frozen server-side.
|
|
79
|
+
const [appRef, setAppRef] = useState(null);
|
|
80
|
+
const [installed, setInstalled] = useState(null);
|
|
81
|
+
const [error, setError] = useState(null);
|
|
82
|
+
// The org's channel apps, fetched once here so the serving-app picker,
|
|
83
|
+
// the addressing copy, and the advisory all read one consistent list.
|
|
84
|
+
const { channelApps } = useChannelAppList(org || null);
|
|
85
|
+
const slackApps = useMemo(() => channelApps.filter((app) => app.spec?.providerConfig?.case === "slack"), [channelApps]);
|
|
86
|
+
// The app the install will (or did) go through: the picker's choice in
|
|
87
|
+
// create mode, the frozen spec.app_ref on a reconnect. null = platform.
|
|
88
|
+
const effectiveAppRef = channel
|
|
89
|
+
? channel.spec?.appRef?.slug
|
|
90
|
+
? { org: channel.spec.appRef.org || org, slug: channel.spec.appRef.slug }
|
|
91
|
+
: null
|
|
92
|
+
: appRef;
|
|
93
|
+
const selectedApp = effectiveAppRef
|
|
94
|
+
? slackApps.find((app) => app.metadata?.slug === effectiveAppRef.slug) ?? null
|
|
95
|
+
: null;
|
|
96
|
+
// What members type after "@" in Slack. App-level, not agent-level: the
|
|
97
|
+
// platform app's bot is "Stigmer"; a BYO app's bot carries the name its
|
|
98
|
+
// manifest declared — which the registration form seeded from the
|
|
99
|
+
// ChannelApp's own name.
|
|
100
|
+
const botName = effectiveAppRef
|
|
101
|
+
? selectedApp?.metadata?.name || effectiveAppRef.slug
|
|
102
|
+
: "Stigmer";
|
|
103
|
+
// Workspaces the selected serving app already occupies, matched on the
|
|
104
|
+
// same key the database enforces uniqueness on: (team, channel app).
|
|
105
|
+
// Advisory only — the list is permission-bounded, and other orgs'
|
|
106
|
+
// holds are invisible; completeInstall stays the arbiter.
|
|
107
|
+
const advisoryActive = deploymentMode === "cloud" && !channel && !installed;
|
|
108
|
+
const { channels: orgChannels } = useOrgAgentChannelList(advisoryActive && org ? org : null);
|
|
109
|
+
const alreadyServed = useMemo(() => {
|
|
110
|
+
// Platform app installs stamp an empty channel_app_id.
|
|
111
|
+
const selectedAppId = effectiveAppRef ? selectedApp?.metadata?.id : "";
|
|
112
|
+
if (selectedAppId === undefined)
|
|
113
|
+
return [];
|
|
114
|
+
return orgChannels.filter((c) => c.status?.installState === AgentChannelInstallState.installed &&
|
|
115
|
+
c.status?.providerStatus?.case === "slack" &&
|
|
116
|
+
c.status.providerStatus.value.channelAppId === selectedAppId);
|
|
117
|
+
}, [orgChannels, effectiveAppRef, selectedApp]);
|
|
118
|
+
// One click drives the whole journey: (create →) initiate → popup →
|
|
119
|
+
// complete. It must stay a single synchronous entry point — the popup
|
|
120
|
+
// opens inside connect(), and browsers only allow that from a
|
|
121
|
+
// user-gesture call stack.
|
|
122
|
+
const handleConnect = useCallback(async () => {
|
|
123
|
+
setError(null);
|
|
124
|
+
try {
|
|
125
|
+
let target = channel;
|
|
126
|
+
if (!target) {
|
|
127
|
+
target = await createChannel({
|
|
128
|
+
name: name.trim() || `${agentName} Slack`,
|
|
129
|
+
org,
|
|
130
|
+
agentRef: {
|
|
131
|
+
org,
|
|
132
|
+
slug: agent.metadata?.slug ?? "",
|
|
133
|
+
},
|
|
134
|
+
enabled: true,
|
|
135
|
+
slack: {},
|
|
136
|
+
...(appRef ? { appRef } : {}),
|
|
137
|
+
...(environmentRefs.length > 0 ? { environmentRefs } : {}),
|
|
138
|
+
});
|
|
139
|
+
// The channel now exists even if the install below fails or is
|
|
140
|
+
// abandoned — surface it in the list either way.
|
|
141
|
+
onChannelsChanged?.();
|
|
142
|
+
}
|
|
143
|
+
const result = await slack.connect(target.metadata?.id ?? "");
|
|
144
|
+
setInstalled(result);
|
|
145
|
+
onChannelsChanged?.();
|
|
146
|
+
}
|
|
147
|
+
catch (err) {
|
|
148
|
+
// Cancellation is a user decision, not a failure — the hook keeps
|
|
149
|
+
// error null for it; everything else renders below.
|
|
150
|
+
setError(slack.error ?? (err instanceof Error ? err : new Error(String(err))));
|
|
151
|
+
}
|
|
152
|
+
}, [agent, agentName, appRef, channel, createChannel, environmentRefs, name, org, onChannelsChanged, slack]);
|
|
153
|
+
const handleCancel = useCallback(() => {
|
|
154
|
+
slack.clearError();
|
|
155
|
+
setError(null);
|
|
156
|
+
}, [slack]);
|
|
157
|
+
const busy = isCreating || slack.isInProgress;
|
|
158
|
+
return (_jsxs("div", { className: "flex flex-col", children: [_jsxs("div", { className: "flex items-start justify-between gap-3 border-b border-border px-5 py-4", children: [_jsxs("div", { className: "flex items-center gap-2.5", children: [_jsx(SlackMarkIcon, { className: "size-5 text-foreground" }), _jsx("h2", { id: "connect-slack-title", className: "text-sm font-semibold text-foreground", children: channel ? "Reconnect to Slack" : "Connect to Slack" })] }), _jsx("button", { type: "button", onClick: onClose, "aria-label": "Close dialog", className: cn("rounded p-1 text-muted-foreground", "hover:bg-accent-hover hover:text-foreground", "focus:outline-none focus:ring-1 focus:ring-ring"), children: _jsx(CloseIcon, {}) })] }), _jsx("div", { className: "space-y-4 px-5 py-4", children: deploymentMode === "local" ? (
|
|
159
|
+
// Preempt the doomed flow: the OSS backend answers every install
|
|
160
|
+
// with FAILED_PRECONDITION, so don't open a popup destined to fail.
|
|
161
|
+
_jsx(CloudFeatureNotice, { children: "Channel installs require Stigmer Cloud. The local backend manages channel configuration, but connecting to Slack uses the platform's hosted Slack app." })) : installed ? (_jsx(InstalledSummary, { channel: installed, agentName: agentName, botName: botName })) : busy ? (_jsx(FlowProgress, { phase: slack.phase, onCancel: handleCancel })) : (_jsxs(_Fragment, { children: [!channel && (_jsxs("label", { className: "block", children: [_jsx("span", { className: "mb-1.5 block text-xs font-medium text-foreground", children: "Channel name" }), _jsx("input", { type: "text", value: name, onChange: (e) => setName(e.target.value), disabled: busy, className: cn("w-full rounded-md border border-input bg-background px-3 py-1.5", "text-sm text-foreground placeholder:text-muted-foreground", "focus:outline-none focus:ring-1 focus:ring-ring") }), _jsx("span", { className: "mt-1 block text-xs text-muted-foreground", children: "Names the connection in Stigmer \u2014 pick something that identifies the workspace if you connect more than one." })] })), !channel && (_jsx(ServingAppSection, { org: org, apps: slackApps, value: appRef, onChange: setAppRef, disabled: busy, channelAppsHref: channelAppsHref, idPrefix: "stgm-slack-app", platformOption: {
|
|
162
|
+
label: "Stigmer app",
|
|
163
|
+
hint: "Fastest — no setup, the bot is named Stigmer",
|
|
164
|
+
}, appHint: "Your app \u2014 your bot name and icon", emptyBody: _jsxs("p", { className: "text-xs text-muted-foreground", children: ["The platform", " ", _jsx("span", { className: "font-medium text-foreground", children: "Stigmer" }), " ", "app \u2014 no setup needed. Want the bot to carry your own name and icon, or several agents in one workspace?", " ", _jsx(RegisterChannelAppAffordance, { channelAppsHref: channelAppsHref, children: "Register a channel app" }), "."] }) })), alreadyServed.length > 0 && (_jsx(AlreadyServedNote, { botName: botName, channels: alreadyServed })), !channel && (_jsx(ToolCredentialsSection, { agent: agent, org: org, value: environmentRefs, onChange: setEnvironmentRefs, disabled: busy })), _jsx("p", { className: "text-sm text-muted-foreground", children: "When you continue, Slack asks which workspace to add the bot to \u2014 pick the one where your team should chat with this agent." }), _jsxs("p", { className: "text-sm text-muted-foreground", children: ["Members reach the agent by opening a direct message with", " ", _jsx("span", { className: "font-medium text-foreground", children: botName }), ", or typing @ in a channel and picking", " ", _jsx("span", { className: "font-medium text-foreground", children: botName }), " ", "from the list \u2014 it answers as", " ", _jsx("span", { className: "font-medium text-foreground", children: agentName }), "."] }), _jsxs("p", { className: "text-xs text-muted-foreground", children: ["Conversations from Slack are billed to", " ", _jsx("span", { className: "font-medium", children: org }), ". A workspace can host one agent per Slack app."] }), error && (_jsx(InstallRefusal, { error: error, channelAppsHref: channelAppsHref }))] })) }), _jsx("div", { className: "flex justify-end gap-2 border-t border-border px-5 py-3", children: installed || deploymentMode === "local" ? (_jsx(Button, { variant: "outline", size: "sm", onClick: onClose, children: installed ? "Done" : "Close" })) : (_jsxs(_Fragment, { children: [_jsx(Button, { variant: "ghost", size: "sm", onClick: onClose, disabled: busy, children: "Cancel" }), _jsx(Button, { variant: "primary", size: "sm", onClick: () => void handleConnect(), disabled: busy, icon: _jsx(SlackMarkIcon, { className: "size-3.5" }), "data-cursor-target": "dialog-connect-slack", children: error ? "Try again" : channel ? "Reconnect to Slack" : "Connect to Slack" })] })) })] }));
|
|
165
|
+
}
|
|
166
|
+
// ---------------------------------------------------------------------------
|
|
167
|
+
// Install refusal — guided for the duplicate-workspace reason
|
|
168
|
+
// ---------------------------------------------------------------------------
|
|
169
|
+
/**
|
|
170
|
+
* The reason code the server attaches (google.rpc.ErrorInfo, domain
|
|
171
|
+
* stigmer.ai) to a duplicate-workspace completeInstall refusal — see the
|
|
172
|
+
* completeInstall rpc comment for the vocabulary.
|
|
173
|
+
*/
|
|
174
|
+
const REASON_WORKSPACE_ALREADY_CONNECTED = "SLACK_WORKSPACE_ALREADY_CONNECTED";
|
|
175
|
+
/**
|
|
176
|
+
* Install-refusal rendering. The duplicate-workspace refusal is the one
|
|
177
|
+
* a user can act on from here, so it gets a guided treatment — names the
|
|
178
|
+
* occupied workspace (from the ErrorInfo metadata) and offers the
|
|
179
|
+
* register-a-channel-app path. Every other refusal (and any error from a
|
|
180
|
+
* server not attaching reasons) renders the server's copy verbatim — the
|
|
181
|
+
* server owns that vocabulary.
|
|
182
|
+
*/
|
|
183
|
+
function InstallRefusal({ error, channelAppsHref, }) {
|
|
184
|
+
const reason = getErrorReason(error);
|
|
185
|
+
if (reason?.reason !== REASON_WORKSPACE_ALREADY_CONNECTED) {
|
|
186
|
+
return _jsx(VerbatimRefusal, { error: error });
|
|
187
|
+
}
|
|
188
|
+
const team = reason.metadata.team_name || "This workspace";
|
|
189
|
+
return (_jsxs(RefusalBox, { children: [_jsxs("p", { children: [_jsx("span", { className: "font-medium", children: team }), " already hosts an agent through this app \u2014 a workspace hosts one agent per Slack app."] }), _jsxs("p", { children: ["To reach it with this agent, disconnect the existing channel, or", " ", _jsx(RegisterChannelAppAffordance, { channelAppsHref: channelAppsHref, children: "register a channel app" }), " ", "and connect through that instead."] })] }));
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Pre-OAuth advisory: the selected serving app already occupies these
|
|
193
|
+
* workspaces, matched on the exact key the database enforces —
|
|
194
|
+
* (workspace, serving app). Shown before the user spends a Slack OAuth
|
|
195
|
+
* round-trip discovering it. Best-effort by design: the list is bounded
|
|
196
|
+
* by the caller's visibility and cannot see other orgs' holds, so the
|
|
197
|
+
* copy warns rather than forbids.
|
|
198
|
+
*/
|
|
199
|
+
function AlreadyServedNote({ botName, channels, }) {
|
|
200
|
+
return (_jsx("div", { role: "status", className: "space-y-0.5 text-xs text-warning", children: channels.map((c) => {
|
|
201
|
+
const slack = c.status?.providerStatus?.case === "slack"
|
|
202
|
+
? c.status.providerStatus.value
|
|
203
|
+
: null;
|
|
204
|
+
const team = slack?.teamName || slack?.teamId || "a workspace";
|
|
205
|
+
const agent = c.spec?.agentRef?.slug || "another agent";
|
|
206
|
+
return (_jsxs("p", { children: [_jsx("span", { className: "font-medium", children: botName }), " already serves", " ", _jsx("span", { className: "font-medium", children: team }), " via ", agent, " \u2014 a workspace hosts one agent per app, so connect through a different channel app to reach it."] }, c.metadata?.id ?? team));
|
|
207
|
+
}) }));
|
|
208
|
+
}
|
|
209
|
+
// ---------------------------------------------------------------------------
|
|
210
|
+
// Flow progress — one row per phase, the active one live
|
|
211
|
+
// ---------------------------------------------------------------------------
|
|
212
|
+
const FLOW_STEPS = [
|
|
213
|
+
{ phase: "initiating", label: "Contacting Slack" },
|
|
214
|
+
{ phase: "awaiting-callback", label: "Waiting for your approval in the Slack window" },
|
|
215
|
+
{ phase: "completing", label: "Finalizing the connection" },
|
|
216
|
+
];
|
|
217
|
+
function FlowProgress({ phase, onCancel, }) {
|
|
218
|
+
const activeIndex = FLOW_STEPS.findIndex((s) => s.phase === phase);
|
|
219
|
+
return (_jsxs("div", { className: "space-y-3", "aria-live": "polite", children: [_jsx("ul", { className: "space-y-2", children: FLOW_STEPS.map((step, i) => {
|
|
220
|
+
const isActive = i === activeIndex;
|
|
221
|
+
const isDone = activeIndex > i;
|
|
222
|
+
return (_jsxs("li", { className: cn("flex items-center gap-2 text-sm", isActive
|
|
223
|
+
? "text-foreground"
|
|
224
|
+
: isDone
|
|
225
|
+
? "text-muted-foreground"
|
|
226
|
+
: "text-muted-foreground-subtle"), children: [isDone ? (_jsx(CheckIcon, { className: "size-3.5 shrink-0 text-success" })) : isActive ? (_jsx(Spinner, { className: "size-3.5 shrink-0" })) : (_jsx("span", { className: "size-3.5 shrink-0 rounded-full border border-border", "aria-hidden": "true" })), step.label] }, step.phase));
|
|
227
|
+
}) }), _jsx(Button, { variant: "ghost", size: "xs", onClick: onCancel, children: "Cancel" })] }));
|
|
228
|
+
}
|
|
229
|
+
// ---------------------------------------------------------------------------
|
|
230
|
+
// Installed summary — the success state with the observed Slack facts
|
|
231
|
+
// ---------------------------------------------------------------------------
|
|
232
|
+
function InstalledSummary({ channel, agentName, botName, }) {
|
|
233
|
+
const slack = channel.status?.providerStatus?.case === "slack"
|
|
234
|
+
? channel.status.providerStatus.value
|
|
235
|
+
: null;
|
|
236
|
+
return (_jsxs("div", { className: "space-y-2", role: "status", children: [_jsxs("div", { className: "flex items-center gap-2 text-sm font-medium text-foreground", children: [_jsx(CheckIcon, { className: "size-4 text-success" }), "Connected", slack?.teamName ? ` to ${slack.teamName}` : ""] }), _jsxs("p", { className: "text-sm text-muted-foreground", children: ["In Slack, open a direct message with", " ", _jsx("span", { className: "font-medium text-foreground", children: botName }), " \u2014 or type @ in any channel and pick", " ", _jsx("span", { className: "font-medium text-foreground", children: botName }), " from the list \u2014 then ask your question. Answers come from", " ", _jsx("span", { className: "font-medium text-foreground", children: agentName }), "."] })] }));
|
|
237
|
+
}
|
|
238
|
+
//# sourceMappingURL=ConnectSlackDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConnectSlackDialog.js","sourceRoot":"","sources":["../../src/channel/ConnectSlackDialog.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import type { Agent } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/api_pb";
|
|
2
|
+
import type { AgentChannel } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/api_pb";
|
|
3
|
+
/** Props for {@link ConnectWhatsAppDialog}. */
|
|
4
|
+
export interface ConnectWhatsAppDialogProps {
|
|
5
|
+
/** Whether the dialog is open. */
|
|
6
|
+
readonly open: boolean;
|
|
7
|
+
/** Called when the dialog requests an open-state change. */
|
|
8
|
+
readonly onOpenChange: (open: boolean) => void;
|
|
9
|
+
/** The agent the channel connects. */
|
|
10
|
+
readonly agent: Agent;
|
|
11
|
+
/**
|
|
12
|
+
* An existing channel to (re)connect — a `pending_install` channel
|
|
13
|
+
* whose install never completed. Unlike Slack's frozen reconnect, the
|
|
14
|
+
* number and serving app stay editable here: a failed direct install
|
|
15
|
+
* usually means one of them is wrong, and both are server-mutable
|
|
16
|
+
* while the channel isn't installed. When omitted, the dialog opens in
|
|
17
|
+
* **create mode**.
|
|
18
|
+
*/
|
|
19
|
+
readonly channel?: AgentChannel | null;
|
|
20
|
+
/**
|
|
21
|
+
* Called after the channel set changes (created, or install completed).
|
|
22
|
+
* Hosts typically pass the channel list's `refetch`.
|
|
23
|
+
*/
|
|
24
|
+
readonly onChannelsChanged?: () => void;
|
|
25
|
+
/**
|
|
26
|
+
* When `false`, renders as an in-flow open dialog instead of a
|
|
27
|
+
* top-layer modal — no `showModal()`, no backdrop, no focus trap.
|
|
28
|
+
* For embedding the dialog in a constrained surface (documentation
|
|
29
|
+
* demos, visual tests). Interactive hosts keep the default.
|
|
30
|
+
* @default true
|
|
31
|
+
*/
|
|
32
|
+
readonly modal?: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Where the host manages Channel Apps (the console passes
|
|
35
|
+
* `/settings/channel-apps`). When provided, the serving-app section
|
|
36
|
+
* and install refusals render a "Register a channel app" link there.
|
|
37
|
+
* SDK components never hardcode host routes — hosts inject the
|
|
38
|
+
* destination. Absent, the affordance degrades to plain guidance text.
|
|
39
|
+
*/
|
|
40
|
+
readonly channelAppsHref?: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* The connect flow for a WhatsApp channel: create the
|
|
44
|
+
* {@link AgentChannel} (create mode), then run the direct install — one
|
|
45
|
+
* server call that verifies the declared phone number against Meta's
|
|
46
|
+
* Graph API through the selected channel app's credentials (DD-WA-1).
|
|
47
|
+
* No consent popup, no callback route.
|
|
48
|
+
*
|
|
49
|
+
* WhatsApp is BYO-only (DD-WA-2): there is no platform Meta app, so a
|
|
50
|
+
* serving channel app is required — with none registered, the flow
|
|
51
|
+
* blocks on registering one first. The declared phone number ID is
|
|
52
|
+
* likewise required: the install proves it, and an empty value can only
|
|
53
|
+
* fail there.
|
|
54
|
+
*
|
|
55
|
+
* Requires Stigmer Cloud — on a `local` (OSS) backend the flow is
|
|
56
|
+
* preempted with a cloud-feature notice, matching the server's
|
|
57
|
+
* FAILED_PRECONDITION refusal. Install refusals render the server's
|
|
58
|
+
* copy verbatim except the duplicate-number refusal, which gets a
|
|
59
|
+
* guided treatment.
|
|
60
|
+
*
|
|
61
|
+
* Built on the native `<dialog>` element for focus trapping and escape
|
|
62
|
+
* handling, matching the SDK's modal convention
|
|
63
|
+
* ({@link ConnectSlackDialog}). All visual properties flow through
|
|
64
|
+
* `--stgm-*` design tokens.
|
|
65
|
+
*
|
|
66
|
+
* Most hosts mount it via {@link AgentChannelsPanel} (the Channels tab).
|
|
67
|
+
* Render it directly only when you own the open-state.
|
|
68
|
+
*/
|
|
69
|
+
export declare function ConnectWhatsAppDialog({ open, onOpenChange, agent, channel, onChannelsChanged, modal, channelAppsHref, }: ConnectWhatsAppDialogProps): import("react/jsx-runtime").JSX.Element;
|
|
70
|
+
//# sourceMappingURL=ConnectWhatsAppDialog.d.ts.map
|