@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
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
3
|
import { useCallback, useState } from "react";
|
|
4
|
+
import { MoreHorizontal, Pause, Pencil, Play, RotateCcw, Trash2 } from "lucide-react";
|
|
4
5
|
import { cn } from "@stigmer/theme";
|
|
5
6
|
import {
|
|
6
7
|
appendLinkToken,
|
|
@@ -10,9 +11,10 @@ import {
|
|
|
10
11
|
import type { Agent } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/api_pb";
|
|
11
12
|
import type { AgentShare } from "@stigmer/protos/ai/stigmer/agentic/agentshare/v1/api_pb";
|
|
12
13
|
import { toast } from "../feedback/toast.js";
|
|
14
|
+
import { ActionMenu } from "../action-menu/index.js";
|
|
13
15
|
import { Button } from "../button/Button.js";
|
|
14
16
|
import { EmptyState } from "../empty-state/EmptyState.js";
|
|
15
|
-
import {
|
|
17
|
+
import { useCheckPermission } from "../iam-policy/useCheckPermission.js";
|
|
16
18
|
import { ConfirmDialog } from "../resource-detail/ConfirmDialog.js";
|
|
17
19
|
import { useConfirmAction } from "../resource-detail/useConfirmAction.js";
|
|
18
20
|
import { useCopyResource } from "../resource-detail/useCopyResource.js";
|
|
@@ -164,14 +166,17 @@ export function AgentShareList({
|
|
|
164
166
|
</div>
|
|
165
167
|
|
|
166
168
|
<div className="overflow-hidden rounded-lg border border-border">
|
|
167
|
-
|
|
169
|
+
{/* table-fixed keeps the layout deterministic: Name/Link flex and
|
|
170
|
+
truncate, the rest take fixed widths, so a long name or link
|
|
171
|
+
can never push the Actions kebab off the panel's edge. */}
|
|
172
|
+
<table className="w-full table-fixed text-sm">
|
|
168
173
|
<thead>
|
|
169
174
|
<tr className="border-b border-border bg-muted-subtle">
|
|
170
175
|
<th className="px-4 py-2 text-left font-medium text-muted-foreground">Name</th>
|
|
171
176
|
<th className="px-4 py-2 text-left font-medium text-muted-foreground">Link</th>
|
|
172
|
-
<th className="px-4 py-2 text-left font-medium text-muted-foreground">Audience</th>
|
|
173
|
-
<th className="px-4 py-2 text-left font-medium text-muted-foreground">Status</th>
|
|
174
|
-
<th className="px-4 py-2 text-right font-medium text-muted-foreground">Actions</th>
|
|
177
|
+
<th className="w-28 px-4 py-2 text-left font-medium text-muted-foreground">Audience</th>
|
|
178
|
+
<th className="w-24 px-4 py-2 text-left font-medium text-muted-foreground">Status</th>
|
|
179
|
+
<th className="w-16 px-4 py-2 text-right font-medium text-muted-foreground">Actions</th>
|
|
175
180
|
</tr>
|
|
176
181
|
</thead>
|
|
177
182
|
<tbody className="divide-y divide-border">
|
|
@@ -248,6 +253,19 @@ function ShareRow({
|
|
|
248
253
|
const { save, isPending } = useSaveAgentShare(agent);
|
|
249
254
|
const { rotateShareLink, isPending: isRotating } = useRotateShareLink(id);
|
|
250
255
|
|
|
256
|
+
// Decide the row's actions here (not via nested PermissionGate wrappers) so
|
|
257
|
+
// the kebab is hidden entirely when the viewer can do nothing to this
|
|
258
|
+
// share — an empty overflow menu is worse than no menu. Same self-check
|
|
259
|
+
// RPC as PermissionGate; permissive in OSS, so local single-user sees all.
|
|
260
|
+
const { allowed: canEdit } = useCheckPermission(
|
|
261
|
+
{ kind: "agent_share", id },
|
|
262
|
+
"can_edit",
|
|
263
|
+
);
|
|
264
|
+
const { allowed: canDelete } = useCheckPermission(
|
|
265
|
+
{ kind: "agent_share", id },
|
|
266
|
+
"can_delete",
|
|
267
|
+
);
|
|
268
|
+
|
|
251
269
|
// The copyable URL carries the link token on public shares (org
|
|
252
270
|
// audience is gated by membership, not the token). The display stays
|
|
253
271
|
// the bare path — the token is a secret, not an address.
|
|
@@ -292,14 +310,17 @@ function ShareRow({
|
|
|
292
310
|
onClick={() => onEditClick(share)}
|
|
293
311
|
>
|
|
294
312
|
<td className="px-4 py-2.5">
|
|
295
|
-
<div className="flex items-center gap-2">
|
|
296
|
-
<span
|
|
313
|
+
<div className="flex min-w-0 items-center gap-2">
|
|
314
|
+
<span
|
|
315
|
+
className="truncate font-medium text-foreground"
|
|
316
|
+
title={meta?.name || slug || undefined}
|
|
317
|
+
>
|
|
297
318
|
{meta?.name || slug || "\u2014"}
|
|
298
319
|
</span>
|
|
299
320
|
{isCrossOrg && (
|
|
300
321
|
<span
|
|
301
322
|
className={cn(
|
|
302
|
-
"inline-flex items-center rounded-md px-1.5 py-0.5",
|
|
323
|
+
"inline-flex shrink-0 items-center rounded-md px-1.5 py-0.5",
|
|
303
324
|
"text-[0.6rem] font-medium uppercase tracking-wide",
|
|
304
325
|
"bg-muted text-muted-foreground border border-border",
|
|
305
326
|
)}
|
|
@@ -312,9 +333,9 @@ function ShareRow({
|
|
|
312
333
|
</td>
|
|
313
334
|
|
|
314
335
|
<td className="px-4 py-2.5" onClick={(e) => e.stopPropagation()}>
|
|
315
|
-
<div className="flex items-center gap-1.5">
|
|
336
|
+
<div className="flex min-w-0 items-center gap-1.5">
|
|
316
337
|
<code
|
|
317
|
-
className="
|
|
338
|
+
className="truncate font-mono text-xs text-muted-foreground"
|
|
318
339
|
title={displayPath}
|
|
319
340
|
>
|
|
320
341
|
{displayPath}
|
|
@@ -324,7 +345,7 @@ function ShareRow({
|
|
|
324
345
|
onClick={handleCopyLink}
|
|
325
346
|
aria-label={`Copy link for ${meta?.name || slug}`}
|
|
326
347
|
className={cn(
|
|
327
|
-
"rounded p-1 text-muted-foreground",
|
|
348
|
+
"shrink-0 rounded p-1 text-muted-foreground",
|
|
328
349
|
"hover:bg-accent-hover hover:text-foreground",
|
|
329
350
|
"focus:outline-none focus:ring-1 focus:ring-ring",
|
|
330
351
|
)}
|
|
@@ -358,63 +379,63 @@ function ShareRow({
|
|
|
358
379
|
</span>
|
|
359
380
|
</td>
|
|
360
381
|
|
|
382
|
+
{/* stopPropagation so opening the kebab never triggers the row's
|
|
383
|
+
click-to-edit. The menu content itself is portaled, so its items
|
|
384
|
+
never bubble to the row regardless. */}
|
|
361
385
|
<td className="px-4 py-2.5 text-right" onClick={(e) => e.stopPropagation()}>
|
|
362
|
-
|
|
363
|
-
<
|
|
364
|
-
<
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
className={cn(
|
|
368
|
-
"rounded px-2 py-1 text-xs font-medium",
|
|
369
|
-
"text-foreground hover:bg-accent-hover",
|
|
370
|
-
"focus:outline-none focus:ring-1 focus:ring-ring",
|
|
371
|
-
)}
|
|
386
|
+
{(canEdit || canDelete) && (
|
|
387
|
+
<ActionMenu>
|
|
388
|
+
<ActionMenu.Trigger
|
|
389
|
+
className="ml-auto"
|
|
390
|
+
aria-label={`Actions for ${meta?.name || slug}`}
|
|
372
391
|
>
|
|
373
|
-
|
|
374
|
-
</
|
|
375
|
-
<
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
392
|
+
<MoreHorizontal className="size-4" />
|
|
393
|
+
</ActionMenu.Trigger>
|
|
394
|
+
<ActionMenu.Content>
|
|
395
|
+
{canEdit && (
|
|
396
|
+
<>
|
|
397
|
+
{/* Also the only keyboard-reachable path to edit — the
|
|
398
|
+
row's click-to-edit is mouse-only. */}
|
|
399
|
+
<ActionMenu.Item
|
|
400
|
+
icon={<Pencil />}
|
|
401
|
+
onSelect={() => onEditClick(share)}
|
|
402
|
+
>
|
|
403
|
+
Edit
|
|
404
|
+
</ActionMenu.Item>
|
|
405
|
+
{/* The menu closes on select; a toast reports the outcome,
|
|
406
|
+
so no inline pending label is needed. `disabled` guards
|
|
407
|
+
against a re-fire if the menu is reopened mid-flight. */}
|
|
408
|
+
<ActionMenu.Item
|
|
409
|
+
icon={enabled ? <Pause /> : <Play />}
|
|
410
|
+
disabled={isPending}
|
|
411
|
+
onSelect={() => void handleToggleEnabled()}
|
|
412
|
+
>
|
|
413
|
+
{enabled ? "Pause" : "Resume"}
|
|
414
|
+
</ActionMenu.Item>
|
|
415
|
+
{audience === "public" && (
|
|
416
|
+
<ActionMenu.Item
|
|
417
|
+
icon={<RotateCcw />}
|
|
418
|
+
disabled={isRotating}
|
|
419
|
+
onSelect={() => void handleResetLink()}
|
|
420
|
+
>
|
|
421
|
+
Reset link
|
|
422
|
+
</ActionMenu.Item>
|
|
423
|
+
)}
|
|
424
|
+
</>
|
|
384
425
|
)}
|
|
385
|
-
|
|
386
|
-
{
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
"rounded px-2 py-1 text-xs font-medium",
|
|
395
|
-
"text-foreground hover:bg-accent-hover",
|
|
396
|
-
"focus:outline-none focus:ring-1 focus:ring-ring",
|
|
397
|
-
"disabled:pointer-events-none disabled:opacity-50",
|
|
398
|
-
)}
|
|
399
|
-
>
|
|
400
|
-
{isRotating ? "Resetting…" : "Reset link"}
|
|
401
|
-
</button>
|
|
402
|
-
)}
|
|
403
|
-
</PermissionGate>
|
|
404
|
-
<PermissionGate resource={{ kind: "agent_share", id }} relation="can_delete">
|
|
405
|
-
<button
|
|
406
|
-
type="button"
|
|
407
|
-
onClick={() => onDeleteClick(share)}
|
|
408
|
-
className={cn(
|
|
409
|
-
"rounded px-2 py-1 text-xs font-medium",
|
|
410
|
-
"text-destructive hover:bg-destructive-subtle",
|
|
411
|
-
"focus:outline-none focus:ring-1 focus:ring-ring",
|
|
426
|
+
{canEdit && canDelete && <ActionMenu.Separator />}
|
|
427
|
+
{canDelete && (
|
|
428
|
+
<ActionMenu.Item
|
|
429
|
+
icon={<Trash2 />}
|
|
430
|
+
variant="destructive"
|
|
431
|
+
onSelect={() => onDeleteClick(share)}
|
|
432
|
+
>
|
|
433
|
+
Delete
|
|
434
|
+
</ActionMenu.Item>
|
|
412
435
|
)}
|
|
413
|
-
>
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
</PermissionGate>
|
|
417
|
-
</div>
|
|
436
|
+
</ActionMenu.Content>
|
|
437
|
+
</ActionMenu>
|
|
438
|
+
)}
|
|
418
439
|
</td>
|
|
419
440
|
</tr>
|
|
420
441
|
);
|
|
@@ -47,7 +47,7 @@ const SHARE_TABS: readonly TabItem[] = [
|
|
|
47
47
|
];
|
|
48
48
|
|
|
49
49
|
const PLATFORM_CLIENT_DOCS_URL =
|
|
50
|
-
"https://
|
|
50
|
+
"https://stigmer.ai/docs/guides/authentication/platform-client/overview";
|
|
51
51
|
|
|
52
52
|
/** Props for {@link ShareAgentDialog}. */
|
|
53
53
|
export interface ShareAgentDialogProps {
|
|
@@ -14,14 +14,31 @@ vi.mock("../../feedback/toast", () => ({
|
|
|
14
14
|
toast: { success: vi.fn(), error: vi.fn() },
|
|
15
15
|
}));
|
|
16
16
|
|
|
17
|
-
//
|
|
17
|
+
// The row actions live in a Base UI menu, whose content is portaled to the
|
|
18
|
+
// SDK portal container. Without a StigmerProvider that container is null and
|
|
19
|
+
// the menu renders nothing — pin it to document.body so the menu mounts.
|
|
20
|
+
vi.mock("../../portal-container", () => ({
|
|
21
|
+
useStigmerPortalContainer: () => document.body,
|
|
22
|
+
}));
|
|
23
|
+
|
|
18
24
|
beforeAll(() => {
|
|
25
|
+
// happy-dom does not implement the native dialog show/close methods.
|
|
19
26
|
HTMLDialogElement.prototype.showModal = function showModal() {
|
|
20
27
|
this.open = true;
|
|
21
28
|
};
|
|
22
29
|
HTMLDialogElement.prototype.close = function close() {
|
|
23
30
|
this.open = false;
|
|
24
31
|
};
|
|
32
|
+
// Base UI's menu positioner observes its anchor; happy-dom lacks
|
|
33
|
+
// ResizeObserver, so provide a no-op shim.
|
|
34
|
+
if (!("ResizeObserver" in globalThis)) {
|
|
35
|
+
(globalThis as unknown as { ResizeObserver: unknown }).ResizeObserver =
|
|
36
|
+
class {
|
|
37
|
+
observe() {}
|
|
38
|
+
unobserve() {}
|
|
39
|
+
disconnect() {}
|
|
40
|
+
};
|
|
41
|
+
}
|
|
25
42
|
});
|
|
26
43
|
|
|
27
44
|
afterEach(cleanup);
|
|
@@ -32,6 +49,11 @@ interface MockOverrides {
|
|
|
32
49
|
deleteShare?: (id: string) => Promise<unknown>;
|
|
33
50
|
rotateShareLink?: (input: unknown) => Promise<unknown>;
|
|
34
51
|
isAuthorized?: boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Per-relation authorization, for tests that need `can_edit` and
|
|
54
|
+
* `can_delete` to differ. Takes precedence over `isAuthorized`.
|
|
55
|
+
*/
|
|
56
|
+
checkPermission?: (relation: string) => boolean;
|
|
35
57
|
}
|
|
36
58
|
|
|
37
59
|
function createMockStigmer(overrides: MockOverrides = {}) {
|
|
@@ -46,9 +68,15 @@ function createMockStigmer(overrides: MockOverrides = {}) {
|
|
|
46
68
|
overrides.rotateShareLink ?? vi.fn().mockResolvedValue({}),
|
|
47
69
|
},
|
|
48
70
|
iamPolicy: {
|
|
49
|
-
checkMyPermission: vi
|
|
50
|
-
|
|
51
|
-
|
|
71
|
+
checkMyPermission: vi
|
|
72
|
+
.fn()
|
|
73
|
+
.mockImplementation((input: { relation: string }) =>
|
|
74
|
+
Promise.resolve({
|
|
75
|
+
isAuthorized: overrides.checkPermission
|
|
76
|
+
? overrides.checkPermission(input.relation)
|
|
77
|
+
: (overrides.isAuthorized ?? true),
|
|
78
|
+
}),
|
|
79
|
+
),
|
|
52
80
|
},
|
|
53
81
|
environment: {
|
|
54
82
|
list: vi.fn().mockResolvedValue({ items: [], totalCount: 0 }),
|
|
@@ -143,6 +171,19 @@ async function renderList(
|
|
|
143
171
|
);
|
|
144
172
|
}
|
|
145
173
|
|
|
174
|
+
/**
|
|
175
|
+
* Opens a row's overflow (kebab) menu and resolves once its items mount.
|
|
176
|
+
* Pass the row's visible name to disambiguate when several rows are present.
|
|
177
|
+
* The menu content is portaled, so query its items from `screen`, not the row.
|
|
178
|
+
*/
|
|
179
|
+
async function openRowMenu(rowName?: string) {
|
|
180
|
+
const scope = rowName
|
|
181
|
+
? within(screen.getByText(rowName).closest("tr")!)
|
|
182
|
+
: screen;
|
|
183
|
+
fireEvent.click(scope.getByRole("button", { name: /^Actions for/ }));
|
|
184
|
+
await screen.findByRole("menuitem", { name: "Edit" });
|
|
185
|
+
}
|
|
186
|
+
|
|
146
187
|
describe("AgentShareList", () => {
|
|
147
188
|
it("lists every share with link, audience, and status — no canonical collapse", async () => {
|
|
148
189
|
const client = createMockStigmer({
|
|
@@ -220,8 +261,8 @@ describe("AgentShareList", () => {
|
|
|
220
261
|
});
|
|
221
262
|
await renderList(client);
|
|
222
263
|
|
|
223
|
-
|
|
224
|
-
fireEvent.click(
|
|
264
|
+
await openRowMenu("Help Desk");
|
|
265
|
+
fireEvent.click(screen.getByRole("menuitem", { name: "Edit" }));
|
|
225
266
|
|
|
226
267
|
// The editor shows the chosen share's URL — not the first row's.
|
|
227
268
|
expect(
|
|
@@ -281,7 +322,8 @@ describe("AgentShareList", () => {
|
|
|
281
322
|
});
|
|
282
323
|
await renderList(client);
|
|
283
324
|
|
|
284
|
-
|
|
325
|
+
await openRowMenu();
|
|
326
|
+
fireEvent.click(screen.getByRole("menuitem", { name: "Pause" }));
|
|
285
327
|
|
|
286
328
|
await waitFor(() => expect(apply).toHaveBeenCalledTimes(1));
|
|
287
329
|
const input = apply.mock.calls[0][0] as AgentShareInput;
|
|
@@ -302,7 +344,8 @@ describe("AgentShareList", () => {
|
|
|
302
344
|
});
|
|
303
345
|
await renderList(client);
|
|
304
346
|
|
|
305
|
-
|
|
347
|
+
await openRowMenu();
|
|
348
|
+
fireEvent.click(screen.getByRole("menuitem", { name: "Resume" }));
|
|
306
349
|
|
|
307
350
|
await waitFor(() => expect(apply).toHaveBeenCalledTimes(1));
|
|
308
351
|
expect((apply.mock.calls[0][0] as AgentShareInput).enabled).toBe(true);
|
|
@@ -318,7 +361,8 @@ describe("AgentShareList", () => {
|
|
|
318
361
|
});
|
|
319
362
|
await renderList(client);
|
|
320
363
|
|
|
321
|
-
|
|
364
|
+
await openRowMenu();
|
|
365
|
+
fireEvent.click(screen.getByRole("menuitem", { name: "Reset link" }));
|
|
322
366
|
|
|
323
367
|
await waitFor(() => expect(rotateShareLink).toHaveBeenCalledTimes(1));
|
|
324
368
|
expect(
|
|
@@ -334,7 +378,8 @@ describe("AgentShareList", () => {
|
|
|
334
378
|
});
|
|
335
379
|
await renderList(client);
|
|
336
380
|
|
|
337
|
-
|
|
381
|
+
await openRowMenu();
|
|
382
|
+
expect(screen.queryByRole("menuitem", { name: "Reset link" })).toBeNull();
|
|
338
383
|
});
|
|
339
384
|
});
|
|
340
385
|
|
|
@@ -345,7 +390,8 @@ describe("AgentShareList", () => {
|
|
|
345
390
|
const client = createMockStigmer({ deleteShare, getByAgent });
|
|
346
391
|
await renderList(client);
|
|
347
392
|
|
|
348
|
-
|
|
393
|
+
await openRowMenu();
|
|
394
|
+
fireEvent.click(screen.getByRole("menuitem", { name: "Delete" }));
|
|
349
395
|
|
|
350
396
|
// The confirmation names the destructive consequence and the
|
|
351
397
|
// config-preserving alternative (pause).
|
|
@@ -369,7 +415,8 @@ describe("AgentShareList", () => {
|
|
|
369
415
|
});
|
|
370
416
|
await renderList(client);
|
|
371
417
|
|
|
372
|
-
|
|
418
|
+
await openRowMenu();
|
|
419
|
+
fireEvent.click(screen.getByRole("menuitem", { name: "Delete" }));
|
|
373
420
|
expect(await screen.findByText("Delete share?")).toBeTruthy();
|
|
374
421
|
|
|
375
422
|
fireEvent.click(screen.getByRole("button", { name: "Cancel", hidden: true }));
|
|
@@ -377,6 +424,39 @@ describe("AgentShareList", () => {
|
|
|
377
424
|
});
|
|
378
425
|
});
|
|
379
426
|
|
|
427
|
+
describe("actions menu gating", () => {
|
|
428
|
+
it("hides the kebab entirely when the viewer can neither edit nor delete", async () => {
|
|
429
|
+
const client = createMockStigmer({
|
|
430
|
+
getByAgent: withShares(makeShare()),
|
|
431
|
+
isAuthorized: false,
|
|
432
|
+
});
|
|
433
|
+
await renderList(client);
|
|
434
|
+
|
|
435
|
+
// The row still renders; only its actions collapse away — an empty
|
|
436
|
+
// overflow menu would be worse than no menu. The permission self-check
|
|
437
|
+
// resolves asynchronously (optimistic-visible first), so wait for the
|
|
438
|
+
// denial to land and the kebab to disappear.
|
|
439
|
+
expect(screen.getByText("Support Agent")).toBeTruthy();
|
|
440
|
+
await waitFor(() =>
|
|
441
|
+
expect(screen.queryByRole("button", { name: /^Actions for/ })).toBeNull(),
|
|
442
|
+
);
|
|
443
|
+
});
|
|
444
|
+
|
|
445
|
+
it("offers only Delete when the viewer can delete but not edit", async () => {
|
|
446
|
+
const client = createMockStigmer({
|
|
447
|
+
getByAgent: withShares(makeShare()),
|
|
448
|
+
checkPermission: (relation) => relation === "can_delete",
|
|
449
|
+
});
|
|
450
|
+
await renderList(client);
|
|
451
|
+
|
|
452
|
+
fireEvent.click(screen.getByRole("button", { name: /^Actions for/ }));
|
|
453
|
+
expect(await screen.findByRole("menuitem", { name: "Delete" })).toBeTruthy();
|
|
454
|
+
expect(screen.queryByRole("menuitem", { name: "Edit" })).toBeNull();
|
|
455
|
+
expect(screen.queryByRole("menuitem", { name: "Pause" })).toBeNull();
|
|
456
|
+
expect(screen.queryByRole("menuitem", { name: "Reset link" })).toBeNull();
|
|
457
|
+
});
|
|
458
|
+
});
|
|
459
|
+
|
|
380
460
|
it("shows an error state when the share list fails to load", async () => {
|
|
381
461
|
const client = createMockStigmer({
|
|
382
462
|
getByAgent: vi.fn().mockRejectedValue(new Error("backend unavailable")),
|
|
@@ -1,66 +1,37 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import { useEffect, useMemo, useState } from "react";
|
|
4
3
|
import type { Agent } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/api_pb";
|
|
5
|
-
import { ApiResourceVisibility } from "@stigmer/protos/ai/stigmer/commons/apiresource/enum_pb";
|
|
6
|
-
import { useStigmer } from "../hooks.js";
|
|
7
4
|
import { useDeploymentMode } from "../deployment-mode.js";
|
|
5
|
+
import {
|
|
6
|
+
useToolCredentialsReadiness,
|
|
7
|
+
type ToolCredentialsReadiness,
|
|
8
|
+
} from "../environment/useToolCredentialsReadiness.js";
|
|
8
9
|
import type { AgentShareDraft } from "./useSaveAgentShare.js";
|
|
9
10
|
|
|
10
11
|
/**
|
|
11
12
|
* Readiness of a share's tool credentials for visitor executions.
|
|
12
13
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
* the deployment cannot serve guest chat (local mode).
|
|
16
|
-
* - `needs-credentials` — the agent uses MCP tools but the share has no
|
|
17
|
-
* environments bound: visitors' tool calls will fail until the owner
|
|
18
|
-
* binds credentials.
|
|
19
|
-
* - `checking` — lookups in flight.
|
|
20
|
-
* - `ready` — every environment bound to the share is shared with the
|
|
21
|
-
* organization.
|
|
22
|
-
* - `blocked` — one or more bound environments are private; their
|
|
23
|
-
* `org/slug` references are listed for the hint copy.
|
|
14
|
+
* The shared vocabulary lives on {@link ToolCredentialsReadiness}; this
|
|
15
|
+
* alias preserves the original share-scoped export.
|
|
24
16
|
*/
|
|
25
|
-
export type ShareToolReadiness =
|
|
26
|
-
| { readonly status: "na" }
|
|
27
|
-
| { readonly status: "needs-credentials" }
|
|
28
|
-
| { readonly status: "checking" }
|
|
29
|
-
| { readonly status: "ready" }
|
|
30
|
-
| { readonly status: "blocked"; readonly privateEnvironments: readonly string[] };
|
|
31
|
-
|
|
32
|
-
const NA: ShareToolReadiness = { status: "na" };
|
|
33
|
-
const NEEDS_CREDENTIALS: ShareToolReadiness = { status: "needs-credentials" };
|
|
17
|
+
export type ShareToolReadiness = ToolCredentialsReadiness;
|
|
34
18
|
|
|
35
19
|
/**
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
* (`
|
|
40
|
-
*
|
|
41
|
-
* Guest executions receive credentials exclusively from the share's own
|
|
42
|
-
* `environment_refs`, resolved through the org-shared environment seam
|
|
43
|
-
* (decision 011 — the agent's default instance stays pristine and is
|
|
44
|
-
* never consulted). So a tool-using agent with an empty binding list is
|
|
45
|
-
* *guaranteed* broken for visitors, and this hook says so explicitly
|
|
46
|
-
* (`needs-credentials`) instead of staying silent — the gap that made
|
|
47
|
-
* session 12's misconfiguration invisible until a visitor's first
|
|
48
|
-
* message failed.
|
|
20
|
+
* Share-scoped wrapper over {@link useToolCredentialsReadiness}: checks
|
|
21
|
+
* whether a tool-using shared agent's credentials will work for
|
|
22
|
+
* visitors — i.e. whether the share binds environments
|
|
23
|
+
* (`environment_refs`) and each one is shared with the organization.
|
|
49
24
|
*
|
|
50
25
|
* The check runs only when the share is enabled with a public audience
|
|
51
26
|
* (org-audience shares reject bindings at the proto boundary), the
|
|
52
27
|
* deployment is cloud (local mode has no guest runtime or secret
|
|
53
|
-
* gating), and the agent declares MCP server usages.
|
|
54
|
-
* the owner viewing the dialog, who can read the bound environments.
|
|
28
|
+
* gating), and the agent declares MCP server usages.
|
|
55
29
|
*/
|
|
56
30
|
export function useShareToolReadiness(
|
|
57
31
|
agent: Agent,
|
|
58
32
|
draft: AgentShareDraft,
|
|
59
33
|
): ShareToolReadiness {
|
|
60
|
-
const stigmer = useStigmer();
|
|
61
34
|
const deploymentMode = useDeploymentMode();
|
|
62
|
-
const [checked, setChecked] = useState<ShareToolReadiness>(NA);
|
|
63
|
-
|
|
64
35
|
const hasMcpTools = (agent.spec?.mcpServerUsages?.length ?? 0) > 0;
|
|
65
36
|
const applicable =
|
|
66
37
|
draft.enabled &&
|
|
@@ -68,64 +39,5 @@ export function useShareToolReadiness(
|
|
|
68
39
|
deploymentMode === "cloud" &&
|
|
69
40
|
hasMcpTools;
|
|
70
41
|
|
|
71
|
-
|
|
72
|
-
// which environments are bound, not on the array's identity.
|
|
73
|
-
const refsKey = useMemo(
|
|
74
|
-
() => draft.environmentRefs.map((ref) => `${ref.org}/${ref.slug}`).join(","),
|
|
75
|
-
[draft.environmentRefs],
|
|
76
|
-
);
|
|
77
|
-
|
|
78
|
-
const shouldFetch = applicable && refsKey !== "";
|
|
79
|
-
|
|
80
|
-
useEffect(() => {
|
|
81
|
-
if (!shouldFetch) {
|
|
82
|
-
setChecked(NA);
|
|
83
|
-
return;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
let cancelled = false;
|
|
87
|
-
setChecked({ status: "checking" });
|
|
88
|
-
|
|
89
|
-
(async (): Promise<ShareToolReadiness> => {
|
|
90
|
-
const privateRefs: string[] = [];
|
|
91
|
-
for (const ref of refsKey.split(",")) {
|
|
92
|
-
const [org, slug] = ref.split("/");
|
|
93
|
-
try {
|
|
94
|
-
const env = await stigmer.environment.getByReference({ org, slug });
|
|
95
|
-
if (
|
|
96
|
-
env.metadata?.visibility !== ApiResourceVisibility.visibility_org
|
|
97
|
-
) {
|
|
98
|
-
privateRefs.push(ref);
|
|
99
|
-
}
|
|
100
|
-
} catch {
|
|
101
|
-
// Unreadable ref (deleted, foreign): the runtime's merge will
|
|
102
|
-
// skip it for visitors too — surface it as blocking.
|
|
103
|
-
privateRefs.push(ref);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
return privateRefs.length === 0
|
|
108
|
-
? { status: "ready" }
|
|
109
|
-
: { status: "blocked", privateEnvironments: privateRefs };
|
|
110
|
-
})().then(
|
|
111
|
-
(result) => {
|
|
112
|
-
if (!cancelled) setChecked(result);
|
|
113
|
-
},
|
|
114
|
-
() => {
|
|
115
|
-
// The hint is best-effort pre-flight advice — a failed check must
|
|
116
|
-
// never block the dialog. The runtime error path still diagnoses.
|
|
117
|
-
if (!cancelled) setChecked(NA);
|
|
118
|
-
},
|
|
119
|
-
);
|
|
120
|
-
|
|
121
|
-
return () => {
|
|
122
|
-
cancelled = true;
|
|
123
|
-
};
|
|
124
|
-
}, [shouldFetch, refsKey, stigmer]);
|
|
125
|
-
|
|
126
|
-
if (!applicable) return NA;
|
|
127
|
-
// Zero bindings needs no lookup: a tool-using agent without bound
|
|
128
|
-
// credentials is broken for visitors by construction.
|
|
129
|
-
if (refsKey === "") return NEEDS_CREDENTIALS;
|
|
130
|
-
return checked;
|
|
42
|
+
return useToolCredentialsReadiness(applicable, draft.environmentRefs);
|
|
131
43
|
}
|
package/src/styles.css
CHANGED
|
@@ -158,6 +158,20 @@
|
|
|
158
158
|
-moz-osx-font-smoothing: grayscale;
|
|
159
159
|
}
|
|
160
160
|
|
|
161
|
+
/* The provider's in-tree container ([data-stgm-root]) ships with NO
|
|
162
|
+
layout styling — deliberately (#260, DD-019). A default
|
|
163
|
+
`height: 100%` looks benign ("resolves to auto under auto-height
|
|
164
|
+
parents") but is not: when the container's parent is a flex item
|
|
165
|
+
(e.g. a `flex-1` prose column), flexbox treats the item's flexed
|
|
166
|
+
size as definite for percentage resolution, and the container
|
|
167
|
+
balloons to it even in a fully content-sized page. Fixed-height
|
|
168
|
+
embedders instead opt in from host CSS, where the layout is known:
|
|
169
|
+
|
|
170
|
+
.stgm[data-stgm-root] { height: 100%; min-height: 0; }
|
|
171
|
+
|
|
172
|
+
`data-stgm-root` is the stable public selector for exactly this.
|
|
173
|
+
Do not add sizing rules for it here. */
|
|
174
|
+
|
|
161
175
|
@keyframes stgm-fade-in-up {
|
|
162
176
|
from {
|
|
163
177
|
opacity: 0;
|