@stigmer/react 3.1.17 → 3.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/agent-instance/AgentInstanceList.d.ts.map +1 -1
- package/agent-instance/AgentInstanceList.js +11 -3
- package/agent-instance/AgentInstanceList.js.map +1 -1
- package/channel/AgentChannelsPanel.d.ts +60 -0
- package/channel/AgentChannelsPanel.d.ts.map +1 -0
- package/channel/AgentChannelsPanel.js +255 -0
- package/channel/AgentChannelsPanel.js.map +1 -0
- package/channel/ChannelConversationsDialog.d.ts +41 -0
- package/channel/ChannelConversationsDialog.d.ts.map +1 -0
- package/channel/ChannelConversationsDialog.js +94 -0
- package/channel/ChannelConversationsDialog.js.map +1 -0
- package/channel/ChannelCredentialsDialog.d.ts +37 -0
- package/channel/ChannelCredentialsDialog.d.ts.map +1 -0
- package/channel/ChannelCredentialsDialog.js +75 -0
- package/channel/ChannelCredentialsDialog.js.map +1 -0
- package/channel/ChannelToolCredentials.d.ts +31 -0
- package/channel/ChannelToolCredentials.d.ts.map +1 -0
- package/channel/ChannelToolCredentials.js +41 -0
- package/channel/ChannelToolCredentials.js.map +1 -0
- package/channel/ConnectSlackDialog.d.ts +61 -0
- package/channel/ConnectSlackDialog.d.ts.map +1 -0
- package/channel/ConnectSlackDialog.js +238 -0
- package/channel/ConnectSlackDialog.js.map +1 -0
- package/channel/ConnectWhatsAppDialog.d.ts +70 -0
- package/channel/ConnectWhatsAppDialog.d.ts.map +1 -0
- package/channel/ConnectWhatsAppDialog.js +256 -0
- package/channel/ConnectWhatsAppDialog.js.map +1 -0
- package/channel/SlackMarkIcon.d.ts +11 -0
- package/channel/SlackMarkIcon.d.ts.map +1 -0
- package/channel/SlackMarkIcon.js +13 -0
- package/channel/SlackMarkIcon.js.map +1 -0
- package/channel/WhatsAppMarkIcon.d.ts +12 -0
- package/channel/WhatsAppMarkIcon.d.ts.map +1 -0
- package/channel/WhatsAppMarkIcon.js +14 -0
- package/channel/WhatsAppMarkIcon.js.map +1 -0
- package/channel/connect/ServingAppSection.d.ts +57 -0
- package/channel/connect/ServingAppSection.d.ts.map +1 -0
- package/channel/connect/ServingAppSection.js +49 -0
- package/channel/connect/ServingAppSection.js.map +1 -0
- package/channel/connect/ToolCredentialsSection.d.ts +20 -0
- package/channel/connect/ToolCredentialsSection.d.ts.map +1 -0
- package/channel/connect/ToolCredentialsSection.js +22 -0
- package/channel/connect/ToolCredentialsSection.js.map +1 -0
- package/channel/connect/VerbatimRefusal.d.ts +16 -0
- package/channel/connect/VerbatimRefusal.d.ts.map +1 -0
- package/channel/connect/VerbatimRefusal.js +18 -0
- package/channel/connect/VerbatimRefusal.js.map +1 -0
- package/channel/connect/icons.d.ts +16 -0
- package/channel/connect/icons.d.ts.map +1 -0
- package/channel/connect/icons.js +21 -0
- package/channel/connect/icons.js.map +1 -0
- package/channel/index.d.ts +36 -0
- package/channel/index.d.ts.map +1 -0
- package/channel/index.js +19 -0
- package/channel/index.js.map +1 -0
- package/channel/providerPresentation.d.ts +44 -0
- package/channel/providerPresentation.d.ts.map +1 -0
- package/channel/providerPresentation.js +106 -0
- package/channel/providerPresentation.js.map +1 -0
- package/channel/providers.d.ts +62 -0
- package/channel/providers.d.ts.map +1 -0
- package/channel/providers.js +26 -0
- package/channel/providers.js.map +1 -0
- package/channel/useAgentChannel.d.ts +31 -0
- package/channel/useAgentChannel.d.ts.map +1 -0
- package/channel/useAgentChannel.js +34 -0
- package/channel/useAgentChannel.js.map +1 -0
- package/channel/useAgentChannelList.d.ts +43 -0
- package/channel/useAgentChannelList.d.ts.map +1 -0
- package/channel/useAgentChannelList.js +39 -0
- package/channel/useAgentChannelList.js.map +1 -0
- package/channel/useChannelSessions.d.ts +47 -0
- package/channel/useChannelSessions.d.ts.map +1 -0
- package/channel/useChannelSessions.js +38 -0
- package/channel/useChannelSessions.js.map +1 -0
- package/channel/useChannelToolReadiness.d.ts +23 -0
- package/channel/useChannelToolReadiness.d.ts.map +1 -0
- package/channel/useChannelToolReadiness.js +28 -0
- package/channel/useChannelToolReadiness.js.map +1 -0
- package/channel/useConnectSlackChannel.d.ts +75 -0
- package/channel/useConnectSlackChannel.d.ts.map +1 -0
- package/channel/useConnectSlackChannel.js +115 -0
- package/channel/useConnectSlackChannel.js.map +1 -0
- package/channel/useCreateAgentChannel.d.ts +42 -0
- package/channel/useCreateAgentChannel.d.ts.map +1 -0
- package/channel/useCreateAgentChannel.js +48 -0
- package/channel/useCreateAgentChannel.js.map +1 -0
- package/channel/useDeleteAgentChannel.d.ts +40 -0
- package/channel/useDeleteAgentChannel.d.ts.map +1 -0
- package/channel/useDeleteAgentChannel.js +44 -0
- package/channel/useDeleteAgentChannel.js.map +1 -0
- package/channel/useInstallChannel.d.ts +60 -0
- package/channel/useInstallChannel.d.ts.map +1 -0
- package/channel/useInstallChannel.js +63 -0
- package/channel/useInstallChannel.js.map +1 -0
- package/channel/useOrgAgentChannelList.d.ts +32 -0
- package/channel/useOrgAgentChannelList.d.ts.map +1 -0
- package/channel/useOrgAgentChannelList.js +29 -0
- package/channel/useOrgAgentChannelList.js.map +1 -0
- package/channel/useSaveAgentChannel.d.ts +63 -0
- package/channel/useSaveAgentChannel.d.ts.map +1 -0
- package/channel/useSaveAgentChannel.js +104 -0
- package/channel/useSaveAgentChannel.js.map +1 -0
- package/channel-app/ChannelAppDetailPanel.d.ts +46 -0
- package/channel-app/ChannelAppDetailPanel.d.ts.map +1 -0
- package/channel-app/ChannelAppDetailPanel.js +142 -0
- package/channel-app/ChannelAppDetailPanel.js.map +1 -0
- package/channel-app/ChannelAppListPanel.d.ts +36 -0
- package/channel-app/ChannelAppListPanel.d.ts.map +1 -0
- package/channel-app/ChannelAppListPanel.js +63 -0
- package/channel-app/ChannelAppListPanel.js.map +1 -0
- package/channel-app/CreateChannelAppForm.d.ts +54 -0
- package/channel-app/CreateChannelAppForm.d.ts.map +1 -0
- package/channel-app/CreateChannelAppForm.js +140 -0
- package/channel-app/CreateChannelAppForm.js.map +1 -0
- package/channel-app/index.d.ts +18 -0
- package/channel-app/index.d.ts.map +1 -0
- package/channel-app/index.js +10 -0
- package/channel-app/index.js.map +1 -0
- package/channel-app/internal.d.ts +33 -0
- package/channel-app/internal.d.ts.map +1 -0
- package/channel-app/internal.js +44 -0
- package/channel-app/internal.js.map +1 -0
- package/channel-app/slackAppSetup.d.ts +80 -0
- package/channel-app/slackAppSetup.d.ts.map +1 -0
- package/channel-app/slackAppSetup.js +123 -0
- package/channel-app/slackAppSetup.js.map +1 -0
- package/channel-app/useChannelAppList.d.ts +35 -0
- package/channel-app/useChannelAppList.d.ts.map +1 -0
- package/channel-app/useChannelAppList.js +34 -0
- package/channel-app/useChannelAppList.js.map +1 -0
- package/channel-app/useCreateChannelApp.d.ts +39 -0
- package/channel-app/useCreateChannelApp.d.ts.map +1 -0
- package/channel-app/useCreateChannelApp.js +50 -0
- package/channel-app/useCreateChannelApp.js.map +1 -0
- package/channel-app/useDeleteChannelApp.d.ts +31 -0
- package/channel-app/useDeleteChannelApp.d.ts.map +1 -0
- package/channel-app/useDeleteChannelApp.js +43 -0
- package/channel-app/useDeleteChannelApp.js.map +1 -0
- package/channel-app/useUpdateChannelApp.d.ts +39 -0
- package/channel-app/useUpdateChannelApp.d.ts.map +1 -0
- package/channel-app/useUpdateChannelApp.js +50 -0
- package/channel-app/useUpdateChannelApp.js.map +1 -0
- package/channel-app/whatsappAppSetup.d.ts +51 -0
- package/channel-app/whatsappAppSetup.d.ts.map +1 -0
- package/channel-app/whatsappAppSetup.js +57 -0
- package/channel-app/whatsappAppSetup.js.map +1 -0
- package/environment/index.d.ts +2 -0
- package/environment/index.d.ts.map +1 -1
- package/environment/index.js +1 -0
- package/environment/index.js.map +1 -1
- package/environment/useToolCredentialsReadiness.d.ts +52 -0
- package/environment/useToolCredentialsReadiness.d.ts.map +1 -0
- package/environment/useToolCredentialsReadiness.js +84 -0
- package/environment/useToolCredentialsReadiness.js.map +1 -0
- package/execution/ArtifactContentBody.d.ts.map +1 -1
- package/execution/ArtifactContentBody.js +5 -21
- package/execution/ArtifactContentBody.js.map +1 -1
- package/execution/ArtifactFileContent.d.ts +28 -0
- package/execution/ArtifactFileContent.d.ts.map +1 -0
- package/execution/ArtifactFileContent.js +36 -0
- package/execution/ArtifactFileContent.js.map +1 -0
- package/execution/ArtifactRow.d.ts +8 -20
- package/execution/ArtifactRow.d.ts.map +1 -1
- package/execution/ArtifactRow.js +12 -45
- package/execution/ArtifactRow.js.map +1 -1
- package/execution/ArtifactRowView.d.ts +43 -0
- package/execution/ArtifactRowView.d.ts.map +1 -0
- package/execution/ArtifactRowView.js +35 -0
- package/execution/ArtifactRowView.js.map +1 -0
- package/execution/FileChangesView.d.ts.map +1 -1
- package/execution/FileChangesView.js +1 -61
- package/execution/FileChangesView.js.map +1 -1
- package/execution/SubAgentSection.d.ts.map +1 -1
- package/execution/SubAgentSection.js +4 -15
- package/execution/SubAgentSection.js.map +1 -1
- package/execution/ToolCallItem.d.ts.map +1 -1
- package/execution/ToolCallItem.js +16 -61
- package/execution/ToolCallItem.js.map +1 -1
- package/execution/agent-execution-document.d.ts +31 -0
- package/execution/agent-execution-document.d.ts.map +1 -0
- package/execution/agent-execution-document.js +48 -0
- package/execution/agent-execution-document.js.map +1 -0
- package/{session → execution}/artifact-document.d.ts +2 -3
- package/execution/artifact-document.d.ts.map +1 -0
- package/execution/artifact-document.js +23 -0
- package/execution/artifact-document.js.map +1 -0
- package/execution/artifact-row-item.d.ts +56 -0
- package/execution/artifact-row-item.d.ts.map +1 -0
- package/execution/artifact-row-item.js +57 -0
- package/execution/artifact-row-item.js.map +1 -0
- package/execution/deriveExecutionFileChanges.d.ts +55 -0
- package/execution/deriveExecutionFileChanges.d.ts.map +1 -0
- package/execution/deriveExecutionFileChanges.js +216 -0
- package/execution/deriveExecutionFileChanges.js.map +1 -0
- package/execution/file-change-document.d.ts +22 -0
- package/execution/file-change-document.d.ts.map +1 -0
- package/execution/file-change-document.js +34 -0
- package/execution/file-change-document.js.map +1 -0
- package/execution/index.d.ts +14 -0
- package/execution/index.d.ts.map +1 -1
- package/execution/index.js +9 -0
- package/execution/index.js.map +1 -1
- package/execution/useArtifactContentById.d.ts +61 -0
- package/execution/useArtifactContentById.d.ts.map +1 -0
- package/execution/useArtifactContentById.js +63 -0
- package/execution/useArtifactContentById.js.map +1 -0
- package/execution/useArtifactDownload.d.ts +4 -3
- package/execution/useArtifactDownload.d.ts.map +1 -1
- package/execution/useArtifactDownload.js +4 -3
- package/execution/useArtifactDownload.js.map +1 -1
- package/execution/useCreateAgentExecution.d.ts +1 -1
- package/execution/useLiveAgentExecution.d.ts +59 -0
- package/execution/useLiveAgentExecution.d.ts.map +1 -0
- package/execution/useLiveAgentExecution.js +73 -0
- package/execution/useLiveAgentExecution.js.map +1 -0
- package/index.d.ts +15 -10
- package/index.d.ts.map +1 -1
- package/index.js +21 -6
- package/index.js.map +1 -1
- package/internal/DecisionButton.d.ts +4 -3
- package/internal/DecisionButton.d.ts.map +1 -1
- package/internal/DecisionButton.js +4 -3
- package/internal/DecisionButton.js.map +1 -1
- package/internal/oauthPopup.d.ts +101 -0
- package/internal/oauthPopup.d.ts.map +1 -0
- package/internal/oauthPopup.js +208 -0
- package/internal/oauthPopup.js.map +1 -0
- package/internal/store/index.d.ts +0 -2
- package/internal/store/index.d.ts.map +1 -1
- package/internal/store/index.js +0 -1
- package/internal/store/index.js.map +1 -1
- package/internal/store/workflow-execution-event-store.d.ts +34 -1
- package/internal/store/workflow-execution-event-store.d.ts.map +1 -1
- package/internal/store/workflow-execution-event-store.js +81 -3
- package/internal/store/workflow-execution-event-store.js.map +1 -1
- package/internal/store/workspace-file-selection-store.d.ts +1 -2
- package/internal/store/workspace-file-selection-store.d.ts.map +1 -1
- package/internal/store/workspace-file-selection-store.js +2 -5
- package/internal/store/workspace-file-selection-store.js.map +1 -1
- package/internal/thread-card/ThreadCardShell.d.ts +91 -0
- package/internal/thread-card/ThreadCardShell.d.ts.map +1 -0
- package/internal/thread-card/ThreadCardShell.js +41 -0
- package/internal/thread-card/ThreadCardShell.js.map +1 -0
- package/internal/thread-card/glyphs.d.ts +34 -0
- package/internal/thread-card/glyphs.d.ts.map +1 -0
- package/internal/thread-card/glyphs.js +50 -0
- package/internal/thread-card/glyphs.js.map +1 -0
- package/internal/thread-card/index.d.ts +3 -0
- package/internal/thread-card/index.d.ts.map +1 -0
- package/internal/thread-card/index.js +3 -0
- package/internal/thread-card/index.js.map +1 -0
- package/internal/useRevealLine.d.ts +2 -2
- package/internal/useRevealLine.js +2 -2
- package/mcp-server/OAuthCallbackHandler.js +1 -1
- package/mcp-server/OAuthCallbackHandler.js.map +1 -1
- package/mcp-server/useMcpServerOAuthConnect.d.ts +4 -23
- package/mcp-server/useMcpServerOAuthConnect.d.ts.map +1 -1
- package/mcp-server/useMcpServerOAuthConnect.js +12 -145
- package/mcp-server/useMcpServerOAuthConnect.js.map +1 -1
- package/package.json +4 -4
- package/session/NewSessionViewer.d.ts.map +1 -1
- package/session/NewSessionViewer.js +0 -1
- package/session/NewSessionViewer.js.map +1 -1
- package/session/SessionPanelChip.d.ts +7 -22
- package/session/SessionPanelChip.d.ts.map +1 -1
- package/session/SessionPanelChip.js +8 -36
- package/session/SessionPanelChip.js.map +1 -1
- package/session/SessionViewer.d.ts +7 -4
- package/session/SessionViewer.d.ts.map +1 -1
- package/session/SessionViewer.js +32 -30
- package/session/SessionViewer.js.map +1 -1
- package/session/audience.d.ts +15 -1
- package/session/audience.d.ts.map +1 -1
- package/session/channelOrigin.d.ts +33 -0
- package/session/channelOrigin.d.ts.map +1 -0
- package/session/channelOrigin.js +36 -0
- package/session/channelOrigin.js.map +1 -0
- package/session/facets/index.d.ts +0 -2
- package/session/facets/index.d.ts.map +1 -1
- package/session/facets/index.js +0 -1
- package/session/facets/index.js.map +1 -1
- package/session/index.d.ts +2 -2
- package/session/index.d.ts.map +1 -1
- package/session/index.js +5 -3
- package/session/index.js.map +1 -1
- package/session/useNewSessionFlow.d.ts +4 -0
- package/session/useNewSessionFlow.d.ts.map +1 -1
- package/session/useNewSessionFlow.js +33 -4
- package/session/useNewSessionFlow.js.map +1 -1
- package/session/usePersistedModel.d.ts +11 -0
- package/session/usePersistedModel.d.ts.map +1 -1
- package/session/usePersistedModel.js +14 -3
- package/session/usePersistedModel.js.map +1 -1
- package/session/useSessionFileChanges.d.ts +10 -34
- package/session/useSessionFileChanges.d.ts.map +1 -1
- package/session/useSessionFileChanges.js +9 -141
- package/session/useSessionFileChanges.js.map +1 -1
- package/session/useSessionPageFlow.d.ts.map +1 -1
- package/session/useSessionPageFlow.js +12 -1
- package/session/useSessionPageFlow.js.map +1 -1
- package/session/useSessionPanel.d.ts +5 -15
- package/session/useSessionPanel.d.ts.map +1 -1
- package/session/useSessionPanel.js +3 -35
- package/session/useSessionPanel.js.map +1 -1
- package/session/useSessionRailViews.d.ts +3 -6
- package/session/useSessionRailViews.d.ts.map +1 -1
- package/session/useSessionRailViews.js +3 -17
- package/session/useSessionRailViews.js.map +1 -1
- package/settings/ChannelAppsSection.d.ts +13 -0
- package/settings/ChannelAppsSection.d.ts.map +1 -0
- package/settings/ChannelAppsSection.js +48 -0
- package/settings/ChannelAppsSection.js.map +1 -0
- package/settings/index.d.ts +1 -0
- package/settings/index.d.ts.map +1 -1
- package/settings/index.js +1 -0
- package/settings/index.js.map +1 -1
- package/settings/settings-nav.d.ts.map +1 -1
- package/settings/settings-nav.js +6 -1
- package/settings/settings-nav.js.map +1 -1
- package/sharing/AgentShareList.d.ts.map +1 -1
- package/sharing/AgentShareList.js +11 -3
- package/sharing/AgentShareList.js.map +1 -1
- package/sharing/ShareAgentDialog.js +1 -1
- package/sharing/useShareToolReadiness.d.ts +9 -38
- package/sharing/useShareToolReadiness.d.ts.map +1 -1
- package/sharing/useShareToolReadiness.js +7 -72
- package/sharing/useShareToolReadiness.js.map +1 -1
- package/src/agent-instance/AgentInstanceList.tsx +60 -42
- package/src/agent-instance/__tests__/AgentInstanceList.test.tsx +161 -0
- package/src/channel/AgentChannelsPanel.tsx +688 -0
- package/src/channel/ChannelConversationsDialog.tsx +267 -0
- package/src/channel/ChannelCredentialsDialog.tsx +219 -0
- package/src/channel/ChannelToolCredentials.tsx +124 -0
- package/src/channel/ConnectSlackDialog.tsx +611 -0
- package/src/channel/ConnectWhatsAppDialog.tsx +624 -0
- package/src/channel/SlackMarkIcon.tsx +21 -0
- package/src/channel/WhatsAppMarkIcon.tsx +22 -0
- package/src/channel/__tests__/AgentChannelsPanel.test.tsx +638 -0
- package/src/channel/__tests__/ChannelConversationsDialog.test.tsx +114 -0
- package/src/channel/__tests__/ChannelCredentialsDialog.test.tsx +240 -0
- package/src/channel/__tests__/ConnectSlackDialog.test.tsx +659 -0
- package/src/channel/__tests__/ConnectWhatsAppDialog.test.tsx +564 -0
- package/src/channel/__tests__/providers.test.ts +118 -0
- package/src/channel/__tests__/useAgentChannel.test.tsx +116 -0
- package/src/channel/__tests__/useAgentChannelList.test.tsx +166 -0
- package/src/channel/__tests__/useChannelSessions.test.tsx +95 -0
- package/src/channel/__tests__/useChannelToolReadiness.test.tsx +158 -0
- package/src/channel/__tests__/useConnectSlackChannel.test.tsx +276 -0
- package/src/channel/__tests__/useDeleteAgentChannel.test.tsx +97 -0
- package/src/channel/__tests__/useInstallChannel.test.tsx +177 -0
- package/src/channel/__tests__/useSaveAgentChannel.test.tsx +294 -0
- package/src/channel/connect/ServingAppSection.tsx +185 -0
- package/src/channel/connect/ToolCredentialsSection.tsx +67 -0
- package/src/channel/connect/VerbatimRefusal.tsx +27 -0
- package/src/channel/connect/icons.tsx +42 -0
- package/src/channel/index.ts +65 -0
- package/src/channel/providerPresentation.ts +154 -0
- package/src/channel/providers.ts +73 -0
- package/src/channel/useAgentChannel.ts +58 -0
- package/src/channel/useAgentChannelList.ts +69 -0
- package/src/channel/useChannelSessions.ts +73 -0
- package/src/channel/useChannelToolReadiness.ts +39 -0
- package/src/channel/useConnectSlackChannel.ts +195 -0
- package/src/channel/useCreateAgentChannel.ts +73 -0
- package/src/channel/useDeleteAgentChannel.ts +71 -0
- package/src/channel/useInstallChannel.ts +117 -0
- package/src/channel/useOrgAgentChannelList.ts +60 -0
- package/src/channel/useSaveAgentChannel.ts +133 -0
- package/src/channel-app/ChannelAppDetailPanel.tsx +510 -0
- package/src/channel-app/ChannelAppListPanel.tsx +201 -0
- package/src/channel-app/CreateChannelAppForm.tsx +529 -0
- package/src/channel-app/__tests__/channelAppWhatsApp.test.tsx +270 -0
- package/src/channel-app/__tests__/slackAppSetup.test.ts +75 -0
- package/src/channel-app/__tests__/useChannelAppHooks.test.tsx +157 -0
- package/src/channel-app/__tests__/whatsappAppSetup.test.ts +39 -0
- package/src/channel-app/index.ts +30 -0
- package/src/channel-app/internal.tsx +180 -0
- package/src/channel-app/slackAppSetup.ts +153 -0
- package/src/channel-app/useChannelAppList.ts +59 -0
- package/src/channel-app/useCreateChannelApp.ts +70 -0
- package/src/channel-app/useDeleteChannelApp.ts +62 -0
- package/src/channel-app/useUpdateChannelApp.ts +70 -0
- package/src/channel-app/whatsappAppSetup.ts +62 -0
- package/src/environment/index.ts +2 -0
- package/src/environment/useToolCredentialsReadiness.ts +122 -0
- package/src/execution/ArtifactContentBody.tsx +6 -88
- package/src/execution/ArtifactFileContent.tsx +110 -0
- package/src/execution/ArtifactRow.tsx +28 -118
- package/src/execution/ArtifactRowView.tsx +137 -0
- package/src/execution/FileChangesView.tsx +4 -69
- package/src/execution/SubAgentSection.tsx +2 -36
- package/src/execution/ToolCallItem.tsx +48 -175
- package/src/execution/__tests__/ArtifactFileContent.test.tsx +60 -0
- package/src/execution/__tests__/ArtifactRowView.test.tsx +78 -0
- package/src/execution/__tests__/agent-execution-document.test.ts +45 -0
- package/src/execution/__tests__/artifact-row-item.test.ts +128 -0
- package/src/execution/__tests__/deriveExecutionFileChanges.test.ts +270 -0
- package/src/execution/__tests__/useArtifactContentById.test.tsx +85 -0
- package/src/execution/__tests__/useLiveAgentExecution.test.tsx +202 -0
- package/src/execution/agent-execution-document.ts +54 -0
- package/src/execution/artifact-document.ts +24 -0
- package/src/execution/artifact-row-item.ts +97 -0
- package/src/execution/deriveExecutionFileChanges.ts +237 -0
- package/src/execution/file-change-document.ts +37 -0
- package/src/execution/index.ts +36 -0
- package/src/execution/useArtifactContentById.ts +120 -0
- package/src/execution/useArtifactDownload.ts +4 -3
- package/src/execution/useCreateAgentExecution.ts +1 -1
- package/src/execution/useLiveAgentExecution.ts +127 -0
- package/src/index.ts +155 -11
- package/src/internal/DecisionButton.tsx +4 -3
- package/src/internal/__tests__/ThreadCardShell.test.tsx +105 -0
- package/src/internal/__tests__/oauthPopup.test.ts +245 -0
- package/src/internal/oauthPopup.ts +261 -0
- package/src/internal/store/__tests__/workflow-execution-event-store.test.ts +375 -5
- package/src/internal/store/index.ts +0 -3
- package/src/internal/store/workflow-execution-event-store.ts +123 -4
- package/src/internal/store/workspace-file-selection-store.ts +2 -5
- package/src/internal/thread-card/ThreadCardShell.tsx +189 -0
- package/src/internal/thread-card/glyphs.tsx +108 -0
- package/src/internal/thread-card/index.ts +19 -0
- package/src/internal/useRevealLine.ts +2 -2
- package/src/mcp-server/OAuthCallbackHandler.tsx +2 -2
- package/src/mcp-server/useMcpServerOAuthConnect.ts +22 -184
- package/src/session/NewSessionViewer.tsx +0 -1
- package/src/session/SessionPanelChip.tsx +10 -96
- package/src/session/SessionViewer.tsx +170 -144
- package/src/session/__tests__/SessionViewer-artifactTabs.test.tsx +1 -1
- package/src/session/__tests__/observerAudience.test.tsx +241 -0
- package/src/session/__tests__/useNewSessionFlow.test.tsx +64 -0
- package/src/session/__tests__/usePersistedModel.test.tsx +36 -0
- package/src/session/__tests__/useSessionPageFlow.guest.test.tsx +48 -1
- package/src/session/__tests__/useSessionPanel.test.ts +6 -61
- package/src/session/__tests__/useSessionRailViews.test.tsx +5 -27
- package/src/session/audience.ts +15 -1
- package/src/session/channelOrigin.ts +45 -0
- package/src/session/facets/index.ts +0 -3
- package/src/session/index.ts +9 -6
- package/src/session/useNewSessionFlow.ts +35 -4
- package/src/session/usePersistedModel.ts +25 -3
- package/src/session/useSessionFileChanges.ts +12 -153
- package/src/session/useSessionPageFlow.ts +13 -2
- package/src/session/useSessionPanel.ts +8 -51
- package/src/session/useSessionRailViews.tsx +2 -27
- package/src/settings/ChannelAppsSection.tsx +133 -0
- package/src/settings/index.ts +1 -0
- package/src/settings/settings-nav.ts +6 -0
- package/src/sharing/AgentShareList.tsx +85 -64
- package/src/sharing/ShareAgentDialog.tsx +1 -1
- package/src/sharing/__tests__/AgentShareList.test.tsx +92 -12
- package/src/sharing/useShareToolReadiness.ts +13 -101
- package/src/workflow/WorkflowAgentExecutionDocument.tsx +283 -0
- package/src/workflow/WorkflowApprovalList.tsx +158 -0
- package/src/workflow/WorkflowArtifactDocument.tsx +257 -0
- package/src/workflow/WorkflowExecutionGraph.tsx +40 -78
- package/src/workflow/WorkflowExecutionViewer.tsx +610 -287
- package/src/workflow/WorkflowFileReviewList.tsx +1 -1
- package/src/workflow/WorkflowTaskApprovalCard.tsx +5 -4
- package/src/workflow/WorkflowTaskApprovalSummary.tsx +6 -6
- package/src/workflow/__tests__/WorkflowAgentExecutionDocument.test.tsx +651 -0
- package/src/workflow/__tests__/WorkflowApprovalList.test.tsx +229 -0
- package/src/workflow/__tests__/WorkflowArtifactDocument.test.tsx +90 -0
- package/src/workflow/__tests__/WorkflowArtifactsTab.test.tsx +85 -0
- package/src/workflow/__tests__/WorkflowChangesTab.test.tsx +113 -0
- package/src/workflow/__tests__/WorkflowExecutionViewer.approvals.test.tsx +473 -0
- package/src/workflow/__tests__/WorkflowExecutionViewer.reconciliation.test.tsx +632 -0
- package/src/workflow/__tests__/WorkflowTaskApprovalSummary.test.tsx +1 -1
- package/src/workflow/__tests__/WorkflowTaskThread.test.tsx +947 -0
- package/src/workflow/__tests__/WorkflowUsageTab.test.tsx +163 -0
- package/src/workflow/__tests__/agent-call-live-experience.test.ts +6 -53
- package/src/workflow/__tests__/derive-execution-overlays.test.ts +4 -0
- package/src/workflow/__tests__/deriveWorkflowArtifactItems.test.ts +71 -0
- package/src/workflow/__tests__/deriveWorkflowUsageItems.test.ts +132 -0
- package/src/workflow/__tests__/execution-graph.test.ts +8 -0
- package/src/workflow/__tests__/project-thread-items.test.ts +428 -0
- package/src/workflow/__tests__/structured-data-viewer.test.tsx +1 -1
- package/src/workflow/__tests__/task-approval.test.ts +149 -0
- package/src/workflow/__tests__/task-detail-io.test.ts +40 -0
- package/src/workflow/__tests__/task-presentation.test.ts +479 -0
- package/src/workflow/__tests__/useActiveTaskName.test.ts +4 -0
- package/src/workflow/__tests__/useApprovalBoundary.test.ts +158 -0
- package/src/workflow/__tests__/useExecutionAnnouncements.test.ts +4 -0
- package/src/workflow/__tests__/useFollowExecution.test.ts +2 -89
- package/src/workflow/__tests__/useWorkflowExecutionFileChanges.test.tsx +412 -0
- package/src/workflow/__tests__/useWorkflowExecutionPanel.test.ts +297 -0
- package/src/workflow/__tests__/useWorkflowExecutionRailViews.test.tsx +115 -0
- package/src/workflow/deriveWorkflowArtifactItems.ts +59 -0
- package/src/workflow/deriveWorkflowUsageItems.ts +73 -0
- package/src/workflow/diagnosis-document.ts +31 -0
- package/src/workflow/execution/index.ts +0 -15
- package/src/workflow/facets/WorkflowArtifactsTab.tsx +99 -0
- package/src/workflow/facets/WorkflowChangesTab.tsx +129 -0
- package/src/workflow/facets/WorkflowUsageTab.tsx +258 -0
- package/src/workflow/format-utils.ts +2 -3
- package/src/workflow/index.ts +106 -62
- package/src/workflow/inspector/index.ts +0 -4
- package/src/workflow/instance/WorkflowInstanceList.tsx +59 -41
- package/src/workflow/instance/__tests__/WorkflowInstanceList.test.tsx +156 -0
- package/src/workflow/task-detail/index.ts +11 -0
- package/src/workflow/task-detail/task-approval.ts +158 -0
- package/src/workflow/task-detail/task-detail-io.ts +65 -0
- package/src/workflow/thread/WorkflowTaskThread.tsx +845 -0
- package/src/workflow/thread/project-thread-items.ts +235 -0
- package/src/workflow/thread/task-presentation.ts +427 -0
- package/src/workflow/thread/thread-presentation.ts +59 -0
- package/src/workflow/thread/useWorkflowThreadItems.ts +34 -0
- package/src/workflow/useApprovalBoundary.ts +72 -0
- package/src/workflow/useFollowExecution.ts +0 -26
- package/src/workflow/useWorkflowArtifactDownload.ts +68 -0
- package/src/workflow/useWorkflowExecutionActions.ts +3 -2
- package/src/workflow/useWorkflowExecutionFileChanges.ts +341 -0
- package/src/workflow/useWorkflowExecutionGraph.ts +3 -43
- package/src/workflow/useWorkflowExecutionPanel.ts +292 -0
- package/src/workflow/useWorkflowExecutionRailViews.tsx +173 -0
- package/src/workspace/FileViewer.tsx +3 -3
- package/src/workspace/PanelChip.tsx +103 -0
- package/src/workspace/WorkspaceSurface.tsx +50 -6
- package/src/workspace/__tests__/WorkspaceSurface.test.tsx +110 -0
- package/src/workspace/index.ts +3 -0
- package/styles.css +1 -1
- package/workflow/WorkflowAgentExecutionDocument.d.ts +79 -0
- package/workflow/WorkflowAgentExecutionDocument.d.ts.map +1 -0
- package/workflow/WorkflowAgentExecutionDocument.js +87 -0
- package/workflow/WorkflowAgentExecutionDocument.js.map +1 -0
- package/workflow/WorkflowApprovalList.d.ts +62 -0
- package/workflow/WorkflowApprovalList.d.ts.map +1 -0
- package/workflow/WorkflowApprovalList.js +52 -0
- package/workflow/WorkflowApprovalList.js.map +1 -0
- package/workflow/WorkflowArtifactDocument.d.ts +29 -0
- package/workflow/WorkflowArtifactDocument.d.ts.map +1 -0
- package/workflow/WorkflowArtifactDocument.js +89 -0
- package/workflow/WorkflowArtifactDocument.js.map +1 -0
- package/workflow/WorkflowExecutionGraph.d.ts +15 -13
- package/workflow/WorkflowExecutionGraph.d.ts.map +1 -1
- package/workflow/WorkflowExecutionGraph.js +18 -53
- package/workflow/WorkflowExecutionGraph.js.map +1 -1
- package/workflow/WorkflowExecutionViewer.d.ts +8 -5
- package/workflow/WorkflowExecutionViewer.d.ts.map +1 -1
- package/workflow/WorkflowExecutionViewer.js +329 -54
- package/workflow/WorkflowExecutionViewer.js.map +1 -1
- package/workflow/WorkflowFileReviewList.d.ts +1 -1
- package/workflow/WorkflowFileReviewList.js +1 -1
- package/workflow/WorkflowTaskApprovalCard.d.ts +4 -3
- package/workflow/WorkflowTaskApprovalCard.d.ts.map +1 -1
- package/workflow/WorkflowTaskApprovalCard.js +5 -4
- package/workflow/WorkflowTaskApprovalCard.js.map +1 -1
- package/workflow/WorkflowTaskApprovalSummary.d.ts +6 -6
- package/workflow/WorkflowTaskApprovalSummary.js +5 -5
- package/workflow/deriveWorkflowArtifactItems.d.ts +30 -0
- package/workflow/deriveWorkflowArtifactItems.d.ts.map +1 -0
- package/workflow/deriveWorkflowArtifactItems.js +38 -0
- package/workflow/deriveWorkflowArtifactItems.js.map +1 -0
- package/workflow/deriveWorkflowUsageItems.d.ts +36 -0
- package/workflow/deriveWorkflowUsageItems.d.ts.map +1 -0
- package/workflow/deriveWorkflowUsageItems.js +50 -0
- package/workflow/deriveWorkflowUsageItems.js.map +1 -0
- package/workflow/diagnosis-document.d.ts +17 -0
- package/workflow/diagnosis-document.d.ts.map +1 -0
- package/workflow/diagnosis-document.js +29 -0
- package/workflow/diagnosis-document.js.map +1 -0
- package/workflow/execution/index.d.ts +0 -2
- package/workflow/execution/index.d.ts.map +1 -1
- package/workflow/execution/index.js +0 -2
- package/workflow/execution/index.js.map +1 -1
- package/workflow/facets/WorkflowArtifactsTab.d.ts +26 -0
- package/workflow/facets/WorkflowArtifactsTab.d.ts.map +1 -0
- package/workflow/facets/WorkflowArtifactsTab.js +34 -0
- package/workflow/facets/WorkflowArtifactsTab.js.map +1 -0
- package/workflow/facets/WorkflowChangesTab.d.ts +37 -0
- package/workflow/facets/WorkflowChangesTab.d.ts.map +1 -0
- package/workflow/facets/WorkflowChangesTab.js +50 -0
- package/workflow/facets/WorkflowChangesTab.js.map +1 -0
- package/workflow/facets/WorkflowUsageTab.d.ts +27 -0
- package/workflow/facets/WorkflowUsageTab.d.ts.map +1 -0
- package/workflow/facets/WorkflowUsageTab.js +87 -0
- package/workflow/facets/WorkflowUsageTab.js.map +1 -0
- package/workflow/format-utils.d.ts +2 -3
- package/workflow/format-utils.d.ts.map +1 -1
- package/workflow/format-utils.js +2 -3
- package/workflow/format-utils.js.map +1 -1
- package/workflow/index.d.ts +21 -10
- package/workflow/index.d.ts.map +1 -1
- package/workflow/index.js +29 -14
- package/workflow/index.js.map +1 -1
- package/workflow/inspector/index.d.ts +0 -2
- package/workflow/inspector/index.d.ts.map +1 -1
- package/workflow/inspector/index.js +0 -2
- package/workflow/inspector/index.js.map +1 -1
- package/workflow/instance/WorkflowInstanceList.d.ts.map +1 -1
- package/workflow/instance/WorkflowInstanceList.js +11 -3
- package/workflow/instance/WorkflowInstanceList.js.map +1 -1
- package/workflow/task-detail/StructuredDataViewer.d.ts.map +1 -0
- package/workflow/task-detail/StructuredDataViewer.js.map +1 -0
- package/workflow/task-detail/index.d.ts +4 -0
- package/workflow/task-detail/index.d.ts.map +1 -0
- package/workflow/task-detail/index.js +4 -0
- package/workflow/task-detail/index.js.map +1 -0
- package/workflow/task-detail/task-approval.d.ts +89 -0
- package/workflow/task-detail/task-approval.d.ts.map +1 -0
- package/workflow/task-detail/task-approval.js +84 -0
- package/workflow/task-detail/task-approval.js.map +1 -0
- package/workflow/task-detail/task-detail-io.d.ts +39 -0
- package/workflow/task-detail/task-detail-io.d.ts.map +1 -0
- package/workflow/task-detail/task-detail-io.js +42 -0
- package/workflow/task-detail/task-detail-io.js.map +1 -0
- package/workflow/thread/WorkflowTaskThread.d.ts +91 -0
- package/workflow/thread/WorkflowTaskThread.d.ts.map +1 -0
- package/workflow/thread/WorkflowTaskThread.js +318 -0
- package/workflow/thread/WorkflowTaskThread.js.map +1 -0
- package/workflow/thread/project-thread-items.d.ts +108 -0
- package/workflow/thread/project-thread-items.d.ts.map +1 -0
- package/workflow/thread/project-thread-items.js +126 -0
- package/workflow/thread/project-thread-items.js.map +1 -0
- package/workflow/thread/task-presentation.d.ts +73 -0
- package/workflow/thread/task-presentation.d.ts.map +1 -0
- package/workflow/thread/task-presentation.js +331 -0
- package/workflow/thread/task-presentation.js.map +1 -0
- package/workflow/thread/thread-presentation.d.ts +28 -0
- package/workflow/thread/thread-presentation.d.ts.map +1 -0
- package/workflow/thread/thread-presentation.js +28 -0
- package/workflow/thread/thread-presentation.js.map +1 -0
- package/workflow/thread/useWorkflowThreadItems.d.ts +16 -0
- package/workflow/thread/useWorkflowThreadItems.d.ts.map +1 -0
- package/workflow/thread/useWorkflowThreadItems.js +22 -0
- package/workflow/thread/useWorkflowThreadItems.js.map +1 -0
- package/workflow/useApprovalBoundary.d.ts +38 -0
- package/workflow/useApprovalBoundary.d.ts.map +1 -0
- package/workflow/useApprovalBoundary.js +55 -0
- package/workflow/useApprovalBoundary.js.map +1 -0
- package/workflow/useFollowExecution.d.ts +0 -20
- package/workflow/useFollowExecution.d.ts.map +1 -1
- package/workflow/useFollowExecution.js +0 -17
- package/workflow/useFollowExecution.js.map +1 -1
- package/workflow/useWorkflowArtifactDownload.d.ts +28 -0
- package/workflow/useWorkflowArtifactDownload.d.ts.map +1 -0
- package/workflow/useWorkflowArtifactDownload.js +45 -0
- package/workflow/useWorkflowArtifactDownload.js.map +1 -0
- package/workflow/useWorkflowExecutionActions.d.ts +3 -2
- package/workflow/useWorkflowExecutionActions.d.ts.map +1 -1
- package/workflow/useWorkflowExecutionActions.js.map +1 -1
- package/workflow/useWorkflowExecutionFileChanges.d.ts +107 -0
- package/workflow/useWorkflowExecutionFileChanges.d.ts.map +1 -0
- package/workflow/useWorkflowExecutionFileChanges.js +244 -0
- package/workflow/useWorkflowExecutionFileChanges.js.map +1 -0
- package/workflow/useWorkflowExecutionGraph.d.ts +1 -14
- package/workflow/useWorkflowExecutionGraph.d.ts.map +1 -1
- package/workflow/useWorkflowExecutionGraph.js +2 -25
- package/workflow/useWorkflowExecutionGraph.js.map +1 -1
- package/workflow/useWorkflowExecutionPanel.d.ts +108 -0
- package/workflow/useWorkflowExecutionPanel.d.ts.map +1 -0
- package/workflow/useWorkflowExecutionPanel.js +103 -0
- package/workflow/useWorkflowExecutionPanel.js.map +1 -0
- package/workflow/useWorkflowExecutionRailViews.d.ts +46 -0
- package/workflow/useWorkflowExecutionRailViews.d.ts.map +1 -0
- package/workflow/useWorkflowExecutionRailViews.js +81 -0
- package/workflow/useWorkflowExecutionRailViews.js.map +1 -0
- package/workspace/FileViewer.d.ts +1 -1
- package/workspace/FileViewer.js +3 -3
- package/workspace/FileViewer.js.map +1 -1
- package/workspace/PanelChip.d.ts +27 -0
- package/workspace/PanelChip.d.ts.map +1 -0
- package/workspace/PanelChip.js +42 -0
- package/workspace/PanelChip.js.map +1 -0
- package/workspace/WorkspaceSurface.d.ts +25 -1
- package/workspace/WorkspaceSurface.d.ts.map +1 -1
- package/workspace/WorkspaceSurface.js +21 -9
- package/workspace/WorkspaceSurface.js.map +1 -1
- package/workspace/index.d.ts +3 -1
- package/workspace/index.d.ts.map +1 -1
- package/workspace/index.js +1 -0
- package/workspace/index.js.map +1 -1
- package/execution/ThreadSelectionContext.d.ts +0 -17
- package/execution/ThreadSelectionContext.d.ts.map +0 -1
- package/execution/ThreadSelectionContext.js +0 -18
- package/execution/ThreadSelectionContext.js.map +0 -1
- package/execution/useThreadSelection.d.ts +0 -35
- package/execution/useThreadSelection.d.ts.map +0 -1
- package/execution/useThreadSelection.js +0 -65
- package/execution/useThreadSelection.js.map +0 -1
- package/internal/store/selection-store.d.ts +0 -53
- package/internal/store/selection-store.d.ts.map +0 -1
- package/internal/store/selection-store.js +0 -88
- package/internal/store/selection-store.js.map +0 -1
- package/session/artifact-document.d.ts.map +0 -1
- package/session/artifact-document.js +0 -22
- package/session/artifact-document.js.map +0 -1
- package/session/facets/InspectTab.d.ts +0 -13
- package/session/facets/InspectTab.d.ts.map +0 -1
- package/session/facets/InspectTab.js +0 -19
- package/session/facets/InspectTab.js.map +0 -1
- package/src/execution/ThreadSelectionContext.tsx +0 -20
- package/src/execution/useThreadSelection.ts +0 -95
- package/src/internal/store/__tests__/selection-store.test.ts +0 -115
- package/src/internal/store/selection-store.ts +0 -112
- package/src/session/artifact-document.ts +0 -23
- package/src/session/facets/InspectTab.tsx +0 -57
- package/src/workflow/WorkflowExecutionApprovalCard.tsx +0 -154
- package/src/workflow/WorkflowExecutionArtifactPanel.tsx +0 -107
- package/src/workflow/WorkflowExecutionCostPanel.tsx +0 -120
- package/src/workflow/WorkflowExecutionTaskPanel.tsx +0 -129
- package/src/workflow/WorkflowExecutionTimeline.tsx +0 -151
- package/src/workflow/WorkflowExecutionTimelineEvent.tsx +0 -497
- package/src/workflow/__tests__/ExecutionInspector.test.tsx +0 -155
- package/src/workflow/__tests__/WorkflowExecutionApprovalCard.test.tsx +0 -129
- package/src/workflow/__tests__/derive-task-detail.test.ts +0 -1265
- package/src/workflow/__tests__/derive-waterfall-entries.test.ts +0 -521
- package/src/workflow/__tests__/execution-inspector.test.tsx +0 -332
- package/src/workflow/execution/derive-waterfall-entries.ts +0 -377
- package/src/workflow/execution/useWaterfallEntries.ts +0 -125
- package/src/workflow/execution-inspector/AgentCallTab.tsx +0 -169
- package/src/workflow/execution-inspector/ErrorTab.tsx +0 -110
- package/src/workflow/execution-inspector/EventLogTab.tsx +0 -79
- package/src/workflow/execution-inspector/ExecutionInspector.tsx +0 -341
- package/src/workflow/execution-inspector/InputOutputTab.tsx +0 -325
- package/src/workflow/execution-inspector/RetriesTab.tsx +0 -68
- package/src/workflow/execution-inspector/SummaryTab.tsx +0 -62
- package/src/workflow/execution-inspector/derive-task-detail.ts +0 -584
- package/src/workflow/execution-inspector/index.ts +0 -14
- package/src/workflow/execution-inspector/useExecutionTaskDetail.ts +0 -55
- package/src/workflow/inspector/ExecutionInspectorAdapter.tsx +0 -40
- package/src/workflow/waterfall/WaterfallBar.tsx +0 -167
- package/src/workflow/waterfall/WaterfallRow.tsx +0 -112
- package/src/workflow/waterfall/WaterfallScale.tsx +0 -52
- package/src/workflow/waterfall/WaterfallTimeline.tsx +0 -138
- package/src/workflow/waterfall/WaterfallTooltip.tsx +0 -74
- package/src/workflow/waterfall/index.ts +0 -5
- package/workflow/WorkflowExecutionApprovalCard.d.ts +0 -34
- package/workflow/WorkflowExecutionApprovalCard.d.ts.map +0 -1
- package/workflow/WorkflowExecutionApprovalCard.js +0 -46
- package/workflow/WorkflowExecutionApprovalCard.js.map +0 -1
- package/workflow/WorkflowExecutionArtifactPanel.d.ts +0 -15
- package/workflow/WorkflowExecutionArtifactPanel.d.ts.map +0 -1
- package/workflow/WorkflowExecutionArtifactPanel.js +0 -46
- package/workflow/WorkflowExecutionArtifactPanel.js.map +0 -1
- package/workflow/WorkflowExecutionCostPanel.d.ts +0 -18
- package/workflow/WorkflowExecutionCostPanel.d.ts.map +0 -1
- package/workflow/WorkflowExecutionCostPanel.js +0 -31
- package/workflow/WorkflowExecutionCostPanel.js.map +0 -1
- package/workflow/WorkflowExecutionTaskPanel.d.ts +0 -24
- package/workflow/WorkflowExecutionTaskPanel.d.ts.map +0 -1
- package/workflow/WorkflowExecutionTaskPanel.js +0 -51
- package/workflow/WorkflowExecutionTaskPanel.js.map +0 -1
- package/workflow/WorkflowExecutionTimeline.d.ts +0 -42
- package/workflow/WorkflowExecutionTimeline.d.ts.map +0 -1
- package/workflow/WorkflowExecutionTimeline.js +0 -52
- package/workflow/WorkflowExecutionTimeline.js.map +0 -1
- package/workflow/WorkflowExecutionTimelineEvent.d.ts +0 -25
- package/workflow/WorkflowExecutionTimelineEvent.d.ts.map +0 -1
- package/workflow/WorkflowExecutionTimelineEvent.js +0 -179
- package/workflow/WorkflowExecutionTimelineEvent.js.map +0 -1
- package/workflow/execution/derive-waterfall-entries.d.ts +0 -85
- package/workflow/execution/derive-waterfall-entries.d.ts.map +0 -1
- package/workflow/execution/derive-waterfall-entries.js +0 -268
- package/workflow/execution/derive-waterfall-entries.js.map +0 -1
- package/workflow/execution/useWaterfallEntries.d.ts +0 -25
- package/workflow/execution/useWaterfallEntries.d.ts.map +0 -1
- package/workflow/execution/useWaterfallEntries.js +0 -67
- package/workflow/execution/useWaterfallEntries.js.map +0 -1
- package/workflow/execution-inspector/AgentCallTab.d.ts +0 -21
- package/workflow/execution-inspector/AgentCallTab.d.ts.map +0 -1
- package/workflow/execution-inspector/AgentCallTab.js +0 -36
- package/workflow/execution-inspector/AgentCallTab.js.map +0 -1
- package/workflow/execution-inspector/ErrorTab.d.ts +0 -9
- package/workflow/execution-inspector/ErrorTab.d.ts.map +0 -1
- package/workflow/execution-inspector/ErrorTab.js +0 -29
- package/workflow/execution-inspector/ErrorTab.js.map +0 -1
- package/workflow/execution-inspector/EventLogTab.d.ts +0 -11
- package/workflow/execution-inspector/EventLogTab.d.ts.map +0 -1
- package/workflow/execution-inspector/EventLogTab.js +0 -47
- package/workflow/execution-inspector/EventLogTab.js.map +0 -1
- package/workflow/execution-inspector/ExecutionInspector.d.ts +0 -69
- package/workflow/execution-inspector/ExecutionInspector.d.ts.map +0 -1
- package/workflow/execution-inspector/ExecutionInspector.js +0 -145
- package/workflow/execution-inspector/ExecutionInspector.js.map +0 -1
- package/workflow/execution-inspector/InputOutputTab.d.ts +0 -20
- package/workflow/execution-inspector/InputOutputTab.d.ts.map +0 -1
- package/workflow/execution-inspector/InputOutputTab.js +0 -124
- package/workflow/execution-inspector/InputOutputTab.js.map +0 -1
- package/workflow/execution-inspector/RetriesTab.d.ts +0 -7
- package/workflow/execution-inspector/RetriesTab.d.ts.map +0 -1
- package/workflow/execution-inspector/RetriesTab.js +0 -11
- package/workflow/execution-inspector/RetriesTab.js.map +0 -1
- package/workflow/execution-inspector/StructuredDataViewer.d.ts.map +0 -1
- package/workflow/execution-inspector/StructuredDataViewer.js.map +0 -1
- package/workflow/execution-inspector/SummaryTab.d.ts +0 -7
- package/workflow/execution-inspector/SummaryTab.d.ts.map +0 -1
- package/workflow/execution-inspector/SummaryTab.js +0 -10
- package/workflow/execution-inspector/SummaryTab.js.map +0 -1
- package/workflow/execution-inspector/derive-task-detail.d.ts +0 -140
- package/workflow/execution-inspector/derive-task-detail.d.ts.map +0 -1
- package/workflow/execution-inspector/derive-task-detail.js +0 -366
- package/workflow/execution-inspector/derive-task-detail.js.map +0 -1
- package/workflow/execution-inspector/index.d.ts +0 -4
- package/workflow/execution-inspector/index.d.ts.map +0 -1
- package/workflow/execution-inspector/index.js +0 -4
- package/workflow/execution-inspector/index.js.map +0 -1
- package/workflow/execution-inspector/useExecutionTaskDetail.d.ts +0 -38
- package/workflow/execution-inspector/useExecutionTaskDetail.d.ts.map +0 -1
- package/workflow/execution-inspector/useExecutionTaskDetail.js +0 -37
- package/workflow/execution-inspector/useExecutionTaskDetail.js.map +0 -1
- package/workflow/inspector/ExecutionInspectorAdapter.d.ts +0 -26
- package/workflow/inspector/ExecutionInspectorAdapter.d.ts.map +0 -1
- package/workflow/inspector/ExecutionInspectorAdapter.js +0 -23
- package/workflow/inspector/ExecutionInspectorAdapter.js.map +0 -1
- package/workflow/waterfall/WaterfallBar.d.ts +0 -19
- package/workflow/waterfall/WaterfallBar.d.ts.map +0 -1
- package/workflow/waterfall/WaterfallBar.js +0 -70
- package/workflow/waterfall/WaterfallBar.js.map +0 -1
- package/workflow/waterfall/WaterfallRow.d.ts +0 -18
- package/workflow/waterfall/WaterfallRow.d.ts.map +0 -1
- package/workflow/waterfall/WaterfallRow.js +0 -45
- package/workflow/waterfall/WaterfallRow.js.map +0 -1
- package/workflow/waterfall/WaterfallScale.d.ts +0 -14
- package/workflow/waterfall/WaterfallScale.d.ts.map +0 -1
- package/workflow/waterfall/WaterfallScale.js +0 -22
- package/workflow/waterfall/WaterfallScale.js.map +0 -1
- package/workflow/waterfall/WaterfallTimeline.d.ts +0 -46
- package/workflow/waterfall/WaterfallTimeline.d.ts.map +0 -1
- package/workflow/waterfall/WaterfallTimeline.js +0 -60
- package/workflow/waterfall/WaterfallTimeline.js.map +0 -1
- package/workflow/waterfall/WaterfallTooltip.d.ts +0 -15
- package/workflow/waterfall/WaterfallTooltip.d.ts.map +0 -1
- package/workflow/waterfall/WaterfallTooltip.js +0 -20
- package/workflow/waterfall/WaterfallTooltip.js.map +0 -1
- package/workflow/waterfall/index.d.ts +0 -6
- package/workflow/waterfall/index.d.ts.map +0 -1
- package/workflow/waterfall/index.js +0 -6
- package/workflow/waterfall/index.js.map +0 -1
- /package/src/workflow/{execution-inspector → task-detail}/StructuredDataViewer.tsx +0 -0
- /package/workflow/{execution-inspector → task-detail}/StructuredDataViewer.d.ts +0 -0
- /package/workflow/{execution-inspector → task-detail}/StructuredDataViewer.js +0 -0
|
@@ -0,0 +1,235 @@
|
|
|
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
|
+
|
|
18
|
+
import { WorkflowTaskKind } from "@stigmer/protos/ai/stigmer/agentic/workflow/v1/enum_pb";
|
|
19
|
+
import type { JsonObject } from "@bufbuild/protobuf";
|
|
20
|
+
import type {
|
|
21
|
+
ApprovalRequestedPayload,
|
|
22
|
+
ApprovalResolvedPayload,
|
|
23
|
+
} from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/event_pb";
|
|
24
|
+
import type { DerivedTaskState } from "../../internal/store/workflow-execution-event-store.js";
|
|
25
|
+
import { kindToDisplayName } from "../kind-metadata.js";
|
|
26
|
+
import { taskKindToString } from "../workflow-graph-conversions.js";
|
|
27
|
+
import {
|
|
28
|
+
threadCardVariant,
|
|
29
|
+
type WorkflowThreadCardVariant,
|
|
30
|
+
} from "./thread-presentation.js";
|
|
31
|
+
import {
|
|
32
|
+
resolveTaskPreview,
|
|
33
|
+
type WorkflowTaskDisclosure,
|
|
34
|
+
} from "./task-presentation.js";
|
|
35
|
+
|
|
36
|
+
// ---------------------------------------------------------------------------
|
|
37
|
+
// Public types
|
|
38
|
+
// ---------------------------------------------------------------------------
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* One task card in the thread — a flat, display-ready projection of a
|
|
42
|
+
* `DerivedTaskState`. Fields are copied (not referenced) so value equality
|
|
43
|
+
* is a shallow field compare, which powers the structural sharing below.
|
|
44
|
+
*/
|
|
45
|
+
export interface WorkflowThreadItem {
|
|
46
|
+
readonly taskName: string;
|
|
47
|
+
readonly taskKind: WorkflowTaskKind;
|
|
48
|
+
/**
|
|
49
|
+
* Human label for the kind, from the canonical `kindToDisplayName`.
|
|
50
|
+
* The empty string for `unspecified` kinds (the snapshot-derived fallback
|
|
51
|
+
* map carries no kind) — consumers hide the kind chip rather than render
|
|
52
|
+
* a meaningless "Unknown" label.
|
|
53
|
+
*/
|
|
54
|
+
readonly kindLabel: string;
|
|
55
|
+
readonly variant: WorkflowThreadCardVariant;
|
|
56
|
+
readonly status: DerivedTaskState["status"];
|
|
57
|
+
readonly durationMs: number;
|
|
58
|
+
readonly costMicros: bigint;
|
|
59
|
+
readonly tokensUsed: bigint;
|
|
60
|
+
readonly attemptNumber: number;
|
|
61
|
+
readonly error: string;
|
|
62
|
+
readonly childExecutionId: string;
|
|
63
|
+
readonly agentSlug: string;
|
|
64
|
+
readonly currentToolName: string;
|
|
65
|
+
readonly messagesCount: number;
|
|
66
|
+
readonly toolCallsCount: number;
|
|
67
|
+
/**
|
|
68
|
+
* Kind-aware one-line preview from `resolveTaskPreview` (T04) — a
|
|
69
|
+
* primitive computed HERE (not in a card hook) so the structural-sharing
|
|
70
|
+
* compare below stays a cheap string check. The empty string when there
|
|
71
|
+
* is nothing kind-specific to say.
|
|
72
|
+
*/
|
|
73
|
+
readonly previewLine: string;
|
|
74
|
+
/**
|
|
75
|
+
* Card disclosure mode (T04). Pure function of `taskKind` (like
|
|
76
|
+
* `variant`/`kindLabel`), so it is not part of the equality compare.
|
|
77
|
+
*/
|
|
78
|
+
readonly disclosure: WorkflowTaskDisclosure;
|
|
79
|
+
/**
|
|
80
|
+
* Truncated event summaries carried for the card body's fallback ladder
|
|
81
|
+
* (snapshot → event summary → none). Reference-stable: the store reads
|
|
82
|
+
* them off the same immutable events on every re-derivation, so the
|
|
83
|
+
* identity compare below holds across appends.
|
|
84
|
+
*/
|
|
85
|
+
readonly inputSummary: JsonObject | null;
|
|
86
|
+
readonly outputSummary: JsonObject | null;
|
|
87
|
+
/**
|
|
88
|
+
* The human_input gate's captured request/resolution payloads (T06) —
|
|
89
|
+
* the in-card review surface's data. Reference-stable like the
|
|
90
|
+
* summaries: the store carries the immutable events' payload messages,
|
|
91
|
+
* so the identity compare below holds across appends and only the
|
|
92
|
+
* gating card's item changes identity when a gate opens or resolves.
|
|
93
|
+
*/
|
|
94
|
+
readonly approvalRequest: ApprovalRequestedPayload | null;
|
|
95
|
+
readonly approvalResolution: ApprovalResolvedPayload | null;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Progress line for the thread header. Pending tasks render no cards
|
|
100
|
+
* (D-T02-5); this is where "what's coming" stays visible (Nielsen #1).
|
|
101
|
+
*/
|
|
102
|
+
export interface WorkflowThreadProgress {
|
|
103
|
+
/** Tasks in a terminal state (completed, failed, or skipped). */
|
|
104
|
+
readonly settledTasks: number;
|
|
105
|
+
/** Tasks currently active (running, retrying, or waiting approval). */
|
|
106
|
+
readonly activeTasks: number;
|
|
107
|
+
/** Total planned tasks from `execution_started`; `0` when unknown. */
|
|
108
|
+
readonly totalTasks: number;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/** Result of {@link projectThreadItems}. */
|
|
112
|
+
export interface WorkflowThreadProjection {
|
|
113
|
+
readonly items: readonly WorkflowThreadItem[];
|
|
114
|
+
readonly progress: WorkflowThreadProgress;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// ---------------------------------------------------------------------------
|
|
118
|
+
// Projection
|
|
119
|
+
// ---------------------------------------------------------------------------
|
|
120
|
+
|
|
121
|
+
const ACTIVE_STATUSES: ReadonlySet<DerivedTaskState["status"]> = new Set([
|
|
122
|
+
"running",
|
|
123
|
+
"retrying",
|
|
124
|
+
"waiting_approval",
|
|
125
|
+
]);
|
|
126
|
+
|
|
127
|
+
const SETTLED_STATUSES: ReadonlySet<DerivedTaskState["status"]> = new Set([
|
|
128
|
+
"completed",
|
|
129
|
+
"failed",
|
|
130
|
+
"skipped",
|
|
131
|
+
]);
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Projects the derived task-state map into ordered thread items plus a
|
|
135
|
+
* progress summary.
|
|
136
|
+
*
|
|
137
|
+
* Structural sharing: pass the previous call's `items` and any task whose
|
|
138
|
+
* fields are unchanged keeps its previous object identity. The store
|
|
139
|
+
* rebuilds every `DerivedTaskState` on each event append, so without this,
|
|
140
|
+
* every card would get a fresh item per event and `React.memo` rows could
|
|
141
|
+
* never bail (DD-009/DD-010 — only the actively-changing card re-renders).
|
|
142
|
+
*/
|
|
143
|
+
export function projectThreadItems(
|
|
144
|
+
taskStates: ReadonlyMap<string, DerivedTaskState>,
|
|
145
|
+
totalTasks: number,
|
|
146
|
+
previousItems?: readonly WorkflowThreadItem[],
|
|
147
|
+
): WorkflowThreadProjection {
|
|
148
|
+
const previousByName = new Map<string, WorkflowThreadItem>();
|
|
149
|
+
if (previousItems) {
|
|
150
|
+
for (const item of previousItems) previousByName.set(item.taskName, item);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
const items: WorkflowThreadItem[] = [];
|
|
154
|
+
let settledTasks = 0;
|
|
155
|
+
let activeTasks = 0;
|
|
156
|
+
|
|
157
|
+
for (const state of taskStates.values()) {
|
|
158
|
+
if (SETTLED_STATUSES.has(state.status)) settledTasks += 1;
|
|
159
|
+
else if (ACTIVE_STATUSES.has(state.status)) activeTasks += 1;
|
|
160
|
+
|
|
161
|
+
const preview = resolveTaskPreview(state);
|
|
162
|
+
const fresh: WorkflowThreadItem = {
|
|
163
|
+
taskName: state.taskName,
|
|
164
|
+
taskKind: state.taskKind,
|
|
165
|
+
kindLabel:
|
|
166
|
+
state.taskKind === WorkflowTaskKind.workflow_task_kind_unspecified
|
|
167
|
+
? ""
|
|
168
|
+
: kindToDisplayName(taskKindToString(state.taskKind)),
|
|
169
|
+
variant: threadCardVariant(state.taskKind),
|
|
170
|
+
status: state.status,
|
|
171
|
+
durationMs: state.durationMs,
|
|
172
|
+
costMicros: state.costMicros,
|
|
173
|
+
tokensUsed: state.tokensUsed,
|
|
174
|
+
attemptNumber: state.attemptNumber,
|
|
175
|
+
error: state.error,
|
|
176
|
+
childExecutionId: state.childExecutionId,
|
|
177
|
+
agentSlug: state.agentSlug,
|
|
178
|
+
currentToolName: state.currentToolName,
|
|
179
|
+
messagesCount: state.messagesCount,
|
|
180
|
+
toolCallsCount: state.toolCallsCount,
|
|
181
|
+
previewLine: preview.previewLine,
|
|
182
|
+
disclosure: preview.disclosure,
|
|
183
|
+
inputSummary: state.inputSummary,
|
|
184
|
+
outputSummary: state.outputSummary,
|
|
185
|
+
approvalRequest: state.approvalRequest,
|
|
186
|
+
approvalResolution: state.approvalResolution,
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
const previous = previousByName.get(state.taskName);
|
|
190
|
+
items.push(previous && threadItemEqual(previous, fresh) ? previous : fresh);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
return {
|
|
194
|
+
items,
|
|
195
|
+
progress: {
|
|
196
|
+
settledTasks,
|
|
197
|
+
activeTasks,
|
|
198
|
+
// The snapshot fallback path reports totalTasks as the map size; a
|
|
199
|
+
// stream that never saw execution_started reports 0 ("unknown").
|
|
200
|
+
totalTasks: totalTasks > 0 ? totalTasks : 0,
|
|
201
|
+
},
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/** Shallow value equality across all card-visible fields. */
|
|
206
|
+
function threadItemEqual(
|
|
207
|
+
a: WorkflowThreadItem,
|
|
208
|
+
b: WorkflowThreadItem,
|
|
209
|
+
): boolean {
|
|
210
|
+
return (
|
|
211
|
+
a.taskName === b.taskName &&
|
|
212
|
+
a.taskKind === b.taskKind &&
|
|
213
|
+
a.status === b.status &&
|
|
214
|
+
a.durationMs === b.durationMs &&
|
|
215
|
+
a.costMicros === b.costMicros &&
|
|
216
|
+
a.tokensUsed === b.tokensUsed &&
|
|
217
|
+
a.attemptNumber === b.attemptNumber &&
|
|
218
|
+
a.error === b.error &&
|
|
219
|
+
a.childExecutionId === b.childExecutionId &&
|
|
220
|
+
a.agentSlug === b.agentSlug &&
|
|
221
|
+
a.currentToolName === b.currentToolName &&
|
|
222
|
+
a.messagesCount === b.messagesCount &&
|
|
223
|
+
a.toolCallsCount === b.toolCallsCount &&
|
|
224
|
+
a.previewLine === b.previewLine &&
|
|
225
|
+
// The summaries and gate payloads are read off the same immutable
|
|
226
|
+
// stored events on every re-derivation, so identity is the correct
|
|
227
|
+
// (and cheap) compare here.
|
|
228
|
+
a.inputSummary === b.inputSummary &&
|
|
229
|
+
a.outputSummary === b.outputSummary &&
|
|
230
|
+
a.approvalRequest === b.approvalRequest &&
|
|
231
|
+
a.approvalResolution === b.approvalResolution
|
|
232
|
+
// kindLabel/variant/disclosure are pure functions of taskKind — no need
|
|
233
|
+
// to compare.
|
|
234
|
+
);
|
|
235
|
+
}
|
|
@@ -0,0 +1,427 @@
|
|
|
1
|
+
import { WorkflowTaskKind } from "@stigmer/protos/ai/stigmer/agentic/workflow/v1/enum_pb";
|
|
2
|
+
import type { JsonObject, JsonValue } from "@bufbuild/protobuf";
|
|
3
|
+
import type { DerivedTaskState } from "../../internal/store/workflow-execution-event-store.js";
|
|
4
|
+
import { formatDuration } from "../format-utils.js";
|
|
5
|
+
|
|
6
|
+
// Headless presentation layer for workflow task cards (T04) — the thread's
|
|
7
|
+
// sibling of the session's `tool-presenter.ts`.
|
|
8
|
+
//
|
|
9
|
+
// `resolveTaskPreview` turns a `DerivedTaskState` into the two presentation
|
|
10
|
+
// primitives a card needs — a bounded one-line preview of what the task did
|
|
11
|
+
// and its disclosure mode — without rendering anything.
|
|
12
|
+
//
|
|
13
|
+
// WHERE THIS RUNS (a deliberate divergence from the session): the session
|
|
14
|
+
// computes presentation in a card-level hook (`useToolPresentation`) because
|
|
15
|
+
// its stream store preserves `ToolCall` object identity across frames, so
|
|
16
|
+
// the hook's `useMemo` bails. The workflow store instead REBUILDS every
|
|
17
|
+
// `DerivedTaskState` on each event append; the memo boundary is the
|
|
18
|
+
// projection's `WorkflowThreadItem` (`threadItemEqual`). Preview-affecting
|
|
19
|
+
// values must therefore be primitives on that item, computed once in
|
|
20
|
+
// `projectThreadItems` — NOT in a card hook. Do not "fix" this back to a
|
|
21
|
+
// hook: it would defeat the thread's structural sharing (DD-009/DD-010).
|
|
22
|
+
//
|
|
23
|
+
// DATA HONESTY: the kind-specific lines read the TRUNCATED event summaries
|
|
24
|
+
// (`input_summary` on task_started, `output_summary` on task_completed).
|
|
25
|
+
// Their population is runner-dependent per kind — every parser here is
|
|
26
|
+
// defensive against absent or unexpectedly-shaped Structs and degrades to
|
|
27
|
+
// the empty string (status-only card), never a broken line. The FULL output
|
|
28
|
+
// lives on the status snapshot and is rendered by the card body, not here.
|
|
29
|
+
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
// Public types
|
|
32
|
+
// ---------------------------------------------------------------------------
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Disclosure mode for a task card, mirroring the session's rule — "does the
|
|
36
|
+
* body carry content the one-line row cannot?":
|
|
37
|
+
*
|
|
38
|
+
* - `"preview"` — I/O-bearing kinds: the card keeps an always-visible,
|
|
39
|
+
* bounded body of the task's output (the session's shell/edit/MCP model).
|
|
40
|
+
* - `"summary"` — thin/derived kinds: a compact row with a chevron-gated
|
|
41
|
+
* detail body.
|
|
42
|
+
*/
|
|
43
|
+
export type WorkflowTaskDisclosure = "preview" | "summary";
|
|
44
|
+
|
|
45
|
+
/** The resolved presentation primitives for one task card. */
|
|
46
|
+
export interface WorkflowTaskPreview {
|
|
47
|
+
/**
|
|
48
|
+
* Bounded one-line preview of what the task did (e.g. `set orderId,
|
|
49
|
+
* total`, `3 errors`, `emitted ticket.classified`). The empty string when
|
|
50
|
+
* there is nothing kind-specific to say — consumers hide the line rather
|
|
51
|
+
* than render filler.
|
|
52
|
+
*/
|
|
53
|
+
readonly previewLine: string;
|
|
54
|
+
/** Disclosure mode for the card. Pure function of the task kind. */
|
|
55
|
+
readonly disclosure: WorkflowTaskDisclosure;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Optional per-kind overrides for the preview line and disclosure — the
|
|
60
|
+
* workflow twin of the session's `ToolPresenter` (minus `runGroupable`:
|
|
61
|
+
* workflow tasks are one card per task).
|
|
62
|
+
*/
|
|
63
|
+
export interface WorkflowTaskPresenter {
|
|
64
|
+
/**
|
|
65
|
+
* Overrides the kind-specific preview line. Return `null` to fall back to
|
|
66
|
+
* the built-in line for the kind. Status lines (awaiting approval, the
|
|
67
|
+
* failure message, "Skipped") always take precedence and are not
|
|
68
|
+
* overridable — they are correctness surfaces, not wording.
|
|
69
|
+
*/
|
|
70
|
+
readonly previewLine?: (state: DerivedTaskState) => string | null;
|
|
71
|
+
/** Overrides the default disclosure mode for the kind. */
|
|
72
|
+
readonly disclosure?: (state: DerivedTaskState) => WorkflowTaskDisclosure;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// ---------------------------------------------------------------------------
|
|
76
|
+
// Registry (the platform-builder extension seam)
|
|
77
|
+
// ---------------------------------------------------------------------------
|
|
78
|
+
|
|
79
|
+
const registry = new Map<WorkflowTaskKind, WorkflowTaskPresenter>();
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Registers a custom presenter for a {@link WorkflowTaskKind}, overriding
|
|
83
|
+
* the built-in preview line and/or disclosure. Call once at app startup.
|
|
84
|
+
* This is the extension point for platform builders embedding the workflow
|
|
85
|
+
* execution UI who want product-specific wording without forking the
|
|
86
|
+
* components — the same seam as the session's `registerToolPresenter`.
|
|
87
|
+
*
|
|
88
|
+
* Returns a disposer that unregisters the presenter, restoring the previous
|
|
89
|
+
* one for that kind (or the default). Most apps register once at startup
|
|
90
|
+
* and ignore it; tests and dynamic hosts use it to avoid leaking global
|
|
91
|
+
* state.
|
|
92
|
+
*/
|
|
93
|
+
export function registerTaskPresenter(
|
|
94
|
+
kind: WorkflowTaskKind,
|
|
95
|
+
presenter: WorkflowTaskPresenter,
|
|
96
|
+
): () => void {
|
|
97
|
+
const previous = registry.get(kind);
|
|
98
|
+
registry.set(kind, presenter);
|
|
99
|
+
return () => {
|
|
100
|
+
if (previous === undefined) {
|
|
101
|
+
registry.delete(kind);
|
|
102
|
+
} else {
|
|
103
|
+
registry.set(kind, previous);
|
|
104
|
+
}
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/** Returns the registered presenter for a kind, if any. */
|
|
109
|
+
export function getTaskPresenter(
|
|
110
|
+
kind: WorkflowTaskKind,
|
|
111
|
+
): WorkflowTaskPresenter | undefined {
|
|
112
|
+
return registry.get(kind);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// ---------------------------------------------------------------------------
|
|
116
|
+
// Disclosure defaults
|
|
117
|
+
// ---------------------------------------------------------------------------
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Kinds whose output can be the point of the task — their cards keep an
|
|
121
|
+
* always-visible bounded body (the session's "preview" categories). The
|
|
122
|
+
* body renders only when output actually exists (the `showBody` gate), so
|
|
123
|
+
* a kind whose runner writes no output — today's invocation kinds, until
|
|
124
|
+
* the output-envelope follow-up standardizes them (DD-T04-3) — stays a
|
|
125
|
+
* clean one-line row with zero cost. `set_vars` earns its place from live
|
|
126
|
+
* data: the runner writes the seeded variables to task output (T05, R2-5).
|
|
127
|
+
*
|
|
128
|
+
* Only genuinely body-less kinds (control flow, `wait`/`listen`, and the
|
|
129
|
+
* snapshot fallback's `unspecified`) stay compact summary rows.
|
|
130
|
+
*/
|
|
131
|
+
const PREVIEW_KINDS: ReadonlySet<WorkflowTaskKind> = new Set([
|
|
132
|
+
WorkflowTaskKind.transform,
|
|
133
|
+
WorkflowTaskKind.validate,
|
|
134
|
+
WorkflowTaskKind.llm_call,
|
|
135
|
+
WorkflowTaskKind.eval,
|
|
136
|
+
WorkflowTaskKind.emit_event,
|
|
137
|
+
WorkflowTaskKind.notification,
|
|
138
|
+
WorkflowTaskKind.agent_call,
|
|
139
|
+
WorkflowTaskKind.set_vars,
|
|
140
|
+
WorkflowTaskKind.human_input,
|
|
141
|
+
WorkflowTaskKind.http_call,
|
|
142
|
+
WorkflowTaskKind.grpc_call,
|
|
143
|
+
WorkflowTaskKind.activity_call,
|
|
144
|
+
WorkflowTaskKind.run_workflow,
|
|
145
|
+
]);
|
|
146
|
+
|
|
147
|
+
/** Default disclosure mode for a task kind. */
|
|
148
|
+
export function defaultDisclosureForKind(
|
|
149
|
+
kind: WorkflowTaskKind,
|
|
150
|
+
): WorkflowTaskDisclosure {
|
|
151
|
+
return PREVIEW_KINDS.has(kind) ? "preview" : "summary";
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// ---------------------------------------------------------------------------
|
|
155
|
+
// Resolution
|
|
156
|
+
// ---------------------------------------------------------------------------
|
|
157
|
+
|
|
158
|
+
/** Hard cap on the preview line — it is a header suffix, not a body. */
|
|
159
|
+
const PREVIEW_LINE_MAX_CHARS = 80;
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Resolves the presentation primitives for one task card.
|
|
163
|
+
*
|
|
164
|
+
* Precedence for the line: universal status lines first (awaiting approval,
|
|
165
|
+
* the failure's first line, "Skipped") — these are correctness surfaces —
|
|
166
|
+
* then the registered presenter's line, then the built-in per-kind line.
|
|
167
|
+
*/
|
|
168
|
+
export function resolveTaskPreview(
|
|
169
|
+
state: DerivedTaskState,
|
|
170
|
+
): WorkflowTaskPreview {
|
|
171
|
+
const override = registry.get(state.taskKind);
|
|
172
|
+
const disclosure =
|
|
173
|
+
override?.disclosure?.(state) ?? defaultDisclosureForKind(state.taskKind);
|
|
174
|
+
|
|
175
|
+
const statusLine = statusPreviewLine(state);
|
|
176
|
+
if (statusLine !== null) {
|
|
177
|
+
return { previewLine: truncateLine(statusLine), disclosure };
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
const line =
|
|
181
|
+
override?.previewLine?.(state) ?? defaultPreviewLine(state) ?? "";
|
|
182
|
+
return { previewLine: truncateLine(line), disclosure };
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/** Universal status lines that outrank any kind-specific preview. */
|
|
186
|
+
function statusPreviewLine(state: DerivedTaskState): string | null {
|
|
187
|
+
if (state.status === "waiting_approval") return "Awaiting approval";
|
|
188
|
+
if (state.status === "failed" && state.error) return firstLine(state.error);
|
|
189
|
+
if (state.status === "skipped") return "Skipped";
|
|
190
|
+
return null;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
// ---------------------------------------------------------------------------
|
|
194
|
+
// Built-in per-kind lines
|
|
195
|
+
// ---------------------------------------------------------------------------
|
|
196
|
+
|
|
197
|
+
function defaultPreviewLine(state: DerivedTaskState): string | null {
|
|
198
|
+
switch (state.taskKind) {
|
|
199
|
+
case WorkflowTaskKind.agent_call:
|
|
200
|
+
return agentCallLine(state);
|
|
201
|
+
case WorkflowTaskKind.set_vars:
|
|
202
|
+
return setVarsLine(state.inputSummary);
|
|
203
|
+
case WorkflowTaskKind.transform:
|
|
204
|
+
return transformLine(state);
|
|
205
|
+
case WorkflowTaskKind.validate:
|
|
206
|
+
return validateLine(state.outputSummary);
|
|
207
|
+
case WorkflowTaskKind.llm_call:
|
|
208
|
+
return llmCallLine(state);
|
|
209
|
+
case WorkflowTaskKind.eval:
|
|
210
|
+
return evalLine(state.outputSummary);
|
|
211
|
+
case WorkflowTaskKind.emit_event:
|
|
212
|
+
return emitEventLine(state);
|
|
213
|
+
case WorkflowTaskKind.notification:
|
|
214
|
+
return notificationLine(state);
|
|
215
|
+
case WorkflowTaskKind.human_input:
|
|
216
|
+
return humanInputLine(state.outputSummary);
|
|
217
|
+
case WorkflowTaskKind.wait:
|
|
218
|
+
return waitLine(state);
|
|
219
|
+
case WorkflowTaskKind.listen:
|
|
220
|
+
return listenLine(state);
|
|
221
|
+
default:
|
|
222
|
+
// Control flow (branch-taken / fork progress need graph topology the
|
|
223
|
+
// thread does not have — deferred), raise_error (the failure
|
|
224
|
+
// precedence already shows the message), the invocation kinds
|
|
225
|
+
// (pending the backend output-envelope follow-up), and the snapshot
|
|
226
|
+
// fallback's `unspecified` all stay status-only.
|
|
227
|
+
return null;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* The flagship agent-call line: `slug · running <tool> · N msgs · M tools`.
|
|
233
|
+
* Field-for-field the pre-T04 card line — kept here so the thread has one
|
|
234
|
+
* source of preview semantics.
|
|
235
|
+
*/
|
|
236
|
+
function agentCallLine(state: DerivedTaskState): string | null {
|
|
237
|
+
const parts: string[] = [];
|
|
238
|
+
if (state.agentSlug) parts.push(state.agentSlug);
|
|
239
|
+
if (state.status === "running" && state.currentToolName) {
|
|
240
|
+
parts.push(`running ${state.currentToolName}`);
|
|
241
|
+
}
|
|
242
|
+
if (state.messagesCount > 0 || state.toolCallsCount > 0) {
|
|
243
|
+
parts.push(`${state.messagesCount} msgs · ${state.toolCallsCount} tools`);
|
|
244
|
+
}
|
|
245
|
+
return parts.length > 0 ? parts.join(" · ") : null;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
/** `set orderId, total +2 more` — from the resolved variables map. */
|
|
249
|
+
function setVarsLine(input: JsonObject | null): string | null {
|
|
250
|
+
if (!input) return null;
|
|
251
|
+
// The summary may nest the map under `variables` (the config field) or
|
|
252
|
+
// carry the resolved variables at the top level — accept both.
|
|
253
|
+
const vars = asObject(input["variables"]) ?? input;
|
|
254
|
+
const keys = Object.keys(vars);
|
|
255
|
+
if (keys.length === 0) return null;
|
|
256
|
+
const shown = keys.slice(0, 3).join(", ");
|
|
257
|
+
const rest = keys.length - 3;
|
|
258
|
+
return rest > 0 ? `set ${shown} +${rest} more` : `set ${shown}`;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
/** `jq → 42` while settled; the engine alone while running. */
|
|
262
|
+
function transformLine(state: DerivedTaskState): string | null {
|
|
263
|
+
const engine = asString(state.inputSummary?.["engine"])?.toLowerCase() ?? null;
|
|
264
|
+
if (state.outputSummary) {
|
|
265
|
+
const snippet = valueSnippet(state.outputSummary);
|
|
266
|
+
return engine ? `${engine} → ${snippet}` : `→ ${snippet}`;
|
|
267
|
+
}
|
|
268
|
+
return engine;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/** `valid` / `3 errors` — from the documented `{valid, errors[]}` shape. */
|
|
272
|
+
function validateLine(output: JsonObject | null): string | null {
|
|
273
|
+
if (!output) return null;
|
|
274
|
+
const valid = output["valid"];
|
|
275
|
+
if (valid === true) return "valid";
|
|
276
|
+
if (valid === false) {
|
|
277
|
+
const errors = Array.isArray(output["errors"]) ? output["errors"].length : 0;
|
|
278
|
+
return errors > 0 ? `${errors} ${errors === 1 ? "error" : "errors"}` : "invalid";
|
|
279
|
+
}
|
|
280
|
+
return null;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/** `claude-sonnet · "snippet…"` — model from input, text from output. */
|
|
284
|
+
function llmCallLine(state: DerivedTaskState): string | null {
|
|
285
|
+
const parts: string[] = [];
|
|
286
|
+
const model = asString(state.inputSummary?.["model"]);
|
|
287
|
+
if (model) parts.push(model);
|
|
288
|
+
if (state.outputSummary) parts.push(valueSnippet(state.outputSummary));
|
|
289
|
+
return parts.length > 0 ? parts.join(" · ") : null;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
/** `pass · score 0.82` — from the documented `{pass, score}` shape. */
|
|
293
|
+
function evalLine(output: JsonObject | null): string | null {
|
|
294
|
+
if (!output) return null;
|
|
295
|
+
const pass = output["pass"];
|
|
296
|
+
const score = output["score"];
|
|
297
|
+
if (typeof pass !== "boolean") return null;
|
|
298
|
+
const verdict = pass ? "pass" : "fail";
|
|
299
|
+
return typeof score === "number" ? `${verdict} · score ${score}` : verdict;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
/** `emitted ticket.classified` — the CloudEvents `type` is the identity. */
|
|
303
|
+
function emitEventLine(state: DerivedTaskState): string | null {
|
|
304
|
+
const emittedType = asString(state.outputSummary?.["type"]);
|
|
305
|
+
if (emittedType) return `emitted ${emittedType}`;
|
|
306
|
+
const configured = asString(asObject(state.inputSummary?.["event"])?.["type"]);
|
|
307
|
+
return configured ? `emitting ${configured}` : null;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
/** `sent via slack` / `delivery failed` — from `{channel, delivered}`. */
|
|
311
|
+
function notificationLine(state: DerivedTaskState): string | null {
|
|
312
|
+
const output = state.outputSummary;
|
|
313
|
+
const channel =
|
|
314
|
+
asString(output?.["channel"]) ?? asString(state.inputSummary?.["channel"]);
|
|
315
|
+
if (output && output["delivered"] === false) return "delivery failed";
|
|
316
|
+
if (output && channel) return `sent via ${channel}`;
|
|
317
|
+
return channel;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
/** `approve · by suresh` — the settled decision from the task output. */
|
|
321
|
+
function humanInputLine(output: JsonObject | null): string | null {
|
|
322
|
+
// The gating state is covered by the universal "Awaiting approval" line;
|
|
323
|
+
// this renders only the settled decision record.
|
|
324
|
+
const outcome = asString(output?.["outcome"]);
|
|
325
|
+
if (!outcome) return null;
|
|
326
|
+
const reviewer = asString(output?.["reviewer"]);
|
|
327
|
+
return reviewer ? `${outcome} · by ${reviewer}` : outcome;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
/** `waiting 10s` / `waited 10s` / `until <timestamp>`. */
|
|
331
|
+
function waitLine(state: DerivedTaskState): string | null {
|
|
332
|
+
const input = state.inputSummary;
|
|
333
|
+
if (!input) return null;
|
|
334
|
+
const verb = state.status === "running" ? "waiting" : "waited";
|
|
335
|
+
const duration = asObject(input["duration"]);
|
|
336
|
+
if (duration) {
|
|
337
|
+
const label = formatWaitDuration(duration);
|
|
338
|
+
return label ? `${verb} ${label}` : null;
|
|
339
|
+
}
|
|
340
|
+
const until = asString(input["until"]);
|
|
341
|
+
return until ? `${verb} until ${until}` : null;
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
/** `waiting for signal` / `signal received` — status-verbed. */
|
|
345
|
+
function listenLine(state: DerivedTaskState): string | null {
|
|
346
|
+
if (state.status === "running") return "waiting for signal";
|
|
347
|
+
if (state.status === "completed") return "signal received";
|
|
348
|
+
return null;
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
// ---------------------------------------------------------------------------
|
|
352
|
+
// Struct-reading helpers (defensive by construction)
|
|
353
|
+
// ---------------------------------------------------------------------------
|
|
354
|
+
|
|
355
|
+
function asString(value: JsonValue | undefined): string | null {
|
|
356
|
+
return typeof value === "string" && value.length > 0 ? value : null;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
function asObject(value: JsonValue | undefined): JsonObject | null {
|
|
360
|
+
return value !== null &&
|
|
361
|
+
value !== undefined &&
|
|
362
|
+
typeof value === "object" &&
|
|
363
|
+
!Array.isArray(value)
|
|
364
|
+
? (value as JsonObject)
|
|
365
|
+
: null;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
/**
|
|
369
|
+
* One-line snippet of an arbitrary JSON value: scalars verbatim (strings
|
|
370
|
+
* quoted), containers as a shape summary. Used where a kind's output has
|
|
371
|
+
* no documented structure to name (transform results, raw LLM text).
|
|
372
|
+
*/
|
|
373
|
+
export function valueSnippet(value: JsonValue): string {
|
|
374
|
+
if (value === null) return "null";
|
|
375
|
+
if (typeof value === "string") return `"${firstLine(value)}"`;
|
|
376
|
+
if (typeof value === "number" || typeof value === "boolean") {
|
|
377
|
+
return String(value);
|
|
378
|
+
}
|
|
379
|
+
if (Array.isArray(value)) {
|
|
380
|
+
return `[${value.length} ${value.length === 1 ? "item" : "items"}]`;
|
|
381
|
+
}
|
|
382
|
+
const keys = Object.keys(value);
|
|
383
|
+
// A single-field wrapper is usually an envelope (`{result: …}`) — unwrap
|
|
384
|
+
// one level so the snippet names the payload, not the wrapper.
|
|
385
|
+
if (keys.length === 1) {
|
|
386
|
+
const inner = value[keys[0]];
|
|
387
|
+
if (
|
|
388
|
+
inner === null ||
|
|
389
|
+
typeof inner === "string" ||
|
|
390
|
+
typeof inner === "number" ||
|
|
391
|
+
typeof inner === "boolean"
|
|
392
|
+
) {
|
|
393
|
+
return valueSnippet(inner);
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
return `{${keys.length} ${keys.length === 1 ? "field" : "fields"}}`;
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
/**
|
|
400
|
+
* Formats the WaitTaskConfig `Duration` shape (`{days, hours, minutes,
|
|
401
|
+
* seconds, milliseconds}`) via the shared duration formatter. Unknown or
|
|
402
|
+
* empty shapes yield `null`.
|
|
403
|
+
*/
|
|
404
|
+
function formatWaitDuration(duration: JsonObject): string | null {
|
|
405
|
+
const num = (key: string): number => {
|
|
406
|
+
const v = duration[key];
|
|
407
|
+
return typeof v === "number" && Number.isFinite(v) ? v : 0;
|
|
408
|
+
};
|
|
409
|
+
const totalMs =
|
|
410
|
+
num("days") * 86_400_000 +
|
|
411
|
+
num("hours") * 3_600_000 +
|
|
412
|
+
num("minutes") * 60_000 +
|
|
413
|
+
num("seconds") * 1_000 +
|
|
414
|
+
num("milliseconds");
|
|
415
|
+
return totalMs > 0 ? formatDuration(totalMs) : null;
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
function firstLine(text: string): string {
|
|
419
|
+
const nl = text.indexOf("\n");
|
|
420
|
+
return nl === -1 ? text : text.slice(0, nl);
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
function truncateLine(line: string): string {
|
|
424
|
+
return line.length > PREVIEW_LINE_MAX_CHARS
|
|
425
|
+
? `${line.slice(0, PREVIEW_LINE_MAX_CHARS - 1)}\u2026`
|
|
426
|
+
: line;
|
|
427
|
+
}
|