@stigmer/react 3.1.16 → 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/README.md +16 -1
- 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/provider.d.ts +32 -0
- package/provider.d.ts.map +1 -1
- package/provider.js +25 -1
- package/provider.js.map +1 -1
- 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/__tests__/provider-container.layout.test.tsx +165 -0
- package/src/__tests__/provider-theme-scope.test.tsx +31 -0
- 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/provider.tsx +42 -0
- 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/styles.css +14 -0
- 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,154 @@
|
|
|
1
|
+
import { timestampDate } from "@bufbuild/protobuf/wkt";
|
|
2
|
+
import type { AgentChannel } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/api_pb";
|
|
3
|
+
import { AgentChannelInstallState } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/status_pb";
|
|
4
|
+
import type { ChannelProviderId } from "./providers.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Per-provider copy for the channel management surfaces.
|
|
8
|
+
*
|
|
9
|
+
* Split from {@link ChannelProviderDescriptor} deliberately: the registry
|
|
10
|
+
* carries a provider's *identity* (id, label, icon, install style) —
|
|
11
|
+
* stable facts every surface needs — while this module carries the
|
|
12
|
+
* *prose* the channels panel renders per provider. Keeping prose out of
|
|
13
|
+
* the descriptor keeps the registry declaration-shaped, and keeping it
|
|
14
|
+
* here keeps `AgentChannelsPanel` free of provider `if` branches.
|
|
15
|
+
*/
|
|
16
|
+
export interface ChannelProviderPresentation {
|
|
17
|
+
readonly id: ChannelProviderId;
|
|
18
|
+
/**
|
|
19
|
+
* One-line install facts under the channel name (the card's second
|
|
20
|
+
* line): where the channel is installed, since when, or why it isn't
|
|
21
|
+
* serving yet.
|
|
22
|
+
*/
|
|
23
|
+
readonly describeChannel: (channel: AgentChannel) => string;
|
|
24
|
+
/**
|
|
25
|
+
* The card's serving-app line: which provider app serves the channel
|
|
26
|
+
* and how members reach the agent through it. `servingAppName` is the
|
|
27
|
+
* resolved ChannelApp name, or `null` for the platform app (Slack
|
|
28
|
+
* only — WhatsApp is BYO-only and always has one).
|
|
29
|
+
*/
|
|
30
|
+
readonly servingLine: (servingAppName: string | null) => string;
|
|
31
|
+
/** Body copy of the disconnect confirmation prompt. */
|
|
32
|
+
readonly disconnectDescription: (channelName: string) => string;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const slackPresentation: ChannelProviderPresentation = {
|
|
36
|
+
id: "slack",
|
|
37
|
+
describeChannel: (channel) => {
|
|
38
|
+
const slack =
|
|
39
|
+
channel.status?.providerStatus?.case === "slack"
|
|
40
|
+
? channel.status.providerStatus.value
|
|
41
|
+
: null;
|
|
42
|
+
const installedAt = slack?.installedAt
|
|
43
|
+
? timestampDate(slack.installedAt)
|
|
44
|
+
: null;
|
|
45
|
+
switch (installStateOf(channel)) {
|
|
46
|
+
case AgentChannelInstallState.installed:
|
|
47
|
+
return [
|
|
48
|
+
slack?.teamName ? `Workspace: ${slack.teamName}` : "Workspace connected",
|
|
49
|
+
installedAt ? `since ${formatDate(installedAt)}` : null,
|
|
50
|
+
]
|
|
51
|
+
.filter(Boolean)
|
|
52
|
+
.join(" \u00b7 ");
|
|
53
|
+
case AgentChannelInstallState.revoked:
|
|
54
|
+
return slack?.teamName
|
|
55
|
+
? `The Slack app was removed from ${slack.teamName} — reconnect to resume.`
|
|
56
|
+
: "The Slack app was removed from the workspace — reconnect to resume.";
|
|
57
|
+
default:
|
|
58
|
+
return "The Slack install hasn't been completed yet.";
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
servingLine: (servingAppName) =>
|
|
62
|
+
servingAppName
|
|
63
|
+
? `Serving app: ${servingAppName} (your app) — members @mention ${servingAppName}`
|
|
64
|
+
: "Serving app: Stigmer — members @mention Stigmer",
|
|
65
|
+
disconnectDescription: (channelName) =>
|
|
66
|
+
`"${channelName}" stops serving immediately and its stored Slack ` +
|
|
67
|
+
"install (including credentials) is removed. Members of the " +
|
|
68
|
+
"workspace can no longer reach the agent. To pause without " +
|
|
69
|
+
"disconnecting, turn the channel off instead.",
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
const whatsappPresentation: ChannelProviderPresentation = {
|
|
73
|
+
id: "whatsapp",
|
|
74
|
+
describeChannel: (channel) => {
|
|
75
|
+
const whatsapp =
|
|
76
|
+
channel.status?.providerStatus?.case === "whatsapp"
|
|
77
|
+
? channel.status.providerStatus.value
|
|
78
|
+
: null;
|
|
79
|
+
const installedAt = whatsapp?.installedAt
|
|
80
|
+
? timestampDate(whatsapp.installedAt)
|
|
81
|
+
: null;
|
|
82
|
+
switch (installStateOf(channel)) {
|
|
83
|
+
case AgentChannelInstallState.installed: {
|
|
84
|
+
const number =
|
|
85
|
+
whatsapp?.displayPhoneNumber || whatsapp?.phoneNumberId || null;
|
|
86
|
+
return [
|
|
87
|
+
number ? `Number: ${number}` : "Number connected",
|
|
88
|
+
whatsapp?.verifiedName ? `(${whatsapp.verifiedName})` : null,
|
|
89
|
+
installedAt ? `since ${formatDate(installedAt)}` : null,
|
|
90
|
+
]
|
|
91
|
+
.filter(Boolean)
|
|
92
|
+
.join(" \u00b7 ");
|
|
93
|
+
}
|
|
94
|
+
// Meta emits no revocation events (DD-010), so WhatsApp channels
|
|
95
|
+
// never transition to revoked today — handled anyway so a future
|
|
96
|
+
// server that learns to observe revocation degrades sensibly.
|
|
97
|
+
case AgentChannelInstallState.revoked:
|
|
98
|
+
return "The WhatsApp connection was revoked — reconnect to resume.";
|
|
99
|
+
default:
|
|
100
|
+
return "The WhatsApp connection hasn't been completed yet.";
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
servingLine: (servingAppName) =>
|
|
104
|
+
servingAppName
|
|
105
|
+
? `Serving app: ${servingAppName} (your Meta app) — people message the connected number`
|
|
106
|
+
: "Serving app: your Meta app — people message the connected number",
|
|
107
|
+
disconnectDescription: (channelName) =>
|
|
108
|
+
// No "(including credentials)" arm: WhatsApp credentials live on the
|
|
109
|
+
// shared ChannelApp (DD-WA-3) and outlive any one channel.
|
|
110
|
+
`"${channelName}" stops serving immediately and its WhatsApp ` +
|
|
111
|
+
"number binding is removed. People can no longer reach the agent " +
|
|
112
|
+
"on that number. To pause without disconnecting, turn the channel " +
|
|
113
|
+
"off instead.",
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
const PRESENTATIONS: readonly ChannelProviderPresentation[] = [
|
|
117
|
+
slackPresentation,
|
|
118
|
+
whatsappPresentation,
|
|
119
|
+
];
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Fallback presentation for provider cases this UI doesn't know yet (a
|
|
123
|
+
* newer server) — the first registered provider, mirroring the panel's
|
|
124
|
+
* icon fallback to `CHANNEL_PROVIDERS[0]` so an unknown provider renders
|
|
125
|
+
* consistently rather than half-known.
|
|
126
|
+
*/
|
|
127
|
+
export const DEFAULT_CHANNEL_PRESENTATION: ChannelProviderPresentation =
|
|
128
|
+
slackPresentation;
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Resolve a provider's presentation from a `provider_config` oneof case
|
|
132
|
+
* name. Returns `null` for unknown cases — callers fall back the same
|
|
133
|
+
* way they do for {@link channelProviderOf}.
|
|
134
|
+
*/
|
|
135
|
+
export function channelPresentationOf(
|
|
136
|
+
providerCase: string | undefined,
|
|
137
|
+
): ChannelProviderPresentation | null {
|
|
138
|
+
return PRESENTATIONS.find((p) => p.id === providerCase) ?? null;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
function installStateOf(channel: AgentChannel): AgentChannelInstallState {
|
|
142
|
+
return (
|
|
143
|
+
channel.status?.installState ??
|
|
144
|
+
AgentChannelInstallState.agent_channel_install_state_unspecified
|
|
145
|
+
);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
function formatDate(date: Date): string {
|
|
149
|
+
return date.toLocaleDateString(undefined, {
|
|
150
|
+
year: "numeric",
|
|
151
|
+
month: "short",
|
|
152
|
+
day: "numeric",
|
|
153
|
+
});
|
|
154
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { ComponentType } from "react";
|
|
2
|
+
import { SlackMarkIcon } from "./SlackMarkIcon.js";
|
|
3
|
+
import { WhatsAppMarkIcon } from "./WhatsAppMarkIcon.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Identifier of a channel provider — matches the `provider_config` oneof
|
|
7
|
+
* case name on `AgentChannelSpec` / `ChannelAppSpec`, which is the wire
|
|
8
|
+
* discriminator every channel surface already switches on.
|
|
9
|
+
*/
|
|
10
|
+
export type ChannelProviderId = "slack" | "whatsapp";
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* How a provider's install flow runs — the client-side hint for whether
|
|
14
|
+
* connecting needs a browser popup.
|
|
15
|
+
*
|
|
16
|
+
* - `redirect`: an OAuth consent redirect (Slack). The client opens a
|
|
17
|
+
* popup synchronously inside the user gesture — before `initiateInstall`
|
|
18
|
+
* answers — because browsers only allow `window.open` from a gesture
|
|
19
|
+
* call stack.
|
|
20
|
+
* - `direct`: `initiateInstall` runs the whole install server-side and
|
|
21
|
+
* answers `completed=true` (WhatsApp, DD-WA-1). No popup, no callback
|
|
22
|
+
* route; the client refetches the channel.
|
|
23
|
+
*
|
|
24
|
+
* The server's `InitiateChannelInstallOutput.completed` field stays the
|
|
25
|
+
* authoritative outcome (DD-WA-1b) — this hint only decides whether to
|
|
26
|
+
* pre-open a popup at all.
|
|
27
|
+
*/
|
|
28
|
+
export type ChannelInstallStyle = "redirect" | "direct";
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Display descriptor for a channel provider.
|
|
32
|
+
*
|
|
33
|
+
* The single place a provider's UI identity lives. Adding a provider
|
|
34
|
+
* means adding a registry entry here (plus its presentation copy in
|
|
35
|
+
* providerPresentation.tsx); consumers derive labels, icons, and connect
|
|
36
|
+
* affordances from the registry instead of hardcoding a provider.
|
|
37
|
+
*/
|
|
38
|
+
export interface ChannelProviderDescriptor {
|
|
39
|
+
readonly id: ChannelProviderId;
|
|
40
|
+
/** Human-readable provider name ("Slack"). */
|
|
41
|
+
readonly label: string;
|
|
42
|
+
/** Brand mark; consumers size it via className. */
|
|
43
|
+
readonly Icon: ComponentType<{ readonly className?: string }>;
|
|
44
|
+
/** How this provider's install flow runs. */
|
|
45
|
+
readonly installStyle: ChannelInstallStyle;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* All channel providers this UI can render, in display order.
|
|
50
|
+
*
|
|
51
|
+
* With two providers the connect affordance renders as one visible
|
|
52
|
+
* "Connect to {label}" button per provider — deliberately NOT a dropdown
|
|
53
|
+
* menu: two options are clearer side by side (visibility over a hidden
|
|
54
|
+
* menu), and each button keeps its own stable cursor target for the docs
|
|
55
|
+
* demos. A third entry is the signal to fold these into a provider menu.
|
|
56
|
+
*/
|
|
57
|
+
export const CHANNEL_PROVIDERS: readonly ChannelProviderDescriptor[] = [
|
|
58
|
+
{ id: "slack", label: "Slack", Icon: SlackMarkIcon, installStyle: "redirect" },
|
|
59
|
+
{ id: "whatsapp", label: "WhatsApp", Icon: WhatsAppMarkIcon, installStyle: "direct" },
|
|
60
|
+
];
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Resolve a provider descriptor from a `provider_config` oneof case name.
|
|
64
|
+
*
|
|
65
|
+
* Returns `null` for unknown cases (e.g. a newer server returning a
|
|
66
|
+
* provider this UI doesn't know yet) — callers hide or fall back rather
|
|
67
|
+
* than render a half-known provider.
|
|
68
|
+
*/
|
|
69
|
+
export function channelProviderOf(
|
|
70
|
+
providerCase: string | undefined,
|
|
71
|
+
): ChannelProviderDescriptor | null {
|
|
72
|
+
return CHANNEL_PROVIDERS.find((p) => p.id === providerCase) ?? null;
|
|
73
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import type { AgentChannel } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/api_pb";
|
|
4
|
+
import { isNotFound } from "@stigmer/sdk";
|
|
5
|
+
import { useStigmer } from "../hooks.js";
|
|
6
|
+
import { useFetch } from "../internal/useFetch.js";
|
|
7
|
+
|
|
8
|
+
/** Return value of {@link useAgentChannel}. */
|
|
9
|
+
export interface UseAgentChannelReturn {
|
|
10
|
+
/**
|
|
11
|
+
* The channel, or `null` while loading, on error, or when no channel
|
|
12
|
+
* with that ID exists (not-found is data, not an error).
|
|
13
|
+
*/
|
|
14
|
+
readonly channel: AgentChannel | null;
|
|
15
|
+
/** `true` while the initial fetch is in flight and no data is shown. */
|
|
16
|
+
readonly isLoading: boolean;
|
|
17
|
+
/** `true` while a background refetch is in flight and stale data is shown. */
|
|
18
|
+
readonly isRefetching: boolean;
|
|
19
|
+
/** Error from the last failed request, or `null` when healthy. */
|
|
20
|
+
readonly error: Error | null;
|
|
21
|
+
/** Re-fetch the channel from the server. */
|
|
22
|
+
readonly refetch: () => void;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Data hook that loads a single {@link AgentChannel} by ID.
|
|
27
|
+
*
|
|
28
|
+
* Not-found maps to `channel === null` rather than an error, so callers
|
|
29
|
+
* can render an absent channel (e.g. deleted in another tab) without
|
|
30
|
+
* error styling. Pass an empty `id` to skip fetching (stable no-op).
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```tsx
|
|
34
|
+
* const { channel, isLoading, refetch } = useAgentChannel(channelId);
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export function useAgentChannel(id: string): UseAgentChannelReturn {
|
|
38
|
+
const stigmer = useStigmer();
|
|
39
|
+
|
|
40
|
+
const fetchFn = id
|
|
41
|
+
? async () => {
|
|
42
|
+
try {
|
|
43
|
+
return await stigmer.agentChannel.get(id);
|
|
44
|
+
} catch (err) {
|
|
45
|
+
if (isNotFound(err)) return null;
|
|
46
|
+
throw err;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
: null;
|
|
50
|
+
|
|
51
|
+
const { data: channel, isLoading, isRefetching, error, refetch } = useFetch(
|
|
52
|
+
fetchFn,
|
|
53
|
+
[id, stigmer],
|
|
54
|
+
null as AgentChannel | null,
|
|
55
|
+
);
|
|
56
|
+
|
|
57
|
+
return { channel, isLoading, isRefetching, error, refetch };
|
|
58
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { create } from "@bufbuild/protobuf";
|
|
4
|
+
import type { AgentChannel } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/api_pb";
|
|
5
|
+
import { GetAgentChannelsByAgentRequestSchema } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/io_pb";
|
|
6
|
+
import { useStigmer } from "../hooks.js";
|
|
7
|
+
import { useFetch } from "../internal/useFetch.js";
|
|
8
|
+
|
|
9
|
+
/** Return value of {@link useAgentChannelList}. */
|
|
10
|
+
export interface UseAgentChannelListReturn {
|
|
11
|
+
/**
|
|
12
|
+
* Every channel of the agent visible to the caller, in server order.
|
|
13
|
+
* Empty while loading, on error, or when the agent has no channels —
|
|
14
|
+
* `channels.length === 0 && !isLoading && !error` means "no channels
|
|
15
|
+
* exist yet".
|
|
16
|
+
*/
|
|
17
|
+
readonly channels: readonly AgentChannel[];
|
|
18
|
+
/** `true` while the initial fetch is in flight and no data is shown. */
|
|
19
|
+
readonly isLoading: boolean;
|
|
20
|
+
/** `true` while a background refetch is in flight and stale data is shown. */
|
|
21
|
+
readonly isRefetching: boolean;
|
|
22
|
+
/** Error from the last failed request, or `null` when healthy. */
|
|
23
|
+
readonly error: Error | null;
|
|
24
|
+
/** Re-fetch the channels from the server. */
|
|
25
|
+
readonly refetch: () => void;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Data hook that loads an agent's {@link AgentChannel} resources — the
|
|
30
|
+
* connections that expose the agent on external messaging platforms
|
|
31
|
+
* (Slack in v1, more providers later).
|
|
32
|
+
*
|
|
33
|
+
* A channel serves traffic only when its provider install completed
|
|
34
|
+
* (`status.installState === installed`) AND the owner's serving switch is
|
|
35
|
+
* on (`spec.enabled`) — the two axes the Channels tab renders.
|
|
36
|
+
*
|
|
37
|
+
* Pass `org` to scope the list to one organization's channels; the server
|
|
38
|
+
* only ever narrows the permission-bounded view. Pass an empty `agentId`
|
|
39
|
+
* to skip fetching (stable no-op) — useful while the agent is still
|
|
40
|
+
* loading.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```tsx
|
|
44
|
+
* const { channels, isLoading, refetch } = useAgentChannelList(
|
|
45
|
+
* agent?.metadata?.id ?? "",
|
|
46
|
+
* viewerOrg,
|
|
47
|
+
* );
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
export function useAgentChannelList(agentId: string, org?: string): UseAgentChannelListReturn {
|
|
51
|
+
const stigmer = useStigmer();
|
|
52
|
+
|
|
53
|
+
const fetchFn = agentId
|
|
54
|
+
? async () => {
|
|
55
|
+
const result = await stigmer.agentChannel.getByAgent(
|
|
56
|
+
create(GetAgentChannelsByAgentRequestSchema, { agentId, org: org ?? "" }),
|
|
57
|
+
);
|
|
58
|
+
return result.items;
|
|
59
|
+
}
|
|
60
|
+
: null;
|
|
61
|
+
|
|
62
|
+
const { data: channels, isLoading, isRefetching, error, refetch } = useFetch(
|
|
63
|
+
fetchFn,
|
|
64
|
+
[agentId, org, stigmer],
|
|
65
|
+
[] as AgentChannel[],
|
|
66
|
+
);
|
|
67
|
+
|
|
68
|
+
return { channels, isLoading, isRefetching, error, refetch };
|
|
69
|
+
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { create } from "@bufbuild/protobuf";
|
|
4
|
+
import type { Session } from "@stigmer/protos/ai/stigmer/agentic/session/v1/api_pb";
|
|
5
|
+
import { ListSessionsByChannelRequestSchema } from "@stigmer/protos/ai/stigmer/agentic/session/v1/io_pb";
|
|
6
|
+
import { useStigmer } from "../hooks.js";
|
|
7
|
+
import { useFetch } from "../internal/useFetch.js";
|
|
8
|
+
|
|
9
|
+
/** Return value of {@link useChannelSessions}. */
|
|
10
|
+
export interface UseChannelSessionsReturn {
|
|
11
|
+
/**
|
|
12
|
+
* The channel's conversations (one session per external conversation),
|
|
13
|
+
* newest activity first. Empty while loading, on error, or when nobody
|
|
14
|
+
* has messaged the channel yet — `sessions.length === 0 && !isLoading
|
|
15
|
+
* && !error` means "no conversations yet".
|
|
16
|
+
*/
|
|
17
|
+
readonly sessions: readonly Session[];
|
|
18
|
+
/** `true` while the initial fetch is in flight and no data is shown. */
|
|
19
|
+
readonly isLoading: boolean;
|
|
20
|
+
/** `true` while a background refetch is in flight and stale data is shown. */
|
|
21
|
+
readonly isRefetching: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Error from the last failed request, or `null` when healthy. A
|
|
24
|
+
* PERMISSION_DENIED here means the caller cannot view the channel —
|
|
25
|
+
* conversations are visible to exactly the channel's viewers (the
|
|
26
|
+
* connector and org admins).
|
|
27
|
+
*/
|
|
28
|
+
readonly error: Error | null;
|
|
29
|
+
/** Re-fetch the conversations from the server. */
|
|
30
|
+
readonly refetch: () => void;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Data hook that loads the conversations an {@link AgentChannel} created —
|
|
35
|
+
* the Slack/WhatsApp sessions the channel runtime owns (design decision
|
|
36
|
+
* 012: channel-session read-only observability).
|
|
37
|
+
*
|
|
38
|
+
* The server enforces the visibility boundary twice: the caller must hold
|
|
39
|
+
* `can_view` on the channel, and results are filtered to sessions the
|
|
40
|
+
* caller can individually view. Open a returned session with
|
|
41
|
+
* `SessionViewer` — it self-selects the read-only `"observer"` audience
|
|
42
|
+
* for channel-originated sessions.
|
|
43
|
+
*
|
|
44
|
+
* Pass an empty `channelId` to skip fetching (stable no-op) — useful
|
|
45
|
+
* while the channel list is still loading.
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```tsx
|
|
49
|
+
* const { sessions, isLoading, error } = useChannelSessions(
|
|
50
|
+
* channel.metadata?.id ?? "",
|
|
51
|
+
* );
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export function useChannelSessions(channelId: string): UseChannelSessionsReturn {
|
|
55
|
+
const stigmer = useStigmer();
|
|
56
|
+
|
|
57
|
+
const fetchFn = channelId
|
|
58
|
+
? async () => {
|
|
59
|
+
const result = await stigmer.session.listByChannel(
|
|
60
|
+
create(ListSessionsByChannelRequestSchema, { channelId }),
|
|
61
|
+
);
|
|
62
|
+
return result.entries;
|
|
63
|
+
}
|
|
64
|
+
: null;
|
|
65
|
+
|
|
66
|
+
const { data: sessions, isLoading, isRefetching, error, refetch } = useFetch(
|
|
67
|
+
fetchFn,
|
|
68
|
+
[channelId, stigmer],
|
|
69
|
+
[] as Session[],
|
|
70
|
+
);
|
|
71
|
+
|
|
72
|
+
return { sessions, isLoading, isRefetching, error, refetch };
|
|
73
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import type { Agent } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/api_pb";
|
|
4
|
+
import type { ResourceRef } from "@stigmer/sdk";
|
|
5
|
+
import { useDeploymentMode } from "../deployment-mode.js";
|
|
6
|
+
import {
|
|
7
|
+
useToolCredentialsReadiness,
|
|
8
|
+
type ToolCredentialsReadiness,
|
|
9
|
+
} from "../environment/useToolCredentialsReadiness.js";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Channel-scoped wrapper over {@link useToolCredentialsReadiness}:
|
|
13
|
+
* checks whether a tool-using agent's credentials will work over a
|
|
14
|
+
* channel — i.e. whether the channel binds environments
|
|
15
|
+
* (`AgentChannelSpec.environment_refs`) and each one is shared with the
|
|
16
|
+
* organization.
|
|
17
|
+
*
|
|
18
|
+
* Channel executions receive credentials exclusively from the
|
|
19
|
+
* channel's own bindings, resolved through the org-shared environment
|
|
20
|
+
* seam — exactly the share contract, without the audience arm (channels
|
|
21
|
+
* have no audience concept). So a tool-using agent on a channel with no
|
|
22
|
+
* bindings is guaranteed to refuse every workspace message that needs a
|
|
23
|
+
* tool.
|
|
24
|
+
*
|
|
25
|
+
* The check runs only when serving is enabled (a paused channel serves
|
|
26
|
+
* no traffic), the deployment is cloud (the channel runtime is
|
|
27
|
+
* cloud-only), and the agent declares MCP server usages.
|
|
28
|
+
*/
|
|
29
|
+
export function useChannelToolReadiness(
|
|
30
|
+
agent: Agent,
|
|
31
|
+
enabled: boolean,
|
|
32
|
+
environmentRefs: readonly ResourceRef[],
|
|
33
|
+
): ToolCredentialsReadiness {
|
|
34
|
+
const deploymentMode = useDeploymentMode();
|
|
35
|
+
const hasMcpTools = (agent.spec?.mcpServerUsages?.length ?? 0) > 0;
|
|
36
|
+
const applicable = enabled && deploymentMode === "cloud" && hasMcpTools;
|
|
37
|
+
|
|
38
|
+
return useToolCredentialsReadiness(applicable, environmentRefs);
|
|
39
|
+
}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
4
|
+
import { create } from "@bufbuild/protobuf";
|
|
5
|
+
import type { AgentChannel } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/api_pb";
|
|
6
|
+
import {
|
|
7
|
+
InitiateChannelInstallInputSchema,
|
|
8
|
+
CompleteChannelInstallInputSchema,
|
|
9
|
+
} from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/io_pb";
|
|
10
|
+
import { useStigmer } from "../hooks.js";
|
|
11
|
+
import { toError } from "../internal/toError.js";
|
|
12
|
+
import {
|
|
13
|
+
openOAuthPopup,
|
|
14
|
+
popupBlockedError,
|
|
15
|
+
waitForOAuthCallback,
|
|
16
|
+
closeOAuthPopup,
|
|
17
|
+
} from "../internal/oauthPopup.js";
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Progress phases of the Slack channel install flow.
|
|
21
|
+
*
|
|
22
|
+
* Mirrors the MCP OAuth phases minus `connecting` — a channel install has
|
|
23
|
+
* no tool-discovery step; `completeInstall` returns the installed channel
|
|
24
|
+
* directly.
|
|
25
|
+
*/
|
|
26
|
+
export type SlackConnectPhase =
|
|
27
|
+
| "idle"
|
|
28
|
+
| "initiating"
|
|
29
|
+
| "awaiting-callback"
|
|
30
|
+
| "completing"
|
|
31
|
+
| "done";
|
|
32
|
+
|
|
33
|
+
/** Return value of {@link useConnectSlackChannel}. */
|
|
34
|
+
export interface UseConnectSlackChannelReturn {
|
|
35
|
+
/**
|
|
36
|
+
* Run the Slack install flow for a channel.
|
|
37
|
+
*
|
|
38
|
+
* Opens a popup for Slack's "Add to Slack" consent screen, waits for
|
|
39
|
+
* the OAuth callback, then exchanges the authorization code via
|
|
40
|
+
* `completeInstall`. Works for first installs and re-installs after
|
|
41
|
+
* revocation alike (the server transitions `revoked → installed`).
|
|
42
|
+
*
|
|
43
|
+
* **Must be called from a synchronous user-gesture handler** (e.g. an
|
|
44
|
+
* `onClick` callback) so the browser allows the popup. The popup is
|
|
45
|
+
* opened synchronously before any async work to avoid popup blockers.
|
|
46
|
+
*
|
|
47
|
+
* Failure modes surface as `error` with server-authored copy:
|
|
48
|
+
* a deployment without Slack app credentials or an OSS backend refuses
|
|
49
|
+
* at `initiating` (FAILED_PRECONDITION); duplicate-workspace and
|
|
50
|
+
* Enterprise Grid installs refuse at `completing`.
|
|
51
|
+
*
|
|
52
|
+
* @param channelId - System-generated ID (metadata.id) of the channel.
|
|
53
|
+
* @returns The installed AgentChannel (status carries the Slack facts).
|
|
54
|
+
*/
|
|
55
|
+
readonly connect: (channelId: string) => Promise<AgentChannel>;
|
|
56
|
+
/** `true` while any phase of the install flow is in progress. */
|
|
57
|
+
readonly isInProgress: boolean;
|
|
58
|
+
/** Current phase of the install flow. */
|
|
59
|
+
readonly phase: SlackConnectPhase;
|
|
60
|
+
/** Error from the most recent unsuccessful attempt, or `null`. */
|
|
61
|
+
readonly error: Error | null;
|
|
62
|
+
/** Reset the hook to idle state, cancelling any in-flight flow. */
|
|
63
|
+
readonly clearError: () => void;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Behavior hook that orchestrates the Slack channel install flow.
|
|
68
|
+
*
|
|
69
|
+
* Handles the complete lifecycle:
|
|
70
|
+
* 1. Calls `initiateInstall` to get Slack's authorization URL + state
|
|
71
|
+
* 2. Opens a popup window to the "Add to Slack" consent screen
|
|
72
|
+
* 3. Waits for the callback (`postMessage` + BroadcastChannel, via the
|
|
73
|
+
* shared `internal/oauthPopup.ts` machinery)
|
|
74
|
+
* 4. Calls `completeInstall` to exchange the code — the server stores the
|
|
75
|
+
* bot token and records the install facts on `status.slack`
|
|
76
|
+
*
|
|
77
|
+
* The callback page is the same `OAuthCallbackHandler` component used by
|
|
78
|
+
* MCP OAuth, hosted on the console's Slack redirect route.
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```tsx
|
|
82
|
+
* const slack = useConnectSlackChannel();
|
|
83
|
+
*
|
|
84
|
+
* async function handleConnect() {
|
|
85
|
+
* try {
|
|
86
|
+
* const installed = await slack.connect(channel.metadata.id);
|
|
87
|
+
* refetch();
|
|
88
|
+
* } catch {
|
|
89
|
+
* // error is available via slack.error
|
|
90
|
+
* }
|
|
91
|
+
* }
|
|
92
|
+
*
|
|
93
|
+
* <button onClick={handleConnect} disabled={slack.isInProgress}>
|
|
94
|
+
* {slack.isInProgress ? "Connecting..." : "Connect to Slack"}
|
|
95
|
+
* </button>
|
|
96
|
+
* ```
|
|
97
|
+
*/
|
|
98
|
+
export function useConnectSlackChannel(): UseConnectSlackChannelReturn {
|
|
99
|
+
const stigmer = useStigmer();
|
|
100
|
+
const [phase, setPhase] = useState<SlackConnectPhase>("idle");
|
|
101
|
+
const [error, setError] = useState<Error | null>(null);
|
|
102
|
+
|
|
103
|
+
const popupRef = useRef<Window | null>(null);
|
|
104
|
+
const cleanupRef = useRef<(() => void) | null>(null);
|
|
105
|
+
const cancelledRef = useRef(false);
|
|
106
|
+
|
|
107
|
+
useEffect(() => {
|
|
108
|
+
return () => {
|
|
109
|
+
cleanupRef.current?.();
|
|
110
|
+
};
|
|
111
|
+
}, []);
|
|
112
|
+
|
|
113
|
+
const clearError = useCallback(() => {
|
|
114
|
+
if (cleanupRef.current || popupRef.current) {
|
|
115
|
+
cancelledRef.current = true;
|
|
116
|
+
cleanupRef.current?.();
|
|
117
|
+
closeOAuthPopup(popupRef.current);
|
|
118
|
+
popupRef.current = null;
|
|
119
|
+
cleanupRef.current = null;
|
|
120
|
+
}
|
|
121
|
+
setPhase("idle");
|
|
122
|
+
setError(null);
|
|
123
|
+
}, []);
|
|
124
|
+
|
|
125
|
+
const connect = useCallback(
|
|
126
|
+
async (channelId: string): Promise<AgentChannel> => {
|
|
127
|
+
setPhase("initiating");
|
|
128
|
+
setError(null);
|
|
129
|
+
cancelledRef.current = false;
|
|
130
|
+
|
|
131
|
+
cleanupRef.current?.();
|
|
132
|
+
|
|
133
|
+
const popup = openOAuthPopup();
|
|
134
|
+
if (!popup) {
|
|
135
|
+
const blocked = popupBlockedError();
|
|
136
|
+
setError(blocked);
|
|
137
|
+
setPhase("idle");
|
|
138
|
+
throw blocked;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
popupRef.current = popup;
|
|
142
|
+
|
|
143
|
+
try {
|
|
144
|
+
const initOutput = await stigmer.agentChannel.initiateInstall(
|
|
145
|
+
create(InitiateChannelInstallInputSchema, { resourceId: channelId }),
|
|
146
|
+
);
|
|
147
|
+
|
|
148
|
+
popup.location.href = initOutput.authorizationUrl;
|
|
149
|
+
setPhase("awaiting-callback");
|
|
150
|
+
|
|
151
|
+
const { code, state } = await waitForOAuthCallback(
|
|
152
|
+
popup,
|
|
153
|
+
initOutput.state,
|
|
154
|
+
(dispose) => {
|
|
155
|
+
cleanupRef.current = dispose;
|
|
156
|
+
},
|
|
157
|
+
);
|
|
158
|
+
|
|
159
|
+
setPhase("completing");
|
|
160
|
+
|
|
161
|
+
const channel = await stigmer.agentChannel.completeInstall(
|
|
162
|
+
create(CompleteChannelInstallInputSchema, {
|
|
163
|
+
resourceId: channelId,
|
|
164
|
+
state,
|
|
165
|
+
code,
|
|
166
|
+
}),
|
|
167
|
+
);
|
|
168
|
+
|
|
169
|
+
setPhase("done");
|
|
170
|
+
return channel;
|
|
171
|
+
} catch (err) {
|
|
172
|
+
const wrapped = toError(err);
|
|
173
|
+
if (!cancelledRef.current) {
|
|
174
|
+
setError(wrapped);
|
|
175
|
+
setPhase("idle");
|
|
176
|
+
closeOAuthPopup(popup);
|
|
177
|
+
}
|
|
178
|
+
cancelledRef.current = false;
|
|
179
|
+
throw wrapped;
|
|
180
|
+
} finally {
|
|
181
|
+
popupRef.current = null;
|
|
182
|
+
cleanupRef.current = null;
|
|
183
|
+
}
|
|
184
|
+
},
|
|
185
|
+
[stigmer],
|
|
186
|
+
);
|
|
187
|
+
|
|
188
|
+
return {
|
|
189
|
+
connect,
|
|
190
|
+
isInProgress: phase !== "idle" && phase !== "done",
|
|
191
|
+
phase,
|
|
192
|
+
error,
|
|
193
|
+
clearError,
|
|
194
|
+
};
|
|
195
|
+
}
|