@stigmer/react 3.1.16 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -1
- package/agent-instance/AgentInstanceList.d.ts.map +1 -1
- package/agent-instance/AgentInstanceList.js +11 -3
- package/agent-instance/AgentInstanceList.js.map +1 -1
- package/channel/AgentChannelsPanel.d.ts +60 -0
- package/channel/AgentChannelsPanel.d.ts.map +1 -0
- package/channel/AgentChannelsPanel.js +255 -0
- package/channel/AgentChannelsPanel.js.map +1 -0
- package/channel/ChannelConversationsDialog.d.ts +41 -0
- package/channel/ChannelConversationsDialog.d.ts.map +1 -0
- package/channel/ChannelConversationsDialog.js +94 -0
- package/channel/ChannelConversationsDialog.js.map +1 -0
- package/channel/ChannelCredentialsDialog.d.ts +37 -0
- package/channel/ChannelCredentialsDialog.d.ts.map +1 -0
- package/channel/ChannelCredentialsDialog.js +75 -0
- package/channel/ChannelCredentialsDialog.js.map +1 -0
- package/channel/ChannelToolCredentials.d.ts +31 -0
- package/channel/ChannelToolCredentials.d.ts.map +1 -0
- package/channel/ChannelToolCredentials.js +41 -0
- package/channel/ChannelToolCredentials.js.map +1 -0
- package/channel/ConnectSlackDialog.d.ts +61 -0
- package/channel/ConnectSlackDialog.d.ts.map +1 -0
- package/channel/ConnectSlackDialog.js +238 -0
- package/channel/ConnectSlackDialog.js.map +1 -0
- package/channel/ConnectWhatsAppDialog.d.ts +70 -0
- package/channel/ConnectWhatsAppDialog.d.ts.map +1 -0
- package/channel/ConnectWhatsAppDialog.js +256 -0
- package/channel/ConnectWhatsAppDialog.js.map +1 -0
- package/channel/SlackMarkIcon.d.ts +11 -0
- package/channel/SlackMarkIcon.d.ts.map +1 -0
- package/channel/SlackMarkIcon.js +13 -0
- package/channel/SlackMarkIcon.js.map +1 -0
- package/channel/WhatsAppMarkIcon.d.ts +12 -0
- package/channel/WhatsAppMarkIcon.d.ts.map +1 -0
- package/channel/WhatsAppMarkIcon.js +14 -0
- package/channel/WhatsAppMarkIcon.js.map +1 -0
- package/channel/connect/ServingAppSection.d.ts +57 -0
- package/channel/connect/ServingAppSection.d.ts.map +1 -0
- package/channel/connect/ServingAppSection.js +49 -0
- package/channel/connect/ServingAppSection.js.map +1 -0
- package/channel/connect/ToolCredentialsSection.d.ts +20 -0
- package/channel/connect/ToolCredentialsSection.d.ts.map +1 -0
- package/channel/connect/ToolCredentialsSection.js +22 -0
- package/channel/connect/ToolCredentialsSection.js.map +1 -0
- package/channel/connect/VerbatimRefusal.d.ts +16 -0
- package/channel/connect/VerbatimRefusal.d.ts.map +1 -0
- package/channel/connect/VerbatimRefusal.js +18 -0
- package/channel/connect/VerbatimRefusal.js.map +1 -0
- package/channel/connect/icons.d.ts +16 -0
- package/channel/connect/icons.d.ts.map +1 -0
- package/channel/connect/icons.js +21 -0
- package/channel/connect/icons.js.map +1 -0
- package/channel/index.d.ts +36 -0
- package/channel/index.d.ts.map +1 -0
- package/channel/index.js +19 -0
- package/channel/index.js.map +1 -0
- package/channel/providerPresentation.d.ts +44 -0
- package/channel/providerPresentation.d.ts.map +1 -0
- package/channel/providerPresentation.js +106 -0
- package/channel/providerPresentation.js.map +1 -0
- package/channel/providers.d.ts +62 -0
- package/channel/providers.d.ts.map +1 -0
- package/channel/providers.js +26 -0
- package/channel/providers.js.map +1 -0
- package/channel/useAgentChannel.d.ts +31 -0
- package/channel/useAgentChannel.d.ts.map +1 -0
- package/channel/useAgentChannel.js +34 -0
- package/channel/useAgentChannel.js.map +1 -0
- package/channel/useAgentChannelList.d.ts +43 -0
- package/channel/useAgentChannelList.d.ts.map +1 -0
- package/channel/useAgentChannelList.js +39 -0
- package/channel/useAgentChannelList.js.map +1 -0
- package/channel/useChannelSessions.d.ts +47 -0
- package/channel/useChannelSessions.d.ts.map +1 -0
- package/channel/useChannelSessions.js +38 -0
- package/channel/useChannelSessions.js.map +1 -0
- package/channel/useChannelToolReadiness.d.ts +23 -0
- package/channel/useChannelToolReadiness.d.ts.map +1 -0
- package/channel/useChannelToolReadiness.js +28 -0
- package/channel/useChannelToolReadiness.js.map +1 -0
- package/channel/useConnectSlackChannel.d.ts +75 -0
- package/channel/useConnectSlackChannel.d.ts.map +1 -0
- package/channel/useConnectSlackChannel.js +115 -0
- package/channel/useConnectSlackChannel.js.map +1 -0
- package/channel/useCreateAgentChannel.d.ts +42 -0
- package/channel/useCreateAgentChannel.d.ts.map +1 -0
- package/channel/useCreateAgentChannel.js +48 -0
- package/channel/useCreateAgentChannel.js.map +1 -0
- package/channel/useDeleteAgentChannel.d.ts +40 -0
- package/channel/useDeleteAgentChannel.d.ts.map +1 -0
- package/channel/useDeleteAgentChannel.js +44 -0
- package/channel/useDeleteAgentChannel.js.map +1 -0
- package/channel/useInstallChannel.d.ts +60 -0
- package/channel/useInstallChannel.d.ts.map +1 -0
- package/channel/useInstallChannel.js +63 -0
- package/channel/useInstallChannel.js.map +1 -0
- package/channel/useOrgAgentChannelList.d.ts +32 -0
- package/channel/useOrgAgentChannelList.d.ts.map +1 -0
- package/channel/useOrgAgentChannelList.js +29 -0
- package/channel/useOrgAgentChannelList.js.map +1 -0
- package/channel/useSaveAgentChannel.d.ts +63 -0
- package/channel/useSaveAgentChannel.d.ts.map +1 -0
- package/channel/useSaveAgentChannel.js +104 -0
- package/channel/useSaveAgentChannel.js.map +1 -0
- package/channel-app/ChannelAppDetailPanel.d.ts +46 -0
- package/channel-app/ChannelAppDetailPanel.d.ts.map +1 -0
- package/channel-app/ChannelAppDetailPanel.js +142 -0
- package/channel-app/ChannelAppDetailPanel.js.map +1 -0
- package/channel-app/ChannelAppListPanel.d.ts +36 -0
- package/channel-app/ChannelAppListPanel.d.ts.map +1 -0
- package/channel-app/ChannelAppListPanel.js +63 -0
- package/channel-app/ChannelAppListPanel.js.map +1 -0
- package/channel-app/CreateChannelAppForm.d.ts +54 -0
- package/channel-app/CreateChannelAppForm.d.ts.map +1 -0
- package/channel-app/CreateChannelAppForm.js +140 -0
- package/channel-app/CreateChannelAppForm.js.map +1 -0
- package/channel-app/index.d.ts +18 -0
- package/channel-app/index.d.ts.map +1 -0
- package/channel-app/index.js +10 -0
- package/channel-app/index.js.map +1 -0
- package/channel-app/internal.d.ts +33 -0
- package/channel-app/internal.d.ts.map +1 -0
- package/channel-app/internal.js +44 -0
- package/channel-app/internal.js.map +1 -0
- package/channel-app/slackAppSetup.d.ts +80 -0
- package/channel-app/slackAppSetup.d.ts.map +1 -0
- package/channel-app/slackAppSetup.js +123 -0
- package/channel-app/slackAppSetup.js.map +1 -0
- package/channel-app/useChannelAppList.d.ts +35 -0
- package/channel-app/useChannelAppList.d.ts.map +1 -0
- package/channel-app/useChannelAppList.js +34 -0
- package/channel-app/useChannelAppList.js.map +1 -0
- package/channel-app/useCreateChannelApp.d.ts +39 -0
- package/channel-app/useCreateChannelApp.d.ts.map +1 -0
- package/channel-app/useCreateChannelApp.js +50 -0
- package/channel-app/useCreateChannelApp.js.map +1 -0
- package/channel-app/useDeleteChannelApp.d.ts +31 -0
- package/channel-app/useDeleteChannelApp.d.ts.map +1 -0
- package/channel-app/useDeleteChannelApp.js +43 -0
- package/channel-app/useDeleteChannelApp.js.map +1 -0
- package/channel-app/useUpdateChannelApp.d.ts +39 -0
- package/channel-app/useUpdateChannelApp.d.ts.map +1 -0
- package/channel-app/useUpdateChannelApp.js +50 -0
- package/channel-app/useUpdateChannelApp.js.map +1 -0
- package/channel-app/whatsappAppSetup.d.ts +51 -0
- package/channel-app/whatsappAppSetup.d.ts.map +1 -0
- package/channel-app/whatsappAppSetup.js +57 -0
- package/channel-app/whatsappAppSetup.js.map +1 -0
- package/environment/index.d.ts +2 -0
- package/environment/index.d.ts.map +1 -1
- package/environment/index.js +1 -0
- package/environment/index.js.map +1 -1
- package/environment/useToolCredentialsReadiness.d.ts +52 -0
- package/environment/useToolCredentialsReadiness.d.ts.map +1 -0
- package/environment/useToolCredentialsReadiness.js +84 -0
- package/environment/useToolCredentialsReadiness.js.map +1 -0
- package/execution/ArtifactContentBody.d.ts.map +1 -1
- package/execution/ArtifactContentBody.js +5 -21
- package/execution/ArtifactContentBody.js.map +1 -1
- package/execution/ArtifactFileContent.d.ts +28 -0
- package/execution/ArtifactFileContent.d.ts.map +1 -0
- package/execution/ArtifactFileContent.js +36 -0
- package/execution/ArtifactFileContent.js.map +1 -0
- package/execution/ArtifactRow.d.ts +8 -20
- package/execution/ArtifactRow.d.ts.map +1 -1
- package/execution/ArtifactRow.js +12 -45
- package/execution/ArtifactRow.js.map +1 -1
- package/execution/ArtifactRowView.d.ts +43 -0
- package/execution/ArtifactRowView.d.ts.map +1 -0
- package/execution/ArtifactRowView.js +35 -0
- package/execution/ArtifactRowView.js.map +1 -0
- package/execution/FileChangesView.d.ts.map +1 -1
- package/execution/FileChangesView.js +1 -61
- package/execution/FileChangesView.js.map +1 -1
- package/execution/SubAgentSection.d.ts.map +1 -1
- package/execution/SubAgentSection.js +4 -15
- package/execution/SubAgentSection.js.map +1 -1
- package/execution/ToolCallItem.d.ts.map +1 -1
- package/execution/ToolCallItem.js +16 -61
- package/execution/ToolCallItem.js.map +1 -1
- package/execution/agent-execution-document.d.ts +31 -0
- package/execution/agent-execution-document.d.ts.map +1 -0
- package/execution/agent-execution-document.js +48 -0
- package/execution/agent-execution-document.js.map +1 -0
- package/{session → execution}/artifact-document.d.ts +2 -3
- package/execution/artifact-document.d.ts.map +1 -0
- package/execution/artifact-document.js +23 -0
- package/execution/artifact-document.js.map +1 -0
- package/execution/artifact-row-item.d.ts +56 -0
- package/execution/artifact-row-item.d.ts.map +1 -0
- package/execution/artifact-row-item.js +57 -0
- package/execution/artifact-row-item.js.map +1 -0
- package/execution/deriveExecutionFileChanges.d.ts +55 -0
- package/execution/deriveExecutionFileChanges.d.ts.map +1 -0
- package/execution/deriveExecutionFileChanges.js +216 -0
- package/execution/deriveExecutionFileChanges.js.map +1 -0
- package/execution/file-change-document.d.ts +22 -0
- package/execution/file-change-document.d.ts.map +1 -0
- package/execution/file-change-document.js +34 -0
- package/execution/file-change-document.js.map +1 -0
- package/execution/index.d.ts +14 -0
- package/execution/index.d.ts.map +1 -1
- package/execution/index.js +9 -0
- package/execution/index.js.map +1 -1
- package/execution/useArtifactContentById.d.ts +61 -0
- package/execution/useArtifactContentById.d.ts.map +1 -0
- package/execution/useArtifactContentById.js +63 -0
- package/execution/useArtifactContentById.js.map +1 -0
- package/execution/useArtifactDownload.d.ts +4 -3
- package/execution/useArtifactDownload.d.ts.map +1 -1
- package/execution/useArtifactDownload.js +4 -3
- package/execution/useArtifactDownload.js.map +1 -1
- package/execution/useCreateAgentExecution.d.ts +1 -1
- package/execution/useLiveAgentExecution.d.ts +59 -0
- package/execution/useLiveAgentExecution.d.ts.map +1 -0
- package/execution/useLiveAgentExecution.js +73 -0
- package/execution/useLiveAgentExecution.js.map +1 -0
- package/index.d.ts +15 -10
- package/index.d.ts.map +1 -1
- package/index.js +21 -6
- package/index.js.map +1 -1
- package/internal/DecisionButton.d.ts +4 -3
- package/internal/DecisionButton.d.ts.map +1 -1
- package/internal/DecisionButton.js +4 -3
- package/internal/DecisionButton.js.map +1 -1
- package/internal/oauthPopup.d.ts +101 -0
- package/internal/oauthPopup.d.ts.map +1 -0
- package/internal/oauthPopup.js +208 -0
- package/internal/oauthPopup.js.map +1 -0
- package/internal/store/index.d.ts +0 -2
- package/internal/store/index.d.ts.map +1 -1
- package/internal/store/index.js +0 -1
- package/internal/store/index.js.map +1 -1
- package/internal/store/workflow-execution-event-store.d.ts +34 -1
- package/internal/store/workflow-execution-event-store.d.ts.map +1 -1
- package/internal/store/workflow-execution-event-store.js +81 -3
- package/internal/store/workflow-execution-event-store.js.map +1 -1
- package/internal/store/workspace-file-selection-store.d.ts +1 -2
- package/internal/store/workspace-file-selection-store.d.ts.map +1 -1
- package/internal/store/workspace-file-selection-store.js +2 -5
- package/internal/store/workspace-file-selection-store.js.map +1 -1
- package/internal/thread-card/ThreadCardShell.d.ts +91 -0
- package/internal/thread-card/ThreadCardShell.d.ts.map +1 -0
- package/internal/thread-card/ThreadCardShell.js +41 -0
- package/internal/thread-card/ThreadCardShell.js.map +1 -0
- package/internal/thread-card/glyphs.d.ts +34 -0
- package/internal/thread-card/glyphs.d.ts.map +1 -0
- package/internal/thread-card/glyphs.js +50 -0
- package/internal/thread-card/glyphs.js.map +1 -0
- package/internal/thread-card/index.d.ts +3 -0
- package/internal/thread-card/index.d.ts.map +1 -0
- package/internal/thread-card/index.js +3 -0
- package/internal/thread-card/index.js.map +1 -0
- package/internal/useRevealLine.d.ts +2 -2
- package/internal/useRevealLine.js +2 -2
- package/mcp-server/OAuthCallbackHandler.js +1 -1
- package/mcp-server/OAuthCallbackHandler.js.map +1 -1
- package/mcp-server/useMcpServerOAuthConnect.d.ts +4 -23
- package/mcp-server/useMcpServerOAuthConnect.d.ts.map +1 -1
- package/mcp-server/useMcpServerOAuthConnect.js +12 -145
- package/mcp-server/useMcpServerOAuthConnect.js.map +1 -1
- package/package.json +4 -4
- package/provider.d.ts +32 -0
- package/provider.d.ts.map +1 -1
- package/provider.js +25 -1
- package/provider.js.map +1 -1
- package/session/NewSessionViewer.d.ts.map +1 -1
- package/session/NewSessionViewer.js +0 -1
- package/session/NewSessionViewer.js.map +1 -1
- package/session/SessionPanelChip.d.ts +7 -22
- package/session/SessionPanelChip.d.ts.map +1 -1
- package/session/SessionPanelChip.js +8 -36
- package/session/SessionPanelChip.js.map +1 -1
- package/session/SessionViewer.d.ts +7 -4
- package/session/SessionViewer.d.ts.map +1 -1
- package/session/SessionViewer.js +32 -30
- package/session/SessionViewer.js.map +1 -1
- package/session/audience.d.ts +15 -1
- package/session/audience.d.ts.map +1 -1
- package/session/channelOrigin.d.ts +33 -0
- package/session/channelOrigin.d.ts.map +1 -0
- package/session/channelOrigin.js +36 -0
- package/session/channelOrigin.js.map +1 -0
- package/session/facets/index.d.ts +0 -2
- package/session/facets/index.d.ts.map +1 -1
- package/session/facets/index.js +0 -1
- package/session/facets/index.js.map +1 -1
- package/session/index.d.ts +2 -2
- package/session/index.d.ts.map +1 -1
- package/session/index.js +5 -3
- package/session/index.js.map +1 -1
- package/session/useSessionFileChanges.d.ts +10 -34
- package/session/useSessionFileChanges.d.ts.map +1 -1
- package/session/useSessionFileChanges.js +9 -141
- package/session/useSessionFileChanges.js.map +1 -1
- package/session/useSessionPanel.d.ts +5 -15
- package/session/useSessionPanel.d.ts.map +1 -1
- package/session/useSessionPanel.js +3 -35
- package/session/useSessionPanel.js.map +1 -1
- package/session/useSessionRailViews.d.ts +3 -6
- package/session/useSessionRailViews.d.ts.map +1 -1
- package/session/useSessionRailViews.js +3 -17
- package/session/useSessionRailViews.js.map +1 -1
- package/settings/ChannelAppsSection.d.ts +13 -0
- package/settings/ChannelAppsSection.d.ts.map +1 -0
- package/settings/ChannelAppsSection.js +48 -0
- package/settings/ChannelAppsSection.js.map +1 -0
- package/settings/index.d.ts +1 -0
- package/settings/index.d.ts.map +1 -1
- package/settings/index.js +1 -0
- package/settings/index.js.map +1 -1
- package/settings/settings-nav.d.ts.map +1 -1
- package/settings/settings-nav.js +6 -1
- package/settings/settings-nav.js.map +1 -1
- package/sharing/AgentShareList.d.ts.map +1 -1
- package/sharing/AgentShareList.js +11 -3
- package/sharing/AgentShareList.js.map +1 -1
- package/sharing/ShareAgentDialog.js +1 -1
- package/sharing/useShareToolReadiness.d.ts +9 -38
- package/sharing/useShareToolReadiness.d.ts.map +1 -1
- package/sharing/useShareToolReadiness.js +7 -72
- package/sharing/useShareToolReadiness.js.map +1 -1
- package/src/__tests__/provider-container.layout.test.tsx +165 -0
- package/src/__tests__/provider-theme-scope.test.tsx +31 -0
- package/src/agent-instance/AgentInstanceList.tsx +60 -42
- package/src/agent-instance/__tests__/AgentInstanceList.test.tsx +161 -0
- package/src/channel/AgentChannelsPanel.tsx +688 -0
- package/src/channel/ChannelConversationsDialog.tsx +267 -0
- package/src/channel/ChannelCredentialsDialog.tsx +219 -0
- package/src/channel/ChannelToolCredentials.tsx +124 -0
- package/src/channel/ConnectSlackDialog.tsx +611 -0
- package/src/channel/ConnectWhatsAppDialog.tsx +624 -0
- package/src/channel/SlackMarkIcon.tsx +21 -0
- package/src/channel/WhatsAppMarkIcon.tsx +22 -0
- package/src/channel/__tests__/AgentChannelsPanel.test.tsx +638 -0
- package/src/channel/__tests__/ChannelConversationsDialog.test.tsx +114 -0
- package/src/channel/__tests__/ChannelCredentialsDialog.test.tsx +240 -0
- package/src/channel/__tests__/ConnectSlackDialog.test.tsx +659 -0
- package/src/channel/__tests__/ConnectWhatsAppDialog.test.tsx +564 -0
- package/src/channel/__tests__/providers.test.ts +118 -0
- package/src/channel/__tests__/useAgentChannel.test.tsx +116 -0
- package/src/channel/__tests__/useAgentChannelList.test.tsx +166 -0
- package/src/channel/__tests__/useChannelSessions.test.tsx +95 -0
- package/src/channel/__tests__/useChannelToolReadiness.test.tsx +158 -0
- package/src/channel/__tests__/useConnectSlackChannel.test.tsx +276 -0
- package/src/channel/__tests__/useDeleteAgentChannel.test.tsx +97 -0
- package/src/channel/__tests__/useInstallChannel.test.tsx +177 -0
- package/src/channel/__tests__/useSaveAgentChannel.test.tsx +294 -0
- package/src/channel/connect/ServingAppSection.tsx +185 -0
- package/src/channel/connect/ToolCredentialsSection.tsx +67 -0
- package/src/channel/connect/VerbatimRefusal.tsx +27 -0
- package/src/channel/connect/icons.tsx +42 -0
- package/src/channel/index.ts +65 -0
- package/src/channel/providerPresentation.ts +154 -0
- package/src/channel/providers.ts +73 -0
- package/src/channel/useAgentChannel.ts +58 -0
- package/src/channel/useAgentChannelList.ts +69 -0
- package/src/channel/useChannelSessions.ts +73 -0
- package/src/channel/useChannelToolReadiness.ts +39 -0
- package/src/channel/useConnectSlackChannel.ts +195 -0
- package/src/channel/useCreateAgentChannel.ts +73 -0
- package/src/channel/useDeleteAgentChannel.ts +71 -0
- package/src/channel/useInstallChannel.ts +117 -0
- package/src/channel/useOrgAgentChannelList.ts +60 -0
- package/src/channel/useSaveAgentChannel.ts +133 -0
- package/src/channel-app/ChannelAppDetailPanel.tsx +510 -0
- package/src/channel-app/ChannelAppListPanel.tsx +201 -0
- package/src/channel-app/CreateChannelAppForm.tsx +529 -0
- package/src/channel-app/__tests__/channelAppWhatsApp.test.tsx +270 -0
- package/src/channel-app/__tests__/slackAppSetup.test.ts +75 -0
- package/src/channel-app/__tests__/useChannelAppHooks.test.tsx +157 -0
- package/src/channel-app/__tests__/whatsappAppSetup.test.ts +39 -0
- package/src/channel-app/index.ts +30 -0
- package/src/channel-app/internal.tsx +180 -0
- package/src/channel-app/slackAppSetup.ts +153 -0
- package/src/channel-app/useChannelAppList.ts +59 -0
- package/src/channel-app/useCreateChannelApp.ts +70 -0
- package/src/channel-app/useDeleteChannelApp.ts +62 -0
- package/src/channel-app/useUpdateChannelApp.ts +70 -0
- package/src/channel-app/whatsappAppSetup.ts +62 -0
- package/src/environment/index.ts +2 -0
- package/src/environment/useToolCredentialsReadiness.ts +122 -0
- package/src/execution/ArtifactContentBody.tsx +6 -88
- package/src/execution/ArtifactFileContent.tsx +110 -0
- package/src/execution/ArtifactRow.tsx +28 -118
- package/src/execution/ArtifactRowView.tsx +137 -0
- package/src/execution/FileChangesView.tsx +4 -69
- package/src/execution/SubAgentSection.tsx +2 -36
- package/src/execution/ToolCallItem.tsx +48 -175
- package/src/execution/__tests__/ArtifactFileContent.test.tsx +60 -0
- package/src/execution/__tests__/ArtifactRowView.test.tsx +78 -0
- package/src/execution/__tests__/agent-execution-document.test.ts +45 -0
- package/src/execution/__tests__/artifact-row-item.test.ts +128 -0
- package/src/execution/__tests__/deriveExecutionFileChanges.test.ts +270 -0
- package/src/execution/__tests__/useArtifactContentById.test.tsx +85 -0
- package/src/execution/__tests__/useLiveAgentExecution.test.tsx +202 -0
- package/src/execution/agent-execution-document.ts +54 -0
- package/src/execution/artifact-document.ts +24 -0
- package/src/execution/artifact-row-item.ts +97 -0
- package/src/execution/deriveExecutionFileChanges.ts +237 -0
- package/src/execution/file-change-document.ts +37 -0
- package/src/execution/index.ts +36 -0
- package/src/execution/useArtifactContentById.ts +120 -0
- package/src/execution/useArtifactDownload.ts +4 -3
- package/src/execution/useCreateAgentExecution.ts +1 -1
- package/src/execution/useLiveAgentExecution.ts +127 -0
- package/src/index.ts +155 -11
- package/src/internal/DecisionButton.tsx +4 -3
- package/src/internal/__tests__/ThreadCardShell.test.tsx +105 -0
- package/src/internal/__tests__/oauthPopup.test.ts +245 -0
- package/src/internal/oauthPopup.ts +261 -0
- package/src/internal/store/__tests__/workflow-execution-event-store.test.ts +375 -5
- package/src/internal/store/index.ts +0 -3
- package/src/internal/store/workflow-execution-event-store.ts +123 -4
- package/src/internal/store/workspace-file-selection-store.ts +2 -5
- package/src/internal/thread-card/ThreadCardShell.tsx +189 -0
- package/src/internal/thread-card/glyphs.tsx +108 -0
- package/src/internal/thread-card/index.ts +19 -0
- package/src/internal/useRevealLine.ts +2 -2
- package/src/mcp-server/OAuthCallbackHandler.tsx +2 -2
- package/src/mcp-server/useMcpServerOAuthConnect.ts +22 -184
- package/src/provider.tsx +42 -0
- package/src/session/NewSessionViewer.tsx +0 -1
- package/src/session/SessionPanelChip.tsx +10 -96
- package/src/session/SessionViewer.tsx +170 -144
- package/src/session/__tests__/SessionViewer-artifactTabs.test.tsx +1 -1
- package/src/session/__tests__/observerAudience.test.tsx +241 -0
- package/src/session/__tests__/useSessionPanel.test.ts +6 -61
- package/src/session/__tests__/useSessionRailViews.test.tsx +5 -27
- package/src/session/audience.ts +15 -1
- package/src/session/channelOrigin.ts +45 -0
- package/src/session/facets/index.ts +0 -3
- package/src/session/index.ts +9 -6
- package/src/session/useSessionFileChanges.ts +12 -153
- package/src/session/useSessionPanel.ts +8 -51
- package/src/session/useSessionRailViews.tsx +2 -27
- package/src/settings/ChannelAppsSection.tsx +133 -0
- package/src/settings/index.ts +1 -0
- package/src/settings/settings-nav.ts +6 -0
- package/src/sharing/AgentShareList.tsx +85 -64
- package/src/sharing/ShareAgentDialog.tsx +1 -1
- package/src/sharing/__tests__/AgentShareList.test.tsx +92 -12
- package/src/sharing/useShareToolReadiness.ts +13 -101
- package/src/styles.css +14 -0
- package/src/workflow/WorkflowAgentExecutionDocument.tsx +283 -0
- package/src/workflow/WorkflowApprovalList.tsx +158 -0
- package/src/workflow/WorkflowArtifactDocument.tsx +257 -0
- package/src/workflow/WorkflowExecutionGraph.tsx +40 -78
- package/src/workflow/WorkflowExecutionViewer.tsx +610 -287
- package/src/workflow/WorkflowFileReviewList.tsx +1 -1
- package/src/workflow/WorkflowTaskApprovalCard.tsx +5 -4
- package/src/workflow/WorkflowTaskApprovalSummary.tsx +6 -6
- package/src/workflow/__tests__/WorkflowAgentExecutionDocument.test.tsx +651 -0
- package/src/workflow/__tests__/WorkflowApprovalList.test.tsx +229 -0
- package/src/workflow/__tests__/WorkflowArtifactDocument.test.tsx +90 -0
- package/src/workflow/__tests__/WorkflowArtifactsTab.test.tsx +85 -0
- package/src/workflow/__tests__/WorkflowChangesTab.test.tsx +113 -0
- package/src/workflow/__tests__/WorkflowExecutionViewer.approvals.test.tsx +473 -0
- package/src/workflow/__tests__/WorkflowExecutionViewer.reconciliation.test.tsx +632 -0
- package/src/workflow/__tests__/WorkflowTaskApprovalSummary.test.tsx +1 -1
- package/src/workflow/__tests__/WorkflowTaskThread.test.tsx +947 -0
- package/src/workflow/__tests__/WorkflowUsageTab.test.tsx +163 -0
- package/src/workflow/__tests__/agent-call-live-experience.test.ts +6 -53
- package/src/workflow/__tests__/derive-execution-overlays.test.ts +4 -0
- package/src/workflow/__tests__/deriveWorkflowArtifactItems.test.ts +71 -0
- package/src/workflow/__tests__/deriveWorkflowUsageItems.test.ts +132 -0
- package/src/workflow/__tests__/execution-graph.test.ts +8 -0
- package/src/workflow/__tests__/project-thread-items.test.ts +428 -0
- package/src/workflow/__tests__/structured-data-viewer.test.tsx +1 -1
- package/src/workflow/__tests__/task-approval.test.ts +149 -0
- package/src/workflow/__tests__/task-detail-io.test.ts +40 -0
- package/src/workflow/__tests__/task-presentation.test.ts +479 -0
- package/src/workflow/__tests__/useActiveTaskName.test.ts +4 -0
- package/src/workflow/__tests__/useApprovalBoundary.test.ts +158 -0
- package/src/workflow/__tests__/useExecutionAnnouncements.test.ts +4 -0
- package/src/workflow/__tests__/useFollowExecution.test.ts +2 -89
- package/src/workflow/__tests__/useWorkflowExecutionFileChanges.test.tsx +412 -0
- package/src/workflow/__tests__/useWorkflowExecutionPanel.test.ts +297 -0
- package/src/workflow/__tests__/useWorkflowExecutionRailViews.test.tsx +115 -0
- package/src/workflow/deriveWorkflowArtifactItems.ts +59 -0
- package/src/workflow/deriveWorkflowUsageItems.ts +73 -0
- package/src/workflow/diagnosis-document.ts +31 -0
- package/src/workflow/execution/index.ts +0 -15
- package/src/workflow/facets/WorkflowArtifactsTab.tsx +99 -0
- package/src/workflow/facets/WorkflowChangesTab.tsx +129 -0
- package/src/workflow/facets/WorkflowUsageTab.tsx +258 -0
- package/src/workflow/format-utils.ts +2 -3
- package/src/workflow/index.ts +106 -62
- package/src/workflow/inspector/index.ts +0 -4
- package/src/workflow/instance/WorkflowInstanceList.tsx +59 -41
- package/src/workflow/instance/__tests__/WorkflowInstanceList.test.tsx +156 -0
- package/src/workflow/task-detail/index.ts +11 -0
- package/src/workflow/task-detail/task-approval.ts +158 -0
- package/src/workflow/task-detail/task-detail-io.ts +65 -0
- package/src/workflow/thread/WorkflowTaskThread.tsx +845 -0
- package/src/workflow/thread/project-thread-items.ts +235 -0
- package/src/workflow/thread/task-presentation.ts +427 -0
- package/src/workflow/thread/thread-presentation.ts +59 -0
- package/src/workflow/thread/useWorkflowThreadItems.ts +34 -0
- package/src/workflow/useApprovalBoundary.ts +72 -0
- package/src/workflow/useFollowExecution.ts +0 -26
- package/src/workflow/useWorkflowArtifactDownload.ts +68 -0
- package/src/workflow/useWorkflowExecutionActions.ts +3 -2
- package/src/workflow/useWorkflowExecutionFileChanges.ts +341 -0
- package/src/workflow/useWorkflowExecutionGraph.ts +3 -43
- package/src/workflow/useWorkflowExecutionPanel.ts +292 -0
- package/src/workflow/useWorkflowExecutionRailViews.tsx +173 -0
- package/src/workspace/FileViewer.tsx +3 -3
- package/src/workspace/PanelChip.tsx +103 -0
- package/src/workspace/WorkspaceSurface.tsx +50 -6
- package/src/workspace/__tests__/WorkspaceSurface.test.tsx +110 -0
- package/src/workspace/index.ts +3 -0
- package/styles.css +1 -1
- package/workflow/WorkflowAgentExecutionDocument.d.ts +79 -0
- package/workflow/WorkflowAgentExecutionDocument.d.ts.map +1 -0
- package/workflow/WorkflowAgentExecutionDocument.js +87 -0
- package/workflow/WorkflowAgentExecutionDocument.js.map +1 -0
- package/workflow/WorkflowApprovalList.d.ts +62 -0
- package/workflow/WorkflowApprovalList.d.ts.map +1 -0
- package/workflow/WorkflowApprovalList.js +52 -0
- package/workflow/WorkflowApprovalList.js.map +1 -0
- package/workflow/WorkflowArtifactDocument.d.ts +29 -0
- package/workflow/WorkflowArtifactDocument.d.ts.map +1 -0
- package/workflow/WorkflowArtifactDocument.js +89 -0
- package/workflow/WorkflowArtifactDocument.js.map +1 -0
- package/workflow/WorkflowExecutionGraph.d.ts +15 -13
- package/workflow/WorkflowExecutionGraph.d.ts.map +1 -1
- package/workflow/WorkflowExecutionGraph.js +18 -53
- package/workflow/WorkflowExecutionGraph.js.map +1 -1
- package/workflow/WorkflowExecutionViewer.d.ts +8 -5
- package/workflow/WorkflowExecutionViewer.d.ts.map +1 -1
- package/workflow/WorkflowExecutionViewer.js +329 -54
- package/workflow/WorkflowExecutionViewer.js.map +1 -1
- package/workflow/WorkflowFileReviewList.d.ts +1 -1
- package/workflow/WorkflowFileReviewList.js +1 -1
- package/workflow/WorkflowTaskApprovalCard.d.ts +4 -3
- package/workflow/WorkflowTaskApprovalCard.d.ts.map +1 -1
- package/workflow/WorkflowTaskApprovalCard.js +5 -4
- package/workflow/WorkflowTaskApprovalCard.js.map +1 -1
- package/workflow/WorkflowTaskApprovalSummary.d.ts +6 -6
- package/workflow/WorkflowTaskApprovalSummary.js +5 -5
- package/workflow/deriveWorkflowArtifactItems.d.ts +30 -0
- package/workflow/deriveWorkflowArtifactItems.d.ts.map +1 -0
- package/workflow/deriveWorkflowArtifactItems.js +38 -0
- package/workflow/deriveWorkflowArtifactItems.js.map +1 -0
- package/workflow/deriveWorkflowUsageItems.d.ts +36 -0
- package/workflow/deriveWorkflowUsageItems.d.ts.map +1 -0
- package/workflow/deriveWorkflowUsageItems.js +50 -0
- package/workflow/deriveWorkflowUsageItems.js.map +1 -0
- package/workflow/diagnosis-document.d.ts +17 -0
- package/workflow/diagnosis-document.d.ts.map +1 -0
- package/workflow/diagnosis-document.js +29 -0
- package/workflow/diagnosis-document.js.map +1 -0
- package/workflow/execution/index.d.ts +0 -2
- package/workflow/execution/index.d.ts.map +1 -1
- package/workflow/execution/index.js +0 -2
- package/workflow/execution/index.js.map +1 -1
- package/workflow/facets/WorkflowArtifactsTab.d.ts +26 -0
- package/workflow/facets/WorkflowArtifactsTab.d.ts.map +1 -0
- package/workflow/facets/WorkflowArtifactsTab.js +34 -0
- package/workflow/facets/WorkflowArtifactsTab.js.map +1 -0
- package/workflow/facets/WorkflowChangesTab.d.ts +37 -0
- package/workflow/facets/WorkflowChangesTab.d.ts.map +1 -0
- package/workflow/facets/WorkflowChangesTab.js +50 -0
- package/workflow/facets/WorkflowChangesTab.js.map +1 -0
- package/workflow/facets/WorkflowUsageTab.d.ts +27 -0
- package/workflow/facets/WorkflowUsageTab.d.ts.map +1 -0
- package/workflow/facets/WorkflowUsageTab.js +87 -0
- package/workflow/facets/WorkflowUsageTab.js.map +1 -0
- package/workflow/format-utils.d.ts +2 -3
- package/workflow/format-utils.d.ts.map +1 -1
- package/workflow/format-utils.js +2 -3
- package/workflow/format-utils.js.map +1 -1
- package/workflow/index.d.ts +21 -10
- package/workflow/index.d.ts.map +1 -1
- package/workflow/index.js +29 -14
- package/workflow/index.js.map +1 -1
- package/workflow/inspector/index.d.ts +0 -2
- package/workflow/inspector/index.d.ts.map +1 -1
- package/workflow/inspector/index.js +0 -2
- package/workflow/inspector/index.js.map +1 -1
- package/workflow/instance/WorkflowInstanceList.d.ts.map +1 -1
- package/workflow/instance/WorkflowInstanceList.js +11 -3
- package/workflow/instance/WorkflowInstanceList.js.map +1 -1
- package/workflow/task-detail/StructuredDataViewer.d.ts.map +1 -0
- package/workflow/task-detail/StructuredDataViewer.js.map +1 -0
- package/workflow/task-detail/index.d.ts +4 -0
- package/workflow/task-detail/index.d.ts.map +1 -0
- package/workflow/task-detail/index.js +4 -0
- package/workflow/task-detail/index.js.map +1 -0
- package/workflow/task-detail/task-approval.d.ts +89 -0
- package/workflow/task-detail/task-approval.d.ts.map +1 -0
- package/workflow/task-detail/task-approval.js +84 -0
- package/workflow/task-detail/task-approval.js.map +1 -0
- package/workflow/task-detail/task-detail-io.d.ts +39 -0
- package/workflow/task-detail/task-detail-io.d.ts.map +1 -0
- package/workflow/task-detail/task-detail-io.js +42 -0
- package/workflow/task-detail/task-detail-io.js.map +1 -0
- package/workflow/thread/WorkflowTaskThread.d.ts +91 -0
- package/workflow/thread/WorkflowTaskThread.d.ts.map +1 -0
- package/workflow/thread/WorkflowTaskThread.js +318 -0
- package/workflow/thread/WorkflowTaskThread.js.map +1 -0
- package/workflow/thread/project-thread-items.d.ts +108 -0
- package/workflow/thread/project-thread-items.d.ts.map +1 -0
- package/workflow/thread/project-thread-items.js +126 -0
- package/workflow/thread/project-thread-items.js.map +1 -0
- package/workflow/thread/task-presentation.d.ts +73 -0
- package/workflow/thread/task-presentation.d.ts.map +1 -0
- package/workflow/thread/task-presentation.js +331 -0
- package/workflow/thread/task-presentation.js.map +1 -0
- package/workflow/thread/thread-presentation.d.ts +28 -0
- package/workflow/thread/thread-presentation.d.ts.map +1 -0
- package/workflow/thread/thread-presentation.js +28 -0
- package/workflow/thread/thread-presentation.js.map +1 -0
- package/workflow/thread/useWorkflowThreadItems.d.ts +16 -0
- package/workflow/thread/useWorkflowThreadItems.d.ts.map +1 -0
- package/workflow/thread/useWorkflowThreadItems.js +22 -0
- package/workflow/thread/useWorkflowThreadItems.js.map +1 -0
- package/workflow/useApprovalBoundary.d.ts +38 -0
- package/workflow/useApprovalBoundary.d.ts.map +1 -0
- package/workflow/useApprovalBoundary.js +55 -0
- package/workflow/useApprovalBoundary.js.map +1 -0
- package/workflow/useFollowExecution.d.ts +0 -20
- package/workflow/useFollowExecution.d.ts.map +1 -1
- package/workflow/useFollowExecution.js +0 -17
- package/workflow/useFollowExecution.js.map +1 -1
- package/workflow/useWorkflowArtifactDownload.d.ts +28 -0
- package/workflow/useWorkflowArtifactDownload.d.ts.map +1 -0
- package/workflow/useWorkflowArtifactDownload.js +45 -0
- package/workflow/useWorkflowArtifactDownload.js.map +1 -0
- package/workflow/useWorkflowExecutionActions.d.ts +3 -2
- package/workflow/useWorkflowExecutionActions.d.ts.map +1 -1
- package/workflow/useWorkflowExecutionActions.js.map +1 -1
- package/workflow/useWorkflowExecutionFileChanges.d.ts +107 -0
- package/workflow/useWorkflowExecutionFileChanges.d.ts.map +1 -0
- package/workflow/useWorkflowExecutionFileChanges.js +244 -0
- package/workflow/useWorkflowExecutionFileChanges.js.map +1 -0
- package/workflow/useWorkflowExecutionGraph.d.ts +1 -14
- package/workflow/useWorkflowExecutionGraph.d.ts.map +1 -1
- package/workflow/useWorkflowExecutionGraph.js +2 -25
- package/workflow/useWorkflowExecutionGraph.js.map +1 -1
- package/workflow/useWorkflowExecutionPanel.d.ts +108 -0
- package/workflow/useWorkflowExecutionPanel.d.ts.map +1 -0
- package/workflow/useWorkflowExecutionPanel.js +103 -0
- package/workflow/useWorkflowExecutionPanel.js.map +1 -0
- package/workflow/useWorkflowExecutionRailViews.d.ts +46 -0
- package/workflow/useWorkflowExecutionRailViews.d.ts.map +1 -0
- package/workflow/useWorkflowExecutionRailViews.js +81 -0
- package/workflow/useWorkflowExecutionRailViews.js.map +1 -0
- package/workspace/FileViewer.d.ts +1 -1
- package/workspace/FileViewer.js +3 -3
- package/workspace/FileViewer.js.map +1 -1
- package/workspace/PanelChip.d.ts +27 -0
- package/workspace/PanelChip.d.ts.map +1 -0
- package/workspace/PanelChip.js +42 -0
- package/workspace/PanelChip.js.map +1 -0
- package/workspace/WorkspaceSurface.d.ts +25 -1
- package/workspace/WorkspaceSurface.d.ts.map +1 -1
- package/workspace/WorkspaceSurface.js +21 -9
- package/workspace/WorkspaceSurface.js.map +1 -1
- package/workspace/index.d.ts +3 -1
- package/workspace/index.d.ts.map +1 -1
- package/workspace/index.js +1 -0
- package/workspace/index.js.map +1 -1
- package/execution/ThreadSelectionContext.d.ts +0 -17
- package/execution/ThreadSelectionContext.d.ts.map +0 -1
- package/execution/ThreadSelectionContext.js +0 -18
- package/execution/ThreadSelectionContext.js.map +0 -1
- package/execution/useThreadSelection.d.ts +0 -35
- package/execution/useThreadSelection.d.ts.map +0 -1
- package/execution/useThreadSelection.js +0 -65
- package/execution/useThreadSelection.js.map +0 -1
- package/internal/store/selection-store.d.ts +0 -53
- package/internal/store/selection-store.d.ts.map +0 -1
- package/internal/store/selection-store.js +0 -88
- package/internal/store/selection-store.js.map +0 -1
- package/session/artifact-document.d.ts.map +0 -1
- package/session/artifact-document.js +0 -22
- package/session/artifact-document.js.map +0 -1
- package/session/facets/InspectTab.d.ts +0 -13
- package/session/facets/InspectTab.d.ts.map +0 -1
- package/session/facets/InspectTab.js +0 -19
- package/session/facets/InspectTab.js.map +0 -1
- package/src/execution/ThreadSelectionContext.tsx +0 -20
- package/src/execution/useThreadSelection.ts +0 -95
- package/src/internal/store/__tests__/selection-store.test.ts +0 -115
- package/src/internal/store/selection-store.ts +0 -112
- package/src/session/artifact-document.ts +0 -23
- package/src/session/facets/InspectTab.tsx +0 -57
- package/src/workflow/WorkflowExecutionApprovalCard.tsx +0 -154
- package/src/workflow/WorkflowExecutionArtifactPanel.tsx +0 -107
- package/src/workflow/WorkflowExecutionCostPanel.tsx +0 -120
- package/src/workflow/WorkflowExecutionTaskPanel.tsx +0 -129
- package/src/workflow/WorkflowExecutionTimeline.tsx +0 -151
- package/src/workflow/WorkflowExecutionTimelineEvent.tsx +0 -497
- package/src/workflow/__tests__/ExecutionInspector.test.tsx +0 -155
- package/src/workflow/__tests__/WorkflowExecutionApprovalCard.test.tsx +0 -129
- package/src/workflow/__tests__/derive-task-detail.test.ts +0 -1265
- package/src/workflow/__tests__/derive-waterfall-entries.test.ts +0 -521
- package/src/workflow/__tests__/execution-inspector.test.tsx +0 -332
- package/src/workflow/execution/derive-waterfall-entries.ts +0 -377
- package/src/workflow/execution/useWaterfallEntries.ts +0 -125
- package/src/workflow/execution-inspector/AgentCallTab.tsx +0 -169
- package/src/workflow/execution-inspector/ErrorTab.tsx +0 -110
- package/src/workflow/execution-inspector/EventLogTab.tsx +0 -79
- package/src/workflow/execution-inspector/ExecutionInspector.tsx +0 -341
- package/src/workflow/execution-inspector/InputOutputTab.tsx +0 -325
- package/src/workflow/execution-inspector/RetriesTab.tsx +0 -68
- package/src/workflow/execution-inspector/SummaryTab.tsx +0 -62
- package/src/workflow/execution-inspector/derive-task-detail.ts +0 -584
- package/src/workflow/execution-inspector/index.ts +0 -14
- package/src/workflow/execution-inspector/useExecutionTaskDetail.ts +0 -55
- package/src/workflow/inspector/ExecutionInspectorAdapter.tsx +0 -40
- package/src/workflow/waterfall/WaterfallBar.tsx +0 -167
- package/src/workflow/waterfall/WaterfallRow.tsx +0 -112
- package/src/workflow/waterfall/WaterfallScale.tsx +0 -52
- package/src/workflow/waterfall/WaterfallTimeline.tsx +0 -138
- package/src/workflow/waterfall/WaterfallTooltip.tsx +0 -74
- package/src/workflow/waterfall/index.ts +0 -5
- package/workflow/WorkflowExecutionApprovalCard.d.ts +0 -34
- package/workflow/WorkflowExecutionApprovalCard.d.ts.map +0 -1
- package/workflow/WorkflowExecutionApprovalCard.js +0 -46
- package/workflow/WorkflowExecutionApprovalCard.js.map +0 -1
- package/workflow/WorkflowExecutionArtifactPanel.d.ts +0 -15
- package/workflow/WorkflowExecutionArtifactPanel.d.ts.map +0 -1
- package/workflow/WorkflowExecutionArtifactPanel.js +0 -46
- package/workflow/WorkflowExecutionArtifactPanel.js.map +0 -1
- package/workflow/WorkflowExecutionCostPanel.d.ts +0 -18
- package/workflow/WorkflowExecutionCostPanel.d.ts.map +0 -1
- package/workflow/WorkflowExecutionCostPanel.js +0 -31
- package/workflow/WorkflowExecutionCostPanel.js.map +0 -1
- package/workflow/WorkflowExecutionTaskPanel.d.ts +0 -24
- package/workflow/WorkflowExecutionTaskPanel.d.ts.map +0 -1
- package/workflow/WorkflowExecutionTaskPanel.js +0 -51
- package/workflow/WorkflowExecutionTaskPanel.js.map +0 -1
- package/workflow/WorkflowExecutionTimeline.d.ts +0 -42
- package/workflow/WorkflowExecutionTimeline.d.ts.map +0 -1
- package/workflow/WorkflowExecutionTimeline.js +0 -52
- package/workflow/WorkflowExecutionTimeline.js.map +0 -1
- package/workflow/WorkflowExecutionTimelineEvent.d.ts +0 -25
- package/workflow/WorkflowExecutionTimelineEvent.d.ts.map +0 -1
- package/workflow/WorkflowExecutionTimelineEvent.js +0 -179
- package/workflow/WorkflowExecutionTimelineEvent.js.map +0 -1
- package/workflow/execution/derive-waterfall-entries.d.ts +0 -85
- package/workflow/execution/derive-waterfall-entries.d.ts.map +0 -1
- package/workflow/execution/derive-waterfall-entries.js +0 -268
- package/workflow/execution/derive-waterfall-entries.js.map +0 -1
- package/workflow/execution/useWaterfallEntries.d.ts +0 -25
- package/workflow/execution/useWaterfallEntries.d.ts.map +0 -1
- package/workflow/execution/useWaterfallEntries.js +0 -67
- package/workflow/execution/useWaterfallEntries.js.map +0 -1
- package/workflow/execution-inspector/AgentCallTab.d.ts +0 -21
- package/workflow/execution-inspector/AgentCallTab.d.ts.map +0 -1
- package/workflow/execution-inspector/AgentCallTab.js +0 -36
- package/workflow/execution-inspector/AgentCallTab.js.map +0 -1
- package/workflow/execution-inspector/ErrorTab.d.ts +0 -9
- package/workflow/execution-inspector/ErrorTab.d.ts.map +0 -1
- package/workflow/execution-inspector/ErrorTab.js +0 -29
- package/workflow/execution-inspector/ErrorTab.js.map +0 -1
- package/workflow/execution-inspector/EventLogTab.d.ts +0 -11
- package/workflow/execution-inspector/EventLogTab.d.ts.map +0 -1
- package/workflow/execution-inspector/EventLogTab.js +0 -47
- package/workflow/execution-inspector/EventLogTab.js.map +0 -1
- package/workflow/execution-inspector/ExecutionInspector.d.ts +0 -69
- package/workflow/execution-inspector/ExecutionInspector.d.ts.map +0 -1
- package/workflow/execution-inspector/ExecutionInspector.js +0 -145
- package/workflow/execution-inspector/ExecutionInspector.js.map +0 -1
- package/workflow/execution-inspector/InputOutputTab.d.ts +0 -20
- package/workflow/execution-inspector/InputOutputTab.d.ts.map +0 -1
- package/workflow/execution-inspector/InputOutputTab.js +0 -124
- package/workflow/execution-inspector/InputOutputTab.js.map +0 -1
- package/workflow/execution-inspector/RetriesTab.d.ts +0 -7
- package/workflow/execution-inspector/RetriesTab.d.ts.map +0 -1
- package/workflow/execution-inspector/RetriesTab.js +0 -11
- package/workflow/execution-inspector/RetriesTab.js.map +0 -1
- package/workflow/execution-inspector/StructuredDataViewer.d.ts.map +0 -1
- package/workflow/execution-inspector/StructuredDataViewer.js.map +0 -1
- package/workflow/execution-inspector/SummaryTab.d.ts +0 -7
- package/workflow/execution-inspector/SummaryTab.d.ts.map +0 -1
- package/workflow/execution-inspector/SummaryTab.js +0 -10
- package/workflow/execution-inspector/SummaryTab.js.map +0 -1
- package/workflow/execution-inspector/derive-task-detail.d.ts +0 -140
- package/workflow/execution-inspector/derive-task-detail.d.ts.map +0 -1
- package/workflow/execution-inspector/derive-task-detail.js +0 -366
- package/workflow/execution-inspector/derive-task-detail.js.map +0 -1
- package/workflow/execution-inspector/index.d.ts +0 -4
- package/workflow/execution-inspector/index.d.ts.map +0 -1
- package/workflow/execution-inspector/index.js +0 -4
- package/workflow/execution-inspector/index.js.map +0 -1
- package/workflow/execution-inspector/useExecutionTaskDetail.d.ts +0 -38
- package/workflow/execution-inspector/useExecutionTaskDetail.d.ts.map +0 -1
- package/workflow/execution-inspector/useExecutionTaskDetail.js +0 -37
- package/workflow/execution-inspector/useExecutionTaskDetail.js.map +0 -1
- package/workflow/inspector/ExecutionInspectorAdapter.d.ts +0 -26
- package/workflow/inspector/ExecutionInspectorAdapter.d.ts.map +0 -1
- package/workflow/inspector/ExecutionInspectorAdapter.js +0 -23
- package/workflow/inspector/ExecutionInspectorAdapter.js.map +0 -1
- package/workflow/waterfall/WaterfallBar.d.ts +0 -19
- package/workflow/waterfall/WaterfallBar.d.ts.map +0 -1
- package/workflow/waterfall/WaterfallBar.js +0 -70
- package/workflow/waterfall/WaterfallBar.js.map +0 -1
- package/workflow/waterfall/WaterfallRow.d.ts +0 -18
- package/workflow/waterfall/WaterfallRow.d.ts.map +0 -1
- package/workflow/waterfall/WaterfallRow.js +0 -45
- package/workflow/waterfall/WaterfallRow.js.map +0 -1
- package/workflow/waterfall/WaterfallScale.d.ts +0 -14
- package/workflow/waterfall/WaterfallScale.d.ts.map +0 -1
- package/workflow/waterfall/WaterfallScale.js +0 -22
- package/workflow/waterfall/WaterfallScale.js.map +0 -1
- package/workflow/waterfall/WaterfallTimeline.d.ts +0 -46
- package/workflow/waterfall/WaterfallTimeline.d.ts.map +0 -1
- package/workflow/waterfall/WaterfallTimeline.js +0 -60
- package/workflow/waterfall/WaterfallTimeline.js.map +0 -1
- package/workflow/waterfall/WaterfallTooltip.d.ts +0 -15
- package/workflow/waterfall/WaterfallTooltip.d.ts.map +0 -1
- package/workflow/waterfall/WaterfallTooltip.js +0 -20
- package/workflow/waterfall/WaterfallTooltip.js.map +0 -1
- package/workflow/waterfall/index.d.ts +0 -6
- package/workflow/waterfall/index.d.ts.map +0 -1
- package/workflow/waterfall/index.js +0 -6
- package/workflow/waterfall/index.js.map +0 -1
- /package/src/workflow/{execution-inspector → task-detail}/StructuredDataViewer.tsx +0 -0
- /package/workflow/{execution-inspector → task-detail}/StructuredDataViewer.d.ts +0 -0
- /package/workflow/{execution-inspector → task-detail}/StructuredDataViewer.js +0 -0
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { memo, useMemo, useState } from "react";
|
|
4
|
+
import { cn } from "@stigmer/theme";
|
|
5
|
+
import { useAutoScroll } from "../../internal/useAutoScroll.js";
|
|
6
|
+
import { JumpToLatestButton } from "../../internal/JumpToLatestButton.js";
|
|
7
|
+
import { BoundedContent } from "../../internal/BoundedContent.js";
|
|
8
|
+
import { ThreadCardShell, ThreadCardHeader, ThreadCardBody, SpinnerIcon, ClockIcon, CheckCircleIcon, XCircleIcon, DotIcon, SlashCircleIcon, } from "../../internal/thread-card/index.js";
|
|
9
|
+
import { formatMetaChips } from "../format-utils.js";
|
|
10
|
+
import { WorkflowApprovalList } from "../WorkflowApprovalList.js";
|
|
11
|
+
import { WorkflowFileReviewList } from "../WorkflowFileReviewList.js";
|
|
12
|
+
import { WorkflowTaskReviewGate } from "../WorkflowTaskReviewGate.js";
|
|
13
|
+
import { WorkflowTaskApprovalSummary } from "../WorkflowTaskApprovalSummary.js";
|
|
14
|
+
import { buildIO } from "../task-detail/task-detail-io.js";
|
|
15
|
+
import { deriveTaskApprovalRequest, deriveTaskApprovalDecision, } from "../task-detail/task-approval.js";
|
|
16
|
+
import { StructuredDataViewer } from "../task-detail/StructuredDataViewer.js";
|
|
17
|
+
import { useWorkflowThreadItems } from "./useWorkflowThreadItems.js";
|
|
18
|
+
/**
|
|
19
|
+
* Session-style task thread for a workflow execution: one card per task in
|
|
20
|
+
* execution order (first-started first — D-T02-1), streaming live as the
|
|
21
|
+
* run progresses, with a collapsed preview and an expandable detail body
|
|
22
|
+
* per card — the workflow analog of the session viewer's tool-call cards.
|
|
23
|
+
*
|
|
24
|
+
* Pending tasks render no cards (D-T02-5); the progress header keeps
|
|
25
|
+
* overall status visible. Retries collapse into one card with an attempt
|
|
26
|
+
* indicator (D-T02-6). AGENT_CALL cards carry an always-visible body with
|
|
27
|
+
* an "Open transcript" affordance (D-T02-2) — the full transcript opens as
|
|
28
|
+
* a panel document, never inline. Since T04 the card is the PRIMARY surface
|
|
29
|
+
* for a task's data (kind-aware preview line + bounded I/O body); since T06
|
|
30
|
+
* it is the ONLY one — the Inspect drill-down is gone, and cards compose
|
|
31
|
+
* the session card language exactly (expand-or-none headers, no selection).
|
|
32
|
+
*
|
|
33
|
+
* Auto-follow uses the session thread's mechanism: an IntersectionObserver
|
|
34
|
+
* sentinel keeps the list pinned to the latest card until the user scrolls
|
|
35
|
+
* up, with a jump-to-latest affordance to re-engage.
|
|
36
|
+
*
|
|
37
|
+
* With `hitl` wired, a gating task's card carries its decision surface
|
|
38
|
+
* in-thread (S10/T06): the canonical `ApprovalCard`s for child tool gates,
|
|
39
|
+
* the child-streaming `FileReviewCard`s for file gates, and the full
|
|
40
|
+
* `WorkflowTaskReviewGate` (custom review renderers included) for
|
|
41
|
+
* task-level human_input gates — with a read-only
|
|
42
|
+
* `WorkflowTaskApprovalSummary` once the gate resolves.
|
|
43
|
+
*
|
|
44
|
+
* This component is designed to work identically whether rendered in the
|
|
45
|
+
* Stigmer Console or embedded in a third-party dashboard. No dependencies
|
|
46
|
+
* on Console routing, auth, or layout context.
|
|
47
|
+
*/
|
|
48
|
+
export const WorkflowTaskThread = memo(function WorkflowTaskThread({ taskStates, totalTasks, isRunning, onOpenAgentExecution, hitl, pendingApprovals, pendingFileReviews, taskSnapshotsByName, className, }) {
|
|
49
|
+
const { items, progress } = useWorkflowThreadItems(taskStates, totalTasks);
|
|
50
|
+
const { scrollRef, sentinelRef, contentRef, isFollowing, jumpToLatest } = useAutoScroll();
|
|
51
|
+
// Group the snapshot's gates by owning child ONCE per snapshot identity —
|
|
52
|
+
// the lists change only on a snapshot refetch, never on stream event
|
|
53
|
+
// appends, so during streaming every card's `gates` prop keeps a stable
|
|
54
|
+
// reference (`undefined` for non-gating cards) and memoized rows bail
|
|
55
|
+
// (DD-009/DD-010). Grouping is unconditional (it is cheap and usually
|
|
56
|
+
// empty); rendering is gated on `hitl` at the card.
|
|
57
|
+
const gatesByChild = useMemo(() => {
|
|
58
|
+
const map = new Map();
|
|
59
|
+
const bucket = (childId) => {
|
|
60
|
+
let entry = map.get(childId);
|
|
61
|
+
if (!entry) {
|
|
62
|
+
entry = { approvals: [], fileReviews: [] };
|
|
63
|
+
map.set(childId, entry);
|
|
64
|
+
}
|
|
65
|
+
return entry;
|
|
66
|
+
};
|
|
67
|
+
for (const pa of pendingApprovals ?? []) {
|
|
68
|
+
if (pa.childAgentExecutionId)
|
|
69
|
+
bucket(pa.childAgentExecutionId).approvals.push(pa);
|
|
70
|
+
}
|
|
71
|
+
for (const ref of pendingFileReviews ?? []) {
|
|
72
|
+
if (ref.childAgentExecutionId)
|
|
73
|
+
bucket(ref.childAgentExecutionId).fileReviews.push(ref);
|
|
74
|
+
}
|
|
75
|
+
return map;
|
|
76
|
+
}, [pendingApprovals, pendingFileReviews]);
|
|
77
|
+
return (_jsxs("div", { className: cn("relative flex h-full min-h-0 flex-col", className), children: [_jsx(ThreadProgressHeader, { progress: progress, isRunning: isRunning }), _jsx("div", { ref: scrollRef, className: "min-h-0 flex-1 overflow-y-auto", children: _jsxs("div", { ref: contentRef, className: "mx-auto flex w-full max-w-3xl flex-col gap-2 px-4 py-4", children: [items.length === 0 ? (_jsx(ThreadEmptyState, { isRunning: isRunning })) : (items.map((item) => (_jsx(ThreadTaskCard, { item: item, onOpenAgentExecution: onOpenAgentExecution,
|
|
78
|
+
// HITL props reach ONLY gating cards (DD-010): the bundle's
|
|
79
|
+
// identity moves whenever any gate's in-flight/error state
|
|
80
|
+
// flips (fresh Set/Map fields), so handing it to every card
|
|
81
|
+
// would re-render the whole column per spinner tick. Scoped
|
|
82
|
+
// here, non-gating cards keep `undefined === undefined` and
|
|
83
|
+
// their memo bails hold.
|
|
84
|
+
hitl: item.status === "waiting_approval" ? hitl : undefined, gates: item.status === "waiting_approval" && item.childExecutionId
|
|
85
|
+
? gatesByChild.get(item.childExecutionId)
|
|
86
|
+
: undefined, snapshot: taskSnapshotsByName?.get(item.taskName) }, item.taskName)))), _jsx("div", { ref: sentinelRef, "aria-hidden": "true" })] }) }), _jsx(JumpToLatestButton, { visible: !isFollowing, onClick: jumpToLatest })] }));
|
|
87
|
+
});
|
|
88
|
+
// ---------------------------------------------------------------------------
|
|
89
|
+
// Progress header
|
|
90
|
+
// ---------------------------------------------------------------------------
|
|
91
|
+
function ThreadProgressHeader({ progress, isRunning, }) {
|
|
92
|
+
const { settledTasks, activeTasks, totalTasks } = progress;
|
|
93
|
+
const settled = totalTasks > 0
|
|
94
|
+
? `${settledTasks} of ${totalTasks} tasks`
|
|
95
|
+
: `${settledTasks} ${settledTasks === 1 ? "task" : "tasks"}`;
|
|
96
|
+
return (_jsxs("div", { className: "flex items-center gap-2 border-b border-border px-4 py-1.5 text-xs text-muted-foreground", children: [_jsx("span", { children: settled }), activeTasks > 0 && (_jsxs("span", { className: "flex items-center gap-1.5", children: [_jsx("span", { "aria-hidden": "true", className: cn("size-1.5 rounded-full bg-primary", isRunning && "animate-pulse") }), activeTasks, " active"] }))] }));
|
|
97
|
+
}
|
|
98
|
+
// ---------------------------------------------------------------------------
|
|
99
|
+
// Empty state
|
|
100
|
+
// ---------------------------------------------------------------------------
|
|
101
|
+
function ThreadEmptyState({ isRunning }) {
|
|
102
|
+
return (_jsx("div", { role: "status", className: "px-4 py-10 text-center text-sm text-muted-foreground", children: isRunning
|
|
103
|
+
? "Waiting for the first task to start…"
|
|
104
|
+
: "No task activity was recorded for this execution." }));
|
|
105
|
+
}
|
|
106
|
+
// ---------------------------------------------------------------------------
|
|
107
|
+
// Task card
|
|
108
|
+
// ---------------------------------------------------------------------------
|
|
109
|
+
/**
|
|
110
|
+
* One task card. Memoized against the structurally-shared item (DD-010):
|
|
111
|
+
* during streaming only the actively-changing task's item gets a fresh
|
|
112
|
+
* identity, so settled cards bail here. `hitl`/`gates` arrive ONLY while
|
|
113
|
+
* this card is gating (the thread scopes them — see the render site), so
|
|
114
|
+
* gate-state churn (a decision's in-flight Set flip re-materializes the
|
|
115
|
+
* bundle) re-renders gating cards only, never the column. `snapshot`
|
|
116
|
+
* changes identity only on a snapshot refetch, never on stream appends.
|
|
117
|
+
* Expansion is local row state — expanding one card never re-renders its
|
|
118
|
+
* siblings.
|
|
119
|
+
*
|
|
120
|
+
* Disclosure (T04, the session `ToolCallItem` rule — "does the body carry
|
|
121
|
+
* content the one-line row cannot?"):
|
|
122
|
+
* - `"preview"` kinds render an ALWAYS-VISIBLE bounded output body (no
|
|
123
|
+
* card chevron — `BoundedContent` owns its own in-place reveal, so the
|
|
124
|
+
* old "expand, then Show more" double control never comes back).
|
|
125
|
+
* - `"summary"` kinds expand from the header — the session card's own
|
|
126
|
+
* gesture, the chevron appended by the shell (T06).
|
|
127
|
+
*/
|
|
128
|
+
const ThreadTaskCard = memo(function ThreadTaskCard({ item, onOpenAgentExecution, hitl, gates, snapshot, }) {
|
|
129
|
+
const [expanded, setExpanded] = useState(false);
|
|
130
|
+
// The I/O fallback ladder (full snapshot value → truncated event summary
|
|
131
|
+
// → nothing) — an O(1) lookup, never an event-log scan (T04).
|
|
132
|
+
const outputIO = useMemo(() => buildIO(snapshot?.output, item.outputSummary, snapshot?.artifactIds ?? []), [snapshot, item.outputSummary]);
|
|
133
|
+
const inputIO = useMemo(() => buildIO(snapshot?.input, item.inputSummary, []), [snapshot, item.inputSummary]);
|
|
134
|
+
// The human_input gate record (T06): the review material for a pending
|
|
135
|
+
// gate, the decision report for a resolved one. Memoized on the captured
|
|
136
|
+
// payloads' identities — the store keeps them reference-stable, so these
|
|
137
|
+
// recompute only when a gate opens/resolves or the snapshot refetches.
|
|
138
|
+
const approvalRequestView = useMemo(() => item.approvalRequest
|
|
139
|
+
? deriveTaskApprovalRequest(item.approvalRequest)
|
|
140
|
+
: null, [item.approvalRequest]);
|
|
141
|
+
const approvalDecision = useMemo(() => item.approvalRequest
|
|
142
|
+
? deriveTaskApprovalDecision(item.approvalResolution, snapshot?.output)
|
|
143
|
+
: null, [item.approvalRequest, item.approvalResolution, snapshot]);
|
|
144
|
+
const isPreview = item.disclosure === "preview";
|
|
145
|
+
const showHitl = !!hitl && item.status === "waiting_approval";
|
|
146
|
+
// While gating, the in-card HITL section owns the card's affordances
|
|
147
|
+
// (including "Open transcript" when the child's gates aren't surfaced) —
|
|
148
|
+
// the preview body must not render a duplicate.
|
|
149
|
+
const showBodyTranscript = item.variant === "agent-call" &&
|
|
150
|
+
!!item.childExecutionId &&
|
|
151
|
+
!!onOpenAgentExecution &&
|
|
152
|
+
!showHitl;
|
|
153
|
+
// A resolved human_input gate presents its decision report in place of
|
|
154
|
+
// the raw output Struct (the output IS the decision record — the report
|
|
155
|
+
// is the readable rendering of it).
|
|
156
|
+
const showApprovalSummary = !showHitl && approvalRequestView !== null && approvalDecision !== null;
|
|
157
|
+
// The session's `showBody` gate: a preview body renders only when it has
|
|
158
|
+
// content the header cannot carry (output, an error, the agent-call
|
|
159
|
+
// transcript affordance, or a gate's decision report) — a content-less
|
|
160
|
+
// preview card collapses back to a clean one-line row.
|
|
161
|
+
const showPreviewBody = isPreview &&
|
|
162
|
+
(outputIO !== null ||
|
|
163
|
+
!!item.error ||
|
|
164
|
+
showBodyTranscript ||
|
|
165
|
+
showApprovalSummary);
|
|
166
|
+
const meta = formatMetaChips({
|
|
167
|
+
durationMs: item.durationMs,
|
|
168
|
+
costMicros: item.costMicros,
|
|
169
|
+
tokens: item.tokensUsed,
|
|
170
|
+
});
|
|
171
|
+
// Kind-aware one-liner resolved by `resolveTaskPreview` in the projection
|
|
172
|
+
// (T04) — a primitive on the item so this memoized card bails during
|
|
173
|
+
// streaming. The empty string means "nothing kind-specific to say".
|
|
174
|
+
const preview = item.previewLine || null;
|
|
175
|
+
return (_jsxs(ThreadCardShell, { accent: item.status === "waiting_approval" ? "warning" : null, cursorTarget: "workflow-task-row", children: [_jsxs(ThreadCardHeader, { gesture: isPreview
|
|
176
|
+
? { kind: "none" }
|
|
177
|
+
: {
|
|
178
|
+
kind: "expand",
|
|
179
|
+
expanded,
|
|
180
|
+
onToggle: () => setExpanded((v) => !v),
|
|
181
|
+
}, children: [_jsx(StatusGlyph, { status: item.status }), _jsxs("span", { className: "min-w-0 flex-1 flex items-baseline gap-1.5 overflow-hidden", children: [_jsx("span", { className: "shrink-0 font-medium text-foreground", children: item.taskName }), item.kindLabel && (_jsx("span", { className: "shrink-0 rounded border border-border px-1 py-px text-[10px] uppercase tracking-wide text-muted-foreground", children: item.kindLabel })), item.attemptNumber > 1 && (_jsxs("span", { className: "shrink-0 text-muted-foreground", children: ["attempt ", item.attemptNumber] })), preview && (_jsx("span", { className: "min-w-0 truncate text-muted-foreground", children: preview }))] }), meta && (_jsx("span", { className: "shrink-0 tabular-nums text-muted-foreground", children: meta }))] }), showHitl && hitl && (_jsx(ThreadCardBody, { children: _jsx(ThreadTaskCardHitl, { item: item, gates: gates, hitl: hitl, approvalRequestView: approvalRequestView, onOpenAgentExecution: onOpenAgentExecution }) })), showPreviewBody && (_jsx(ThreadCardBody, { cursorTarget: "task-preview", children: _jsx(ThreadTaskPreviewBody, { item: item, outputIO: outputIO, approvalSummary: showApprovalSummary && approvalRequestView
|
|
182
|
+
? {
|
|
183
|
+
request: approvalRequestView,
|
|
184
|
+
decision: approvalDecision,
|
|
185
|
+
}
|
|
186
|
+
: undefined, onOpenAgentExecution: showBodyTranscript ? onOpenAgentExecution : undefined }) })), !isPreview && expanded && (_jsx(ThreadCardBody, { children: _jsx(ThreadTaskDetail, { item: item, inputIO: inputIO, outputIO: outputIO, onOpenAgentExecution: onOpenAgentExecution }) }))] }));
|
|
187
|
+
});
|
|
188
|
+
// ---------------------------------------------------------------------------
|
|
189
|
+
// In-thread HITL section (S10)
|
|
190
|
+
// ---------------------------------------------------------------------------
|
|
191
|
+
/**
|
|
192
|
+
* The decision surface on a gating card, resolved by gate kind:
|
|
193
|
+
*
|
|
194
|
+
* 1. Child gates surfaced on the parent snapshot → the shipped lists
|
|
195
|
+
* (`WorkflowApprovalList` for tool approvals, `WorkflowFileReviewList`
|
|
196
|
+
* for file reviews), filtered to this card's child. Decisions route
|
|
197
|
+
* through the workflow-level RPCs on the supplied {@link
|
|
198
|
+
* WorkflowThreadHitl} bundle.
|
|
199
|
+
* 2. An AGENT_CALL card with NO surfaced gates → the child is gated but the
|
|
200
|
+
* snapshot has no entries: on cloud a brief refetch window; on OSS the
|
|
201
|
+
* steady state until the T04 forwarder lands. The honest surface is the
|
|
202
|
+
* child's own transcript (the S5 in-place expansion renders the child's
|
|
203
|
+
* ApprovalCards) — offer it, never a dead-end spinner.
|
|
204
|
+
* 3. Any other gating card → a task-level (human_input) gate. The full
|
|
205
|
+
* review surface — outcomes, forms, artifact-backed payloads, custom
|
|
206
|
+
* review renderers — renders right here (T06): the card is the only
|
|
207
|
+
* decision surface, so it carries the real `WorkflowTaskReviewGate`,
|
|
208
|
+
* not a link to one. Degrades to an honest waiting notice when the
|
|
209
|
+
* request payload is unavailable (no event stream — the snapshot
|
|
210
|
+
* fallback path).
|
|
211
|
+
*/
|
|
212
|
+
function ThreadTaskCardHitl({ item, gates, hitl, approvalRequestView, onOpenAgentExecution, }) {
|
|
213
|
+
const hasChildGates = !!gates && (gates.approvals.length > 0 || gates.fileReviews.length > 0);
|
|
214
|
+
if (hasChildGates) {
|
|
215
|
+
return (_jsxs("div", { className: "flex flex-col gap-3", children: [gates.approvals.length > 0 && (_jsx(WorkflowApprovalList, { pendingApprovals: gates.approvals, onSubmitApproval: hitl.submitApproval, submittingToolCallIds: hitl.approvalSubmittingToolCallIds, approvalErrors: hitl.approvalErrorsByToolCallId })), gates.fileReviews.length > 0 && (_jsx(WorkflowFileReviewList, { pendingFileReviews: gates.fileReviews, onSubmitFileDecision: hitl.submitFileDecision, submittingDecisionKeys: hitl.fileDecisionSubmittingKeys, decisionErrors: hitl.fileDecisionErrorsByKey }))] }));
|
|
216
|
+
}
|
|
217
|
+
if (item.variant === "agent-call") {
|
|
218
|
+
return (_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsx("p", { className: "text-xs text-muted-foreground", children: "The called agent is waiting for an approval. Decide it in the agent's transcript." }), item.childExecutionId && onOpenAgentExecution && (_jsx(ThreadActionButton, { label: "Open transcript", onClick: () => onOpenAgentExecution(item.childExecutionId, item.taskName) }))] }));
|
|
219
|
+
}
|
|
220
|
+
if (approvalRequestView) {
|
|
221
|
+
return (_jsx(WorkflowTaskReviewGate, { taskName: item.taskName, prompt: approvalRequestView.prompt, outcomes: approvalRequestView.outcomes, formSchema: approvalRequestView.formSchema ?? undefined, payload: approvalRequestView.payload, uiHint: approvalRequestView.uiHint, payloadArtifactId: approvalRequestView.payloadArtifactId, onSubmit: hitl.submitTaskApproval, isSubmitting: hitl.taskApprovalSubmittingTaskNames.has(item.taskName), error: hitl.taskApprovalErrorsByTaskName.get(item.taskName) ?? null }));
|
|
222
|
+
}
|
|
223
|
+
// No captured request payload (event stream unavailable) — state the
|
|
224
|
+
// block honestly rather than rendering a gate with no material.
|
|
225
|
+
return (_jsx("p", { className: "text-xs text-muted-foreground", children: "Review required to continue this run." }));
|
|
226
|
+
}
|
|
227
|
+
function ThreadActionButton({ label, onClick, }) {
|
|
228
|
+
return (_jsx("button", { type: "button", onClick: onClick, className: "shrink-0 rounded border border-border px-2 py-1 text-xs font-medium text-foreground hover:bg-muted focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring", children: label }));
|
|
229
|
+
}
|
|
230
|
+
// ---------------------------------------------------------------------------
|
|
231
|
+
// Card bodies (T04)
|
|
232
|
+
// ---------------------------------------------------------------------------
|
|
233
|
+
/**
|
|
234
|
+
* One side of a task's I/O in the card, honest about provenance: the
|
|
235
|
+
* event-summary rung of the fallback ladder carries the same truncation
|
|
236
|
+
* banner Inspect uses. Bounded — the outer `BoundedContent` caps total
|
|
237
|
+
* height (single-level with `StructuredDataViewer`'s per-value reveals:
|
|
238
|
+
* different granularity, they never govern the same block).
|
|
239
|
+
*/
|
|
240
|
+
function ThreadTaskIOSection({ label, io, }) {
|
|
241
|
+
return (_jsxs("div", { className: "flex flex-col gap-1", children: [_jsx("span", { className: "text-[10px] font-medium uppercase tracking-wide text-muted-foreground", children: label }), io.source === "event-summary" && (_jsx("p", { className: "text-[10px] text-muted-foreground", children: "Showing truncated summary from the event log. Full data appears when the run's snapshot is available." })), _jsx(BoundedContent, { children: _jsx(StructuredDataViewer, { data: io.data }) })] }));
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* The always-visible body of a `"preview"`-kind card: the task's output
|
|
245
|
+
* (via the I/O fallback ladder), the failure detail when the task failed,
|
|
246
|
+
* and the agent-call transcript affordance. Content only — the header owns
|
|
247
|
+
* all metadata (session `ToolCallDetail` invariant).
|
|
248
|
+
*
|
|
249
|
+
* A resolved human_input gate supplies `approvalSummary` and gets the
|
|
250
|
+
* read-only decision report instead of the raw output Struct — the output
|
|
251
|
+
* IS the decision record, and the report is its readable rendering (T06).
|
|
252
|
+
*/
|
|
253
|
+
function ThreadTaskPreviewBody({ item, outputIO, approvalSummary, onOpenAgentExecution, }) {
|
|
254
|
+
return (_jsxs("div", { className: "flex flex-col gap-2", children: [item.error && (_jsx(BoundedContent, { children: _jsx("pre", { className: "whitespace-pre-wrap break-words text-xs text-destructive", children: item.error }) })), approvalSummary ? (_jsx(WorkflowTaskApprovalSummary, { taskName: item.taskName, prompt: approvalSummary.request.prompt, outcomes: approvalSummary.request.outcomes, decision: approvalSummary.decision })) : (outputIO && _jsx(ThreadTaskIOSection, { label: "Output", io: outputIO })), item.variant === "agent-call" &&
|
|
255
|
+
item.childExecutionId &&
|
|
256
|
+
onOpenAgentExecution && (_jsx("div", { children: _jsx(ThreadActionButton, { label: "Open transcript", onClick: () => onOpenAgentExecution(item.childExecutionId, item.taskName) }) }))] }));
|
|
257
|
+
}
|
|
258
|
+
function ThreadTaskDetail({ item, inputIO, outputIO, onOpenAgentExecution, }) {
|
|
259
|
+
const rows = [["Status", statusLabel(item.status)]];
|
|
260
|
+
if (item.durationMs > 0) {
|
|
261
|
+
rows.push(["Duration", formatMetaChips({ durationMs: item.durationMs }) ?? ""]);
|
|
262
|
+
}
|
|
263
|
+
if (item.attemptNumber > 1)
|
|
264
|
+
rows.push(["Attempt", String(item.attemptNumber)]);
|
|
265
|
+
const costChip = formatMetaChips({
|
|
266
|
+
costMicros: item.costMicros,
|
|
267
|
+
tokens: item.tokensUsed,
|
|
268
|
+
});
|
|
269
|
+
if (costChip)
|
|
270
|
+
rows.push(["Usage", costChip]);
|
|
271
|
+
if (item.variant === "agent-call" && item.agentSlug) {
|
|
272
|
+
rows.push(["Agent", item.agentSlug]);
|
|
273
|
+
}
|
|
274
|
+
return (_jsxs("div", { className: "flex flex-col gap-2", children: [_jsx("dl", { className: "grid grid-cols-[auto_1fr] gap-x-4 gap-y-1 text-xs", children: rows.map(([label, value]) => (_jsxs("div", { className: "contents", children: [_jsx("dt", { className: "text-muted-foreground", children: label }), _jsx("dd", { className: "text-foreground", children: value })] }, label))) }), item.error && (_jsx(BoundedContent, { children: _jsx("pre", { className: "whitespace-pre-wrap break-words text-xs text-destructive", children: item.error }) })), inputIO && _jsx(ThreadTaskIOSection, { label: "Input", io: inputIO }), outputIO && _jsx(ThreadTaskIOSection, { label: "Output", io: outputIO }), item.variant === "agent-call" &&
|
|
275
|
+
item.childExecutionId &&
|
|
276
|
+
onOpenAgentExecution && (_jsx("div", { children: _jsx(ThreadActionButton, { label: "Open transcript", onClick: () => onOpenAgentExecution(item.childExecutionId, item.taskName) }) }))] }));
|
|
277
|
+
}
|
|
278
|
+
function statusLabel(status) {
|
|
279
|
+
switch (status) {
|
|
280
|
+
case "waiting_approval":
|
|
281
|
+
return "Waiting for approval";
|
|
282
|
+
case "retrying":
|
|
283
|
+
return "Retrying";
|
|
284
|
+
case "running":
|
|
285
|
+
return "Running";
|
|
286
|
+
case "completed":
|
|
287
|
+
return "Completed";
|
|
288
|
+
case "failed":
|
|
289
|
+
return "Failed";
|
|
290
|
+
case "skipped":
|
|
291
|
+
return "Skipped";
|
|
292
|
+
case "pending":
|
|
293
|
+
return "Pending";
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
// ---------------------------------------------------------------------------
|
|
297
|
+
// Status glyph — the shared thread-card set, colored by status token (T05)
|
|
298
|
+
// ---------------------------------------------------------------------------
|
|
299
|
+
/**
|
|
300
|
+
* Maps a task's derived status onto the shared glyph vocabulary the session
|
|
301
|
+
* tool card uses (`internal/thread-card/glyphs`), colored strictly through
|
|
302
|
+
* status token classes — the old dot set's hardcoded hex fallbacks were a
|
|
303
|
+
* Dont-Do #3 violation and died with it.
|
|
304
|
+
*/
|
|
305
|
+
const STATUS_GLYPH = {
|
|
306
|
+
running: { Icon: SpinnerIcon, color: "text-foreground" },
|
|
307
|
+
retrying: { Icon: SpinnerIcon, color: "text-warning" },
|
|
308
|
+
waiting_approval: { Icon: ClockIcon, color: "text-warning" },
|
|
309
|
+
completed: { Icon: CheckCircleIcon, color: "text-success" },
|
|
310
|
+
failed: { Icon: XCircleIcon, color: "text-destructive" },
|
|
311
|
+
skipped: { Icon: SlashCircleIcon, color: "text-muted-foreground" },
|
|
312
|
+
pending: { Icon: DotIcon, color: "text-muted-foreground" },
|
|
313
|
+
};
|
|
314
|
+
function StatusGlyph({ status }) {
|
|
315
|
+
const { Icon, color } = STATUS_GLYPH[status];
|
|
316
|
+
return (_jsx("span", { className: cn("shrink-0", color), "aria-hidden": "true", children: _jsx(Icon, {}) }));
|
|
317
|
+
}
|
|
318
|
+
//# sourceMappingURL=WorkflowTaskThread.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkflowTaskThread.js","sourceRoot":"","sources":["../../../src/workflow/thread/WorkflowTaskThread.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAChD,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAOpC,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,SAAS,EACT,eAAe,EACf,WAAW,EACX,OAAO,EACP,eAAe,GAChB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAChF,OAAO,EAAE,OAAO,EAAqB,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EACL,yBAAyB,EACzB,0BAA0B,GAG3B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAwFrE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,kBAAkB,CAAC,EACjE,UAAU,EACV,UAAU,EACV,SAAS,EACT,oBAAoB,EACpB,IAAI,EACJ,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,SAAS,GACe;IACxB,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,sBAAsB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC3E,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,GACrE,aAAa,EAAE,CAAC;IAElB,0EAA0E;IAC1E,qEAAqE;IACrE,wEAAwE;IACxE,sEAAsE;IACtE,sEAAsE;IACtE,oDAAoD;IACpD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAyC,EAAE;QACtE,MAAM,GAAG,GAAG,IAAI,GAAG,EAGhB,CAAC;QACJ,MAAM,MAAM,GAAG,CAAC,OAAe,EAAE,EAAE;YACjC,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC7B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,KAAK,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;gBAC3C,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC1B,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QACF,KAAK,MAAM,EAAE,IAAI,gBAAgB,IAAI,EAAE,EAAE,CAAC;YACxC,IAAI,EAAE,CAAC,qBAAqB;gBAAE,MAAM,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,kBAAkB,IAAI,EAAE,EAAE,CAAC;YAC3C,IAAI,GAAG,CAAC,qBAAqB;gBAAE,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzF,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAE3C,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,uCAAuC,EAAE,SAAS,CAAC,aACpE,KAAC,oBAAoB,IAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,GAAI,EAElE,cAAK,GAAG,EAAE,SAAS,EAAE,SAAS,EAAC,gCAAgC,YAC7D,eACE,GAAG,EAAE,UAAU,EACf,SAAS,EAAC,wDAAwD,aAEjE,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACpB,KAAC,gBAAgB,IAAC,SAAS,EAAE,SAAS,GAAI,CAC3C,CAAC,CAAC,CAAC,CACF,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAClB,KAAC,cAAc,IAEb,IAAI,EAAE,IAAI,EACV,oBAAoB,EAAE,oBAAoB;4BAC1C,4DAA4D;4BAC5D,2DAA2D;4BAC3D,4DAA4D;4BAC5D,4DAA4D;4BAC5D,4DAA4D;4BAC5D,yBAAyB;4BACzB,IAAI,EAAE,IAAI,CAAC,MAAM,KAAK,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAC3D,KAAK,EACH,IAAI,CAAC,MAAM,KAAK,kBAAkB,IAAI,IAAI,CAAC,gBAAgB;gCACzD,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC;gCACzC,CAAC,CAAC,SAAS,EAEf,QAAQ,EAAE,mBAAmB,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAf5C,IAAI,CAAC,QAAQ,CAgBlB,CACH,CAAC,CACH,EACD,cAAK,GAAG,EAAE,WAAW,iBAAc,MAAM,GAAG,IACxC,GACF,EAEN,KAAC,kBAAkB,IAAC,OAAO,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,GAAI,IAChE,CACP,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E,SAAS,oBAAoB,CAAC,EAC5B,QAAQ,EACR,SAAS,GAIV;IACC,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,QAAQ,CAAC;IAC3D,MAAM,OAAO,GACX,UAAU,GAAG,CAAC;QACZ,CAAC,CAAC,GAAG,YAAY,OAAO,UAAU,QAAQ;QAC1C,CAAC,CAAC,GAAG,YAAY,IAAI,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IAEjE,OAAO,CACL,eAAK,SAAS,EAAC,0FAA0F,aACvG,yBAAO,OAAO,GAAQ,EACrB,WAAW,GAAG,CAAC,IAAI,CAClB,gBAAM,SAAS,EAAC,2BAA2B,aACzC,8BACc,MAAM,EAClB,SAAS,EAAE,EAAE,CACX,kCAAkC,EAClC,SAAS,IAAI,eAAe,CAC7B,GACD,EACD,WAAW,eACP,CACR,IACG,CACP,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAE9E,SAAS,gBAAgB,CAAC,EAAE,SAAS,EAAmC;IACtE,OAAO,CACL,cAAK,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,sDAAsD,YAChF,SAAS;YACR,CAAC,CAAC,sCAAsC;YACxC,CAAC,CAAC,mDAAmD,GACnD,CACP,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,cAAc,CAAC,EAClD,IAAI,EACJ,oBAAoB,EACpB,IAAI,EACJ,KAAK,EACL,QAAQ,GAUT;IACC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEhD,yEAAyE;IACzE,8DAA8D;IAC9D,MAAM,QAAQ,GAAG,OAAO,CACtB,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,WAAW,IAAI,EAAE,CAAC,EAChF,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAC/B,CAAC;IACF,MAAM,OAAO,GAAG,OAAO,CACrB,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,EACrD,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAC9B,CAAC;IAEF,uEAAuE;IACvE,yEAAyE;IACzE,yEAAyE;IACzE,uEAAuE;IACvE,MAAM,mBAAmB,GAAG,OAAO,CACjC,GAAG,EAAE,CACH,IAAI,CAAC,eAAe;QAClB,CAAC,CAAC,yBAAyB,CAAC,IAAI,CAAC,eAAe,CAAC;QACjD,CAAC,CAAC,IAAI,EACV,CAAC,IAAI,CAAC,eAAe,CAAC,CACvB,CAAC;IACF,MAAM,gBAAgB,GAAG,OAAO,CAC9B,GAAG,EAAE,CACH,IAAI,CAAC,eAAe;QAClB,CAAC,CAAC,0BAA0B,CAAC,IAAI,CAAC,kBAAkB,EAAE,QAAQ,EAAE,MAAM,CAAC;QACvE,CAAC,CAAC,IAAI,EACV,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAC1D,CAAC;IAEF,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,KAAK,SAAS,CAAC;IAChD,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,kBAAkB,CAAC;IAC9D,qEAAqE;IACrE,yEAAyE;IACzE,gDAAgD;IAChD,MAAM,kBAAkB,GACtB,IAAI,CAAC,OAAO,KAAK,YAAY;QAC7B,CAAC,CAAC,IAAI,CAAC,gBAAgB;QACvB,CAAC,CAAC,oBAAoB;QACtB,CAAC,QAAQ,CAAC;IACZ,uEAAuE;IACvE,wEAAwE;IACxE,oCAAoC;IACpC,MAAM,mBAAmB,GACvB,CAAC,QAAQ,IAAI,mBAAmB,KAAK,IAAI,IAAI,gBAAgB,KAAK,IAAI,CAAC;IACzE,yEAAyE;IACzE,oEAAoE;IACpE,uEAAuE;IACvE,uDAAuD;IACvD,MAAM,eAAe,GACnB,SAAS;QACT,CAAC,QAAQ,KAAK,IAAI;YAChB,CAAC,CAAC,IAAI,CAAC,KAAK;YACZ,kBAAkB;YAClB,mBAAmB,CAAC,CAAC;IAEzB,MAAM,IAAI,GAAG,eAAe,CAAC;QAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,MAAM,EAAE,IAAI,CAAC,UAAU;KACxB,CAAC,CAAC;IACH,0EAA0E;IAC1E,qEAAqE;IACrE,oEAAoE;IACpE,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC;IAEzC,OAAO,CACL,MAAC,eAAe,IACd,MAAM,EAAE,IAAI,CAAC,MAAM,KAAK,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAC7D,YAAY,EAAC,mBAAmB,aAKhC,MAAC,gBAAgB,IACf,OAAO,EACL,SAAS;oBACP,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;oBAClB,CAAC,CAAC;wBACE,IAAI,EAAE,QAAQ;wBACd,QAAQ;wBACR,QAAQ,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;qBACvC,aAGP,KAAC,WAAW,IAAC,MAAM,EAAE,IAAI,CAAC,MAAM,GAAI,EACpC,gBAAM,SAAS,EAAC,4DAA4D,aAC1E,eAAM,SAAS,EAAC,sCAAsC,YACnD,IAAI,CAAC,QAAQ,GACT,EACN,IAAI,CAAC,SAAS,IAAI,CACjB,eAAM,SAAS,EAAC,4GAA4G,YACzH,IAAI,CAAC,SAAS,GACV,CACR,EACA,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CACzB,gBAAM,SAAS,EAAC,gCAAgC,yBACrC,IAAI,CAAC,aAAa,IACtB,CACR,EACA,OAAO,IAAI,CACV,eAAM,SAAS,EAAC,wCAAwC,YACrD,OAAO,GACH,CACR,IACI,EAEN,IAAI,IAAI,CACP,eAAM,SAAS,EAAC,6CAA6C,YAC1D,IAAI,GACA,CACR,IACgB,EAKlB,QAAQ,IAAI,IAAI,IAAI,CACnB,KAAC,cAAc,cACb,KAAC,kBAAkB,IACjB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,EACV,mBAAmB,EAAE,mBAAmB,EACxC,oBAAoB,EAAE,oBAAoB,GAC1C,GACa,CAClB,EAIA,eAAe,IAAI,CAClB,KAAC,cAAc,IAAC,YAAY,EAAC,cAAc,YACzC,KAAC,qBAAqB,IACpB,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,QAAQ,EAClB,eAAe,EACb,mBAAmB,IAAI,mBAAmB;wBACxC,CAAC,CAAC;4BACE,OAAO,EAAE,mBAAmB;4BAC5B,QAAQ,EAAE,gBAAgB;yBAC3B;wBACH,CAAC,CAAC,SAAS,EAEf,oBAAoB,EAClB,kBAAkB,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,SAAS,GAEvD,GACa,CAClB,EAEA,CAAC,SAAS,IAAI,QAAQ,IAAI,CACzB,KAAC,cAAc,cACb,KAAC,gBAAgB,IACf,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,oBAAoB,EAAE,oBAAoB,GAC1C,GACa,CAClB,IACe,CACnB,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAC9E,+BAA+B;AAC/B,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,SAAS,kBAAkB,CAAC,EAC1B,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,mBAAmB,EACnB,oBAAoB,GAUrB;IACC,MAAM,aAAa,GACjB,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE1E,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,CACL,eAAK,SAAS,EAAC,qBAAqB,aACjC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CAC7B,KAAC,oBAAoB,IACnB,gBAAgB,EAAE,KAAK,CAAC,SAAS,EACjC,gBAAgB,EAAE,IAAI,CAAC,cAAc,EACrC,qBAAqB,EAAE,IAAI,CAAC,6BAA6B,EACzD,cAAc,EAAE,IAAI,CAAC,0BAA0B,GAC/C,CACH,EACA,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,CAC/B,KAAC,sBAAsB,IACrB,kBAAkB,EAAE,KAAK,CAAC,WAAW,EACrC,oBAAoB,EAAE,IAAI,CAAC,kBAAkB,EAC7C,sBAAsB,EAAE,IAAI,CAAC,0BAA0B,EACvD,cAAc,EAAE,IAAI,CAAC,uBAAuB,GAC5C,CACH,IACG,CACP,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,KAAK,YAAY,EAAE,CAAC;QAClC,OAAO,CACL,eAAK,SAAS,EAAC,mCAAmC,aAChD,YAAG,SAAS,EAAC,+BAA+B,kGAGxC,EACH,IAAI,CAAC,gBAAgB,IAAI,oBAAoB,IAAI,CAChD,KAAC,kBAAkB,IACjB,KAAK,EAAC,iBAAiB,EACvB,OAAO,EAAE,GAAG,EAAE,CACZ,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,GAE5D,CACH,IACG,CACP,CAAC;IACJ,CAAC;IAED,IAAI,mBAAmB,EAAE,CAAC;QACxB,OAAO,CACL,KAAC,sBAAsB,IACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,MAAM,EAAE,mBAAmB,CAAC,MAAM,EAClC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,EACtC,UAAU,EAAE,mBAAmB,CAAC,UAAU,IAAI,SAAS,EACvD,OAAO,EAAE,mBAAmB,CAAC,OAAO,EACpC,MAAM,EAAE,mBAAmB,CAAC,MAAM,EAClC,iBAAiB,EAAE,mBAAmB,CAAC,iBAAiB,EACxD,QAAQ,EAAE,IAAI,CAAC,kBAAkB,EACjC,YAAY,EAAE,IAAI,CAAC,+BAA+B,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EACrE,KAAK,EAAE,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,GACnE,CACH,CAAC;IACJ,CAAC;IAED,qEAAqE;IACrE,gEAAgE;IAChE,OAAO,CACL,YAAG,SAAS,EAAC,+BAA+B,sDAExC,CACL,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,EAC1B,KAAK,EACL,OAAO,GAIR;IACC,OAAO,CACL,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,OAAO,EAChB,SAAS,EAAC,4KAA4K,YAErL,KAAK,GACC,CACV,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E;;;;;;GAMG;AACH,SAAS,mBAAmB,CAAC,EAC3B,KAAK,EACL,EAAE,GAIH;IACC,OAAO,CACL,eAAK,SAAS,EAAC,qBAAqB,aAClC,eAAM,SAAS,EAAC,uEAAuE,YACpF,KAAK,GACD,EACN,EAAE,CAAC,MAAM,KAAK,eAAe,IAAI,CAChC,YAAG,SAAS,EAAC,mCAAmC,sHAG5C,CACL,EACD,KAAC,cAAc,cACb,KAAC,oBAAoB,IAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAI,GACxB,IACb,CACP,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,qBAAqB,CAAC,EAC7B,IAAI,EACJ,QAAQ,EACR,eAAe,EACf,oBAAoB,GAYrB;IACC,OAAO,CACL,eAAK,SAAS,EAAC,qBAAqB,aACjC,IAAI,CAAC,KAAK,IAAI,CACb,KAAC,cAAc,cACb,cAAK,SAAS,EAAC,0DAA0D,YACtE,IAAI,CAAC,KAAK,GACP,GACS,CAClB,EAEA,eAAe,CAAC,CAAC,CAAC,CACjB,KAAC,2BAA2B,IAC1B,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,MAAM,EACtC,QAAQ,EAAE,eAAe,CAAC,OAAO,CAAC,QAAQ,EAC1C,QAAQ,EAAE,eAAe,CAAC,QAAQ,GAClC,CACH,CAAC,CAAC,CAAC,CACF,QAAQ,IAAI,KAAC,mBAAmB,IAAC,KAAK,EAAC,QAAQ,EAAC,EAAE,EAAE,QAAQ,GAAI,CACjE,EAEA,IAAI,CAAC,OAAO,KAAK,YAAY;gBAC5B,IAAI,CAAC,gBAAgB;gBACrB,oBAAoB,IAAI,CACtB,wBACE,KAAC,kBAAkB,IACjB,KAAK,EAAC,iBAAiB,EACvB,OAAO,EAAE,GAAG,EAAE,CACZ,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,GAE5D,GACE,CACP,IACC,CACP,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,EACxB,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,oBAAoB,GASrB;IACC,MAAM,IAAI,GAA4B,CAAC,CAAC,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC7E,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,eAAe,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC;QAAE,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAC/E,MAAM,QAAQ,GAAG,eAAe,CAAC;QAC/B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,MAAM,EAAE,IAAI,CAAC,UAAU;KACxB,CAAC,CAAC;IACH,IAAI,QAAQ;QAAE,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC7C,IAAI,IAAI,CAAC,OAAO,KAAK,YAAY,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACpD,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,CACL,eAAK,SAAS,EAAC,qBAAqB,aAClC,aAAI,SAAS,EAAC,mDAAmD,YAC9D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAC5B,eAAiB,SAAS,EAAC,UAAU,aACnC,aAAI,SAAS,EAAC,uBAAuB,YAAE,KAAK,GAAM,EAClD,aAAI,SAAS,EAAC,iBAAiB,YAAE,KAAK,GAAM,KAFpC,KAAK,CAGT,CACP,CAAC,GACC,EAEJ,IAAI,CAAC,KAAK,IAAI,CACb,KAAC,cAAc,cACb,cAAK,SAAS,EAAC,0DAA0D,YACtE,IAAI,CAAC,KAAK,GACP,GACS,CAClB,EAIA,OAAO,IAAI,KAAC,mBAAmB,IAAC,KAAK,EAAC,OAAO,EAAC,EAAE,EAAE,OAAO,GAAI,EAC7D,QAAQ,IAAI,KAAC,mBAAmB,IAAC,KAAK,EAAC,QAAQ,EAAC,EAAE,EAAE,QAAQ,GAAI,EAEhE,IAAI,CAAC,OAAO,KAAK,YAAY;gBAC5B,IAAI,CAAC,gBAAgB;gBACrB,oBAAoB,IAAI,CACtB,wBACE,KAAC,kBAAkB,IACjB,KAAK,EAAC,iBAAiB,EACvB,OAAO,EAAE,GAAG,EAAE,CACZ,oBAAoB,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,GAE5D,GACE,CACP,IACC,CACP,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,MAAoC;IACvD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,kBAAkB;YACrB,OAAO,sBAAsB,CAAC;QAChC,KAAK,UAAU;YACb,OAAO,UAAU,CAAC;QACpB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,WAAW;YACd,OAAO,WAAW,CAAC;QACrB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,2EAA2E;AAC3E,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,YAAY,GAGd;IACF,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,iBAAiB,EAAE;IACxD,QAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,cAAc,EAAE;IACtD,gBAAgB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE;IAC5D,SAAS,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE;IAC3D,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,kBAAkB,EAAE;IACxD,OAAO,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,uBAAuB,EAAE;IAClE,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,uBAAuB,EAAE;CAC3D,CAAC;AAEF,SAAS,WAAW,CAAC,EAAE,MAAM,EAAqD;IAChF,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAC7C,OAAO,CACL,eAAM,SAAS,EAAE,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,iBAAc,MAAM,YACxD,KAAC,IAAI,KAAG,GACH,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure projection from the event store's derived task-state map to the
|
|
3
|
+
* ordered card list the workflow task thread renders.
|
|
4
|
+
*
|
|
5
|
+
* Deliberately NOT a second event-log derivation (D-T02-4): the event log
|
|
6
|
+
* already has its canonical walk (`deriveTaskStates` in the store). This
|
|
7
|
+
* module only re-shapes the store's cached map. Thread order is the map's
|
|
8
|
+
* insertion order, which
|
|
9
|
+
* `deriveTaskStates` builds in first-event order (`Map.set` on an existing
|
|
10
|
+
* key preserves position) — the flat start-order model of D-T02-1 with no
|
|
11
|
+
* second ordering source to drift.
|
|
12
|
+
*
|
|
13
|
+
* No React dependency — independently importable and testable (DD-003).
|
|
14
|
+
*
|
|
15
|
+
* @since S8 (Workflow Task Thread)
|
|
16
|
+
*/
|
|
17
|
+
import { WorkflowTaskKind } from "@stigmer/protos/ai/stigmer/agentic/workflow/v1/enum_pb";
|
|
18
|
+
import type { JsonObject } from "@bufbuild/protobuf";
|
|
19
|
+
import type { ApprovalRequestedPayload, ApprovalResolvedPayload } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/event_pb";
|
|
20
|
+
import type { DerivedTaskState } from "../../internal/store/workflow-execution-event-store.js";
|
|
21
|
+
import { type WorkflowThreadCardVariant } from "./thread-presentation.js";
|
|
22
|
+
import { type WorkflowTaskDisclosure } from "./task-presentation.js";
|
|
23
|
+
/**
|
|
24
|
+
* One task card in the thread — a flat, display-ready projection of a
|
|
25
|
+
* `DerivedTaskState`. Fields are copied (not referenced) so value equality
|
|
26
|
+
* is a shallow field compare, which powers the structural sharing below.
|
|
27
|
+
*/
|
|
28
|
+
export interface WorkflowThreadItem {
|
|
29
|
+
readonly taskName: string;
|
|
30
|
+
readonly taskKind: WorkflowTaskKind;
|
|
31
|
+
/**
|
|
32
|
+
* Human label for the kind, from the canonical `kindToDisplayName`.
|
|
33
|
+
* The empty string for `unspecified` kinds (the snapshot-derived fallback
|
|
34
|
+
* map carries no kind) — consumers hide the kind chip rather than render
|
|
35
|
+
* a meaningless "Unknown" label.
|
|
36
|
+
*/
|
|
37
|
+
readonly kindLabel: string;
|
|
38
|
+
readonly variant: WorkflowThreadCardVariant;
|
|
39
|
+
readonly status: DerivedTaskState["status"];
|
|
40
|
+
readonly durationMs: number;
|
|
41
|
+
readonly costMicros: bigint;
|
|
42
|
+
readonly tokensUsed: bigint;
|
|
43
|
+
readonly attemptNumber: number;
|
|
44
|
+
readonly error: string;
|
|
45
|
+
readonly childExecutionId: string;
|
|
46
|
+
readonly agentSlug: string;
|
|
47
|
+
readonly currentToolName: string;
|
|
48
|
+
readonly messagesCount: number;
|
|
49
|
+
readonly toolCallsCount: number;
|
|
50
|
+
/**
|
|
51
|
+
* Kind-aware one-line preview from `resolveTaskPreview` (T04) — a
|
|
52
|
+
* primitive computed HERE (not in a card hook) so the structural-sharing
|
|
53
|
+
* compare below stays a cheap string check. The empty string when there
|
|
54
|
+
* is nothing kind-specific to say.
|
|
55
|
+
*/
|
|
56
|
+
readonly previewLine: string;
|
|
57
|
+
/**
|
|
58
|
+
* Card disclosure mode (T04). Pure function of `taskKind` (like
|
|
59
|
+
* `variant`/`kindLabel`), so it is not part of the equality compare.
|
|
60
|
+
*/
|
|
61
|
+
readonly disclosure: WorkflowTaskDisclosure;
|
|
62
|
+
/**
|
|
63
|
+
* Truncated event summaries carried for the card body's fallback ladder
|
|
64
|
+
* (snapshot → event summary → none). Reference-stable: the store reads
|
|
65
|
+
* them off the same immutable events on every re-derivation, so the
|
|
66
|
+
* identity compare below holds across appends.
|
|
67
|
+
*/
|
|
68
|
+
readonly inputSummary: JsonObject | null;
|
|
69
|
+
readonly outputSummary: JsonObject | null;
|
|
70
|
+
/**
|
|
71
|
+
* The human_input gate's captured request/resolution payloads (T06) —
|
|
72
|
+
* the in-card review surface's data. Reference-stable like the
|
|
73
|
+
* summaries: the store carries the immutable events' payload messages,
|
|
74
|
+
* so the identity compare below holds across appends and only the
|
|
75
|
+
* gating card's item changes identity when a gate opens or resolves.
|
|
76
|
+
*/
|
|
77
|
+
readonly approvalRequest: ApprovalRequestedPayload | null;
|
|
78
|
+
readonly approvalResolution: ApprovalResolvedPayload | null;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Progress line for the thread header. Pending tasks render no cards
|
|
82
|
+
* (D-T02-5); this is where "what's coming" stays visible (Nielsen #1).
|
|
83
|
+
*/
|
|
84
|
+
export interface WorkflowThreadProgress {
|
|
85
|
+
/** Tasks in a terminal state (completed, failed, or skipped). */
|
|
86
|
+
readonly settledTasks: number;
|
|
87
|
+
/** Tasks currently active (running, retrying, or waiting approval). */
|
|
88
|
+
readonly activeTasks: number;
|
|
89
|
+
/** Total planned tasks from `execution_started`; `0` when unknown. */
|
|
90
|
+
readonly totalTasks: number;
|
|
91
|
+
}
|
|
92
|
+
/** Result of {@link projectThreadItems}. */
|
|
93
|
+
export interface WorkflowThreadProjection {
|
|
94
|
+
readonly items: readonly WorkflowThreadItem[];
|
|
95
|
+
readonly progress: WorkflowThreadProgress;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Projects the derived task-state map into ordered thread items plus a
|
|
99
|
+
* progress summary.
|
|
100
|
+
*
|
|
101
|
+
* Structural sharing: pass the previous call's `items` and any task whose
|
|
102
|
+
* fields are unchanged keeps its previous object identity. The store
|
|
103
|
+
* rebuilds every `DerivedTaskState` on each event append, so without this,
|
|
104
|
+
* every card would get a fresh item per event and `React.memo` rows could
|
|
105
|
+
* never bail (DD-009/DD-010 — only the actively-changing card re-renders).
|
|
106
|
+
*/
|
|
107
|
+
export declare function projectThreadItems(taskStates: ReadonlyMap<string, DerivedTaskState>, totalTasks: number, previousItems?: readonly WorkflowThreadItem[]): WorkflowThreadProjection;
|
|
108
|
+
//# sourceMappingURL=project-thread-items.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-thread-items.d.ts","sourceRoot":"","sources":["../../../src/workflow/thread/project-thread-items.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,wDAAwD,CAAC;AAC1F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EACV,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,kEAAkE,CAAC;AAC1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wDAAwD,CAAC;AAG/F,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,wBAAwB,CAAC;AAMhC;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,yBAAyB,CAAC;IAC5C,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,sBAAsB,CAAC;IAC5C;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,EAAE,UAAU,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,aAAa,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1C;;;;;;OAMG;IACH,QAAQ,CAAC,eAAe,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAC1D,QAAQ,CAAC,kBAAkB,EAAE,uBAAuB,GAAG,IAAI,CAAC;CAC7D;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,iEAAiE;IACjE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,uEAAuE;IACvE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,sEAAsE;IACtE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,4CAA4C;AAC5C,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,KAAK,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC9C,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;CAC3C;AAkBD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,EACjD,UAAU,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,SAAS,kBAAkB,EAAE,GAC5C,wBAAwB,CAwD1B"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure projection from the event store's derived task-state map to the
|
|
3
|
+
* ordered card list the workflow task thread renders.
|
|
4
|
+
*
|
|
5
|
+
* Deliberately NOT a second event-log derivation (D-T02-4): the event log
|
|
6
|
+
* already has its canonical walk (`deriveTaskStates` in the store). This
|
|
7
|
+
* module only re-shapes the store's cached map. Thread order is the map's
|
|
8
|
+
* insertion order, which
|
|
9
|
+
* `deriveTaskStates` builds in first-event order (`Map.set` on an existing
|
|
10
|
+
* key preserves position) — the flat start-order model of D-T02-1 with no
|
|
11
|
+
* second ordering source to drift.
|
|
12
|
+
*
|
|
13
|
+
* No React dependency — independently importable and testable (DD-003).
|
|
14
|
+
*
|
|
15
|
+
* @since S8 (Workflow Task Thread)
|
|
16
|
+
*/
|
|
17
|
+
import { WorkflowTaskKind } from "@stigmer/protos/ai/stigmer/agentic/workflow/v1/enum_pb";
|
|
18
|
+
import { kindToDisplayName } from "../kind-metadata.js";
|
|
19
|
+
import { taskKindToString } from "../workflow-graph-conversions.js";
|
|
20
|
+
import { threadCardVariant, } from "./thread-presentation.js";
|
|
21
|
+
import { resolveTaskPreview, } from "./task-presentation.js";
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
// Projection
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
const ACTIVE_STATUSES = new Set([
|
|
26
|
+
"running",
|
|
27
|
+
"retrying",
|
|
28
|
+
"waiting_approval",
|
|
29
|
+
]);
|
|
30
|
+
const SETTLED_STATUSES = new Set([
|
|
31
|
+
"completed",
|
|
32
|
+
"failed",
|
|
33
|
+
"skipped",
|
|
34
|
+
]);
|
|
35
|
+
/**
|
|
36
|
+
* Projects the derived task-state map into ordered thread items plus a
|
|
37
|
+
* progress summary.
|
|
38
|
+
*
|
|
39
|
+
* Structural sharing: pass the previous call's `items` and any task whose
|
|
40
|
+
* fields are unchanged keeps its previous object identity. The store
|
|
41
|
+
* rebuilds every `DerivedTaskState` on each event append, so without this,
|
|
42
|
+
* every card would get a fresh item per event and `React.memo` rows could
|
|
43
|
+
* never bail (DD-009/DD-010 — only the actively-changing card re-renders).
|
|
44
|
+
*/
|
|
45
|
+
export function projectThreadItems(taskStates, totalTasks, previousItems) {
|
|
46
|
+
const previousByName = new Map();
|
|
47
|
+
if (previousItems) {
|
|
48
|
+
for (const item of previousItems)
|
|
49
|
+
previousByName.set(item.taskName, item);
|
|
50
|
+
}
|
|
51
|
+
const items = [];
|
|
52
|
+
let settledTasks = 0;
|
|
53
|
+
let activeTasks = 0;
|
|
54
|
+
for (const state of taskStates.values()) {
|
|
55
|
+
if (SETTLED_STATUSES.has(state.status))
|
|
56
|
+
settledTasks += 1;
|
|
57
|
+
else if (ACTIVE_STATUSES.has(state.status))
|
|
58
|
+
activeTasks += 1;
|
|
59
|
+
const preview = resolveTaskPreview(state);
|
|
60
|
+
const fresh = {
|
|
61
|
+
taskName: state.taskName,
|
|
62
|
+
taskKind: state.taskKind,
|
|
63
|
+
kindLabel: state.taskKind === WorkflowTaskKind.workflow_task_kind_unspecified
|
|
64
|
+
? ""
|
|
65
|
+
: kindToDisplayName(taskKindToString(state.taskKind)),
|
|
66
|
+
variant: threadCardVariant(state.taskKind),
|
|
67
|
+
status: state.status,
|
|
68
|
+
durationMs: state.durationMs,
|
|
69
|
+
costMicros: state.costMicros,
|
|
70
|
+
tokensUsed: state.tokensUsed,
|
|
71
|
+
attemptNumber: state.attemptNumber,
|
|
72
|
+
error: state.error,
|
|
73
|
+
childExecutionId: state.childExecutionId,
|
|
74
|
+
agentSlug: state.agentSlug,
|
|
75
|
+
currentToolName: state.currentToolName,
|
|
76
|
+
messagesCount: state.messagesCount,
|
|
77
|
+
toolCallsCount: state.toolCallsCount,
|
|
78
|
+
previewLine: preview.previewLine,
|
|
79
|
+
disclosure: preview.disclosure,
|
|
80
|
+
inputSummary: state.inputSummary,
|
|
81
|
+
outputSummary: state.outputSummary,
|
|
82
|
+
approvalRequest: state.approvalRequest,
|
|
83
|
+
approvalResolution: state.approvalResolution,
|
|
84
|
+
};
|
|
85
|
+
const previous = previousByName.get(state.taskName);
|
|
86
|
+
items.push(previous && threadItemEqual(previous, fresh) ? previous : fresh);
|
|
87
|
+
}
|
|
88
|
+
return {
|
|
89
|
+
items,
|
|
90
|
+
progress: {
|
|
91
|
+
settledTasks,
|
|
92
|
+
activeTasks,
|
|
93
|
+
// The snapshot fallback path reports totalTasks as the map size; a
|
|
94
|
+
// stream that never saw execution_started reports 0 ("unknown").
|
|
95
|
+
totalTasks: totalTasks > 0 ? totalTasks : 0,
|
|
96
|
+
},
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
/** Shallow value equality across all card-visible fields. */
|
|
100
|
+
function threadItemEqual(a, b) {
|
|
101
|
+
return (a.taskName === b.taskName &&
|
|
102
|
+
a.taskKind === b.taskKind &&
|
|
103
|
+
a.status === b.status &&
|
|
104
|
+
a.durationMs === b.durationMs &&
|
|
105
|
+
a.costMicros === b.costMicros &&
|
|
106
|
+
a.tokensUsed === b.tokensUsed &&
|
|
107
|
+
a.attemptNumber === b.attemptNumber &&
|
|
108
|
+
a.error === b.error &&
|
|
109
|
+
a.childExecutionId === b.childExecutionId &&
|
|
110
|
+
a.agentSlug === b.agentSlug &&
|
|
111
|
+
a.currentToolName === b.currentToolName &&
|
|
112
|
+
a.messagesCount === b.messagesCount &&
|
|
113
|
+
a.toolCallsCount === b.toolCallsCount &&
|
|
114
|
+
a.previewLine === b.previewLine &&
|
|
115
|
+
// The summaries and gate payloads are read off the same immutable
|
|
116
|
+
// stored events on every re-derivation, so identity is the correct
|
|
117
|
+
// (and cheap) compare here.
|
|
118
|
+
a.inputSummary === b.inputSummary &&
|
|
119
|
+
a.outputSummary === b.outputSummary &&
|
|
120
|
+
a.approvalRequest === b.approvalRequest &&
|
|
121
|
+
a.approvalResolution === b.approvalResolution
|
|
122
|
+
// kindLabel/variant/disclosure are pure functions of taskKind — no need
|
|
123
|
+
// to compare.
|
|
124
|
+
);
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=project-thread-items.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-thread-items.js","sourceRoot":"","sources":["../../../src/workflow/thread/project-thread-items.ts"],"names":[],"mappings":"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"}
|