@stigmer/react 3.1.17 → 3.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/agent-instance/AgentInstanceList.d.ts.map +1 -1
- package/agent-instance/AgentInstanceList.js +11 -3
- package/agent-instance/AgentInstanceList.js.map +1 -1
- package/channel/AgentChannelsPanel.d.ts +60 -0
- package/channel/AgentChannelsPanel.d.ts.map +1 -0
- package/channel/AgentChannelsPanel.js +255 -0
- package/channel/AgentChannelsPanel.js.map +1 -0
- package/channel/ChannelConversationsDialog.d.ts +41 -0
- package/channel/ChannelConversationsDialog.d.ts.map +1 -0
- package/channel/ChannelConversationsDialog.js +94 -0
- package/channel/ChannelConversationsDialog.js.map +1 -0
- package/channel/ChannelCredentialsDialog.d.ts +37 -0
- package/channel/ChannelCredentialsDialog.d.ts.map +1 -0
- package/channel/ChannelCredentialsDialog.js +75 -0
- package/channel/ChannelCredentialsDialog.js.map +1 -0
- package/channel/ChannelToolCredentials.d.ts +31 -0
- package/channel/ChannelToolCredentials.d.ts.map +1 -0
- package/channel/ChannelToolCredentials.js +41 -0
- package/channel/ChannelToolCredentials.js.map +1 -0
- package/channel/ConnectSlackDialog.d.ts +61 -0
- package/channel/ConnectSlackDialog.d.ts.map +1 -0
- package/channel/ConnectSlackDialog.js +238 -0
- package/channel/ConnectSlackDialog.js.map +1 -0
- package/channel/ConnectWhatsAppDialog.d.ts +70 -0
- package/channel/ConnectWhatsAppDialog.d.ts.map +1 -0
- package/channel/ConnectWhatsAppDialog.js +256 -0
- package/channel/ConnectWhatsAppDialog.js.map +1 -0
- package/channel/SlackMarkIcon.d.ts +11 -0
- package/channel/SlackMarkIcon.d.ts.map +1 -0
- package/channel/SlackMarkIcon.js +13 -0
- package/channel/SlackMarkIcon.js.map +1 -0
- package/channel/WhatsAppMarkIcon.d.ts +12 -0
- package/channel/WhatsAppMarkIcon.d.ts.map +1 -0
- package/channel/WhatsAppMarkIcon.js +14 -0
- package/channel/WhatsAppMarkIcon.js.map +1 -0
- package/channel/connect/ServingAppSection.d.ts +57 -0
- package/channel/connect/ServingAppSection.d.ts.map +1 -0
- package/channel/connect/ServingAppSection.js +49 -0
- package/channel/connect/ServingAppSection.js.map +1 -0
- package/channel/connect/ToolCredentialsSection.d.ts +20 -0
- package/channel/connect/ToolCredentialsSection.d.ts.map +1 -0
- package/channel/connect/ToolCredentialsSection.js +22 -0
- package/channel/connect/ToolCredentialsSection.js.map +1 -0
- package/channel/connect/VerbatimRefusal.d.ts +16 -0
- package/channel/connect/VerbatimRefusal.d.ts.map +1 -0
- package/channel/connect/VerbatimRefusal.js +18 -0
- package/channel/connect/VerbatimRefusal.js.map +1 -0
- package/channel/connect/icons.d.ts +16 -0
- package/channel/connect/icons.d.ts.map +1 -0
- package/channel/connect/icons.js +21 -0
- package/channel/connect/icons.js.map +1 -0
- package/channel/index.d.ts +36 -0
- package/channel/index.d.ts.map +1 -0
- package/channel/index.js +19 -0
- package/channel/index.js.map +1 -0
- package/channel/providerPresentation.d.ts +44 -0
- package/channel/providerPresentation.d.ts.map +1 -0
- package/channel/providerPresentation.js +106 -0
- package/channel/providerPresentation.js.map +1 -0
- package/channel/providers.d.ts +62 -0
- package/channel/providers.d.ts.map +1 -0
- package/channel/providers.js +26 -0
- package/channel/providers.js.map +1 -0
- package/channel/useAgentChannel.d.ts +31 -0
- package/channel/useAgentChannel.d.ts.map +1 -0
- package/channel/useAgentChannel.js +34 -0
- package/channel/useAgentChannel.js.map +1 -0
- package/channel/useAgentChannelList.d.ts +43 -0
- package/channel/useAgentChannelList.d.ts.map +1 -0
- package/channel/useAgentChannelList.js +39 -0
- package/channel/useAgentChannelList.js.map +1 -0
- package/channel/useChannelSessions.d.ts +47 -0
- package/channel/useChannelSessions.d.ts.map +1 -0
- package/channel/useChannelSessions.js +38 -0
- package/channel/useChannelSessions.js.map +1 -0
- package/channel/useChannelToolReadiness.d.ts +23 -0
- package/channel/useChannelToolReadiness.d.ts.map +1 -0
- package/channel/useChannelToolReadiness.js +28 -0
- package/channel/useChannelToolReadiness.js.map +1 -0
- package/channel/useConnectSlackChannel.d.ts +75 -0
- package/channel/useConnectSlackChannel.d.ts.map +1 -0
- package/channel/useConnectSlackChannel.js +115 -0
- package/channel/useConnectSlackChannel.js.map +1 -0
- package/channel/useCreateAgentChannel.d.ts +42 -0
- package/channel/useCreateAgentChannel.d.ts.map +1 -0
- package/channel/useCreateAgentChannel.js +48 -0
- package/channel/useCreateAgentChannel.js.map +1 -0
- package/channel/useDeleteAgentChannel.d.ts +40 -0
- package/channel/useDeleteAgentChannel.d.ts.map +1 -0
- package/channel/useDeleteAgentChannel.js +44 -0
- package/channel/useDeleteAgentChannel.js.map +1 -0
- package/channel/useInstallChannel.d.ts +60 -0
- package/channel/useInstallChannel.d.ts.map +1 -0
- package/channel/useInstallChannel.js +63 -0
- package/channel/useInstallChannel.js.map +1 -0
- package/channel/useOrgAgentChannelList.d.ts +32 -0
- package/channel/useOrgAgentChannelList.d.ts.map +1 -0
- package/channel/useOrgAgentChannelList.js +29 -0
- package/channel/useOrgAgentChannelList.js.map +1 -0
- package/channel/useSaveAgentChannel.d.ts +63 -0
- package/channel/useSaveAgentChannel.d.ts.map +1 -0
- package/channel/useSaveAgentChannel.js +104 -0
- package/channel/useSaveAgentChannel.js.map +1 -0
- package/channel-app/ChannelAppDetailPanel.d.ts +46 -0
- package/channel-app/ChannelAppDetailPanel.d.ts.map +1 -0
- package/channel-app/ChannelAppDetailPanel.js +142 -0
- package/channel-app/ChannelAppDetailPanel.js.map +1 -0
- package/channel-app/ChannelAppListPanel.d.ts +36 -0
- package/channel-app/ChannelAppListPanel.d.ts.map +1 -0
- package/channel-app/ChannelAppListPanel.js +63 -0
- package/channel-app/ChannelAppListPanel.js.map +1 -0
- package/channel-app/CreateChannelAppForm.d.ts +54 -0
- package/channel-app/CreateChannelAppForm.d.ts.map +1 -0
- package/channel-app/CreateChannelAppForm.js +140 -0
- package/channel-app/CreateChannelAppForm.js.map +1 -0
- package/channel-app/index.d.ts +18 -0
- package/channel-app/index.d.ts.map +1 -0
- package/channel-app/index.js +10 -0
- package/channel-app/index.js.map +1 -0
- package/channel-app/internal.d.ts +33 -0
- package/channel-app/internal.d.ts.map +1 -0
- package/channel-app/internal.js +44 -0
- package/channel-app/internal.js.map +1 -0
- package/channel-app/slackAppSetup.d.ts +80 -0
- package/channel-app/slackAppSetup.d.ts.map +1 -0
- package/channel-app/slackAppSetup.js +123 -0
- package/channel-app/slackAppSetup.js.map +1 -0
- package/channel-app/useChannelAppList.d.ts +35 -0
- package/channel-app/useChannelAppList.d.ts.map +1 -0
- package/channel-app/useChannelAppList.js +34 -0
- package/channel-app/useChannelAppList.js.map +1 -0
- package/channel-app/useCreateChannelApp.d.ts +39 -0
- package/channel-app/useCreateChannelApp.d.ts.map +1 -0
- package/channel-app/useCreateChannelApp.js +50 -0
- package/channel-app/useCreateChannelApp.js.map +1 -0
- package/channel-app/useDeleteChannelApp.d.ts +31 -0
- package/channel-app/useDeleteChannelApp.d.ts.map +1 -0
- package/channel-app/useDeleteChannelApp.js +43 -0
- package/channel-app/useDeleteChannelApp.js.map +1 -0
- package/channel-app/useUpdateChannelApp.d.ts +39 -0
- package/channel-app/useUpdateChannelApp.d.ts.map +1 -0
- package/channel-app/useUpdateChannelApp.js +50 -0
- package/channel-app/useUpdateChannelApp.js.map +1 -0
- package/channel-app/whatsappAppSetup.d.ts +51 -0
- package/channel-app/whatsappAppSetup.d.ts.map +1 -0
- package/channel-app/whatsappAppSetup.js +57 -0
- package/channel-app/whatsappAppSetup.js.map +1 -0
- package/environment/index.d.ts +2 -0
- package/environment/index.d.ts.map +1 -1
- package/environment/index.js +1 -0
- package/environment/index.js.map +1 -1
- package/environment/useToolCredentialsReadiness.d.ts +52 -0
- package/environment/useToolCredentialsReadiness.d.ts.map +1 -0
- package/environment/useToolCredentialsReadiness.js +84 -0
- package/environment/useToolCredentialsReadiness.js.map +1 -0
- package/execution/ArtifactContentBody.d.ts.map +1 -1
- package/execution/ArtifactContentBody.js +5 -21
- package/execution/ArtifactContentBody.js.map +1 -1
- package/execution/ArtifactFileContent.d.ts +28 -0
- package/execution/ArtifactFileContent.d.ts.map +1 -0
- package/execution/ArtifactFileContent.js +36 -0
- package/execution/ArtifactFileContent.js.map +1 -0
- package/execution/ArtifactRow.d.ts +8 -20
- package/execution/ArtifactRow.d.ts.map +1 -1
- package/execution/ArtifactRow.js +12 -45
- package/execution/ArtifactRow.js.map +1 -1
- package/execution/ArtifactRowView.d.ts +43 -0
- package/execution/ArtifactRowView.d.ts.map +1 -0
- package/execution/ArtifactRowView.js +35 -0
- package/execution/ArtifactRowView.js.map +1 -0
- package/execution/FileChangesView.d.ts.map +1 -1
- package/execution/FileChangesView.js +1 -61
- package/execution/FileChangesView.js.map +1 -1
- package/execution/SubAgentSection.d.ts.map +1 -1
- package/execution/SubAgentSection.js +4 -15
- package/execution/SubAgentSection.js.map +1 -1
- package/execution/ToolCallItem.d.ts.map +1 -1
- package/execution/ToolCallItem.js +16 -61
- package/execution/ToolCallItem.js.map +1 -1
- package/execution/agent-execution-document.d.ts +31 -0
- package/execution/agent-execution-document.d.ts.map +1 -0
- package/execution/agent-execution-document.js +48 -0
- package/execution/agent-execution-document.js.map +1 -0
- package/{session → execution}/artifact-document.d.ts +2 -3
- package/execution/artifact-document.d.ts.map +1 -0
- package/execution/artifact-document.js +23 -0
- package/execution/artifact-document.js.map +1 -0
- package/execution/artifact-row-item.d.ts +56 -0
- package/execution/artifact-row-item.d.ts.map +1 -0
- package/execution/artifact-row-item.js +57 -0
- package/execution/artifact-row-item.js.map +1 -0
- package/execution/deriveExecutionFileChanges.d.ts +55 -0
- package/execution/deriveExecutionFileChanges.d.ts.map +1 -0
- package/execution/deriveExecutionFileChanges.js +216 -0
- package/execution/deriveExecutionFileChanges.js.map +1 -0
- package/execution/file-change-document.d.ts +22 -0
- package/execution/file-change-document.d.ts.map +1 -0
- package/execution/file-change-document.js +34 -0
- package/execution/file-change-document.js.map +1 -0
- package/execution/index.d.ts +14 -0
- package/execution/index.d.ts.map +1 -1
- package/execution/index.js +9 -0
- package/execution/index.js.map +1 -1
- package/execution/useArtifactContentById.d.ts +61 -0
- package/execution/useArtifactContentById.d.ts.map +1 -0
- package/execution/useArtifactContentById.js +63 -0
- package/execution/useArtifactContentById.js.map +1 -0
- package/execution/useArtifactDownload.d.ts +4 -3
- package/execution/useArtifactDownload.d.ts.map +1 -1
- package/execution/useArtifactDownload.js +4 -3
- package/execution/useArtifactDownload.js.map +1 -1
- package/execution/useCreateAgentExecution.d.ts +1 -1
- package/execution/useLiveAgentExecution.d.ts +59 -0
- package/execution/useLiveAgentExecution.d.ts.map +1 -0
- package/execution/useLiveAgentExecution.js +73 -0
- package/execution/useLiveAgentExecution.js.map +1 -0
- package/index.d.ts +15 -10
- package/index.d.ts.map +1 -1
- package/index.js +21 -6
- package/index.js.map +1 -1
- package/internal/DecisionButton.d.ts +4 -3
- package/internal/DecisionButton.d.ts.map +1 -1
- package/internal/DecisionButton.js +4 -3
- package/internal/DecisionButton.js.map +1 -1
- package/internal/oauthPopup.d.ts +101 -0
- package/internal/oauthPopup.d.ts.map +1 -0
- package/internal/oauthPopup.js +208 -0
- package/internal/oauthPopup.js.map +1 -0
- package/internal/store/index.d.ts +0 -2
- package/internal/store/index.d.ts.map +1 -1
- package/internal/store/index.js +0 -1
- package/internal/store/index.js.map +1 -1
- package/internal/store/workflow-execution-event-store.d.ts +34 -1
- package/internal/store/workflow-execution-event-store.d.ts.map +1 -1
- package/internal/store/workflow-execution-event-store.js +81 -3
- package/internal/store/workflow-execution-event-store.js.map +1 -1
- package/internal/store/workspace-file-selection-store.d.ts +1 -2
- package/internal/store/workspace-file-selection-store.d.ts.map +1 -1
- package/internal/store/workspace-file-selection-store.js +2 -5
- package/internal/store/workspace-file-selection-store.js.map +1 -1
- package/internal/thread-card/ThreadCardShell.d.ts +91 -0
- package/internal/thread-card/ThreadCardShell.d.ts.map +1 -0
- package/internal/thread-card/ThreadCardShell.js +41 -0
- package/internal/thread-card/ThreadCardShell.js.map +1 -0
- package/internal/thread-card/glyphs.d.ts +34 -0
- package/internal/thread-card/glyphs.d.ts.map +1 -0
- package/internal/thread-card/glyphs.js +50 -0
- package/internal/thread-card/glyphs.js.map +1 -0
- package/internal/thread-card/index.d.ts +3 -0
- package/internal/thread-card/index.d.ts.map +1 -0
- package/internal/thread-card/index.js +3 -0
- package/internal/thread-card/index.js.map +1 -0
- package/internal/useRevealLine.d.ts +2 -2
- package/internal/useRevealLine.js +2 -2
- package/mcp-server/OAuthCallbackHandler.js +1 -1
- package/mcp-server/OAuthCallbackHandler.js.map +1 -1
- package/mcp-server/useMcpServerOAuthConnect.d.ts +4 -23
- package/mcp-server/useMcpServerOAuthConnect.d.ts.map +1 -1
- package/mcp-server/useMcpServerOAuthConnect.js +12 -145
- package/mcp-server/useMcpServerOAuthConnect.js.map +1 -1
- package/package.json +4 -4
- package/session/NewSessionViewer.d.ts.map +1 -1
- package/session/NewSessionViewer.js +0 -1
- package/session/NewSessionViewer.js.map +1 -1
- package/session/SessionPanelChip.d.ts +7 -22
- package/session/SessionPanelChip.d.ts.map +1 -1
- package/session/SessionPanelChip.js +8 -36
- package/session/SessionPanelChip.js.map +1 -1
- package/session/SessionViewer.d.ts +7 -4
- package/session/SessionViewer.d.ts.map +1 -1
- package/session/SessionViewer.js +32 -30
- package/session/SessionViewer.js.map +1 -1
- package/session/audience.d.ts +15 -1
- package/session/audience.d.ts.map +1 -1
- package/session/channelOrigin.d.ts +33 -0
- package/session/channelOrigin.d.ts.map +1 -0
- package/session/channelOrigin.js +36 -0
- package/session/channelOrigin.js.map +1 -0
- package/session/facets/index.d.ts +0 -2
- package/session/facets/index.d.ts.map +1 -1
- package/session/facets/index.js +0 -1
- package/session/facets/index.js.map +1 -1
- package/session/index.d.ts +2 -2
- package/session/index.d.ts.map +1 -1
- package/session/index.js +5 -3
- package/session/index.js.map +1 -1
- package/session/useNewSessionFlow.d.ts +4 -0
- package/session/useNewSessionFlow.d.ts.map +1 -1
- package/session/useNewSessionFlow.js +33 -4
- package/session/useNewSessionFlow.js.map +1 -1
- package/session/usePersistedModel.d.ts +11 -0
- package/session/usePersistedModel.d.ts.map +1 -1
- package/session/usePersistedModel.js +14 -3
- package/session/usePersistedModel.js.map +1 -1
- package/session/useSessionFileChanges.d.ts +10 -34
- package/session/useSessionFileChanges.d.ts.map +1 -1
- package/session/useSessionFileChanges.js +9 -141
- package/session/useSessionFileChanges.js.map +1 -1
- package/session/useSessionPageFlow.d.ts.map +1 -1
- package/session/useSessionPageFlow.js +12 -1
- package/session/useSessionPageFlow.js.map +1 -1
- package/session/useSessionPanel.d.ts +5 -15
- package/session/useSessionPanel.d.ts.map +1 -1
- package/session/useSessionPanel.js +3 -35
- package/session/useSessionPanel.js.map +1 -1
- package/session/useSessionRailViews.d.ts +3 -6
- package/session/useSessionRailViews.d.ts.map +1 -1
- package/session/useSessionRailViews.js +3 -17
- package/session/useSessionRailViews.js.map +1 -1
- package/settings/ChannelAppsSection.d.ts +13 -0
- package/settings/ChannelAppsSection.d.ts.map +1 -0
- package/settings/ChannelAppsSection.js +48 -0
- package/settings/ChannelAppsSection.js.map +1 -0
- package/settings/index.d.ts +1 -0
- package/settings/index.d.ts.map +1 -1
- package/settings/index.js +1 -0
- package/settings/index.js.map +1 -1
- package/settings/settings-nav.d.ts.map +1 -1
- package/settings/settings-nav.js +6 -1
- package/settings/settings-nav.js.map +1 -1
- package/sharing/AgentShareList.d.ts.map +1 -1
- package/sharing/AgentShareList.js +11 -3
- package/sharing/AgentShareList.js.map +1 -1
- package/sharing/ShareAgentDialog.js +1 -1
- package/sharing/useShareToolReadiness.d.ts +9 -38
- package/sharing/useShareToolReadiness.d.ts.map +1 -1
- package/sharing/useShareToolReadiness.js +7 -72
- package/sharing/useShareToolReadiness.js.map +1 -1
- package/src/agent-instance/AgentInstanceList.tsx +60 -42
- package/src/agent-instance/__tests__/AgentInstanceList.test.tsx +161 -0
- package/src/channel/AgentChannelsPanel.tsx +688 -0
- package/src/channel/ChannelConversationsDialog.tsx +267 -0
- package/src/channel/ChannelCredentialsDialog.tsx +219 -0
- package/src/channel/ChannelToolCredentials.tsx +124 -0
- package/src/channel/ConnectSlackDialog.tsx +611 -0
- package/src/channel/ConnectWhatsAppDialog.tsx +624 -0
- package/src/channel/SlackMarkIcon.tsx +21 -0
- package/src/channel/WhatsAppMarkIcon.tsx +22 -0
- package/src/channel/__tests__/AgentChannelsPanel.test.tsx +638 -0
- package/src/channel/__tests__/ChannelConversationsDialog.test.tsx +114 -0
- package/src/channel/__tests__/ChannelCredentialsDialog.test.tsx +240 -0
- package/src/channel/__tests__/ConnectSlackDialog.test.tsx +659 -0
- package/src/channel/__tests__/ConnectWhatsAppDialog.test.tsx +564 -0
- package/src/channel/__tests__/providers.test.ts +118 -0
- package/src/channel/__tests__/useAgentChannel.test.tsx +116 -0
- package/src/channel/__tests__/useAgentChannelList.test.tsx +166 -0
- package/src/channel/__tests__/useChannelSessions.test.tsx +95 -0
- package/src/channel/__tests__/useChannelToolReadiness.test.tsx +158 -0
- package/src/channel/__tests__/useConnectSlackChannel.test.tsx +276 -0
- package/src/channel/__tests__/useDeleteAgentChannel.test.tsx +97 -0
- package/src/channel/__tests__/useInstallChannel.test.tsx +177 -0
- package/src/channel/__tests__/useSaveAgentChannel.test.tsx +294 -0
- package/src/channel/connect/ServingAppSection.tsx +185 -0
- package/src/channel/connect/ToolCredentialsSection.tsx +67 -0
- package/src/channel/connect/VerbatimRefusal.tsx +27 -0
- package/src/channel/connect/icons.tsx +42 -0
- package/src/channel/index.ts +65 -0
- package/src/channel/providerPresentation.ts +154 -0
- package/src/channel/providers.ts +73 -0
- package/src/channel/useAgentChannel.ts +58 -0
- package/src/channel/useAgentChannelList.ts +69 -0
- package/src/channel/useChannelSessions.ts +73 -0
- package/src/channel/useChannelToolReadiness.ts +39 -0
- package/src/channel/useConnectSlackChannel.ts +195 -0
- package/src/channel/useCreateAgentChannel.ts +73 -0
- package/src/channel/useDeleteAgentChannel.ts +71 -0
- package/src/channel/useInstallChannel.ts +117 -0
- package/src/channel/useOrgAgentChannelList.ts +60 -0
- package/src/channel/useSaveAgentChannel.ts +133 -0
- package/src/channel-app/ChannelAppDetailPanel.tsx +510 -0
- package/src/channel-app/ChannelAppListPanel.tsx +201 -0
- package/src/channel-app/CreateChannelAppForm.tsx +529 -0
- package/src/channel-app/__tests__/channelAppWhatsApp.test.tsx +270 -0
- package/src/channel-app/__tests__/slackAppSetup.test.ts +75 -0
- package/src/channel-app/__tests__/useChannelAppHooks.test.tsx +157 -0
- package/src/channel-app/__tests__/whatsappAppSetup.test.ts +39 -0
- package/src/channel-app/index.ts +30 -0
- package/src/channel-app/internal.tsx +180 -0
- package/src/channel-app/slackAppSetup.ts +153 -0
- package/src/channel-app/useChannelAppList.ts +59 -0
- package/src/channel-app/useCreateChannelApp.ts +70 -0
- package/src/channel-app/useDeleteChannelApp.ts +62 -0
- package/src/channel-app/useUpdateChannelApp.ts +70 -0
- package/src/channel-app/whatsappAppSetup.ts +62 -0
- package/src/environment/index.ts +2 -0
- package/src/environment/useToolCredentialsReadiness.ts +122 -0
- package/src/execution/ArtifactContentBody.tsx +6 -88
- package/src/execution/ArtifactFileContent.tsx +110 -0
- package/src/execution/ArtifactRow.tsx +28 -118
- package/src/execution/ArtifactRowView.tsx +137 -0
- package/src/execution/FileChangesView.tsx +4 -69
- package/src/execution/SubAgentSection.tsx +2 -36
- package/src/execution/ToolCallItem.tsx +48 -175
- package/src/execution/__tests__/ArtifactFileContent.test.tsx +60 -0
- package/src/execution/__tests__/ArtifactRowView.test.tsx +78 -0
- package/src/execution/__tests__/agent-execution-document.test.ts +45 -0
- package/src/execution/__tests__/artifact-row-item.test.ts +128 -0
- package/src/execution/__tests__/deriveExecutionFileChanges.test.ts +270 -0
- package/src/execution/__tests__/useArtifactContentById.test.tsx +85 -0
- package/src/execution/__tests__/useLiveAgentExecution.test.tsx +202 -0
- package/src/execution/agent-execution-document.ts +54 -0
- package/src/execution/artifact-document.ts +24 -0
- package/src/execution/artifact-row-item.ts +97 -0
- package/src/execution/deriveExecutionFileChanges.ts +237 -0
- package/src/execution/file-change-document.ts +37 -0
- package/src/execution/index.ts +36 -0
- package/src/execution/useArtifactContentById.ts +120 -0
- package/src/execution/useArtifactDownload.ts +4 -3
- package/src/execution/useCreateAgentExecution.ts +1 -1
- package/src/execution/useLiveAgentExecution.ts +127 -0
- package/src/index.ts +155 -11
- package/src/internal/DecisionButton.tsx +4 -3
- package/src/internal/__tests__/ThreadCardShell.test.tsx +105 -0
- package/src/internal/__tests__/oauthPopup.test.ts +245 -0
- package/src/internal/oauthPopup.ts +261 -0
- package/src/internal/store/__tests__/workflow-execution-event-store.test.ts +375 -5
- package/src/internal/store/index.ts +0 -3
- package/src/internal/store/workflow-execution-event-store.ts +123 -4
- package/src/internal/store/workspace-file-selection-store.ts +2 -5
- package/src/internal/thread-card/ThreadCardShell.tsx +189 -0
- package/src/internal/thread-card/glyphs.tsx +108 -0
- package/src/internal/thread-card/index.ts +19 -0
- package/src/internal/useRevealLine.ts +2 -2
- package/src/mcp-server/OAuthCallbackHandler.tsx +2 -2
- package/src/mcp-server/useMcpServerOAuthConnect.ts +22 -184
- package/src/session/NewSessionViewer.tsx +0 -1
- package/src/session/SessionPanelChip.tsx +10 -96
- package/src/session/SessionViewer.tsx +170 -144
- package/src/session/__tests__/SessionViewer-artifactTabs.test.tsx +1 -1
- package/src/session/__tests__/observerAudience.test.tsx +241 -0
- package/src/session/__tests__/useNewSessionFlow.test.tsx +64 -0
- package/src/session/__tests__/usePersistedModel.test.tsx +36 -0
- package/src/session/__tests__/useSessionPageFlow.guest.test.tsx +48 -1
- package/src/session/__tests__/useSessionPanel.test.ts +6 -61
- package/src/session/__tests__/useSessionRailViews.test.tsx +5 -27
- package/src/session/audience.ts +15 -1
- package/src/session/channelOrigin.ts +45 -0
- package/src/session/facets/index.ts +0 -3
- package/src/session/index.ts +9 -6
- package/src/session/useNewSessionFlow.ts +35 -4
- package/src/session/usePersistedModel.ts +25 -3
- package/src/session/useSessionFileChanges.ts +12 -153
- package/src/session/useSessionPageFlow.ts +13 -2
- package/src/session/useSessionPanel.ts +8 -51
- package/src/session/useSessionRailViews.tsx +2 -27
- package/src/settings/ChannelAppsSection.tsx +133 -0
- package/src/settings/index.ts +1 -0
- package/src/settings/settings-nav.ts +6 -0
- package/src/sharing/AgentShareList.tsx +85 -64
- package/src/sharing/ShareAgentDialog.tsx +1 -1
- package/src/sharing/__tests__/AgentShareList.test.tsx +92 -12
- package/src/sharing/useShareToolReadiness.ts +13 -101
- package/src/workflow/WorkflowAgentExecutionDocument.tsx +283 -0
- package/src/workflow/WorkflowApprovalList.tsx +158 -0
- package/src/workflow/WorkflowArtifactDocument.tsx +257 -0
- package/src/workflow/WorkflowExecutionGraph.tsx +40 -78
- package/src/workflow/WorkflowExecutionViewer.tsx +610 -287
- package/src/workflow/WorkflowFileReviewList.tsx +1 -1
- package/src/workflow/WorkflowTaskApprovalCard.tsx +5 -4
- package/src/workflow/WorkflowTaskApprovalSummary.tsx +6 -6
- package/src/workflow/__tests__/WorkflowAgentExecutionDocument.test.tsx +651 -0
- package/src/workflow/__tests__/WorkflowApprovalList.test.tsx +229 -0
- package/src/workflow/__tests__/WorkflowArtifactDocument.test.tsx +90 -0
- package/src/workflow/__tests__/WorkflowArtifactsTab.test.tsx +85 -0
- package/src/workflow/__tests__/WorkflowChangesTab.test.tsx +113 -0
- package/src/workflow/__tests__/WorkflowExecutionViewer.approvals.test.tsx +473 -0
- package/src/workflow/__tests__/WorkflowExecutionViewer.reconciliation.test.tsx +632 -0
- package/src/workflow/__tests__/WorkflowTaskApprovalSummary.test.tsx +1 -1
- package/src/workflow/__tests__/WorkflowTaskThread.test.tsx +947 -0
- package/src/workflow/__tests__/WorkflowUsageTab.test.tsx +163 -0
- package/src/workflow/__tests__/agent-call-live-experience.test.ts +6 -53
- package/src/workflow/__tests__/derive-execution-overlays.test.ts +4 -0
- package/src/workflow/__tests__/deriveWorkflowArtifactItems.test.ts +71 -0
- package/src/workflow/__tests__/deriveWorkflowUsageItems.test.ts +132 -0
- package/src/workflow/__tests__/execution-graph.test.ts +8 -0
- package/src/workflow/__tests__/project-thread-items.test.ts +428 -0
- package/src/workflow/__tests__/structured-data-viewer.test.tsx +1 -1
- package/src/workflow/__tests__/task-approval.test.ts +149 -0
- package/src/workflow/__tests__/task-detail-io.test.ts +40 -0
- package/src/workflow/__tests__/task-presentation.test.ts +479 -0
- package/src/workflow/__tests__/useActiveTaskName.test.ts +4 -0
- package/src/workflow/__tests__/useApprovalBoundary.test.ts +158 -0
- package/src/workflow/__tests__/useExecutionAnnouncements.test.ts +4 -0
- package/src/workflow/__tests__/useFollowExecution.test.ts +2 -89
- package/src/workflow/__tests__/useWorkflowExecutionFileChanges.test.tsx +412 -0
- package/src/workflow/__tests__/useWorkflowExecutionPanel.test.ts +297 -0
- package/src/workflow/__tests__/useWorkflowExecutionRailViews.test.tsx +115 -0
- package/src/workflow/deriveWorkflowArtifactItems.ts +59 -0
- package/src/workflow/deriveWorkflowUsageItems.ts +73 -0
- package/src/workflow/diagnosis-document.ts +31 -0
- package/src/workflow/execution/index.ts +0 -15
- package/src/workflow/facets/WorkflowArtifactsTab.tsx +99 -0
- package/src/workflow/facets/WorkflowChangesTab.tsx +129 -0
- package/src/workflow/facets/WorkflowUsageTab.tsx +258 -0
- package/src/workflow/format-utils.ts +2 -3
- package/src/workflow/index.ts +106 -62
- package/src/workflow/inspector/index.ts +0 -4
- package/src/workflow/instance/WorkflowInstanceList.tsx +59 -41
- package/src/workflow/instance/__tests__/WorkflowInstanceList.test.tsx +156 -0
- package/src/workflow/task-detail/index.ts +11 -0
- package/src/workflow/task-detail/task-approval.ts +158 -0
- package/src/workflow/task-detail/task-detail-io.ts +65 -0
- package/src/workflow/thread/WorkflowTaskThread.tsx +845 -0
- package/src/workflow/thread/project-thread-items.ts +235 -0
- package/src/workflow/thread/task-presentation.ts +427 -0
- package/src/workflow/thread/thread-presentation.ts +59 -0
- package/src/workflow/thread/useWorkflowThreadItems.ts +34 -0
- package/src/workflow/useApprovalBoundary.ts +72 -0
- package/src/workflow/useFollowExecution.ts +0 -26
- package/src/workflow/useWorkflowArtifactDownload.ts +68 -0
- package/src/workflow/useWorkflowExecutionActions.ts +3 -2
- package/src/workflow/useWorkflowExecutionFileChanges.ts +341 -0
- package/src/workflow/useWorkflowExecutionGraph.ts +3 -43
- package/src/workflow/useWorkflowExecutionPanel.ts +292 -0
- package/src/workflow/useWorkflowExecutionRailViews.tsx +173 -0
- package/src/workspace/FileViewer.tsx +3 -3
- package/src/workspace/PanelChip.tsx +103 -0
- package/src/workspace/WorkspaceSurface.tsx +50 -6
- package/src/workspace/__tests__/WorkspaceSurface.test.tsx +110 -0
- package/src/workspace/index.ts +3 -0
- package/styles.css +1 -1
- package/workflow/WorkflowAgentExecutionDocument.d.ts +79 -0
- package/workflow/WorkflowAgentExecutionDocument.d.ts.map +1 -0
- package/workflow/WorkflowAgentExecutionDocument.js +87 -0
- package/workflow/WorkflowAgentExecutionDocument.js.map +1 -0
- package/workflow/WorkflowApprovalList.d.ts +62 -0
- package/workflow/WorkflowApprovalList.d.ts.map +1 -0
- package/workflow/WorkflowApprovalList.js +52 -0
- package/workflow/WorkflowApprovalList.js.map +1 -0
- package/workflow/WorkflowArtifactDocument.d.ts +29 -0
- package/workflow/WorkflowArtifactDocument.d.ts.map +1 -0
- package/workflow/WorkflowArtifactDocument.js +89 -0
- package/workflow/WorkflowArtifactDocument.js.map +1 -0
- package/workflow/WorkflowExecutionGraph.d.ts +15 -13
- package/workflow/WorkflowExecutionGraph.d.ts.map +1 -1
- package/workflow/WorkflowExecutionGraph.js +18 -53
- package/workflow/WorkflowExecutionGraph.js.map +1 -1
- package/workflow/WorkflowExecutionViewer.d.ts +8 -5
- package/workflow/WorkflowExecutionViewer.d.ts.map +1 -1
- package/workflow/WorkflowExecutionViewer.js +329 -54
- package/workflow/WorkflowExecutionViewer.js.map +1 -1
- package/workflow/WorkflowFileReviewList.d.ts +1 -1
- package/workflow/WorkflowFileReviewList.js +1 -1
- package/workflow/WorkflowTaskApprovalCard.d.ts +4 -3
- package/workflow/WorkflowTaskApprovalCard.d.ts.map +1 -1
- package/workflow/WorkflowTaskApprovalCard.js +5 -4
- package/workflow/WorkflowTaskApprovalCard.js.map +1 -1
- package/workflow/WorkflowTaskApprovalSummary.d.ts +6 -6
- package/workflow/WorkflowTaskApprovalSummary.js +5 -5
- package/workflow/deriveWorkflowArtifactItems.d.ts +30 -0
- package/workflow/deriveWorkflowArtifactItems.d.ts.map +1 -0
- package/workflow/deriveWorkflowArtifactItems.js +38 -0
- package/workflow/deriveWorkflowArtifactItems.js.map +1 -0
- package/workflow/deriveWorkflowUsageItems.d.ts +36 -0
- package/workflow/deriveWorkflowUsageItems.d.ts.map +1 -0
- package/workflow/deriveWorkflowUsageItems.js +50 -0
- package/workflow/deriveWorkflowUsageItems.js.map +1 -0
- package/workflow/diagnosis-document.d.ts +17 -0
- package/workflow/diagnosis-document.d.ts.map +1 -0
- package/workflow/diagnosis-document.js +29 -0
- package/workflow/diagnosis-document.js.map +1 -0
- package/workflow/execution/index.d.ts +0 -2
- package/workflow/execution/index.d.ts.map +1 -1
- package/workflow/execution/index.js +0 -2
- package/workflow/execution/index.js.map +1 -1
- package/workflow/facets/WorkflowArtifactsTab.d.ts +26 -0
- package/workflow/facets/WorkflowArtifactsTab.d.ts.map +1 -0
- package/workflow/facets/WorkflowArtifactsTab.js +34 -0
- package/workflow/facets/WorkflowArtifactsTab.js.map +1 -0
- package/workflow/facets/WorkflowChangesTab.d.ts +37 -0
- package/workflow/facets/WorkflowChangesTab.d.ts.map +1 -0
- package/workflow/facets/WorkflowChangesTab.js +50 -0
- package/workflow/facets/WorkflowChangesTab.js.map +1 -0
- package/workflow/facets/WorkflowUsageTab.d.ts +27 -0
- package/workflow/facets/WorkflowUsageTab.d.ts.map +1 -0
- package/workflow/facets/WorkflowUsageTab.js +87 -0
- package/workflow/facets/WorkflowUsageTab.js.map +1 -0
- package/workflow/format-utils.d.ts +2 -3
- package/workflow/format-utils.d.ts.map +1 -1
- package/workflow/format-utils.js +2 -3
- package/workflow/format-utils.js.map +1 -1
- package/workflow/index.d.ts +21 -10
- package/workflow/index.d.ts.map +1 -1
- package/workflow/index.js +29 -14
- package/workflow/index.js.map +1 -1
- package/workflow/inspector/index.d.ts +0 -2
- package/workflow/inspector/index.d.ts.map +1 -1
- package/workflow/inspector/index.js +0 -2
- package/workflow/inspector/index.js.map +1 -1
- package/workflow/instance/WorkflowInstanceList.d.ts.map +1 -1
- package/workflow/instance/WorkflowInstanceList.js +11 -3
- package/workflow/instance/WorkflowInstanceList.js.map +1 -1
- package/workflow/task-detail/StructuredDataViewer.d.ts.map +1 -0
- package/workflow/task-detail/StructuredDataViewer.js.map +1 -0
- package/workflow/task-detail/index.d.ts +4 -0
- package/workflow/task-detail/index.d.ts.map +1 -0
- package/workflow/task-detail/index.js +4 -0
- package/workflow/task-detail/index.js.map +1 -0
- package/workflow/task-detail/task-approval.d.ts +89 -0
- package/workflow/task-detail/task-approval.d.ts.map +1 -0
- package/workflow/task-detail/task-approval.js +84 -0
- package/workflow/task-detail/task-approval.js.map +1 -0
- package/workflow/task-detail/task-detail-io.d.ts +39 -0
- package/workflow/task-detail/task-detail-io.d.ts.map +1 -0
- package/workflow/task-detail/task-detail-io.js +42 -0
- package/workflow/task-detail/task-detail-io.js.map +1 -0
- package/workflow/thread/WorkflowTaskThread.d.ts +91 -0
- package/workflow/thread/WorkflowTaskThread.d.ts.map +1 -0
- package/workflow/thread/WorkflowTaskThread.js +318 -0
- package/workflow/thread/WorkflowTaskThread.js.map +1 -0
- package/workflow/thread/project-thread-items.d.ts +108 -0
- package/workflow/thread/project-thread-items.d.ts.map +1 -0
- package/workflow/thread/project-thread-items.js +126 -0
- package/workflow/thread/project-thread-items.js.map +1 -0
- package/workflow/thread/task-presentation.d.ts +73 -0
- package/workflow/thread/task-presentation.d.ts.map +1 -0
- package/workflow/thread/task-presentation.js +331 -0
- package/workflow/thread/task-presentation.js.map +1 -0
- package/workflow/thread/thread-presentation.d.ts +28 -0
- package/workflow/thread/thread-presentation.d.ts.map +1 -0
- package/workflow/thread/thread-presentation.js +28 -0
- package/workflow/thread/thread-presentation.js.map +1 -0
- package/workflow/thread/useWorkflowThreadItems.d.ts +16 -0
- package/workflow/thread/useWorkflowThreadItems.d.ts.map +1 -0
- package/workflow/thread/useWorkflowThreadItems.js +22 -0
- package/workflow/thread/useWorkflowThreadItems.js.map +1 -0
- package/workflow/useApprovalBoundary.d.ts +38 -0
- package/workflow/useApprovalBoundary.d.ts.map +1 -0
- package/workflow/useApprovalBoundary.js +55 -0
- package/workflow/useApprovalBoundary.js.map +1 -0
- package/workflow/useFollowExecution.d.ts +0 -20
- package/workflow/useFollowExecution.d.ts.map +1 -1
- package/workflow/useFollowExecution.js +0 -17
- package/workflow/useFollowExecution.js.map +1 -1
- package/workflow/useWorkflowArtifactDownload.d.ts +28 -0
- package/workflow/useWorkflowArtifactDownload.d.ts.map +1 -0
- package/workflow/useWorkflowArtifactDownload.js +45 -0
- package/workflow/useWorkflowArtifactDownload.js.map +1 -0
- package/workflow/useWorkflowExecutionActions.d.ts +3 -2
- package/workflow/useWorkflowExecutionActions.d.ts.map +1 -1
- package/workflow/useWorkflowExecutionActions.js.map +1 -1
- package/workflow/useWorkflowExecutionFileChanges.d.ts +107 -0
- package/workflow/useWorkflowExecutionFileChanges.d.ts.map +1 -0
- package/workflow/useWorkflowExecutionFileChanges.js +244 -0
- package/workflow/useWorkflowExecutionFileChanges.js.map +1 -0
- package/workflow/useWorkflowExecutionGraph.d.ts +1 -14
- package/workflow/useWorkflowExecutionGraph.d.ts.map +1 -1
- package/workflow/useWorkflowExecutionGraph.js +2 -25
- package/workflow/useWorkflowExecutionGraph.js.map +1 -1
- package/workflow/useWorkflowExecutionPanel.d.ts +108 -0
- package/workflow/useWorkflowExecutionPanel.d.ts.map +1 -0
- package/workflow/useWorkflowExecutionPanel.js +103 -0
- package/workflow/useWorkflowExecutionPanel.js.map +1 -0
- package/workflow/useWorkflowExecutionRailViews.d.ts +46 -0
- package/workflow/useWorkflowExecutionRailViews.d.ts.map +1 -0
- package/workflow/useWorkflowExecutionRailViews.js +81 -0
- package/workflow/useWorkflowExecutionRailViews.js.map +1 -0
- package/workspace/FileViewer.d.ts +1 -1
- package/workspace/FileViewer.js +3 -3
- package/workspace/FileViewer.js.map +1 -1
- package/workspace/PanelChip.d.ts +27 -0
- package/workspace/PanelChip.d.ts.map +1 -0
- package/workspace/PanelChip.js +42 -0
- package/workspace/PanelChip.js.map +1 -0
- package/workspace/WorkspaceSurface.d.ts +25 -1
- package/workspace/WorkspaceSurface.d.ts.map +1 -1
- package/workspace/WorkspaceSurface.js +21 -9
- package/workspace/WorkspaceSurface.js.map +1 -1
- package/workspace/index.d.ts +3 -1
- package/workspace/index.d.ts.map +1 -1
- package/workspace/index.js +1 -0
- package/workspace/index.js.map +1 -1
- package/execution/ThreadSelectionContext.d.ts +0 -17
- package/execution/ThreadSelectionContext.d.ts.map +0 -1
- package/execution/ThreadSelectionContext.js +0 -18
- package/execution/ThreadSelectionContext.js.map +0 -1
- package/execution/useThreadSelection.d.ts +0 -35
- package/execution/useThreadSelection.d.ts.map +0 -1
- package/execution/useThreadSelection.js +0 -65
- package/execution/useThreadSelection.js.map +0 -1
- package/internal/store/selection-store.d.ts +0 -53
- package/internal/store/selection-store.d.ts.map +0 -1
- package/internal/store/selection-store.js +0 -88
- package/internal/store/selection-store.js.map +0 -1
- package/session/artifact-document.d.ts.map +0 -1
- package/session/artifact-document.js +0 -22
- package/session/artifact-document.js.map +0 -1
- package/session/facets/InspectTab.d.ts +0 -13
- package/session/facets/InspectTab.d.ts.map +0 -1
- package/session/facets/InspectTab.js +0 -19
- package/session/facets/InspectTab.js.map +0 -1
- package/src/execution/ThreadSelectionContext.tsx +0 -20
- package/src/execution/useThreadSelection.ts +0 -95
- package/src/internal/store/__tests__/selection-store.test.ts +0 -115
- package/src/internal/store/selection-store.ts +0 -112
- package/src/session/artifact-document.ts +0 -23
- package/src/session/facets/InspectTab.tsx +0 -57
- package/src/workflow/WorkflowExecutionApprovalCard.tsx +0 -154
- package/src/workflow/WorkflowExecutionArtifactPanel.tsx +0 -107
- package/src/workflow/WorkflowExecutionCostPanel.tsx +0 -120
- package/src/workflow/WorkflowExecutionTaskPanel.tsx +0 -129
- package/src/workflow/WorkflowExecutionTimeline.tsx +0 -151
- package/src/workflow/WorkflowExecutionTimelineEvent.tsx +0 -497
- package/src/workflow/__tests__/ExecutionInspector.test.tsx +0 -155
- package/src/workflow/__tests__/WorkflowExecutionApprovalCard.test.tsx +0 -129
- package/src/workflow/__tests__/derive-task-detail.test.ts +0 -1265
- package/src/workflow/__tests__/derive-waterfall-entries.test.ts +0 -521
- package/src/workflow/__tests__/execution-inspector.test.tsx +0 -332
- package/src/workflow/execution/derive-waterfall-entries.ts +0 -377
- package/src/workflow/execution/useWaterfallEntries.ts +0 -125
- package/src/workflow/execution-inspector/AgentCallTab.tsx +0 -169
- package/src/workflow/execution-inspector/ErrorTab.tsx +0 -110
- package/src/workflow/execution-inspector/EventLogTab.tsx +0 -79
- package/src/workflow/execution-inspector/ExecutionInspector.tsx +0 -341
- package/src/workflow/execution-inspector/InputOutputTab.tsx +0 -325
- package/src/workflow/execution-inspector/RetriesTab.tsx +0 -68
- package/src/workflow/execution-inspector/SummaryTab.tsx +0 -62
- package/src/workflow/execution-inspector/derive-task-detail.ts +0 -584
- package/src/workflow/execution-inspector/index.ts +0 -14
- package/src/workflow/execution-inspector/useExecutionTaskDetail.ts +0 -55
- package/src/workflow/inspector/ExecutionInspectorAdapter.tsx +0 -40
- package/src/workflow/waterfall/WaterfallBar.tsx +0 -167
- package/src/workflow/waterfall/WaterfallRow.tsx +0 -112
- package/src/workflow/waterfall/WaterfallScale.tsx +0 -52
- package/src/workflow/waterfall/WaterfallTimeline.tsx +0 -138
- package/src/workflow/waterfall/WaterfallTooltip.tsx +0 -74
- package/src/workflow/waterfall/index.ts +0 -5
- package/workflow/WorkflowExecutionApprovalCard.d.ts +0 -34
- package/workflow/WorkflowExecutionApprovalCard.d.ts.map +0 -1
- package/workflow/WorkflowExecutionApprovalCard.js +0 -46
- package/workflow/WorkflowExecutionApprovalCard.js.map +0 -1
- package/workflow/WorkflowExecutionArtifactPanel.d.ts +0 -15
- package/workflow/WorkflowExecutionArtifactPanel.d.ts.map +0 -1
- package/workflow/WorkflowExecutionArtifactPanel.js +0 -46
- package/workflow/WorkflowExecutionArtifactPanel.js.map +0 -1
- package/workflow/WorkflowExecutionCostPanel.d.ts +0 -18
- package/workflow/WorkflowExecutionCostPanel.d.ts.map +0 -1
- package/workflow/WorkflowExecutionCostPanel.js +0 -31
- package/workflow/WorkflowExecutionCostPanel.js.map +0 -1
- package/workflow/WorkflowExecutionTaskPanel.d.ts +0 -24
- package/workflow/WorkflowExecutionTaskPanel.d.ts.map +0 -1
- package/workflow/WorkflowExecutionTaskPanel.js +0 -51
- package/workflow/WorkflowExecutionTaskPanel.js.map +0 -1
- package/workflow/WorkflowExecutionTimeline.d.ts +0 -42
- package/workflow/WorkflowExecutionTimeline.d.ts.map +0 -1
- package/workflow/WorkflowExecutionTimeline.js +0 -52
- package/workflow/WorkflowExecutionTimeline.js.map +0 -1
- package/workflow/WorkflowExecutionTimelineEvent.d.ts +0 -25
- package/workflow/WorkflowExecutionTimelineEvent.d.ts.map +0 -1
- package/workflow/WorkflowExecutionTimelineEvent.js +0 -179
- package/workflow/WorkflowExecutionTimelineEvent.js.map +0 -1
- package/workflow/execution/derive-waterfall-entries.d.ts +0 -85
- package/workflow/execution/derive-waterfall-entries.d.ts.map +0 -1
- package/workflow/execution/derive-waterfall-entries.js +0 -268
- package/workflow/execution/derive-waterfall-entries.js.map +0 -1
- package/workflow/execution/useWaterfallEntries.d.ts +0 -25
- package/workflow/execution/useWaterfallEntries.d.ts.map +0 -1
- package/workflow/execution/useWaterfallEntries.js +0 -67
- package/workflow/execution/useWaterfallEntries.js.map +0 -1
- package/workflow/execution-inspector/AgentCallTab.d.ts +0 -21
- package/workflow/execution-inspector/AgentCallTab.d.ts.map +0 -1
- package/workflow/execution-inspector/AgentCallTab.js +0 -36
- package/workflow/execution-inspector/AgentCallTab.js.map +0 -1
- package/workflow/execution-inspector/ErrorTab.d.ts +0 -9
- package/workflow/execution-inspector/ErrorTab.d.ts.map +0 -1
- package/workflow/execution-inspector/ErrorTab.js +0 -29
- package/workflow/execution-inspector/ErrorTab.js.map +0 -1
- package/workflow/execution-inspector/EventLogTab.d.ts +0 -11
- package/workflow/execution-inspector/EventLogTab.d.ts.map +0 -1
- package/workflow/execution-inspector/EventLogTab.js +0 -47
- package/workflow/execution-inspector/EventLogTab.js.map +0 -1
- package/workflow/execution-inspector/ExecutionInspector.d.ts +0 -69
- package/workflow/execution-inspector/ExecutionInspector.d.ts.map +0 -1
- package/workflow/execution-inspector/ExecutionInspector.js +0 -145
- package/workflow/execution-inspector/ExecutionInspector.js.map +0 -1
- package/workflow/execution-inspector/InputOutputTab.d.ts +0 -20
- package/workflow/execution-inspector/InputOutputTab.d.ts.map +0 -1
- package/workflow/execution-inspector/InputOutputTab.js +0 -124
- package/workflow/execution-inspector/InputOutputTab.js.map +0 -1
- package/workflow/execution-inspector/RetriesTab.d.ts +0 -7
- package/workflow/execution-inspector/RetriesTab.d.ts.map +0 -1
- package/workflow/execution-inspector/RetriesTab.js +0 -11
- package/workflow/execution-inspector/RetriesTab.js.map +0 -1
- package/workflow/execution-inspector/StructuredDataViewer.d.ts.map +0 -1
- package/workflow/execution-inspector/StructuredDataViewer.js.map +0 -1
- package/workflow/execution-inspector/SummaryTab.d.ts +0 -7
- package/workflow/execution-inspector/SummaryTab.d.ts.map +0 -1
- package/workflow/execution-inspector/SummaryTab.js +0 -10
- package/workflow/execution-inspector/SummaryTab.js.map +0 -1
- package/workflow/execution-inspector/derive-task-detail.d.ts +0 -140
- package/workflow/execution-inspector/derive-task-detail.d.ts.map +0 -1
- package/workflow/execution-inspector/derive-task-detail.js +0 -366
- package/workflow/execution-inspector/derive-task-detail.js.map +0 -1
- package/workflow/execution-inspector/index.d.ts +0 -4
- package/workflow/execution-inspector/index.d.ts.map +0 -1
- package/workflow/execution-inspector/index.js +0 -4
- package/workflow/execution-inspector/index.js.map +0 -1
- package/workflow/execution-inspector/useExecutionTaskDetail.d.ts +0 -38
- package/workflow/execution-inspector/useExecutionTaskDetail.d.ts.map +0 -1
- package/workflow/execution-inspector/useExecutionTaskDetail.js +0 -37
- package/workflow/execution-inspector/useExecutionTaskDetail.js.map +0 -1
- package/workflow/inspector/ExecutionInspectorAdapter.d.ts +0 -26
- package/workflow/inspector/ExecutionInspectorAdapter.d.ts.map +0 -1
- package/workflow/inspector/ExecutionInspectorAdapter.js +0 -23
- package/workflow/inspector/ExecutionInspectorAdapter.js.map +0 -1
- package/workflow/waterfall/WaterfallBar.d.ts +0 -19
- package/workflow/waterfall/WaterfallBar.d.ts.map +0 -1
- package/workflow/waterfall/WaterfallBar.js +0 -70
- package/workflow/waterfall/WaterfallBar.js.map +0 -1
- package/workflow/waterfall/WaterfallRow.d.ts +0 -18
- package/workflow/waterfall/WaterfallRow.d.ts.map +0 -1
- package/workflow/waterfall/WaterfallRow.js +0 -45
- package/workflow/waterfall/WaterfallRow.js.map +0 -1
- package/workflow/waterfall/WaterfallScale.d.ts +0 -14
- package/workflow/waterfall/WaterfallScale.d.ts.map +0 -1
- package/workflow/waterfall/WaterfallScale.js +0 -22
- package/workflow/waterfall/WaterfallScale.js.map +0 -1
- package/workflow/waterfall/WaterfallTimeline.d.ts +0 -46
- package/workflow/waterfall/WaterfallTimeline.d.ts.map +0 -1
- package/workflow/waterfall/WaterfallTimeline.js +0 -60
- package/workflow/waterfall/WaterfallTimeline.js.map +0 -1
- package/workflow/waterfall/WaterfallTooltip.d.ts +0 -15
- package/workflow/waterfall/WaterfallTooltip.d.ts.map +0 -1
- package/workflow/waterfall/WaterfallTooltip.js +0 -20
- package/workflow/waterfall/WaterfallTooltip.js.map +0 -1
- package/workflow/waterfall/index.d.ts +0 -6
- package/workflow/waterfall/index.d.ts.map +0 -1
- package/workflow/waterfall/index.js +0 -6
- package/workflow/waterfall/index.js.map +0 -1
- /package/src/workflow/{execution-inspector → task-detail}/StructuredDataViewer.tsx +0 -0
- /package/workflow/{execution-inspector → task-detail}/StructuredDataViewer.d.ts +0 -0
- /package/workflow/{execution-inspector → task-detail}/StructuredDataViewer.js +0 -0
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { useEffect, useMemo, useState } from "react";
|
|
4
|
+
import { ApiResourceVisibility } from "@stigmer/protos/ai/stigmer/commons/apiresource/enum_pb";
|
|
5
|
+
import type { ResourceRef } from "@stigmer/sdk";
|
|
6
|
+
import { useStigmer } from "../hooks.js";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Readiness of a connection's tool credentials for its visitors'
|
|
10
|
+
* executions. Shared vocabulary for every connection kind that binds
|
|
11
|
+
* `environment_refs` (shares, channels):
|
|
12
|
+
*
|
|
13
|
+
* - `na` — nothing to check: the caller decided the check does not
|
|
14
|
+
* apply (no MCP tools, connection disabled, local deployment, …).
|
|
15
|
+
* - `needs-credentials` — the check applies but no environments are
|
|
16
|
+
* bound: tool calls will fail until credentials are bound.
|
|
17
|
+
* - `checking` — lookups in flight.
|
|
18
|
+
* - `ready` — every bound environment is shared with the organization.
|
|
19
|
+
* - `blocked` — one or more bound environments are private; their
|
|
20
|
+
* `org/slug` references are listed for the hint copy.
|
|
21
|
+
*/
|
|
22
|
+
export type ToolCredentialsReadiness =
|
|
23
|
+
| { readonly status: "na" }
|
|
24
|
+
| { readonly status: "needs-credentials" }
|
|
25
|
+
| { readonly status: "checking" }
|
|
26
|
+
| { readonly status: "ready" }
|
|
27
|
+
| { readonly status: "blocked"; readonly privateEnvironments: readonly string[] };
|
|
28
|
+
|
|
29
|
+
const NA: ToolCredentialsReadiness = { status: "na" };
|
|
30
|
+
const NEEDS_CREDENTIALS: ToolCredentialsReadiness = { status: "needs-credentials" };
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Data hook that checks whether a connection's bound credentials will
|
|
34
|
+
* work at runtime — i.e. whether environments are bound and each one is
|
|
35
|
+
* shared with the organization (`visibility_org`).
|
|
36
|
+
*
|
|
37
|
+
* The runtime resolves connection-bound credentials exclusively through
|
|
38
|
+
* the org-shared environment seam (decision 011 — the agent's default
|
|
39
|
+
* instance stays pristine and is never consulted). So a tool-using
|
|
40
|
+
* agent with an empty binding list is *guaranteed* broken for the
|
|
41
|
+
* connection's users, and this hook says so explicitly
|
|
42
|
+
* (`needs-credentials`) instead of staying silent — the gap that made a
|
|
43
|
+
* share misconfiguration invisible until a visitor's first message
|
|
44
|
+
* failed (sharing project, session 12).
|
|
45
|
+
*
|
|
46
|
+
* `applicable` is the caller's predicate: connection kinds differ in
|
|
47
|
+
* when the check matters (shares add an audience arm; channels do not),
|
|
48
|
+
* so the caller owns that decision and this hook owns the lookups. All
|
|
49
|
+
* lookups run as the owner viewing the dialog, who can read the bound
|
|
50
|
+
* environments.
|
|
51
|
+
*
|
|
52
|
+
* Connection-kind wrappers: {@link useShareToolReadiness} (shares),
|
|
53
|
+
* {@link useChannelToolReadiness} (channels).
|
|
54
|
+
*/
|
|
55
|
+
export function useToolCredentialsReadiness(
|
|
56
|
+
applicable: boolean,
|
|
57
|
+
environmentRefs: readonly ResourceRef[],
|
|
58
|
+
): ToolCredentialsReadiness {
|
|
59
|
+
const stigmer = useStigmer();
|
|
60
|
+
const [checked, setChecked] = useState<ToolCredentialsReadiness>(NA);
|
|
61
|
+
|
|
62
|
+
// Stable key for the effect: the visibility lookups depend only on
|
|
63
|
+
// which environments are bound, not on the array's identity.
|
|
64
|
+
const refsKey = useMemo(
|
|
65
|
+
() => environmentRefs.map((ref) => `${ref.org}/${ref.slug}`).join(","),
|
|
66
|
+
[environmentRefs],
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
const shouldFetch = applicable && refsKey !== "";
|
|
70
|
+
|
|
71
|
+
useEffect(() => {
|
|
72
|
+
if (!shouldFetch) {
|
|
73
|
+
setChecked(NA);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
let cancelled = false;
|
|
78
|
+
setChecked({ status: "checking" });
|
|
79
|
+
|
|
80
|
+
(async (): Promise<ToolCredentialsReadiness> => {
|
|
81
|
+
const privateRefs: string[] = [];
|
|
82
|
+
for (const ref of refsKey.split(",")) {
|
|
83
|
+
const [org, slug] = ref.split("/");
|
|
84
|
+
try {
|
|
85
|
+
const env = await stigmer.environment.getByReference({ org, slug });
|
|
86
|
+
if (
|
|
87
|
+
env.metadata?.visibility !== ApiResourceVisibility.visibility_org
|
|
88
|
+
) {
|
|
89
|
+
privateRefs.push(ref);
|
|
90
|
+
}
|
|
91
|
+
} catch {
|
|
92
|
+
// Unreadable ref (deleted, foreign): the runtime's merge will
|
|
93
|
+
// skip it too — surface it as blocking.
|
|
94
|
+
privateRefs.push(ref);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
return privateRefs.length === 0
|
|
99
|
+
? { status: "ready" }
|
|
100
|
+
: { status: "blocked", privateEnvironments: privateRefs };
|
|
101
|
+
})().then(
|
|
102
|
+
(result) => {
|
|
103
|
+
if (!cancelled) setChecked(result);
|
|
104
|
+
},
|
|
105
|
+
() => {
|
|
106
|
+
// The hint is best-effort pre-flight advice — a failed check must
|
|
107
|
+
// never block the dialog. The runtime error path still diagnoses.
|
|
108
|
+
if (!cancelled) setChecked(NA);
|
|
109
|
+
},
|
|
110
|
+
);
|
|
111
|
+
|
|
112
|
+
return () => {
|
|
113
|
+
cancelled = true;
|
|
114
|
+
};
|
|
115
|
+
}, [shouldFetch, refsKey, stigmer]);
|
|
116
|
+
|
|
117
|
+
if (!applicable) return NA;
|
|
118
|
+
// Zero bindings needs no lookup: a tool-using agent without bound
|
|
119
|
+
// credentials is broken for the connection's users by construction.
|
|
120
|
+
if (refsKey === "") return NEEDS_CREDENTIALS;
|
|
121
|
+
return checked;
|
|
122
|
+
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import type { ExecutionArtifact } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/artifact_pb";
|
|
4
4
|
import { ExecutionArtifactKind } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
5
|
-
import {
|
|
5
|
+
import { ArtifactFileContent } from "./ArtifactFileContent.js";
|
|
6
6
|
import type { SkillPackageDetection } from "../library/detect-skill-package.js";
|
|
7
7
|
|
|
8
8
|
/** Props for {@link ArtifactContentBody}. */
|
|
@@ -55,8 +55,10 @@ export function ArtifactContentBody({
|
|
|
55
55
|
{isDirectory ? (
|
|
56
56
|
<DirectoryContentView artifact={artifact} skillDetection={skillDetection} />
|
|
57
57
|
) : (
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
// File states delegate to the shared, model-agnostic component so the
|
|
59
|
+
// workflow's Artifact-resource document renders content identically.
|
|
60
|
+
<ArtifactFileContent
|
|
61
|
+
fileName={artifact.name}
|
|
60
62
|
content={content}
|
|
61
63
|
contentType={contentType}
|
|
62
64
|
isLoading={isLoading}
|
|
@@ -68,69 +70,6 @@ export function ArtifactContentBody({
|
|
|
68
70
|
);
|
|
69
71
|
}
|
|
70
72
|
|
|
71
|
-
// ---------------------------------------------------------------------------
|
|
72
|
-
// File content states (loading / error / binary / text)
|
|
73
|
-
// ---------------------------------------------------------------------------
|
|
74
|
-
|
|
75
|
-
const SKELETON_LINE_WIDTHS = [85, 72, 90, 65, 78, 88, 70, 82] as const;
|
|
76
|
-
|
|
77
|
-
function FileContentStateView({
|
|
78
|
-
artifact,
|
|
79
|
-
content,
|
|
80
|
-
contentType,
|
|
81
|
-
isLoading,
|
|
82
|
-
error,
|
|
83
|
-
isTruncated,
|
|
84
|
-
}: {
|
|
85
|
-
readonly artifact: ExecutionArtifact;
|
|
86
|
-
readonly content: string | null;
|
|
87
|
-
readonly contentType: string | null;
|
|
88
|
-
readonly isLoading: boolean;
|
|
89
|
-
readonly error: Error | null;
|
|
90
|
-
readonly isTruncated: boolean;
|
|
91
|
-
}) {
|
|
92
|
-
if (isLoading) {
|
|
93
|
-
return (
|
|
94
|
-
<div className="space-y-2 p-4" aria-busy="true" aria-label="Loading content">
|
|
95
|
-
{SKELETON_LINE_WIDTHS.map((width, i) => (
|
|
96
|
-
<div
|
|
97
|
-
key={i}
|
|
98
|
-
className="h-4 animate-pulse rounded bg-muted"
|
|
99
|
-
style={{ width: `${width}%` }}
|
|
100
|
-
aria-hidden="true"
|
|
101
|
-
/>
|
|
102
|
-
))}
|
|
103
|
-
</div>
|
|
104
|
-
);
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
if (error) {
|
|
108
|
-
return (
|
|
109
|
-
<div className="flex flex-col items-center justify-center gap-2 p-8 text-center">
|
|
110
|
-
<ErrorAlertIcon />
|
|
111
|
-
<p className="text-sm text-destructive">{error.message}</p>
|
|
112
|
-
</div>
|
|
113
|
-
);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
if (content === null) {
|
|
117
|
-
return (
|
|
118
|
-
<div className="p-8 text-center text-sm text-muted-foreground">
|
|
119
|
-
Content not available for preview.
|
|
120
|
-
</div>
|
|
121
|
-
);
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
return (
|
|
125
|
-
<ArtifactContentRenderer
|
|
126
|
-
content={content}
|
|
127
|
-
fileName={artifact.name}
|
|
128
|
-
contentType={contentType}
|
|
129
|
-
isTruncated={isTruncated}
|
|
130
|
-
/>
|
|
131
|
-
);
|
|
132
|
-
}
|
|
133
|
-
|
|
134
73
|
// ---------------------------------------------------------------------------
|
|
135
74
|
// Directory content (skill banner + file listing)
|
|
136
75
|
// ---------------------------------------------------------------------------
|
|
@@ -231,25 +170,4 @@ function FolderSmallIcon() {
|
|
|
231
170
|
<path d="M13 11C13 11.55 12.55 12 12 12H2C1.45 12 1 11.55 1 11V3C1 2.45 1.45 2 2 2H5L7 4H12C12.55 4 13 4.45 13 5V11Z" />
|
|
232
171
|
</svg>
|
|
233
172
|
);
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
function ErrorAlertIcon() {
|
|
237
|
-
return (
|
|
238
|
-
<svg
|
|
239
|
-
width="16"
|
|
240
|
-
height="16"
|
|
241
|
-
viewBox="0 0 16 16"
|
|
242
|
-
fill="none"
|
|
243
|
-
stroke="currentColor"
|
|
244
|
-
strokeWidth="1.5"
|
|
245
|
-
strokeLinecap="round"
|
|
246
|
-
strokeLinejoin="round"
|
|
247
|
-
className="text-destructive"
|
|
248
|
-
aria-hidden="true"
|
|
249
|
-
>
|
|
250
|
-
<circle cx="8" cy="8" r="6.5" />
|
|
251
|
-
<path d="M8 5.5V8.5" />
|
|
252
|
-
<circle cx="8" cy="11" r="0.5" fill="currentColor" stroke="none" />
|
|
253
|
-
</svg>
|
|
254
|
-
);
|
|
255
|
-
}
|
|
173
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// The shared file-content state machine for artifact bodies (loading / error /
|
|
4
|
+
// unavailable / text). Domain: execution (data-model-agnostic).
|
|
5
|
+
|
|
6
|
+
import { ArtifactContentRenderer } from "./ArtifactContentRenderer.js";
|
|
7
|
+
|
|
8
|
+
/** Props for {@link ArtifactFileContent}. */
|
|
9
|
+
export interface ArtifactFileContentProps {
|
|
10
|
+
/** File name driving the render-mode dispatch (markdown / yaml / json / text). */
|
|
11
|
+
readonly fileName: string;
|
|
12
|
+
/** Decoded text content, or `null` (binary / loading / error). */
|
|
13
|
+
readonly content: string | null;
|
|
14
|
+
/** Server-detected content type (rendering-strategy fallback). */
|
|
15
|
+
readonly contentType: string | null;
|
|
16
|
+
/** `true` while the content request is in-flight. */
|
|
17
|
+
readonly isLoading: boolean;
|
|
18
|
+
/** Content-fetch error, or `null`. */
|
|
19
|
+
readonly error: Error | null;
|
|
20
|
+
/** Whether the fetched content was truncated by the server's size cap. */
|
|
21
|
+
readonly isTruncated: boolean;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const SKELETON_LINE_WIDTHS = [85, 72, 90, 65, 78, 88, 70, 82] as const;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* The file-content states of an artifact body: loading skeleton, error,
|
|
28
|
+
* "not available for preview" (binary / unfetched), or the rendered text via
|
|
29
|
+
* {@link ArtifactContentRenderer}.
|
|
30
|
+
*
|
|
31
|
+
* Extracted from `ArtifactContentBody` so surfaces on BOTH artifact data
|
|
32
|
+
* models render file content identically — the session's `ExecutionArtifact`
|
|
33
|
+
* bodies (modal + document) and the workflow's `Artifact`-resource document.
|
|
34
|
+
* Deliberately takes plain fields, not an artifact type: the two models share
|
|
35
|
+
* no proto, only this presentation.
|
|
36
|
+
*/
|
|
37
|
+
export function ArtifactFileContent({
|
|
38
|
+
fileName,
|
|
39
|
+
content,
|
|
40
|
+
contentType,
|
|
41
|
+
isLoading,
|
|
42
|
+
error,
|
|
43
|
+
isTruncated,
|
|
44
|
+
}: ArtifactFileContentProps) {
|
|
45
|
+
if (isLoading) {
|
|
46
|
+
return (
|
|
47
|
+
<div className="space-y-2 p-4" aria-busy="true" aria-label="Loading content">
|
|
48
|
+
{SKELETON_LINE_WIDTHS.map((width, i) => (
|
|
49
|
+
<div
|
|
50
|
+
key={i}
|
|
51
|
+
className="h-4 animate-pulse rounded bg-muted"
|
|
52
|
+
style={{ width: `${width}%` }}
|
|
53
|
+
aria-hidden="true"
|
|
54
|
+
/>
|
|
55
|
+
))}
|
|
56
|
+
</div>
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
if (error) {
|
|
61
|
+
return (
|
|
62
|
+
<div className="flex flex-col items-center justify-center gap-2 p-8 text-center">
|
|
63
|
+
<ErrorAlertIcon />
|
|
64
|
+
<p className="text-sm text-destructive">{error.message}</p>
|
|
65
|
+
</div>
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if (content === null) {
|
|
70
|
+
return (
|
|
71
|
+
<div className="p-8 text-center text-sm text-muted-foreground">
|
|
72
|
+
Content not available for preview.
|
|
73
|
+
</div>
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return (
|
|
78
|
+
<ArtifactContentRenderer
|
|
79
|
+
content={content}
|
|
80
|
+
fileName={fileName}
|
|
81
|
+
contentType={contentType}
|
|
82
|
+
isTruncated={isTruncated}
|
|
83
|
+
/>
|
|
84
|
+
);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// ---------------------------------------------------------------------------
|
|
88
|
+
// Inline SVG icons (SDK independence — no lucide dependency)
|
|
89
|
+
// ---------------------------------------------------------------------------
|
|
90
|
+
|
|
91
|
+
function ErrorAlertIcon() {
|
|
92
|
+
return (
|
|
93
|
+
<svg
|
|
94
|
+
width="16"
|
|
95
|
+
height="16"
|
|
96
|
+
viewBox="0 0 16 16"
|
|
97
|
+
fill="none"
|
|
98
|
+
stroke="currentColor"
|
|
99
|
+
strokeWidth="1.5"
|
|
100
|
+
strokeLinecap="round"
|
|
101
|
+
strokeLinejoin="round"
|
|
102
|
+
className="text-destructive"
|
|
103
|
+
aria-hidden="true"
|
|
104
|
+
>
|
|
105
|
+
<circle cx="8" cy="8" r="6.5" />
|
|
106
|
+
<path d="M8 5.5V8.5" />
|
|
107
|
+
<circle cx="8" cy="11" r="0.5" fill="currentColor" stroke="none" />
|
|
108
|
+
</svg>
|
|
109
|
+
);
|
|
110
|
+
}
|
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
+
// Session-model artifact list row: adapts an ExecutionArtifact + its download
|
|
4
|
+
// wiring onto the shared, data-model-agnostic ArtifactRowView.
|
|
5
|
+
|
|
3
6
|
import type { ExecutionArtifact } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/artifact_pb";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
+
import { useMemo } from "react";
|
|
8
|
+
import {
|
|
9
|
+
fromExecutionArtifact,
|
|
10
|
+
type ArtifactRowItem,
|
|
11
|
+
} from "./artifact-row-item.js";
|
|
12
|
+
import { ArtifactRowView } from "./ArtifactRowView.js";
|
|
7
13
|
import { useArtifactDownload } from "./useArtifactDownload.js";
|
|
8
|
-
import { formatArtifactSize } from "./artifact-utils.js";
|
|
9
14
|
|
|
10
15
|
/** Props for {@link ArtifactRow}. */
|
|
11
16
|
export interface ArtifactRowProps {
|
|
@@ -23,12 +28,8 @@ export interface ArtifactRowProps {
|
|
|
23
28
|
/** Single click / Enter / Space: open the artifact (a preview tab, or a modal). */
|
|
24
29
|
readonly onOpen: () => void;
|
|
25
30
|
/**
|
|
26
|
-
* Double click: promote the artifact to a persistent (pinned) tab
|
|
27
|
-
*
|
|
28
|
-
* leading single click of the double click has already opened the preview, so
|
|
29
|
-
* this promotes it. Omit in panel-less hosts (e.g. the modal-only widget):
|
|
30
|
-
* with no handler the row binds no `onDoubleClick`, so a double click is just
|
|
31
|
-
* two harmless single clicks, exactly as `FileTreeNode` behaves.
|
|
31
|
+
* Double click: promote the artifact to a persistent (pinned) tab — see
|
|
32
|
+
* {@link ArtifactRowViewProps.onActivate}. Omit in panel-less hosts.
|
|
32
33
|
*/
|
|
33
34
|
readonly onActivate?: () => void;
|
|
34
35
|
/** Additional CSS classes for the row's `<li>`. */
|
|
@@ -36,20 +37,12 @@ export interface ArtifactRowProps {
|
|
|
36
37
|
}
|
|
37
38
|
|
|
38
39
|
/**
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
* violation. This mirrors `ExplorerRoot`'s header + remove-control pattern.
|
|
46
|
-
*
|
|
47
|
-
* Deliberately execution-pure and presentational: it takes only the artifact,
|
|
48
|
-
* its `executionId`, and open/activate closures — no session-domain types and
|
|
49
|
-
* no content fetch (resource detection and Apply/Push live in the opened
|
|
50
|
-
* document/modal, not the list). The two hosts — the session panel's
|
|
51
|
-
* `ArtifactsTab` facet and the panel-less {@link ArtifactsWidget} — map
|
|
52
|
-
* their entries onto these props and own the behavior wiring.
|
|
40
|
+
* The `ExecutionArtifact` host of the shared {@link ArtifactRowView}: it owns
|
|
41
|
+
* the session model's identity and download mechanics (presigned URL minted
|
|
42
|
+
* by `executionId` + `storageKey` via {@link useArtifactDownload}) and maps
|
|
43
|
+
* the artifact onto the view-model. The workflow's `Artifact`-resource host is
|
|
44
|
+
* `WorkflowArtifactRow` — same row UI, different data model (deliberately
|
|
45
|
+
* unified only at the presentational layer).
|
|
53
46
|
*
|
|
54
47
|
* @see ArtifactsTab — session-panel facet (rows open editor-pane document tabs)
|
|
55
48
|
* @see ArtifactsWidget — panel-less embeddable (rows open the preview modal)
|
|
@@ -62,104 +55,21 @@ export function ArtifactRow({
|
|
|
62
55
|
onActivate,
|
|
63
56
|
className,
|
|
64
57
|
}: ArtifactRowProps) {
|
|
65
|
-
const isDirectory = artifact.kind === ExecutionArtifactKind.DIRECTORY;
|
|
66
58
|
const { download, isDownloading } = useArtifactDownload(executionId);
|
|
67
59
|
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
: null;
|
|
72
|
-
|
|
73
|
-
return (
|
|
74
|
-
<li className={cn("group flex items-stretch", className)}>
|
|
75
|
-
<button
|
|
76
|
-
type="button"
|
|
77
|
-
onClick={onOpen}
|
|
78
|
-
onDoubleClick={onActivate}
|
|
79
|
-
title={artifact.sandboxPath || artifact.name}
|
|
80
|
-
className={cn(
|
|
81
|
-
"flex min-w-0 flex-1 items-center gap-2 px-2 py-1 text-left text-xs text-muted-foreground transition-colors",
|
|
82
|
-
"hover:bg-muted hover:text-foreground",
|
|
83
|
-
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring",
|
|
84
|
-
)}
|
|
85
|
-
>
|
|
86
|
-
<span className="shrink-0 text-muted-foreground">
|
|
87
|
-
{isDirectory ? (
|
|
88
|
-
<FolderTypeIcon open={false} />
|
|
89
|
-
) : (
|
|
90
|
-
<FileTypeIcon fileName={artifact.name} />
|
|
91
|
-
)}
|
|
92
|
-
</span>
|
|
93
|
-
<span className="min-w-0 flex-1 truncate text-foreground">
|
|
94
|
-
{artifact.name}
|
|
95
|
-
{isDirectory && "/"}
|
|
96
|
-
{parentDir && (
|
|
97
|
-
<span className="ml-1.5 text-[0.65rem] text-muted-foreground">
|
|
98
|
-
{parentDir}
|
|
99
|
-
</span>
|
|
100
|
-
)}
|
|
101
|
-
</span>
|
|
102
|
-
<span className="shrink-0 tabular-nums text-[0.65rem] text-muted-foreground-faint">
|
|
103
|
-
{formatArtifactSize(artifact.sizeBytes)}
|
|
104
|
-
</span>
|
|
105
|
-
</button>
|
|
106
|
-
<button
|
|
107
|
-
type="button"
|
|
108
|
-
onClick={() => download(artifact.storageKey, artifact.name)}
|
|
109
|
-
disabled={isDownloading}
|
|
110
|
-
aria-label={
|
|
111
|
-
isDownloading
|
|
112
|
-
? `Preparing ${artifact.name}`
|
|
113
|
-
: `Download ${artifact.name}`
|
|
114
|
-
}
|
|
115
|
-
title={isDirectory ? "Download ZIP" : "Download"}
|
|
116
|
-
className={cn(
|
|
117
|
-
"flex shrink-0 items-center px-2 text-muted-foreground opacity-0 transition-opacity",
|
|
118
|
-
"group-hover:opacity-100 focus-visible:opacity-100",
|
|
119
|
-
"hover:text-foreground disabled:opacity-50",
|
|
120
|
-
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring",
|
|
121
|
-
)}
|
|
122
|
-
>
|
|
123
|
-
<DownloadIcon />
|
|
124
|
-
</button>
|
|
125
|
-
</li>
|
|
60
|
+
const item = useMemo<ArtifactRowItem>(
|
|
61
|
+
() => fromExecutionArtifact(artifact, hasNameCollision),
|
|
62
|
+
[artifact, hasNameCollision],
|
|
126
63
|
);
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
// ---------------------------------------------------------------------------
|
|
130
|
-
// Helpers
|
|
131
|
-
// ---------------------------------------------------------------------------
|
|
132
|
-
|
|
133
|
-
/**
|
|
134
|
-
* Extracts a human-readable parent directory label from a sandbox path.
|
|
135
|
-
* Given `/workspace/configs/agent.yaml` returns `configs/`.
|
|
136
|
-
* Returns `null` when the path has no meaningful parent segment.
|
|
137
|
-
*/
|
|
138
|
-
function parentDirectory(sandboxPath: string): string | null {
|
|
139
|
-
const lastSlash = sandboxPath.lastIndexOf("/");
|
|
140
|
-
if (lastSlash <= 0) return null;
|
|
141
|
-
const parent = sandboxPath.slice(0, lastSlash);
|
|
142
|
-
const segment = parent.slice(parent.lastIndexOf("/") + 1);
|
|
143
|
-
return segment ? `${segment}/` : null;
|
|
144
|
-
}
|
|
145
64
|
|
|
146
|
-
function DownloadIcon() {
|
|
147
65
|
return (
|
|
148
|
-
<
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
strokeLinejoin="round"
|
|
157
|
-
className="shrink-0"
|
|
158
|
-
aria-hidden="true"
|
|
159
|
-
>
|
|
160
|
-
<path d="M6 1.5V8.5" />
|
|
161
|
-
<path d="M3 6L6 9L9 6" />
|
|
162
|
-
<path d="M2 10.5H10" />
|
|
163
|
-
</svg>
|
|
66
|
+
<ArtifactRowView
|
|
67
|
+
item={item}
|
|
68
|
+
onOpen={onOpen}
|
|
69
|
+
onActivate={onActivate}
|
|
70
|
+
onDownload={() => download(artifact.storageKey, artifact.name)}
|
|
71
|
+
isDownloading={isDownloading}
|
|
72
|
+
className={className}
|
|
73
|
+
/>
|
|
164
74
|
);
|
|
165
75
|
}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// Pure presentational artifact list row shared by the session and workflow
|
|
4
|
+
// artifact facets. Domain: execution (data-model-agnostic — see ArtifactRowItem).
|
|
5
|
+
|
|
6
|
+
import { cn } from "@stigmer/theme";
|
|
7
|
+
import { FileTypeIcon, FolderTypeIcon } from "../internal/file-icons/index.js";
|
|
8
|
+
import type { ArtifactRowItem } from "./artifact-row-item.js";
|
|
9
|
+
import { formatArtifactSize } from "./artifact-utils.js";
|
|
10
|
+
|
|
11
|
+
/** Props for {@link ArtifactRowView}. */
|
|
12
|
+
export interface ArtifactRowViewProps {
|
|
13
|
+
/** The view-model to render (see {@link ArtifactRowItem} adapters). */
|
|
14
|
+
readonly item: ArtifactRowItem;
|
|
15
|
+
/** Single click / Enter / Space: open the artifact (a preview tab, or a modal). */
|
|
16
|
+
readonly onOpen: () => void;
|
|
17
|
+
/**
|
|
18
|
+
* Double click: promote the artifact to a persistent (pinned) tab. Mirrors the
|
|
19
|
+
* file tree's `onOpenFile` (preview) / `onActivateFile` (pin) split — the
|
|
20
|
+
* leading single click of the double click has already opened the preview, so
|
|
21
|
+
* this promotes it. Omit in panel-less hosts (e.g. the modal-only widget):
|
|
22
|
+
* with no handler the row binds no `onDoubleClick`, so a double click is just
|
|
23
|
+
* two harmless single clicks, exactly as `FileTreeNode` behaves.
|
|
24
|
+
*/
|
|
25
|
+
readonly onActivate?: () => void;
|
|
26
|
+
/** Download the artifact (each host owns its own download mechanics). */
|
|
27
|
+
readonly onDownload: () => void;
|
|
28
|
+
/** `true` while the host's download is in flight — disables the control. */
|
|
29
|
+
readonly isDownloading: boolean;
|
|
30
|
+
/** Additional CSS classes for the row's `<li>`. */
|
|
31
|
+
readonly className?: string;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* One dense, VS Code-style artifact row: a full-width open button (shared
|
|
36
|
+
* file-type icon + name + optional disambiguation subtitle + size) with a
|
|
37
|
+
* sibling, hover/focus-revealed Download button.
|
|
38
|
+
*
|
|
39
|
+
* The open target and the Download control are SIBLINGS, never nested — a
|
|
40
|
+
* `<button>` inside a `<button>` is an axe `nested-interactive` (WCAG 4.1.2)
|
|
41
|
+
* violation. This mirrors `ExplorerRoot`'s header + remove-control pattern.
|
|
42
|
+
*
|
|
43
|
+
* Deliberately data-model-agnostic: it renders an {@link ArtifactRowItem}
|
|
44
|
+
* view-model and takes open/activate/download closures, so the session
|
|
45
|
+
* (`ExecutionArtifact`) and workflow (`Artifact` resource) hosts share one row
|
|
46
|
+
* UI without sharing a data model. The domain wrappers — session `ArtifactRow`
|
|
47
|
+
* and workflow `WorkflowArtifactRow` — own identity, adapters, and download
|
|
48
|
+
* wiring.
|
|
49
|
+
*
|
|
50
|
+
* All visual properties flow through `--stgm-*` tokens (DD-005).
|
|
51
|
+
*/
|
|
52
|
+
export function ArtifactRowView({
|
|
53
|
+
item,
|
|
54
|
+
onOpen,
|
|
55
|
+
onActivate,
|
|
56
|
+
onDownload,
|
|
57
|
+
isDownloading,
|
|
58
|
+
className,
|
|
59
|
+
}: ArtifactRowViewProps) {
|
|
60
|
+
return (
|
|
61
|
+
<li className={cn("group flex items-stretch", className)}>
|
|
62
|
+
<button
|
|
63
|
+
type="button"
|
|
64
|
+
onClick={onOpen}
|
|
65
|
+
onDoubleClick={onActivate}
|
|
66
|
+
title={item.tooltip}
|
|
67
|
+
className={cn(
|
|
68
|
+
"flex min-w-0 flex-1 items-center gap-2 px-2 py-1 text-left text-xs text-muted-foreground transition-colors",
|
|
69
|
+
"hover:bg-muted hover:text-foreground",
|
|
70
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring",
|
|
71
|
+
)}
|
|
72
|
+
>
|
|
73
|
+
<span className="shrink-0 text-muted-foreground">
|
|
74
|
+
{item.isDirectory ? (
|
|
75
|
+
<FolderTypeIcon open={false} />
|
|
76
|
+
) : (
|
|
77
|
+
<FileTypeIcon fileName={item.name} />
|
|
78
|
+
)}
|
|
79
|
+
</span>
|
|
80
|
+
<span className="min-w-0 flex-1 truncate text-foreground">
|
|
81
|
+
{item.name}
|
|
82
|
+
{item.isDirectory && "/"}
|
|
83
|
+
{item.subtitlePath && (
|
|
84
|
+
<span className="ml-1.5 text-[0.65rem] text-muted-foreground">
|
|
85
|
+
{item.subtitlePath}
|
|
86
|
+
</span>
|
|
87
|
+
)}
|
|
88
|
+
</span>
|
|
89
|
+
<span className="shrink-0 tabular-nums text-[0.65rem] text-muted-foreground-faint">
|
|
90
|
+
{formatArtifactSize(item.sizeBytes)}
|
|
91
|
+
</span>
|
|
92
|
+
</button>
|
|
93
|
+
<button
|
|
94
|
+
type="button"
|
|
95
|
+
onClick={onDownload}
|
|
96
|
+
disabled={isDownloading}
|
|
97
|
+
aria-label={
|
|
98
|
+
isDownloading ? `Preparing ${item.name}` : `Download ${item.name}`
|
|
99
|
+
}
|
|
100
|
+
title={item.isDirectory ? "Download ZIP" : "Download"}
|
|
101
|
+
className={cn(
|
|
102
|
+
"flex shrink-0 items-center px-2 text-muted-foreground opacity-0 transition-opacity",
|
|
103
|
+
"group-hover:opacity-100 focus-visible:opacity-100",
|
|
104
|
+
"hover:text-foreground disabled:opacity-50",
|
|
105
|
+
"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring",
|
|
106
|
+
)}
|
|
107
|
+
>
|
|
108
|
+
<DownloadIcon />
|
|
109
|
+
</button>
|
|
110
|
+
</li>
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// ---------------------------------------------------------------------------
|
|
115
|
+
// Inline SVG icons (SDK independence — no lucide dependency)
|
|
116
|
+
// ---------------------------------------------------------------------------
|
|
117
|
+
|
|
118
|
+
function DownloadIcon() {
|
|
119
|
+
return (
|
|
120
|
+
<svg
|
|
121
|
+
width="12"
|
|
122
|
+
height="12"
|
|
123
|
+
viewBox="0 0 12 12"
|
|
124
|
+
fill="none"
|
|
125
|
+
stroke="currentColor"
|
|
126
|
+
strokeWidth="1.5"
|
|
127
|
+
strokeLinecap="round"
|
|
128
|
+
strokeLinejoin="round"
|
|
129
|
+
className="shrink-0"
|
|
130
|
+
aria-hidden="true"
|
|
131
|
+
>
|
|
132
|
+
<path d="M6 1.5V8.5" />
|
|
133
|
+
<path d="M3 6L6 9L9 6" />
|
|
134
|
+
<path d="M2 10.5H10" />
|
|
135
|
+
</svg>
|
|
136
|
+
);
|
|
137
|
+
}
|