@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentInstanceList.d.ts","sourceRoot":"","sources":["../../src/agent-instance/AgentInstanceList.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AgentInstanceList.d.ts","sourceRoot":"","sources":["../../src/agent-instance/AgentInstanceList.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4DAA4D,CAAC;AAahG,2CAA2C;AAC3C,MAAM,WAAW,sBAAsB;IACrC,+CAA+C;IAC/C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,gGAAgG;IAChG,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC;;;;OAIG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,2DAA2D;IAC3D,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IACpC,kEAAkE;IAClE,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,IAAI,CAAC;IAC7D,kEAAkE;IAClE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,IAAI,CAAC;IACjE,2DAA2D;IAC3D,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,IAAI,CAAC;IAC3D;;;OAGG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,kCAAkC;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,OAAO,EACP,iBAAiB,EACjB,GAAG,EACH,SAAS,EACT,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,UAAU,EACV,SAAS,GACV,EAAE,sBAAsB,2CAgGxB"}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { useCallback, useEffect, useMemo, useRef } from "react";
|
|
4
|
+
import { MoreHorizontal, Play, Trash2 } from "lucide-react";
|
|
4
5
|
import { cn } from "@stigmer/theme";
|
|
5
6
|
import { ApiResourceVisibility } from "@stigmer/protos/ai/stigmer/commons/apiresource/enum_pb";
|
|
6
7
|
import { useAgentInstances } from "./useAgentInstances.js";
|
|
8
|
+
import { ActionMenu } from "../action-menu/index.js";
|
|
7
9
|
import { Button } from "../button/Button.js";
|
|
8
10
|
import { useEnvironmentList } from "../environment/useEnvironmentList.js";
|
|
9
11
|
import { ResourceVisibilityControl } from "../library/ResourceVisibilityControl.js";
|
|
10
|
-
import {
|
|
12
|
+
import { useCheckPermission } from "../iam-policy/useCheckPermission.js";
|
|
11
13
|
import { AgentInstanceEmptyState } from "./AgentInstanceEmptyState.js";
|
|
12
14
|
/** Label marking a user's auto-managed personal instance. */
|
|
13
15
|
const PERSONAL_LABEL = "stigmer.ai/personal";
|
|
@@ -50,14 +52,20 @@ export function AgentInstanceList({ agentId, defaultInstanceId, org, viewerOrg,
|
|
|
50
52
|
if (userInstances.length === 0) {
|
|
51
53
|
return _jsx(AgentInstanceEmptyState, { onCreateClick: onCreateClick, className: className });
|
|
52
54
|
}
|
|
53
|
-
return (_jsxs("div", { className: cn("space-y-3", className), children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("h3", { className: "text-sm font-medium text-foreground", children: [userInstances.length, " ", userInstances.length === 1 ? "instance" : "instances"] }), onCreateClick && (_jsx(Button, { variant: "outline", size: "xs", icon: _jsx(PlusIcon, {}), onClick: onCreateClick, children: "Create instance" }))] }), _jsx("div", { className: "overflow-hidden rounded-lg border border-border", children: _jsxs("table", { className: "w-full text-sm", children: [_jsx("thead", { children: _jsxs("tr", { className: "border-b border-border bg-muted-subtle", children: [_jsx("th", { className: "px-4 py-2 text-left font-medium text-muted-foreground", children: "Name" }), _jsx("th", { className: "px-4 py-2 text-left font-medium text-muted-foreground", children: "Environments" }), _jsx("th", { className: "px-4 py-2 text-left font-medium text-muted-foreground", children: "Visibility" }), _jsx("th", { className: "px-4 py-2 text-right font-medium text-muted-foreground", children: "Actions" })] }) }), _jsx("tbody", { className: "divide-y divide-border", children: userInstances.map((inst) => (_jsx(InstanceRow, { instance: inst, resolveEnvName: resolveEnvName, onRowClick: onInstanceClick, onStartSessionClick: onStartSessionClick, onDeleteClick: onDeleteClick, refetch: refetch }, inst.metadata?.id))) })] }) })] }));
|
|
55
|
+
return (_jsxs("div", { className: cn("space-y-3", className), children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("h3", { className: "text-sm font-medium text-foreground", children: [userInstances.length, " ", userInstances.length === 1 ? "instance" : "instances"] }), onCreateClick && (_jsx(Button, { variant: "outline", size: "xs", icon: _jsx(PlusIcon, {}), onClick: onCreateClick, children: "Create instance" }))] }), _jsx("div", { className: "overflow-hidden rounded-lg border border-border", children: _jsxs("table", { className: "w-full table-fixed text-sm", children: [_jsx("thead", { children: _jsxs("tr", { className: "border-b border-border bg-muted-subtle", children: [_jsx("th", { className: "px-4 py-2 text-left font-medium text-muted-foreground", children: "Name" }), _jsx("th", { className: "px-4 py-2 text-left font-medium text-muted-foreground", children: "Environments" }), _jsx("th", { className: "w-36 px-4 py-2 text-left font-medium text-muted-foreground", children: "Visibility" }), _jsx("th", { className: "w-16 px-4 py-2 text-right font-medium text-muted-foreground", children: "Actions" })] }) }), _jsx("tbody", { className: "divide-y divide-border", children: userInstances.map((inst) => (_jsx(InstanceRow, { instance: inst, resolveEnvName: resolveEnvName, onRowClick: onInstanceClick, onStartSessionClick: onStartSessionClick, onDeleteClick: onDeleteClick, refetch: refetch }, inst.metadata?.id))) })] }) })] }));
|
|
54
56
|
}
|
|
55
57
|
function InstanceRow({ instance, resolveEnvName, onRowClick, onStartSessionClick, onDeleteClick, refetch, }) {
|
|
56
58
|
const meta = instance.metadata;
|
|
57
59
|
const id = meta?.id ?? "";
|
|
58
60
|
const isPersonal = meta?.labels?.[PERSONAL_LABEL] === "true";
|
|
59
61
|
const envRefs = instance.spec?.environmentRefs ?? [];
|
|
60
|
-
|
|
62
|
+
// Delete is the only permission-gated row action (Start session is offered
|
|
63
|
+
// whenever the host wires it). Resolved here so the kebab is hidden when it
|
|
64
|
+
// would hold no items — never an empty overflow menu.
|
|
65
|
+
const { allowed: canDelete } = useCheckPermission({ kind: "agent_instance", id }, "can_delete");
|
|
66
|
+
const showStartSession = !!onStartSessionClick;
|
|
67
|
+
const showDelete = !!onDeleteClick && canDelete;
|
|
68
|
+
return (_jsxs("tr", { className: cn("transition-colors", onRowClick && "cursor-pointer hover:bg-accent-hover"), onClick: () => onRowClick?.(instance), children: [_jsx("td", { className: "px-4 py-2.5", children: _jsxs("div", { className: "min-w-0", children: [_jsxs("div", { className: "flex min-w-0 items-center gap-2", children: [_jsx("span", { className: "truncate font-medium text-foreground", title: meta?.name || meta?.slug || undefined, children: meta?.name || meta?.slug || "\u2014" }), isPersonal && (_jsx("span", { className: cn("inline-flex shrink-0 items-center rounded-md px-1.5 py-0.5", "text-[0.6rem] font-medium uppercase tracking-wide", "bg-muted text-muted-foreground border border-border"), children: "Personal" }))] }), instance.spec?.description && (_jsx("p", { className: "text-[0.65rem] text-muted-foreground truncate", children: instance.spec.description }))] }) }), _jsx("td", { className: "px-4 py-2.5", children: envRefs.length === 0 ? (_jsx("span", { className: "text-xs text-muted-foreground", children: "None" })) : (_jsx("div", { className: "flex flex-wrap gap-1", children: envRefs.map((ref, idx) => (_jsx("span", { className: cn("inline-flex items-center rounded-md px-1.5 py-0.5", "text-[0.65rem] font-medium", "bg-muted text-muted-foreground", "border border-border"), children: resolveEnvName(ref.slug) }, `${ref.slug}-${idx}`))) })) }), _jsx("td", { className: "px-4 py-2.5", onClick: (e) => e.stopPropagation(), children: id ? (_jsx(ResourceVisibilityControl, { kind: "agentInstance", resourceId: id, visibility: meta?.visibility ?? ApiResourceVisibility.visibility_private, onChanged: refetch })) : (_jsx("span", { className: "text-xs text-muted-foreground", children: "\u2014" })) }), _jsx("td", { className: "px-4 py-2.5 text-right", onClick: (e) => e.stopPropagation(), children: (showStartSession || showDelete) && (_jsxs(ActionMenu, { children: [_jsx(ActionMenu.Trigger, { className: "ml-auto", "aria-label": `Actions for ${meta?.name || meta?.slug}`, children: _jsx(MoreHorizontal, { className: "size-4" }) }), _jsxs(ActionMenu.Content, { children: [showStartSession && (_jsx(ActionMenu.Item, { icon: _jsx(Play, {}), onSelect: () => onStartSessionClick?.(instance), children: "Start session" })), showStartSession && showDelete && _jsx(ActionMenu.Separator, {}), showDelete && (_jsx(ActionMenu.Item, { icon: _jsx(Trash2, {}), variant: "destructive", onSelect: () => onDeleteClick?.(instance), children: "Delete" }))] })] })) })] }));
|
|
61
69
|
}
|
|
62
70
|
function LoadingSkeleton() {
|
|
63
71
|
return (_jsx("div", { className: "space-y-2 py-4", children: [1, 2, 3].map((i) => (_jsx("div", { className: "h-12 animate-pulse rounded-md bg-muted-faint" }, i))) }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentInstanceList.js","sourceRoot":"","sources":["../../src/agent-instance/AgentInstanceList.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAEpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,wDAAwD,CAAC;AAC/F,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AACpF,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"AgentInstanceList.js","sourceRoot":"","sources":["../../src/agent-instance/AgentInstanceList.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
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 AgentChannelsPanel}. */
|
|
4
|
+
export interface AgentChannelsPanelProps {
|
|
5
|
+
/** The agent whose channels are managed. */
|
|
6
|
+
readonly agent: Agent;
|
|
7
|
+
/**
|
|
8
|
+
* When provided, connect actions for redirect-style providers (Slack)
|
|
9
|
+
* delegate to the host instead of running the in-app popup flow. For
|
|
10
|
+
* hosts whose webview cannot open popups (the desktop app): the
|
|
11
|
+
* delegate typically opens the web console in the system browser.
|
|
12
|
+
* Called with the channel being (re)connected, or `null` for a
|
|
13
|
+
* brand-new connection. Direct-install providers (WhatsApp) always
|
|
14
|
+
* connect in-app — their flow is a plain API call with nothing for a
|
|
15
|
+
* popup to do — so they never invoke the delegate.
|
|
16
|
+
*/
|
|
17
|
+
readonly onConnectExternal?: (channel: AgentChannel | null) => void;
|
|
18
|
+
/**
|
|
19
|
+
* Where the host manages Channel Apps (the console passes
|
|
20
|
+
* `/settings/channel-apps`). Threaded to the connect dialog's
|
|
21
|
+
* "Register a channel app" affordance; absent, the affordance
|
|
22
|
+
* degrades to plain guidance text.
|
|
23
|
+
*/
|
|
24
|
+
readonly channelAppsHref?: string;
|
|
25
|
+
/**
|
|
26
|
+
* Maps a session id to the host's session route (the console passes
|
|
27
|
+
* `` (id) => `/sessions/${id}` ``). Threaded to each card's
|
|
28
|
+
* Conversations dialog so rows link to the read-only transcript;
|
|
29
|
+
* absent, the rows render without links (DD-004 — the SDK never
|
|
30
|
+
* assumes a routing scheme).
|
|
31
|
+
*/
|
|
32
|
+
readonly sessionHref?: (sessionId: string) => string;
|
|
33
|
+
/** Additional CSS class names. */
|
|
34
|
+
readonly className?: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Management surface for an agent's {@link AgentChannel} connections —
|
|
38
|
+
* rendered in the agent detail view's Channels tab.
|
|
39
|
+
*
|
|
40
|
+
* One card per channel showing the two serving axes side by side: the
|
|
41
|
+
* observed provider install state (`pending_install` / `installed` /
|
|
42
|
+
* `revoked`) and the owner's serving switch (`spec.enabled`). Traffic
|
|
43
|
+
* flows only when installed AND enabled. Channels always live in the
|
|
44
|
+
* agent's own org (no cross-org arm, unlike shares), so no org selector
|
|
45
|
+
* is needed.
|
|
46
|
+
*
|
|
47
|
+
* Connecting runs the provider's own dialog — {@link ConnectSlackDialog}
|
|
48
|
+
* (OAuth popup) or {@link ConnectWhatsAppDialog} (direct install). On a
|
|
49
|
+
* `local` (OSS) backend, channel CRUD works but installs are cloud-only —
|
|
50
|
+
* connect affordances are replaced by a cloud-feature notice, matching
|
|
51
|
+
* the server's FAILED_PRECONDITION posture.
|
|
52
|
+
*
|
|
53
|
+
* Self-contained: owns its dialog, its confirmation prompts, and its
|
|
54
|
+
* refetch-after-mutation — hosts render it with just the agent (plus the
|
|
55
|
+
* external-connect delegate where popups are unavailable).
|
|
56
|
+
*
|
|
57
|
+
* This is an SDK component (DD-001) — embeddable by platform builders.
|
|
58
|
+
*/
|
|
59
|
+
export declare function AgentChannelsPanel({ agent, onConnectExternal, channelAppsHref, sessionHref, className, }: AgentChannelsPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
60
|
+
//# sourceMappingURL=AgentChannelsPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentChannelsPanel.d.ts","sourceRoot":"","sources":["../../src/channel/AgentChannelsPanel.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oDAAoD,CAAC;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2DAA2D,CAAC;AAgC9F,4CAA4C;AAC5C,MAAM,WAAW,uBAAuB;IACtC,4CAA4C;IAC5C,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB;;;;;;;;;OASG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,KAAK,IAAI,CAAC;IACpE;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC;;;;;;OAMG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IACrD,kCAAkC;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,KAAK,EACL,iBAAiB,EACjB,eAAe,EACf,WAAW,EACX,SAAS,GACV,EAAE,uBAAuB,2CA2PzB"}
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { useCallback, useState } from "react";
|
|
4
|
+
import { KeyRound, MessageSquare, MoreHorizontal, Trash2 } from "lucide-react";
|
|
5
|
+
import { cn } from "@stigmer/theme";
|
|
6
|
+
import { getUserMessage } from "@stigmer/sdk";
|
|
7
|
+
import { AgentChannelInstallState } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/status_pb";
|
|
8
|
+
import { toast } from "../feedback/toast.js";
|
|
9
|
+
import { ActionMenu } from "../action-menu/index.js";
|
|
10
|
+
import { Button } from "../button/Button.js";
|
|
11
|
+
import { EmptyState } from "../empty-state/EmptyState.js";
|
|
12
|
+
import { Switch } from "../switch/Switch.js";
|
|
13
|
+
import { useChannelAppList } from "../channel-app/useChannelAppList.js";
|
|
14
|
+
import { useCheckPermission } from "../iam-policy/useCheckPermission.js";
|
|
15
|
+
import { ConfirmDialog } from "../resource-detail/ConfirmDialog.js";
|
|
16
|
+
import { useConfirmAction } from "../resource-detail/useConfirmAction.js";
|
|
17
|
+
import { useDeploymentMode } from "../deployment-mode.js";
|
|
18
|
+
import { CloudFeatureNotice } from "../internal/CloudFeatureNotice.js";
|
|
19
|
+
import { ChannelConversationsDialog } from "./ChannelConversationsDialog.js";
|
|
20
|
+
import { ChannelCredentialsDialog } from "./ChannelCredentialsDialog.js";
|
|
21
|
+
import { ConnectSlackDialog } from "./ConnectSlackDialog.js";
|
|
22
|
+
import { ConnectWhatsAppDialog } from "./ConnectWhatsAppDialog.js";
|
|
23
|
+
import { CHANNEL_PROVIDERS, channelProviderOf, } from "./providers.js";
|
|
24
|
+
import { channelPresentationOf, DEFAULT_CHANNEL_PRESENTATION, } from "./providerPresentation.js";
|
|
25
|
+
import { useAgentChannelList } from "./useAgentChannelList.js";
|
|
26
|
+
import { useChannelToolReadiness } from "./useChannelToolReadiness.js";
|
|
27
|
+
import { useDeleteAgentChannel } from "./useDeleteAgentChannel.js";
|
|
28
|
+
import { agentChannelToInput, useSaveAgentChannel } from "./useSaveAgentChannel.js";
|
|
29
|
+
/**
|
|
30
|
+
* Management surface for an agent's {@link AgentChannel} connections —
|
|
31
|
+
* rendered in the agent detail view's Channels tab.
|
|
32
|
+
*
|
|
33
|
+
* One card per channel showing the two serving axes side by side: the
|
|
34
|
+
* observed provider install state (`pending_install` / `installed` /
|
|
35
|
+
* `revoked`) and the owner's serving switch (`spec.enabled`). Traffic
|
|
36
|
+
* flows only when installed AND enabled. Channels always live in the
|
|
37
|
+
* agent's own org (no cross-org arm, unlike shares), so no org selector
|
|
38
|
+
* is needed.
|
|
39
|
+
*
|
|
40
|
+
* Connecting runs the provider's own dialog — {@link ConnectSlackDialog}
|
|
41
|
+
* (OAuth popup) or {@link ConnectWhatsAppDialog} (direct install). On a
|
|
42
|
+
* `local` (OSS) backend, channel CRUD works but installs are cloud-only —
|
|
43
|
+
* connect affordances are replaced by a cloud-feature notice, matching
|
|
44
|
+
* the server's FAILED_PRECONDITION posture.
|
|
45
|
+
*
|
|
46
|
+
* Self-contained: owns its dialog, its confirmation prompts, and its
|
|
47
|
+
* refetch-after-mutation — hosts render it with just the agent (plus the
|
|
48
|
+
* external-connect delegate where popups are unavailable).
|
|
49
|
+
*
|
|
50
|
+
* This is an SDK component (DD-001) — embeddable by platform builders.
|
|
51
|
+
*/
|
|
52
|
+
export function AgentChannelsPanel({ agent, onConnectExternal, channelAppsHref, sessionHref, className, }) {
|
|
53
|
+
const agentId = agent.metadata?.id ?? "";
|
|
54
|
+
// Channels are same-org by invariant; scope the list to the agent's org.
|
|
55
|
+
const { channels, isLoading, error, refetch } = useAgentChannelList(agentId, agent.metadata?.org ?? "");
|
|
56
|
+
// One fetch for all cards: a channel's spec.app_ref carries only the
|
|
57
|
+
// slug, but the app's name is the bot name members @mention — the
|
|
58
|
+
// label worth showing.
|
|
59
|
+
const { channelApps } = useChannelAppList(agent.metadata?.org || null);
|
|
60
|
+
// Mirrors the server's create bar (agent can_edit — the permission the
|
|
61
|
+
// create/apply handlers enforce on the referenced agent) so the connect
|
|
62
|
+
// affordance never appears to a viewer whose create would be refused.
|
|
63
|
+
const { allowed: canCreate } = useCheckPermission(agentId ? { kind: "agent", id: agentId } : null, "can_edit");
|
|
64
|
+
// Installs are cloud-only; CRUD is not. In local mode the cards render
|
|
65
|
+
// and toggles work, but connect affordances give way to the notice.
|
|
66
|
+
const installsAvailable = useDeploymentMode() === "cloud";
|
|
67
|
+
const { deleteChannel } = useDeleteAgentChannel();
|
|
68
|
+
const { confirmState, confirm, handleConfirm, handleCancel } = useConfirmAction();
|
|
69
|
+
// One dialog mount serves both flows per provider: connecting the
|
|
70
|
+
// chosen channel, or creating a new one and connecting it in the same
|
|
71
|
+
// session. The provider picks which dialog renders.
|
|
72
|
+
const [connecting, setConnecting] = useState(null);
|
|
73
|
+
// The channel whose tool-credential bindings are being edited.
|
|
74
|
+
const [editingCredentials, setEditingCredentials] = useState(null);
|
|
75
|
+
// The channel whose conversations are being viewed (DD-012: read-only
|
|
76
|
+
// channel-session observability for the channel's viewers).
|
|
77
|
+
const [viewingConversations, setViewingConversations] = useState(null);
|
|
78
|
+
const handleConnect = useCallback((channel, provider) => {
|
|
79
|
+
// Only redirect-style installs need the host hand-off (they open a
|
|
80
|
+
// popup the desktop webview cannot); direct installs are a plain
|
|
81
|
+
// API call and run in-app everywhere.
|
|
82
|
+
if (provider.installStyle === "redirect" && onConnectExternal) {
|
|
83
|
+
onConnectExternal(channel);
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
setConnecting(channel ? { mode: "reconnect", channel } : { mode: "create", provider });
|
|
87
|
+
}, [onConnectExternal]);
|
|
88
|
+
const handleDelete = useCallback(async (channel) => {
|
|
89
|
+
const name = channel.metadata?.name || channel.metadata?.slug || "this channel";
|
|
90
|
+
const presentation = channelPresentationOf(channel.spec?.providerConfig?.case) ??
|
|
91
|
+
DEFAULT_CHANNEL_PRESENTATION;
|
|
92
|
+
const confirmed = await confirm({
|
|
93
|
+
title: "Disconnect channel?",
|
|
94
|
+
description: presentation.disconnectDescription(name),
|
|
95
|
+
confirmLabel: "Disconnect",
|
|
96
|
+
variant: "destructive",
|
|
97
|
+
});
|
|
98
|
+
if (!confirmed)
|
|
99
|
+
return;
|
|
100
|
+
try {
|
|
101
|
+
await deleteChannel(channel.metadata?.id ?? "");
|
|
102
|
+
toast.success("Channel disconnected");
|
|
103
|
+
refetch();
|
|
104
|
+
}
|
|
105
|
+
catch (err) {
|
|
106
|
+
toast.error(getUserMessage(err));
|
|
107
|
+
}
|
|
108
|
+
}, [confirm, deleteChannel, refetch]);
|
|
109
|
+
if (isLoading) {
|
|
110
|
+
return _jsx(LoadingSkeleton, {});
|
|
111
|
+
}
|
|
112
|
+
if (error) {
|
|
113
|
+
return (_jsx("div", { className: "py-8 text-center text-sm text-destructive", children: "Failed to load channels" }));
|
|
114
|
+
}
|
|
115
|
+
const showCloudNotice = !installsAvailable &&
|
|
116
|
+
(channels.length === 0 ||
|
|
117
|
+
channels.some((c) => installStateOf(c) !== AgentChannelInstallState.installed));
|
|
118
|
+
// Whether a provider's connect affordance is actionable here: installs
|
|
119
|
+
// are cloud-only, but redirect-style providers can still hand off to
|
|
120
|
+
// the host (the desktop → system-browser path). Direct-style providers
|
|
121
|
+
// have no hand-off — in local mode their affordance yields to the
|
|
122
|
+
// cloud notice.
|
|
123
|
+
const canConnectVia = (p) => canCreate &&
|
|
124
|
+
(installsAvailable || (p.installStyle === "redirect" && !!onConnectExternal));
|
|
125
|
+
const connectableProviders = CHANNEL_PROVIDERS.filter(canConnectVia);
|
|
126
|
+
// The provider of the in-flight connect flow: chosen by the user in
|
|
127
|
+
// create mode, the channel's own on a reconnect. Unknown cases (a
|
|
128
|
+
// newer server) fall back to the default provider, matching the card.
|
|
129
|
+
const connectingProvider = connecting === null
|
|
130
|
+
? null
|
|
131
|
+
: connecting.mode === "create"
|
|
132
|
+
? connecting.provider
|
|
133
|
+
: channelProviderOf(connecting.channel.spec?.providerConfig?.case) ??
|
|
134
|
+
CHANNEL_PROVIDERS[0];
|
|
135
|
+
return (_jsxs("div", { className: cn("space-y-3", className), children: [showCloudNotice && (_jsx(CloudFeatureNotice, { children: "Channel installs require Stigmer Cloud \u2014 connecting an agent to Slack or WhatsApp runs through the platform's hosted webhook infrastructure. Channel configuration still works here." })), channels.length === 0 ? (_jsx(ChannelEmptyState, { providers: connectableProviders, onConnectClick: (p) => handleConnect(null, p) })) : (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsxs("h3", { className: "text-sm font-medium text-foreground", children: [channels.length, " ", channels.length === 1 ? "channel" : "channels"] }), connectableProviders.length > 0 && (_jsx("div", { className: "flex shrink-0 items-center gap-2", children: connectableProviders.map((p) => (_jsxs(Button, { variant: "outline", size: "xs", icon: _jsx(p.Icon, { className: "size-3" }), onClick: () => handleConnect(null, p), "data-cursor-target": `connect-${p.id}`, children: ["Connect to ", p.label] }, p.id))) }))] }), _jsx("div", { className: "space-y-2", children: channels.map((channel) => {
|
|
136
|
+
const cardProvider = channelProviderOf(channel.spec?.providerConfig?.case) ??
|
|
137
|
+
CHANNEL_PROVIDERS[0];
|
|
138
|
+
return (_jsx(ChannelCard, { agent: agent, channel: channel, channelApps: channelApps, connectAvailable: installsAvailable ||
|
|
139
|
+
(cardProvider.installStyle === "redirect" &&
|
|
140
|
+
!!onConnectExternal), onConnectClick: () => handleConnect(channel, cardProvider), onDeleteClick: () => void handleDelete(channel), onEditCredentials: () => setEditingCredentials(channel), onViewConversations: () => setViewingConversations(channel), refetch: refetch }, channel.metadata?.id));
|
|
141
|
+
}) })] })), connecting && connectingProvider?.id === "whatsapp" ? (_jsx(ConnectWhatsAppDialog, { open: true, onOpenChange: (open) => {
|
|
142
|
+
if (!open)
|
|
143
|
+
setConnecting(null);
|
|
144
|
+
}, agent: agent, channel: connecting.mode === "reconnect" ? connecting.channel : undefined, onChannelsChanged: refetch, channelAppsHref: channelAppsHref })) : connecting ? (_jsx(ConnectSlackDialog, { open: true, onOpenChange: (open) => {
|
|
145
|
+
if (!open)
|
|
146
|
+
setConnecting(null);
|
|
147
|
+
}, agent: agent, channel: connecting.mode === "reconnect" ? connecting.channel : undefined, onChannelsChanged: refetch, channelAppsHref: channelAppsHref })) : null, editingCredentials && (_jsx(ChannelCredentialsDialog, { open: true, onOpenChange: (open) => {
|
|
148
|
+
if (!open)
|
|
149
|
+
setEditingCredentials(null);
|
|
150
|
+
}, agent: agent, channel: editingCredentials, onSaved: refetch })), viewingConversations && (_jsx(ChannelConversationsDialog, { open: true, onOpenChange: (open) => {
|
|
151
|
+
if (!open)
|
|
152
|
+
setViewingConversations(null);
|
|
153
|
+
}, channel: viewingConversations, sessionHref: sessionHref })), _jsx(ConfirmDialog, { state: confirmState, onConfirm: handleConfirm, onCancel: handleCancel })] }));
|
|
154
|
+
}
|
|
155
|
+
function ChannelCard({ agent, channel, channelApps, connectAvailable, onConnectClick, onDeleteClick, onEditCredentials, onViewConversations, refetch, }) {
|
|
156
|
+
const meta = channel.metadata;
|
|
157
|
+
const id = meta?.id ?? "";
|
|
158
|
+
const enabled = channel.spec?.enabled ?? false;
|
|
159
|
+
const installState = installStateOf(channel);
|
|
160
|
+
// The serving app (T04 item 2): set means the channel installs through
|
|
161
|
+
// the org's own channel app; absent means the platform Stigmer app
|
|
162
|
+
// (Slack only — WhatsApp always has one, DD-WA-2). The app's NAME is
|
|
163
|
+
// the identity people address, so prefer it over the ref's slug when
|
|
164
|
+
// the app is in the fetched list (it may not be — e.g. the app was
|
|
165
|
+
// deleted after install).
|
|
166
|
+
const servingAppSlug = channel.spec?.appRef?.slug || null;
|
|
167
|
+
const servingAppName = servingAppSlug
|
|
168
|
+
? channelApps.find((app) => app.metadata?.slug === servingAppSlug)
|
|
169
|
+
?.metadata?.name || servingAppSlug
|
|
170
|
+
: null;
|
|
171
|
+
// The spec's provider marker is set at create; unknown cases (a newer
|
|
172
|
+
// server) fall back to the default provider mark rather than no icon,
|
|
173
|
+
// and to the default presentation rather than no copy.
|
|
174
|
+
const provider = channelProviderOf(channel.spec?.providerConfig?.case) ?? CHANNEL_PROVIDERS[0];
|
|
175
|
+
const presentation = channelPresentationOf(channel.spec?.providerConfig?.case) ??
|
|
176
|
+
DEFAULT_CHANNEL_PRESENTATION;
|
|
177
|
+
const { save, isPending } = useSaveAgentChannel();
|
|
178
|
+
// Decide the card's actions here (not via nested permission wrappers) so
|
|
179
|
+
// affordances are hidden entirely when the viewer can do nothing —
|
|
180
|
+
// permissive in OSS, so local single-user sees all.
|
|
181
|
+
const { allowed: canEdit } = useCheckPermission({ kind: "agent_channel", id }, "can_edit");
|
|
182
|
+
const { allowed: canDelete } = useCheckPermission({ kind: "agent_channel", id }, "can_delete");
|
|
183
|
+
// On/off is a full-input save with only `enabled` flipped —
|
|
184
|
+
// agentChannelToInput guarantees the toggle can never wipe the agent
|
|
185
|
+
// reference or the provider marker (the fails-closed posture shares use).
|
|
186
|
+
const handleToggleEnabled = useCallback(async (next) => {
|
|
187
|
+
try {
|
|
188
|
+
await save({ ...agentChannelToInput(channel), enabled: next });
|
|
189
|
+
toast.success(next ? "Channel turned on" : "Channel turned off");
|
|
190
|
+
refetch();
|
|
191
|
+
}
|
|
192
|
+
catch (err) {
|
|
193
|
+
toast.error(getUserMessage(err));
|
|
194
|
+
}
|
|
195
|
+
}, [save, channel, refetch]);
|
|
196
|
+
return (_jsxs("div", { className: "rounded-lg border border-border p-4", children: [_jsxs("div", { className: "flex items-start justify-between gap-3", children: [_jsxs("div", { className: "flex min-w-0 items-center gap-2.5", children: [_jsx(provider.Icon, { className: "size-5 shrink-0 text-foreground" }), _jsxs("div", { className: "min-w-0", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "truncate text-sm font-medium text-foreground", title: meta?.name || meta?.slug || undefined, children: meta?.name || meta?.slug || "\u2014" }), _jsx(InstallStatePill, { state: installState })] }), _jsx("p", { className: "mt-0.5 text-xs text-muted-foreground", children: presentation.describeChannel(channel) }), _jsx("p", { className: "mt-0.5 text-xs text-muted-foreground-faint", children: presentation.servingLine(servingAppName) })] })] }), _jsxs("div", { className: "flex shrink-0 items-center gap-2", children: [canEdit && installState === AgentChannelInstallState.installed && (_jsx(Switch, { checked: enabled, onCheckedChange: (next) => void handleToggleEnabled(next), disabled: isPending, "aria-label": `Turn ${meta?.name || meta?.slug || "channel"} ${enabled ? "off" : "on"}` })), canEdit &&
|
|
197
|
+
connectAvailable &&
|
|
198
|
+
installState !== AgentChannelInstallState.installed && (_jsx(Button, { variant: "outline", size: "xs", onClick: onConnectClick, children: installState === AgentChannelInstallState.revoked
|
|
199
|
+
? "Reconnect"
|
|
200
|
+
: "Connect" })), _jsxs(ActionMenu, { children: [_jsx(ActionMenu.Trigger, { "aria-label": `Actions for ${meta?.name || meta?.slug}`, children: _jsx(MoreHorizontal, { className: "size-4" }) }), _jsxs(ActionMenu.Content, { children: [_jsx(ActionMenu.Item, { icon: _jsx(MessageSquare, {}), onSelect: onViewConversations, "data-cursor-target": "channel-conversations", children: "Conversations" }), canEdit && (_jsx(ActionMenu.Item, { icon: _jsx(KeyRound, {}), onSelect: onEditCredentials, children: "Tool credentials" })), canDelete && (_jsx(ActionMenu.Item, { icon: _jsx(Trash2, {}), variant: "destructive", onSelect: onDeleteClick, children: "Disconnect" }))] })] })] })] }), _jsx(CardReadinessWarning, { agent: agent, channel: channel, canEdit: canEdit, onEditCredentials: onEditCredentials })] }));
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Serving-readiness warning for tool-using agents: channel executions
|
|
204
|
+
* receive credentials only from the channel's own bindings, so an
|
|
205
|
+
* installed, enabled channel with none (or with a private binding) will
|
|
206
|
+
* refuse the first workspace message that needs a tool. The card is
|
|
207
|
+
* where an owner — including one who connected before credential
|
|
208
|
+
* binding existed — discovers the gap, instead of hearing about it from
|
|
209
|
+
* a confused workspace member.
|
|
210
|
+
*/
|
|
211
|
+
function CardReadinessWarning({ agent, channel, canEdit, onEditCredentials, }) {
|
|
212
|
+
const serving = (channel.spec?.enabled ?? false) &&
|
|
213
|
+
installStateOf(channel) === AgentChannelInstallState.installed;
|
|
214
|
+
const readiness = useChannelToolReadiness(agent, serving, channel.spec?.environmentRefs ?? []);
|
|
215
|
+
if (readiness.status !== "needs-credentials" && readiness.status !== "blocked") {
|
|
216
|
+
return null;
|
|
217
|
+
}
|
|
218
|
+
const message = readiness.status === "needs-credentials"
|
|
219
|
+
? "This agent uses tools, but no credentials are bound to this channel — workspace messages that need a tool will be refused."
|
|
220
|
+
: `Bound environment${readiness.privateEnvironments.length > 1 ? "s" : ""} ${readiness.privateEnvironments.join(", ")} ${readiness.privateEnvironments.length > 1 ? "are" : "is"} private — share ${readiness.privateEnvironments.length > 1 ? "them" : "it"} with your organization so workspace messages can use the credentials.`;
|
|
221
|
+
return (_jsxs("p", { className: "mt-2 text-xs text-warning", role: "status", children: [message, canEdit && (_jsxs(_Fragment, { children: [" ", _jsx("button", { type: "button", onClick: onEditCredentials, className: cn("font-medium underline underline-offset-2", "hover:text-foreground", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring rounded"), children: "Bind credentials" })] }))] }));
|
|
222
|
+
}
|
|
223
|
+
// ---------------------------------------------------------------------------
|
|
224
|
+
// Install-state rendering
|
|
225
|
+
// ---------------------------------------------------------------------------
|
|
226
|
+
function installStateOf(channel) {
|
|
227
|
+
return (channel.status?.installState ??
|
|
228
|
+
AgentChannelInstallState.agent_channel_install_state_unspecified);
|
|
229
|
+
}
|
|
230
|
+
function InstallStatePill({ state }) {
|
|
231
|
+
const { label, tone } = (() => {
|
|
232
|
+
switch (state) {
|
|
233
|
+
case AgentChannelInstallState.installed:
|
|
234
|
+
return { label: "Installed", tone: "text-success" };
|
|
235
|
+
case AgentChannelInstallState.revoked:
|
|
236
|
+
return { label: "Revoked", tone: "text-destructive" };
|
|
237
|
+
default:
|
|
238
|
+
return { label: "Pending install", tone: "text-muted-foreground" };
|
|
239
|
+
}
|
|
240
|
+
})();
|
|
241
|
+
return (_jsxs("span", { className: cn("inline-flex shrink-0 items-center gap-1.5 text-xs", tone), children: [_jsx("span", { "aria-hidden": "true", className: "size-1.5 rounded-full bg-current" }), label] }));
|
|
242
|
+
}
|
|
243
|
+
// ---------------------------------------------------------------------------
|
|
244
|
+
// Empty + loading states
|
|
245
|
+
// ---------------------------------------------------------------------------
|
|
246
|
+
function ChannelEmptyState({ providers, onConnectClick, }) {
|
|
247
|
+
const providerLabels = CHANNEL_PROVIDERS.map((p) => p.label).join(" or ");
|
|
248
|
+
return (_jsx(EmptyState, { variant: "first-use", icon: _jsx("span", { className: "flex items-center gap-2", children: CHANNEL_PROVIDERS.map((p) => (_jsx(p.Icon, { className: "size-10" }, p.id))) }), title: "No channels yet", description: `Connect this agent to ${providerLabels} and people chat with it ` +
|
|
249
|
+
"right where they work — with policy, rate limits, and billing " +
|
|
250
|
+
"enforced by Stigmer.", children: providers.length > 0 && (_jsx("span", { className: "flex items-center gap-2", children: providers.map((p) => (_jsxs(Button, { variant: "primary", icon: _jsx(p.Icon, { className: "size-3" }), onClick: () => onConnectClick(p), "data-cursor-target": `connect-${p.id}`, children: ["Connect to ", p.label] }, p.id))) })) }));
|
|
251
|
+
}
|
|
252
|
+
function LoadingSkeleton() {
|
|
253
|
+
return (_jsx("div", { className: "space-y-2 py-4", children: [1, 2].map((i) => (_jsx("div", { className: "h-20 animate-pulse rounded-lg bg-muted-faint" }, i))) }));
|
|
254
|
+
}
|
|
255
|
+
//# sourceMappingURL=AgentChannelsPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentChannelsPanel.js","sourceRoot":"","sources":["../../src/channel/AgentChannelsPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { AgentChannel } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/api_pb";
|
|
2
|
+
/** Props for {@link ChannelConversationsDialog}. */
|
|
3
|
+
export interface ChannelConversationsDialogProps {
|
|
4
|
+
/** Whether the dialog is open. */
|
|
5
|
+
readonly open: boolean;
|
|
6
|
+
/** Called when the dialog requests an open-state change. */
|
|
7
|
+
readonly onOpenChange: (open: boolean) => void;
|
|
8
|
+
/** The channel whose conversations are listed. */
|
|
9
|
+
readonly channel: AgentChannel;
|
|
10
|
+
/**
|
|
11
|
+
* Maps a session id to the host's session route (the console passes
|
|
12
|
+
* `` (id) => `/sessions/${id}` ``). When absent, rows render without
|
|
13
|
+
* links — the SDK never assumes a routing scheme (DD-004).
|
|
14
|
+
*/
|
|
15
|
+
readonly sessionHref?: (sessionId: string) => string;
|
|
16
|
+
/**
|
|
17
|
+
* When `false`, renders as an in-flow open dialog instead of a
|
|
18
|
+
* top-layer modal — for embedding in constrained surfaces
|
|
19
|
+
* (documentation demos, visual tests). Interactive hosts keep the
|
|
20
|
+
* default.
|
|
21
|
+
* @default true
|
|
22
|
+
*/
|
|
23
|
+
readonly modal?: boolean;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Lists the conversations a channel created — the Slack/WhatsApp sessions
|
|
27
|
+
* the channel runtime owns, visible to exactly the channel's viewers (the
|
|
28
|
+
* connector and org admins; design decision 012).
|
|
29
|
+
*
|
|
30
|
+
* Each row shows the conversation subject, the external platform user it
|
|
31
|
+
* belongs to (an opaque provider id in v1), and the last activity time.
|
|
32
|
+
* Rows link to the host's session route, where `SessionViewer` renders the
|
|
33
|
+
* transcript read-only (the observer audience — channel viewers hold
|
|
34
|
+
* `can_view` only, never `can_create_execution_in`).
|
|
35
|
+
*
|
|
36
|
+
* Built on the native `<dialog>` element, matching the SDK's modal
|
|
37
|
+
* convention. Most hosts mount it via {@link AgentChannelsPanel}'s
|
|
38
|
+
* channel card action.
|
|
39
|
+
*/
|
|
40
|
+
export declare function ChannelConversationsDialog({ open, onOpenChange, channel, sessionHref, modal, }: ChannelConversationsDialogProps): import("react/jsx-runtime").JSX.Element;
|
|
41
|
+
//# sourceMappingURL=ChannelConversationsDialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChannelConversationsDialog.d.ts","sourceRoot":"","sources":["../../src/channel/ChannelConversationsDialog.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2DAA2D,CAAC;AAO9F,oDAAoD;AACpD,MAAM,WAAW,+BAA+B;IAC9C,kCAAkC;IAClC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,4DAA4D;IAC5D,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,kDAAkD;IAClD,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IACrD;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,0BAA0B,CAAC,EACzC,IAAI,EACJ,YAAY,EACZ,OAAO,EACP,WAAW,EACX,KAAY,GACb,EAAE,+BAA+B,2CA4CjC"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { useCallback, useRef } from "react";
|
|
4
|
+
import { timestampDate } from "@bufbuild/protobuf/wkt";
|
|
5
|
+
import { MessageSquare, User, X } from "lucide-react";
|
|
6
|
+
import { cn } from "@stigmer/theme";
|
|
7
|
+
import { getUserMessage } from "@stigmer/sdk";
|
|
8
|
+
import { Button } from "../button/Button.js";
|
|
9
|
+
import { EmptyState } from "../empty-state/EmptyState.js";
|
|
10
|
+
import { channelSessionExternalUserKey } from "../session/channelOrigin.js";
|
|
11
|
+
import { useChannelSessions } from "./useChannelSessions.js";
|
|
12
|
+
/**
|
|
13
|
+
* Lists the conversations a channel created — the Slack/WhatsApp sessions
|
|
14
|
+
* the channel runtime owns, visible to exactly the channel's viewers (the
|
|
15
|
+
* connector and org admins; design decision 012).
|
|
16
|
+
*
|
|
17
|
+
* Each row shows the conversation subject, the external platform user it
|
|
18
|
+
* belongs to (an opaque provider id in v1), and the last activity time.
|
|
19
|
+
* Rows link to the host's session route, where `SessionViewer` renders the
|
|
20
|
+
* transcript read-only (the observer audience — channel viewers hold
|
|
21
|
+
* `can_view` only, never `can_create_execution_in`).
|
|
22
|
+
*
|
|
23
|
+
* Built on the native `<dialog>` element, matching the SDK's modal
|
|
24
|
+
* convention. Most hosts mount it via {@link AgentChannelsPanel}'s
|
|
25
|
+
* channel card action.
|
|
26
|
+
*/
|
|
27
|
+
export function ChannelConversationsDialog({ open, onOpenChange, channel, sessionHref, modal = true, }) {
|
|
28
|
+
const dialogRef = useRef(null);
|
|
29
|
+
const handleClose = useCallback(() => {
|
|
30
|
+
dialogRef.current?.close();
|
|
31
|
+
onOpenChange(false);
|
|
32
|
+
}, [onOpenChange]);
|
|
33
|
+
// Sync native dialog open state (matches the SDK dialog convention).
|
|
34
|
+
const prevOpenRef = useRef(false);
|
|
35
|
+
if (modal && open !== prevOpenRef.current) {
|
|
36
|
+
prevOpenRef.current = open;
|
|
37
|
+
if (open) {
|
|
38
|
+
requestAnimationFrame(() => {
|
|
39
|
+
if (dialogRef.current && !dialogRef.current.open) {
|
|
40
|
+
dialogRef.current.showModal();
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
else if (dialogRef.current?.open) {
|
|
45
|
+
dialogRef.current.close();
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return (_jsx("dialog", { ref: dialogRef, open: modal ? undefined : open, onClose: handleClose, className: cn("w-full max-w-lg 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-conversations-title", children: open && (_jsx(ChannelConversationsDialogBody, { channel: channel, sessionHref: sessionHref, onClose: handleClose })) }));
|
|
49
|
+
}
|
|
50
|
+
function ChannelConversationsDialogBody({ channel, sessionHref, onClose, }) {
|
|
51
|
+
const channelName = channel.metadata?.name || channel.metadata?.slug || "this channel";
|
|
52
|
+
const { sessions, isLoading, error } = useChannelSessions(channel.metadata?.id ?? "");
|
|
53
|
+
return (_jsxs("div", { className: "flex max-h-[70vh] 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-conversations-title", className: "text-sm font-semibold text-popover-foreground", children: "Conversations" }), _jsxs("p", { className: "mt-0.5 truncate text-xs text-muted-foreground", children: ["What people asked ", channelName, " \u2014 read-only, visible to the channel's owner and org admins."] })] }), _jsx(Button, { variant: "ghost", size: "xs", onClick: onClose, "aria-label": "Close conversations", children: _jsx(X, { className: "size-4" }) })] }), _jsx("div", { className: "min-h-0 flex-1 overflow-y-auto p-3", children: isLoading ? (_jsx(ConversationsSkeleton, {})) : error ? (_jsx("p", { className: "px-2 py-6 text-center text-sm text-destructive", children: getUserMessage(error) })) : sessions.length === 0 ? (_jsx(EmptyState, { variant: "first-use", icon: _jsx(MessageSquare, { className: "size-8" }), title: "No conversations yet", description: "When someone messages this channel, their conversation appears here." })) : (_jsx("ul", { className: "space-y-1", children: sessions.map((session) => (_jsx(ConversationRow, { session: session, href: sessionHref && session.metadata?.id
|
|
54
|
+
? sessionHref(session.metadata.id)
|
|
55
|
+
: undefined }, session.metadata?.id))) })) })] }));
|
|
56
|
+
}
|
|
57
|
+
function ConversationRow({ session, href, }) {
|
|
58
|
+
const subject = session.spec?.subject || "Untitled conversation";
|
|
59
|
+
const externalUser = channelSessionExternalUserKey(session);
|
|
60
|
+
const lastActivity = lastActivityDate(session);
|
|
61
|
+
const content = (_jsxs(_Fragment, { children: [_jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("p", { className: "truncate text-sm text-foreground", title: subject, children: subject }), externalUser && (_jsxs("p", { className: "mt-0.5 flex items-center gap-1 text-xs text-muted-foreground", children: [_jsx(User, { "aria-hidden": "true", className: "size-3" }), externalUser] }))] }), lastActivity && (_jsx("span", { className: "shrink-0 text-xs text-muted-foreground-faint", children: formatRelativeTime(lastActivity) }))] }));
|
|
62
|
+
const rowClass = "flex items-center gap-3 rounded-md px-2 py-2 text-left";
|
|
63
|
+
return (_jsx("li", { children: href ? (_jsx("a", { href: href, className: cn(rowClass, "hover:bg-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"), children: content })) : (_jsx("div", { className: rowClass, children: content })) }));
|
|
64
|
+
}
|
|
65
|
+
function ConversationsSkeleton() {
|
|
66
|
+
return (_jsx("div", { className: "space-y-1 p-1", children: [1, 2, 3].map((i) => (_jsx("div", { className: "h-12 animate-pulse rounded-md bg-muted-faint" }, i))) }));
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* The conversation's last activity: `statusAudit.updatedAt` (bumped on
|
|
70
|
+
* every meaningful status change), falling back to `specAudit.createdAt`
|
|
71
|
+
* — the recent-activity sort key, so the dialog agrees with the server's
|
|
72
|
+
* ordering.
|
|
73
|
+
*/
|
|
74
|
+
function lastActivityDate(session) {
|
|
75
|
+
const ts = session.status?.audit?.statusAudit?.updatedAt ??
|
|
76
|
+
session.status?.audit?.specAudit?.createdAt;
|
|
77
|
+
return ts ? timestampDate(ts) : null;
|
|
78
|
+
}
|
|
79
|
+
function formatRelativeTime(date) {
|
|
80
|
+
const seconds = Math.floor((Date.now() - date.getTime()) / 1000);
|
|
81
|
+
if (seconds < 60)
|
|
82
|
+
return "just now";
|
|
83
|
+
const minutes = Math.floor(seconds / 60);
|
|
84
|
+
if (minutes < 60)
|
|
85
|
+
return `${minutes}m ago`;
|
|
86
|
+
const hours = Math.floor(minutes / 60);
|
|
87
|
+
if (hours < 24)
|
|
88
|
+
return `${hours}h ago`;
|
|
89
|
+
const days = Math.floor(hours / 24);
|
|
90
|
+
if (days < 30)
|
|
91
|
+
return `${days}d ago`;
|
|
92
|
+
return date.toLocaleDateString();
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=ChannelConversationsDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChannelConversationsDialog.js","sourceRoot":"","sources":["../../src/channel/ChannelConversationsDialog.tsx"],"names":[],"mappings":"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"}
|