@stigmer/react 3.1.17 → 3.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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/useNewSessionFlow.d.ts +4 -0
- package/session/useNewSessionFlow.d.ts.map +1 -1
- package/session/useNewSessionFlow.js +33 -4
- package/session/useNewSessionFlow.js.map +1 -1
- package/session/usePersistedModel.d.ts +11 -0
- package/session/usePersistedModel.d.ts.map +1 -1
- package/session/usePersistedModel.js +14 -3
- package/session/usePersistedModel.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/useSessionPageFlow.d.ts.map +1 -1
- package/session/useSessionPageFlow.js +12 -1
- package/session/useSessionPageFlow.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__/useNewSessionFlow.test.tsx +64 -0
- package/src/session/__tests__/usePersistedModel.test.tsx +36 -0
- package/src/session/__tests__/useSessionPageFlow.guest.test.tsx +48 -1
- 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/useNewSessionFlow.ts +35 -4
- package/src/session/usePersistedModel.ts +25 -3
- package/src/session/useSessionFileChanges.ts +12 -153
- package/src/session/useSessionPageFlow.ts +13 -2
- 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,611 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { useCallback, useMemo, useRef, useState } from "react";
|
|
4
|
+
import { cn } from "@stigmer/theme";
|
|
5
|
+
import { getErrorReason, type ResourceRef } from "@stigmer/sdk";
|
|
6
|
+
import type { Agent } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/api_pb";
|
|
7
|
+
import type { AgentChannel } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/api_pb";
|
|
8
|
+
import { AgentChannelInstallState } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/status_pb";
|
|
9
|
+
import { Button } from "../button/Button.js";
|
|
10
|
+
import { useChannelAppList } from "../channel-app/useChannelAppList.js";
|
|
11
|
+
import { useDeploymentMode } from "../deployment-mode.js";
|
|
12
|
+
import { CloudFeatureNotice } from "../internal/CloudFeatureNotice.js";
|
|
13
|
+
import {
|
|
14
|
+
RegisterChannelAppAffordance,
|
|
15
|
+
ServingAppSection,
|
|
16
|
+
} from "./connect/ServingAppSection.js";
|
|
17
|
+
import { ToolCredentialsSection } from "./connect/ToolCredentialsSection.js";
|
|
18
|
+
import { RefusalBox, VerbatimRefusal } from "./connect/VerbatimRefusal.js";
|
|
19
|
+
import { CheckIcon, CloseIcon, Spinner } from "./connect/icons.js";
|
|
20
|
+
import { useConnectSlackChannel, type SlackConnectPhase } from "./useConnectSlackChannel.js";
|
|
21
|
+
import { useCreateAgentChannel } from "./useCreateAgentChannel.js";
|
|
22
|
+
import { useOrgAgentChannelList } from "./useOrgAgentChannelList.js";
|
|
23
|
+
import { SlackMarkIcon } from "./SlackMarkIcon.js";
|
|
24
|
+
|
|
25
|
+
/** Props for {@link ConnectSlackDialog}. */
|
|
26
|
+
export interface ConnectSlackDialogProps {
|
|
27
|
+
/** Whether the dialog is open. */
|
|
28
|
+
readonly open: boolean;
|
|
29
|
+
/** Called when the dialog requests an open-state change. */
|
|
30
|
+
readonly onOpenChange: (open: boolean) => void;
|
|
31
|
+
/** The agent the channel connects. */
|
|
32
|
+
readonly agent: Agent;
|
|
33
|
+
/**
|
|
34
|
+
* An existing channel to (re)connect — a `pending_install` channel
|
|
35
|
+
* whose install never completed, or a `revoked` one being re-installed.
|
|
36
|
+
* When omitted, the dialog opens in **create mode**: a name step
|
|
37
|
+
* creates a new channel, then runs the install flow on it.
|
|
38
|
+
*/
|
|
39
|
+
readonly channel?: AgentChannel | null;
|
|
40
|
+
/**
|
|
41
|
+
* Called after the channel set changes (created, or install completed).
|
|
42
|
+
* Hosts typically pass the channel list's `refetch`.
|
|
43
|
+
*/
|
|
44
|
+
readonly onChannelsChanged?: () => void;
|
|
45
|
+
/**
|
|
46
|
+
* When `false`, renders as an in-flow open dialog instead of a
|
|
47
|
+
* top-layer modal — no `showModal()`, no backdrop, no focus trap.
|
|
48
|
+
* For embedding the dialog in a constrained surface (documentation
|
|
49
|
+
* demos, visual tests). Interactive hosts keep the default.
|
|
50
|
+
* @default true
|
|
51
|
+
*/
|
|
52
|
+
readonly modal?: boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Where the host manages Channel Apps (the console passes
|
|
55
|
+
* `/settings/channel-apps`). When provided, the "Connect as" section
|
|
56
|
+
* and install refusals render a "Register a channel app" link there.
|
|
57
|
+
* SDK components never hardcode host routes — hosts inject the
|
|
58
|
+
* destination (the `onConnectExternal` delegate convention). Absent,
|
|
59
|
+
* the affordance degrades to plain guidance text.
|
|
60
|
+
*/
|
|
61
|
+
readonly channelAppsHref?: string;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* The connect flow for a Slack channel: create the {@link AgentChannel}
|
|
66
|
+
* (create mode), then run the "Add to Slack" OAuth install in a popup
|
|
67
|
+
* and report progress phase by phase.
|
|
68
|
+
*
|
|
69
|
+
* Requires a deployment with platform Slack app credentials — on a
|
|
70
|
+
* `local` (OSS) backend the flow is preempted with a cloud-feature
|
|
71
|
+
* notice, matching the server's FAILED_PRECONDITION refusal. Install
|
|
72
|
+
* refusals (unconfigured deployment, duplicate workspace, Enterprise
|
|
73
|
+
* Grid) render the server's copy verbatim — the server owns that
|
|
74
|
+
* vocabulary.
|
|
75
|
+
*
|
|
76
|
+
* Built on the native `<dialog>` element for focus trapping and escape
|
|
77
|
+
* handling, matching the SDK's modal convention ({@link ShareAgentDialog}).
|
|
78
|
+
* All visual properties flow through `--stgm-*` design tokens.
|
|
79
|
+
*
|
|
80
|
+
* Most hosts mount it via {@link AgentChannelsPanel} (the Channels tab).
|
|
81
|
+
* Render it directly only when you own the open-state.
|
|
82
|
+
*/
|
|
83
|
+
export function ConnectSlackDialog({
|
|
84
|
+
open,
|
|
85
|
+
onOpenChange,
|
|
86
|
+
agent,
|
|
87
|
+
channel,
|
|
88
|
+
onChannelsChanged,
|
|
89
|
+
modal = true,
|
|
90
|
+
channelAppsHref,
|
|
91
|
+
}: ConnectSlackDialogProps) {
|
|
92
|
+
const dialogRef = useRef<HTMLDialogElement>(null);
|
|
93
|
+
|
|
94
|
+
const handleClose = useCallback(() => {
|
|
95
|
+
dialogRef.current?.close();
|
|
96
|
+
onOpenChange(false);
|
|
97
|
+
}, [onOpenChange]);
|
|
98
|
+
|
|
99
|
+
// Sync native dialog open state (matches the SDK dialog convention).
|
|
100
|
+
// Non-modal hosts pass `open` as a plain attribute instead — the dialog
|
|
101
|
+
// renders in-flow with no top layer to manage.
|
|
102
|
+
const prevOpenRef = useRef(false);
|
|
103
|
+
if (modal && open !== prevOpenRef.current) {
|
|
104
|
+
prevOpenRef.current = open;
|
|
105
|
+
if (open) {
|
|
106
|
+
requestAnimationFrame(() => {
|
|
107
|
+
if (dialogRef.current && !dialogRef.current.open) {
|
|
108
|
+
dialogRef.current.showModal();
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
} else if (dialogRef.current?.open) {
|
|
112
|
+
dialogRef.current.close();
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
return (
|
|
117
|
+
<dialog
|
|
118
|
+
ref={dialogRef}
|
|
119
|
+
open={modal ? undefined : open}
|
|
120
|
+
onClose={handleClose}
|
|
121
|
+
className={cn(
|
|
122
|
+
"w-full max-w-md rounded-xl border border-border bg-popover p-0 shadow-xl",
|
|
123
|
+
modal ? "fixed inset-0 m-auto backdrop:bg-black/50" : "relative",
|
|
124
|
+
)}
|
|
125
|
+
aria-labelledby="connect-slack-title"
|
|
126
|
+
>
|
|
127
|
+
{/* Body mounts only while open so its flow state resets per
|
|
128
|
+
session — reopening the dialog never resumes a stale flow. */}
|
|
129
|
+
{open && (
|
|
130
|
+
<ConnectSlackDialogBody
|
|
131
|
+
agent={agent}
|
|
132
|
+
channel={channel ?? null}
|
|
133
|
+
onChannelsChanged={onChannelsChanged}
|
|
134
|
+
onClose={handleClose}
|
|
135
|
+
channelAppsHref={channelAppsHref}
|
|
136
|
+
/>
|
|
137
|
+
)}
|
|
138
|
+
</dialog>
|
|
139
|
+
);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
// ---------------------------------------------------------------------------
|
|
143
|
+
// Dialog body — create step (optional) + install flow
|
|
144
|
+
// ---------------------------------------------------------------------------
|
|
145
|
+
|
|
146
|
+
interface ConnectSlackDialogBodyProps {
|
|
147
|
+
readonly agent: Agent;
|
|
148
|
+
readonly channel: AgentChannel | null;
|
|
149
|
+
readonly onChannelsChanged?: () => void;
|
|
150
|
+
readonly onClose: () => void;
|
|
151
|
+
readonly channelAppsHref?: string;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
function ConnectSlackDialogBody({
|
|
155
|
+
agent,
|
|
156
|
+
channel,
|
|
157
|
+
onChannelsChanged,
|
|
158
|
+
onClose,
|
|
159
|
+
channelAppsHref,
|
|
160
|
+
}: ConnectSlackDialogBodyProps) {
|
|
161
|
+
const deploymentMode = useDeploymentMode();
|
|
162
|
+
const agentName = agent.metadata?.name || agent.metadata?.slug || "this agent";
|
|
163
|
+
const org = agent.metadata?.org ?? "";
|
|
164
|
+
|
|
165
|
+
const { createChannel, isPending: isCreating } = useCreateAgentChannel();
|
|
166
|
+
const slack = useConnectSlackChannel();
|
|
167
|
+
|
|
168
|
+
const [name, setName] = useState(() =>
|
|
169
|
+
channel ? (channel.metadata?.name ?? "") : `${agentName} Slack`,
|
|
170
|
+
);
|
|
171
|
+
// Tool credentials bound at connect time (create mode only — a
|
|
172
|
+
// reconnect keeps the channel's existing bindings untouched; edits go
|
|
173
|
+
// through the channel card's credentials dialog).
|
|
174
|
+
const [environmentRefs, setEnvironmentRefs] = useState<ResourceRef[]>([]);
|
|
175
|
+
// The serving app (create mode only): null = the platform Stigmer app;
|
|
176
|
+
// a ref = one of the org's own channel apps (BYO — the bot carries that
|
|
177
|
+
// app's name, and each app is its own bot identity). A reconnect keeps
|
|
178
|
+
// the channel's existing binding — an installed channel's app_ref is
|
|
179
|
+
// frozen server-side.
|
|
180
|
+
const [appRef, setAppRef] = useState<ResourceRef | null>(null);
|
|
181
|
+
const [installed, setInstalled] = useState<AgentChannel | null>(null);
|
|
182
|
+
const [error, setError] = useState<Error | null>(null);
|
|
183
|
+
|
|
184
|
+
// The org's channel apps, fetched once here so the serving-app picker,
|
|
185
|
+
// the addressing copy, and the advisory all read one consistent list.
|
|
186
|
+
const { channelApps } = useChannelAppList(org || null);
|
|
187
|
+
const slackApps = useMemo(
|
|
188
|
+
() => channelApps.filter((app) => app.spec?.providerConfig?.case === "slack"),
|
|
189
|
+
[channelApps],
|
|
190
|
+
);
|
|
191
|
+
|
|
192
|
+
// The app the install will (or did) go through: the picker's choice in
|
|
193
|
+
// create mode, the frozen spec.app_ref on a reconnect. null = platform.
|
|
194
|
+
const effectiveAppRef = channel
|
|
195
|
+
? channel.spec?.appRef?.slug
|
|
196
|
+
? { org: channel.spec.appRef.org || org, slug: channel.spec.appRef.slug }
|
|
197
|
+
: null
|
|
198
|
+
: appRef;
|
|
199
|
+
const selectedApp = effectiveAppRef
|
|
200
|
+
? slackApps.find((app) => app.metadata?.slug === effectiveAppRef.slug) ?? null
|
|
201
|
+
: null;
|
|
202
|
+
// What members type after "@" in Slack. App-level, not agent-level: the
|
|
203
|
+
// platform app's bot is "Stigmer"; a BYO app's bot carries the name its
|
|
204
|
+
// manifest declared — which the registration form seeded from the
|
|
205
|
+
// ChannelApp's own name.
|
|
206
|
+
const botName = effectiveAppRef
|
|
207
|
+
? selectedApp?.metadata?.name || effectiveAppRef.slug
|
|
208
|
+
: "Stigmer";
|
|
209
|
+
|
|
210
|
+
// Workspaces the selected serving app already occupies, matched on the
|
|
211
|
+
// same key the database enforces uniqueness on: (team, channel app).
|
|
212
|
+
// Advisory only — the list is permission-bounded, and other orgs'
|
|
213
|
+
// holds are invisible; completeInstall stays the arbiter.
|
|
214
|
+
const advisoryActive = deploymentMode === "cloud" && !channel && !installed;
|
|
215
|
+
const { channels: orgChannels } = useOrgAgentChannelList(
|
|
216
|
+
advisoryActive && org ? org : null,
|
|
217
|
+
);
|
|
218
|
+
const alreadyServed = useMemo(() => {
|
|
219
|
+
// Platform app installs stamp an empty channel_app_id.
|
|
220
|
+
const selectedAppId = effectiveAppRef ? selectedApp?.metadata?.id : "";
|
|
221
|
+
if (selectedAppId === undefined) return [];
|
|
222
|
+
return orgChannels.filter(
|
|
223
|
+
(c) =>
|
|
224
|
+
c.status?.installState === AgentChannelInstallState.installed &&
|
|
225
|
+
c.status?.providerStatus?.case === "slack" &&
|
|
226
|
+
c.status.providerStatus.value.channelAppId === selectedAppId,
|
|
227
|
+
);
|
|
228
|
+
}, [orgChannels, effectiveAppRef, selectedApp]);
|
|
229
|
+
|
|
230
|
+
// One click drives the whole journey: (create →) initiate → popup →
|
|
231
|
+
// complete. It must stay a single synchronous entry point — the popup
|
|
232
|
+
// opens inside connect(), and browsers only allow that from a
|
|
233
|
+
// user-gesture call stack.
|
|
234
|
+
const handleConnect = useCallback(async () => {
|
|
235
|
+
setError(null);
|
|
236
|
+
try {
|
|
237
|
+
let target = channel;
|
|
238
|
+
if (!target) {
|
|
239
|
+
target = await createChannel({
|
|
240
|
+
name: name.trim() || `${agentName} Slack`,
|
|
241
|
+
org,
|
|
242
|
+
agentRef: {
|
|
243
|
+
org,
|
|
244
|
+
slug: agent.metadata?.slug ?? "",
|
|
245
|
+
},
|
|
246
|
+
enabled: true,
|
|
247
|
+
slack: {},
|
|
248
|
+
...(appRef ? { appRef } : {}),
|
|
249
|
+
...(environmentRefs.length > 0 ? { environmentRefs } : {}),
|
|
250
|
+
});
|
|
251
|
+
// The channel now exists even if the install below fails or is
|
|
252
|
+
// abandoned — surface it in the list either way.
|
|
253
|
+
onChannelsChanged?.();
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
const result = await slack.connect(target.metadata?.id ?? "");
|
|
257
|
+
setInstalled(result);
|
|
258
|
+
onChannelsChanged?.();
|
|
259
|
+
} catch (err) {
|
|
260
|
+
// Cancellation is a user decision, not a failure — the hook keeps
|
|
261
|
+
// error null for it; everything else renders below.
|
|
262
|
+
setError(slack.error ?? (err instanceof Error ? err : new Error(String(err))));
|
|
263
|
+
}
|
|
264
|
+
}, [agent, agentName, appRef, channel, createChannel, environmentRefs, name, org, onChannelsChanged, slack]);
|
|
265
|
+
|
|
266
|
+
const handleCancel = useCallback(() => {
|
|
267
|
+
slack.clearError();
|
|
268
|
+
setError(null);
|
|
269
|
+
}, [slack]);
|
|
270
|
+
|
|
271
|
+
const busy = isCreating || slack.isInProgress;
|
|
272
|
+
|
|
273
|
+
return (
|
|
274
|
+
<div className="flex flex-col">
|
|
275
|
+
{/* Header */}
|
|
276
|
+
<div className="flex items-start justify-between gap-3 border-b border-border px-5 py-4">
|
|
277
|
+
<div className="flex items-center gap-2.5">
|
|
278
|
+
<SlackMarkIcon className="size-5 text-foreground" />
|
|
279
|
+
<h2 id="connect-slack-title" className="text-sm font-semibold text-foreground">
|
|
280
|
+
{channel ? "Reconnect to Slack" : "Connect to Slack"}
|
|
281
|
+
</h2>
|
|
282
|
+
</div>
|
|
283
|
+
<button
|
|
284
|
+
type="button"
|
|
285
|
+
onClick={onClose}
|
|
286
|
+
aria-label="Close dialog"
|
|
287
|
+
className={cn(
|
|
288
|
+
"rounded p-1 text-muted-foreground",
|
|
289
|
+
"hover:bg-accent-hover hover:text-foreground",
|
|
290
|
+
"focus:outline-none focus:ring-1 focus:ring-ring",
|
|
291
|
+
)}
|
|
292
|
+
>
|
|
293
|
+
<CloseIcon />
|
|
294
|
+
</button>
|
|
295
|
+
</div>
|
|
296
|
+
|
|
297
|
+
<div className="space-y-4 px-5 py-4">
|
|
298
|
+
{deploymentMode === "local" ? (
|
|
299
|
+
// Preempt the doomed flow: the OSS backend answers every install
|
|
300
|
+
// with FAILED_PRECONDITION, so don't open a popup destined to fail.
|
|
301
|
+
<CloudFeatureNotice>
|
|
302
|
+
Channel installs require Stigmer Cloud. The local backend
|
|
303
|
+
manages channel configuration, but connecting to Slack uses the
|
|
304
|
+
platform's hosted Slack app.
|
|
305
|
+
</CloudFeatureNotice>
|
|
306
|
+
) : installed ? (
|
|
307
|
+
<InstalledSummary
|
|
308
|
+
channel={installed}
|
|
309
|
+
agentName={agentName}
|
|
310
|
+
botName={botName}
|
|
311
|
+
/>
|
|
312
|
+
) : busy ? (
|
|
313
|
+
<FlowProgress phase={slack.phase} onCancel={handleCancel} />
|
|
314
|
+
) : (
|
|
315
|
+
<>
|
|
316
|
+
{!channel && (
|
|
317
|
+
<label className="block">
|
|
318
|
+
<span className="mb-1.5 block text-xs font-medium text-foreground">
|
|
319
|
+
Channel name
|
|
320
|
+
</span>
|
|
321
|
+
<input
|
|
322
|
+
type="text"
|
|
323
|
+
value={name}
|
|
324
|
+
onChange={(e) => setName(e.target.value)}
|
|
325
|
+
disabled={busy}
|
|
326
|
+
className={cn(
|
|
327
|
+
"w-full rounded-md border border-input bg-background px-3 py-1.5",
|
|
328
|
+
"text-sm text-foreground placeholder:text-muted-foreground",
|
|
329
|
+
"focus:outline-none focus:ring-1 focus:ring-ring",
|
|
330
|
+
)}
|
|
331
|
+
/>
|
|
332
|
+
<span className="mt-1 block text-xs text-muted-foreground">
|
|
333
|
+
Names the connection in Stigmer — pick something that
|
|
334
|
+
identifies the workspace if you connect more than one.
|
|
335
|
+
</span>
|
|
336
|
+
</label>
|
|
337
|
+
)}
|
|
338
|
+
|
|
339
|
+
{!channel && (
|
|
340
|
+
<ServingAppSection
|
|
341
|
+
org={org}
|
|
342
|
+
apps={slackApps}
|
|
343
|
+
value={appRef}
|
|
344
|
+
onChange={setAppRef}
|
|
345
|
+
disabled={busy}
|
|
346
|
+
channelAppsHref={channelAppsHref}
|
|
347
|
+
idPrefix="stgm-slack-app"
|
|
348
|
+
platformOption={{
|
|
349
|
+
label: "Stigmer app",
|
|
350
|
+
hint: "Fastest — no setup, the bot is named Stigmer",
|
|
351
|
+
}}
|
|
352
|
+
appHint="Your app — your bot name and icon"
|
|
353
|
+
emptyBody={
|
|
354
|
+
<p className="text-xs text-muted-foreground">
|
|
355
|
+
The platform{" "}
|
|
356
|
+
<span className="font-medium text-foreground">Stigmer</span>{" "}
|
|
357
|
+
app — no setup needed. Want the bot to carry your own name
|
|
358
|
+
and icon, or several agents in one workspace?{" "}
|
|
359
|
+
<RegisterChannelAppAffordance channelAppsHref={channelAppsHref}>
|
|
360
|
+
Register a channel app
|
|
361
|
+
</RegisterChannelAppAffordance>
|
|
362
|
+
.
|
|
363
|
+
</p>
|
|
364
|
+
}
|
|
365
|
+
/>
|
|
366
|
+
)}
|
|
367
|
+
|
|
368
|
+
{alreadyServed.length > 0 && (
|
|
369
|
+
<AlreadyServedNote botName={botName} channels={alreadyServed} />
|
|
370
|
+
)}
|
|
371
|
+
|
|
372
|
+
{!channel && (
|
|
373
|
+
<ToolCredentialsSection
|
|
374
|
+
agent={agent}
|
|
375
|
+
org={org}
|
|
376
|
+
value={environmentRefs}
|
|
377
|
+
onChange={setEnvironmentRefs}
|
|
378
|
+
disabled={busy}
|
|
379
|
+
/>
|
|
380
|
+
)}
|
|
381
|
+
|
|
382
|
+
<p className="text-sm text-muted-foreground">
|
|
383
|
+
When you continue, Slack asks which workspace to add the bot
|
|
384
|
+
to — pick the one where your team should chat with this agent.
|
|
385
|
+
</p>
|
|
386
|
+
<p className="text-sm text-muted-foreground">
|
|
387
|
+
Members reach the agent by opening a direct message with{" "}
|
|
388
|
+
<span className="font-medium text-foreground">{botName}</span>,
|
|
389
|
+
or typing @ in a channel and picking{" "}
|
|
390
|
+
<span className="font-medium text-foreground">{botName}</span>{" "}
|
|
391
|
+
from the list — it answers as{" "}
|
|
392
|
+
<span className="font-medium text-foreground">{agentName}</span>.
|
|
393
|
+
</p>
|
|
394
|
+
<p className="text-xs text-muted-foreground">
|
|
395
|
+
Conversations from Slack are billed to{" "}
|
|
396
|
+
<span className="font-medium">{org}</span>. A workspace can
|
|
397
|
+
host one agent per Slack app.
|
|
398
|
+
</p>
|
|
399
|
+
|
|
400
|
+
{error && (
|
|
401
|
+
<InstallRefusal error={error} channelAppsHref={channelAppsHref} />
|
|
402
|
+
)}
|
|
403
|
+
</>
|
|
404
|
+
)}
|
|
405
|
+
</div>
|
|
406
|
+
|
|
407
|
+
{/* Footer */}
|
|
408
|
+
<div className="flex justify-end gap-2 border-t border-border px-5 py-3">
|
|
409
|
+
{installed || deploymentMode === "local" ? (
|
|
410
|
+
<Button variant="outline" size="sm" onClick={onClose}>
|
|
411
|
+
{installed ? "Done" : "Close"}
|
|
412
|
+
</Button>
|
|
413
|
+
) : (
|
|
414
|
+
<>
|
|
415
|
+
<Button variant="ghost" size="sm" onClick={onClose} disabled={busy}>
|
|
416
|
+
Cancel
|
|
417
|
+
</Button>
|
|
418
|
+
<Button
|
|
419
|
+
variant="primary"
|
|
420
|
+
size="sm"
|
|
421
|
+
onClick={() => void handleConnect()}
|
|
422
|
+
disabled={busy}
|
|
423
|
+
icon={<SlackMarkIcon className="size-3.5" />}
|
|
424
|
+
data-cursor-target="dialog-connect-slack"
|
|
425
|
+
>
|
|
426
|
+
{error ? "Try again" : channel ? "Reconnect to Slack" : "Connect to Slack"}
|
|
427
|
+
</Button>
|
|
428
|
+
</>
|
|
429
|
+
)}
|
|
430
|
+
</div>
|
|
431
|
+
</div>
|
|
432
|
+
);
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
// ---------------------------------------------------------------------------
|
|
436
|
+
// Install refusal — guided for the duplicate-workspace reason
|
|
437
|
+
// ---------------------------------------------------------------------------
|
|
438
|
+
|
|
439
|
+
/**
|
|
440
|
+
* The reason code the server attaches (google.rpc.ErrorInfo, domain
|
|
441
|
+
* stigmer.ai) to a duplicate-workspace completeInstall refusal — see the
|
|
442
|
+
* completeInstall rpc comment for the vocabulary.
|
|
443
|
+
*/
|
|
444
|
+
const REASON_WORKSPACE_ALREADY_CONNECTED = "SLACK_WORKSPACE_ALREADY_CONNECTED";
|
|
445
|
+
|
|
446
|
+
/**
|
|
447
|
+
* Install-refusal rendering. The duplicate-workspace refusal is the one
|
|
448
|
+
* a user can act on from here, so it gets a guided treatment — names the
|
|
449
|
+
* occupied workspace (from the ErrorInfo metadata) and offers the
|
|
450
|
+
* register-a-channel-app path. Every other refusal (and any error from a
|
|
451
|
+
* server not attaching reasons) renders the server's copy verbatim — the
|
|
452
|
+
* server owns that vocabulary.
|
|
453
|
+
*/
|
|
454
|
+
function InstallRefusal({
|
|
455
|
+
error,
|
|
456
|
+
channelAppsHref,
|
|
457
|
+
}: {
|
|
458
|
+
readonly error: Error;
|
|
459
|
+
readonly channelAppsHref?: string;
|
|
460
|
+
}) {
|
|
461
|
+
const reason = getErrorReason(error);
|
|
462
|
+
if (reason?.reason !== REASON_WORKSPACE_ALREADY_CONNECTED) {
|
|
463
|
+
return <VerbatimRefusal error={error} />;
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
const team = reason.metadata.team_name || "This workspace";
|
|
467
|
+
return (
|
|
468
|
+
<RefusalBox>
|
|
469
|
+
<p>
|
|
470
|
+
<span className="font-medium">{team}</span> already hosts an agent
|
|
471
|
+
through this app — a workspace hosts one agent per Slack app.
|
|
472
|
+
</p>
|
|
473
|
+
<p>
|
|
474
|
+
To reach it with this agent, disconnect the existing channel, or{" "}
|
|
475
|
+
<RegisterChannelAppAffordance channelAppsHref={channelAppsHref}>
|
|
476
|
+
register a channel app
|
|
477
|
+
</RegisterChannelAppAffordance>{" "}
|
|
478
|
+
and connect through that instead.
|
|
479
|
+
</p>
|
|
480
|
+
</RefusalBox>
|
|
481
|
+
);
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
/**
|
|
485
|
+
* Pre-OAuth advisory: the selected serving app already occupies these
|
|
486
|
+
* workspaces, matched on the exact key the database enforces —
|
|
487
|
+
* (workspace, serving app). Shown before the user spends a Slack OAuth
|
|
488
|
+
* round-trip discovering it. Best-effort by design: the list is bounded
|
|
489
|
+
* by the caller's visibility and cannot see other orgs' holds, so the
|
|
490
|
+
* copy warns rather than forbids.
|
|
491
|
+
*/
|
|
492
|
+
function AlreadyServedNote({
|
|
493
|
+
botName,
|
|
494
|
+
channels,
|
|
495
|
+
}: {
|
|
496
|
+
readonly botName: string;
|
|
497
|
+
readonly channels: readonly AgentChannel[];
|
|
498
|
+
}) {
|
|
499
|
+
return (
|
|
500
|
+
<div role="status" className="space-y-0.5 text-xs text-warning">
|
|
501
|
+
{channels.map((c) => {
|
|
502
|
+
const slack =
|
|
503
|
+
c.status?.providerStatus?.case === "slack"
|
|
504
|
+
? c.status.providerStatus.value
|
|
505
|
+
: null;
|
|
506
|
+
const team = slack?.teamName || slack?.teamId || "a workspace";
|
|
507
|
+
const agent = c.spec?.agentRef?.slug || "another agent";
|
|
508
|
+
return (
|
|
509
|
+
<p key={c.metadata?.id ?? team}>
|
|
510
|
+
<span className="font-medium">{botName}</span> already serves{" "}
|
|
511
|
+
<span className="font-medium">{team}</span> via {agent} — a
|
|
512
|
+
workspace hosts one agent per app, so connect through a
|
|
513
|
+
different channel app to reach it.
|
|
514
|
+
</p>
|
|
515
|
+
);
|
|
516
|
+
})}
|
|
517
|
+
</div>
|
|
518
|
+
);
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
// ---------------------------------------------------------------------------
|
|
522
|
+
// Flow progress — one row per phase, the active one live
|
|
523
|
+
// ---------------------------------------------------------------------------
|
|
524
|
+
|
|
525
|
+
const FLOW_STEPS: readonly { readonly phase: SlackConnectPhase; readonly label: string }[] = [
|
|
526
|
+
{ phase: "initiating", label: "Contacting Slack" },
|
|
527
|
+
{ phase: "awaiting-callback", label: "Waiting for your approval in the Slack window" },
|
|
528
|
+
{ phase: "completing", label: "Finalizing the connection" },
|
|
529
|
+
];
|
|
530
|
+
|
|
531
|
+
function FlowProgress({
|
|
532
|
+
phase,
|
|
533
|
+
onCancel,
|
|
534
|
+
}: {
|
|
535
|
+
readonly phase: SlackConnectPhase;
|
|
536
|
+
readonly onCancel: () => void;
|
|
537
|
+
}) {
|
|
538
|
+
const activeIndex = FLOW_STEPS.findIndex((s) => s.phase === phase);
|
|
539
|
+
|
|
540
|
+
return (
|
|
541
|
+
<div className="space-y-3" aria-live="polite">
|
|
542
|
+
<ul className="space-y-2">
|
|
543
|
+
{FLOW_STEPS.map((step, i) => {
|
|
544
|
+
const isActive = i === activeIndex;
|
|
545
|
+
const isDone = activeIndex > i;
|
|
546
|
+
return (
|
|
547
|
+
<li
|
|
548
|
+
key={step.phase}
|
|
549
|
+
className={cn(
|
|
550
|
+
"flex items-center gap-2 text-sm",
|
|
551
|
+
isActive
|
|
552
|
+
? "text-foreground"
|
|
553
|
+
: isDone
|
|
554
|
+
? "text-muted-foreground"
|
|
555
|
+
: "text-muted-foreground-subtle",
|
|
556
|
+
)}
|
|
557
|
+
>
|
|
558
|
+
{isDone ? (
|
|
559
|
+
<CheckIcon className="size-3.5 shrink-0 text-success" />
|
|
560
|
+
) : isActive ? (
|
|
561
|
+
<Spinner className="size-3.5 shrink-0" />
|
|
562
|
+
) : (
|
|
563
|
+
<span className="size-3.5 shrink-0 rounded-full border border-border" aria-hidden="true" />
|
|
564
|
+
)}
|
|
565
|
+
{step.label}
|
|
566
|
+
</li>
|
|
567
|
+
);
|
|
568
|
+
})}
|
|
569
|
+
</ul>
|
|
570
|
+
<Button variant="ghost" size="xs" onClick={onCancel}>
|
|
571
|
+
Cancel
|
|
572
|
+
</Button>
|
|
573
|
+
</div>
|
|
574
|
+
);
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
// ---------------------------------------------------------------------------
|
|
578
|
+
// Installed summary — the success state with the observed Slack facts
|
|
579
|
+
// ---------------------------------------------------------------------------
|
|
580
|
+
|
|
581
|
+
function InstalledSummary({
|
|
582
|
+
channel,
|
|
583
|
+
agentName,
|
|
584
|
+
botName,
|
|
585
|
+
}: {
|
|
586
|
+
readonly channel: AgentChannel;
|
|
587
|
+
readonly agentName: string;
|
|
588
|
+
readonly botName: string;
|
|
589
|
+
}) {
|
|
590
|
+
const slack = channel.status?.providerStatus?.case === "slack"
|
|
591
|
+
? channel.status.providerStatus.value
|
|
592
|
+
: null;
|
|
593
|
+
|
|
594
|
+
return (
|
|
595
|
+
<div className="space-y-2" role="status">
|
|
596
|
+
<div className="flex items-center gap-2 text-sm font-medium text-foreground">
|
|
597
|
+
<CheckIcon className="size-4 text-success" />
|
|
598
|
+
Connected{slack?.teamName ? ` to ${slack.teamName}` : ""}
|
|
599
|
+
</div>
|
|
600
|
+
<p className="text-sm text-muted-foreground">
|
|
601
|
+
In Slack, open a direct message with{" "}
|
|
602
|
+
<span className="font-medium text-foreground">{botName}</span> — or
|
|
603
|
+
type @ in any channel and pick{" "}
|
|
604
|
+
<span className="font-medium text-foreground">{botName}</span> from
|
|
605
|
+
the list — then ask your question. Answers come from{" "}
|
|
606
|
+
<span className="font-medium text-foreground">{agentName}</span>.
|
|
607
|
+
</p>
|
|
608
|
+
</div>
|
|
609
|
+
);
|
|
610
|
+
}
|
|
611
|
+
|