@stigmer/react 3.1.17 → 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/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/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/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__/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/workflow/WorkflowAgentExecutionDocument.tsx +283 -0
- package/src/workflow/WorkflowApprovalList.tsx +158 -0
- package/src/workflow/WorkflowArtifactDocument.tsx +257 -0
- package/src/workflow/WorkflowExecutionGraph.tsx +40 -78
- package/src/workflow/WorkflowExecutionViewer.tsx +610 -287
- package/src/workflow/WorkflowFileReviewList.tsx +1 -1
- package/src/workflow/WorkflowTaskApprovalCard.tsx +5 -4
- package/src/workflow/WorkflowTaskApprovalSummary.tsx +6 -6
- package/src/workflow/__tests__/WorkflowAgentExecutionDocument.test.tsx +651 -0
- package/src/workflow/__tests__/WorkflowApprovalList.test.tsx +229 -0
- package/src/workflow/__tests__/WorkflowArtifactDocument.test.tsx +90 -0
- package/src/workflow/__tests__/WorkflowArtifactsTab.test.tsx +85 -0
- package/src/workflow/__tests__/WorkflowChangesTab.test.tsx +113 -0
- package/src/workflow/__tests__/WorkflowExecutionViewer.approvals.test.tsx +473 -0
- package/src/workflow/__tests__/WorkflowExecutionViewer.reconciliation.test.tsx +632 -0
- package/src/workflow/__tests__/WorkflowTaskApprovalSummary.test.tsx +1 -1
- package/src/workflow/__tests__/WorkflowTaskThread.test.tsx +947 -0
- package/src/workflow/__tests__/WorkflowUsageTab.test.tsx +163 -0
- package/src/workflow/__tests__/agent-call-live-experience.test.ts +6 -53
- package/src/workflow/__tests__/derive-execution-overlays.test.ts +4 -0
- package/src/workflow/__tests__/deriveWorkflowArtifactItems.test.ts +71 -0
- package/src/workflow/__tests__/deriveWorkflowUsageItems.test.ts +132 -0
- package/src/workflow/__tests__/execution-graph.test.ts +8 -0
- package/src/workflow/__tests__/project-thread-items.test.ts +428 -0
- package/src/workflow/__tests__/structured-data-viewer.test.tsx +1 -1
- package/src/workflow/__tests__/task-approval.test.ts +149 -0
- package/src/workflow/__tests__/task-detail-io.test.ts +40 -0
- package/src/workflow/__tests__/task-presentation.test.ts +479 -0
- package/src/workflow/__tests__/useActiveTaskName.test.ts +4 -0
- package/src/workflow/__tests__/useApprovalBoundary.test.ts +158 -0
- package/src/workflow/__tests__/useExecutionAnnouncements.test.ts +4 -0
- package/src/workflow/__tests__/useFollowExecution.test.ts +2 -89
- package/src/workflow/__tests__/useWorkflowExecutionFileChanges.test.tsx +412 -0
- package/src/workflow/__tests__/useWorkflowExecutionPanel.test.ts +297 -0
- package/src/workflow/__tests__/useWorkflowExecutionRailViews.test.tsx +115 -0
- package/src/workflow/deriveWorkflowArtifactItems.ts +59 -0
- package/src/workflow/deriveWorkflowUsageItems.ts +73 -0
- package/src/workflow/diagnosis-document.ts +31 -0
- package/src/workflow/execution/index.ts +0 -15
- package/src/workflow/facets/WorkflowArtifactsTab.tsx +99 -0
- package/src/workflow/facets/WorkflowChangesTab.tsx +129 -0
- package/src/workflow/facets/WorkflowUsageTab.tsx +258 -0
- package/src/workflow/format-utils.ts +2 -3
- package/src/workflow/index.ts +106 -62
- package/src/workflow/inspector/index.ts +0 -4
- package/src/workflow/instance/WorkflowInstanceList.tsx +59 -41
- package/src/workflow/instance/__tests__/WorkflowInstanceList.test.tsx +156 -0
- package/src/workflow/task-detail/index.ts +11 -0
- package/src/workflow/task-detail/task-approval.ts +158 -0
- package/src/workflow/task-detail/task-detail-io.ts +65 -0
- package/src/workflow/thread/WorkflowTaskThread.tsx +845 -0
- package/src/workflow/thread/project-thread-items.ts +235 -0
- package/src/workflow/thread/task-presentation.ts +427 -0
- package/src/workflow/thread/thread-presentation.ts +59 -0
- package/src/workflow/thread/useWorkflowThreadItems.ts +34 -0
- package/src/workflow/useApprovalBoundary.ts +72 -0
- package/src/workflow/useFollowExecution.ts +0 -26
- package/src/workflow/useWorkflowArtifactDownload.ts +68 -0
- package/src/workflow/useWorkflowExecutionActions.ts +3 -2
- package/src/workflow/useWorkflowExecutionFileChanges.ts +341 -0
- package/src/workflow/useWorkflowExecutionGraph.ts +3 -43
- package/src/workflow/useWorkflowExecutionPanel.ts +292 -0
- package/src/workflow/useWorkflowExecutionRailViews.tsx +173 -0
- package/src/workspace/FileViewer.tsx +3 -3
- package/src/workspace/PanelChip.tsx +103 -0
- package/src/workspace/WorkspaceSurface.tsx +50 -6
- package/src/workspace/__tests__/WorkspaceSurface.test.tsx +110 -0
- package/src/workspace/index.ts +3 -0
- package/styles.css +1 -1
- package/workflow/WorkflowAgentExecutionDocument.d.ts +79 -0
- package/workflow/WorkflowAgentExecutionDocument.d.ts.map +1 -0
- package/workflow/WorkflowAgentExecutionDocument.js +87 -0
- package/workflow/WorkflowAgentExecutionDocument.js.map +1 -0
- package/workflow/WorkflowApprovalList.d.ts +62 -0
- package/workflow/WorkflowApprovalList.d.ts.map +1 -0
- package/workflow/WorkflowApprovalList.js +52 -0
- package/workflow/WorkflowApprovalList.js.map +1 -0
- package/workflow/WorkflowArtifactDocument.d.ts +29 -0
- package/workflow/WorkflowArtifactDocument.d.ts.map +1 -0
- package/workflow/WorkflowArtifactDocument.js +89 -0
- package/workflow/WorkflowArtifactDocument.js.map +1 -0
- package/workflow/WorkflowExecutionGraph.d.ts +15 -13
- package/workflow/WorkflowExecutionGraph.d.ts.map +1 -1
- package/workflow/WorkflowExecutionGraph.js +18 -53
- package/workflow/WorkflowExecutionGraph.js.map +1 -1
- package/workflow/WorkflowExecutionViewer.d.ts +8 -5
- package/workflow/WorkflowExecutionViewer.d.ts.map +1 -1
- package/workflow/WorkflowExecutionViewer.js +329 -54
- package/workflow/WorkflowExecutionViewer.js.map +1 -1
- package/workflow/WorkflowFileReviewList.d.ts +1 -1
- package/workflow/WorkflowFileReviewList.js +1 -1
- package/workflow/WorkflowTaskApprovalCard.d.ts +4 -3
- package/workflow/WorkflowTaskApprovalCard.d.ts.map +1 -1
- package/workflow/WorkflowTaskApprovalCard.js +5 -4
- package/workflow/WorkflowTaskApprovalCard.js.map +1 -1
- package/workflow/WorkflowTaskApprovalSummary.d.ts +6 -6
- package/workflow/WorkflowTaskApprovalSummary.js +5 -5
- package/workflow/deriveWorkflowArtifactItems.d.ts +30 -0
- package/workflow/deriveWorkflowArtifactItems.d.ts.map +1 -0
- package/workflow/deriveWorkflowArtifactItems.js +38 -0
- package/workflow/deriveWorkflowArtifactItems.js.map +1 -0
- package/workflow/deriveWorkflowUsageItems.d.ts +36 -0
- package/workflow/deriveWorkflowUsageItems.d.ts.map +1 -0
- package/workflow/deriveWorkflowUsageItems.js +50 -0
- package/workflow/deriveWorkflowUsageItems.js.map +1 -0
- package/workflow/diagnosis-document.d.ts +17 -0
- package/workflow/diagnosis-document.d.ts.map +1 -0
- package/workflow/diagnosis-document.js +29 -0
- package/workflow/diagnosis-document.js.map +1 -0
- package/workflow/execution/index.d.ts +0 -2
- package/workflow/execution/index.d.ts.map +1 -1
- package/workflow/execution/index.js +0 -2
- package/workflow/execution/index.js.map +1 -1
- package/workflow/facets/WorkflowArtifactsTab.d.ts +26 -0
- package/workflow/facets/WorkflowArtifactsTab.d.ts.map +1 -0
- package/workflow/facets/WorkflowArtifactsTab.js +34 -0
- package/workflow/facets/WorkflowArtifactsTab.js.map +1 -0
- package/workflow/facets/WorkflowChangesTab.d.ts +37 -0
- package/workflow/facets/WorkflowChangesTab.d.ts.map +1 -0
- package/workflow/facets/WorkflowChangesTab.js +50 -0
- package/workflow/facets/WorkflowChangesTab.js.map +1 -0
- package/workflow/facets/WorkflowUsageTab.d.ts +27 -0
- package/workflow/facets/WorkflowUsageTab.d.ts.map +1 -0
- package/workflow/facets/WorkflowUsageTab.js +87 -0
- package/workflow/facets/WorkflowUsageTab.js.map +1 -0
- package/workflow/format-utils.d.ts +2 -3
- package/workflow/format-utils.d.ts.map +1 -1
- package/workflow/format-utils.js +2 -3
- package/workflow/format-utils.js.map +1 -1
- package/workflow/index.d.ts +21 -10
- package/workflow/index.d.ts.map +1 -1
- package/workflow/index.js +29 -14
- package/workflow/index.js.map +1 -1
- package/workflow/inspector/index.d.ts +0 -2
- package/workflow/inspector/index.d.ts.map +1 -1
- package/workflow/inspector/index.js +0 -2
- package/workflow/inspector/index.js.map +1 -1
- package/workflow/instance/WorkflowInstanceList.d.ts.map +1 -1
- package/workflow/instance/WorkflowInstanceList.js +11 -3
- package/workflow/instance/WorkflowInstanceList.js.map +1 -1
- package/workflow/task-detail/StructuredDataViewer.d.ts.map +1 -0
- package/workflow/task-detail/StructuredDataViewer.js.map +1 -0
- package/workflow/task-detail/index.d.ts +4 -0
- package/workflow/task-detail/index.d.ts.map +1 -0
- package/workflow/task-detail/index.js +4 -0
- package/workflow/task-detail/index.js.map +1 -0
- package/workflow/task-detail/task-approval.d.ts +89 -0
- package/workflow/task-detail/task-approval.d.ts.map +1 -0
- package/workflow/task-detail/task-approval.js +84 -0
- package/workflow/task-detail/task-approval.js.map +1 -0
- package/workflow/task-detail/task-detail-io.d.ts +39 -0
- package/workflow/task-detail/task-detail-io.d.ts.map +1 -0
- package/workflow/task-detail/task-detail-io.js +42 -0
- package/workflow/task-detail/task-detail-io.js.map +1 -0
- package/workflow/thread/WorkflowTaskThread.d.ts +91 -0
- package/workflow/thread/WorkflowTaskThread.d.ts.map +1 -0
- package/workflow/thread/WorkflowTaskThread.js +318 -0
- package/workflow/thread/WorkflowTaskThread.js.map +1 -0
- package/workflow/thread/project-thread-items.d.ts +108 -0
- package/workflow/thread/project-thread-items.d.ts.map +1 -0
- package/workflow/thread/project-thread-items.js +126 -0
- package/workflow/thread/project-thread-items.js.map +1 -0
- package/workflow/thread/task-presentation.d.ts +73 -0
- package/workflow/thread/task-presentation.d.ts.map +1 -0
- package/workflow/thread/task-presentation.js +331 -0
- package/workflow/thread/task-presentation.js.map +1 -0
- package/workflow/thread/thread-presentation.d.ts +28 -0
- package/workflow/thread/thread-presentation.d.ts.map +1 -0
- package/workflow/thread/thread-presentation.js +28 -0
- package/workflow/thread/thread-presentation.js.map +1 -0
- package/workflow/thread/useWorkflowThreadItems.d.ts +16 -0
- package/workflow/thread/useWorkflowThreadItems.d.ts.map +1 -0
- package/workflow/thread/useWorkflowThreadItems.js +22 -0
- package/workflow/thread/useWorkflowThreadItems.js.map +1 -0
- package/workflow/useApprovalBoundary.d.ts +38 -0
- package/workflow/useApprovalBoundary.d.ts.map +1 -0
- package/workflow/useApprovalBoundary.js +55 -0
- package/workflow/useApprovalBoundary.js.map +1 -0
- package/workflow/useFollowExecution.d.ts +0 -20
- package/workflow/useFollowExecution.d.ts.map +1 -1
- package/workflow/useFollowExecution.js +0 -17
- package/workflow/useFollowExecution.js.map +1 -1
- package/workflow/useWorkflowArtifactDownload.d.ts +28 -0
- package/workflow/useWorkflowArtifactDownload.d.ts.map +1 -0
- package/workflow/useWorkflowArtifactDownload.js +45 -0
- package/workflow/useWorkflowArtifactDownload.js.map +1 -0
- package/workflow/useWorkflowExecutionActions.d.ts +3 -2
- package/workflow/useWorkflowExecutionActions.d.ts.map +1 -1
- package/workflow/useWorkflowExecutionActions.js.map +1 -1
- package/workflow/useWorkflowExecutionFileChanges.d.ts +107 -0
- package/workflow/useWorkflowExecutionFileChanges.d.ts.map +1 -0
- package/workflow/useWorkflowExecutionFileChanges.js +244 -0
- package/workflow/useWorkflowExecutionFileChanges.js.map +1 -0
- package/workflow/useWorkflowExecutionGraph.d.ts +1 -14
- package/workflow/useWorkflowExecutionGraph.d.ts.map +1 -1
- package/workflow/useWorkflowExecutionGraph.js +2 -25
- package/workflow/useWorkflowExecutionGraph.js.map +1 -1
- package/workflow/useWorkflowExecutionPanel.d.ts +108 -0
- package/workflow/useWorkflowExecutionPanel.d.ts.map +1 -0
- package/workflow/useWorkflowExecutionPanel.js +103 -0
- package/workflow/useWorkflowExecutionPanel.js.map +1 -0
- package/workflow/useWorkflowExecutionRailViews.d.ts +46 -0
- package/workflow/useWorkflowExecutionRailViews.d.ts.map +1 -0
- package/workflow/useWorkflowExecutionRailViews.js +81 -0
- package/workflow/useWorkflowExecutionRailViews.js.map +1 -0
- package/workspace/FileViewer.d.ts +1 -1
- package/workspace/FileViewer.js +3 -3
- package/workspace/FileViewer.js.map +1 -1
- package/workspace/PanelChip.d.ts +27 -0
- package/workspace/PanelChip.d.ts.map +1 -0
- package/workspace/PanelChip.js +42 -0
- package/workspace/PanelChip.js.map +1 -0
- package/workspace/WorkspaceSurface.d.ts +25 -1
- package/workspace/WorkspaceSurface.d.ts.map +1 -1
- package/workspace/WorkspaceSurface.js +21 -9
- package/workspace/WorkspaceSurface.js.map +1 -1
- package/workspace/index.d.ts +3 -1
- package/workspace/index.d.ts.map +1 -1
- package/workspace/index.js +1 -0
- package/workspace/index.js.map +1 -1
- package/execution/ThreadSelectionContext.d.ts +0 -17
- package/execution/ThreadSelectionContext.d.ts.map +0 -1
- package/execution/ThreadSelectionContext.js +0 -18
- package/execution/ThreadSelectionContext.js.map +0 -1
- package/execution/useThreadSelection.d.ts +0 -35
- package/execution/useThreadSelection.d.ts.map +0 -1
- package/execution/useThreadSelection.js +0 -65
- package/execution/useThreadSelection.js.map +0 -1
- package/internal/store/selection-store.d.ts +0 -53
- package/internal/store/selection-store.d.ts.map +0 -1
- package/internal/store/selection-store.js +0 -88
- package/internal/store/selection-store.js.map +0 -1
- package/session/artifact-document.d.ts.map +0 -1
- package/session/artifact-document.js +0 -22
- package/session/artifact-document.js.map +0 -1
- package/session/facets/InspectTab.d.ts +0 -13
- package/session/facets/InspectTab.d.ts.map +0 -1
- package/session/facets/InspectTab.js +0 -19
- package/session/facets/InspectTab.js.map +0 -1
- package/src/execution/ThreadSelectionContext.tsx +0 -20
- package/src/execution/useThreadSelection.ts +0 -95
- package/src/internal/store/__tests__/selection-store.test.ts +0 -115
- package/src/internal/store/selection-store.ts +0 -112
- package/src/session/artifact-document.ts +0 -23
- package/src/session/facets/InspectTab.tsx +0 -57
- package/src/workflow/WorkflowExecutionApprovalCard.tsx +0 -154
- package/src/workflow/WorkflowExecutionArtifactPanel.tsx +0 -107
- package/src/workflow/WorkflowExecutionCostPanel.tsx +0 -120
- package/src/workflow/WorkflowExecutionTaskPanel.tsx +0 -129
- package/src/workflow/WorkflowExecutionTimeline.tsx +0 -151
- package/src/workflow/WorkflowExecutionTimelineEvent.tsx +0 -497
- package/src/workflow/__tests__/ExecutionInspector.test.tsx +0 -155
- package/src/workflow/__tests__/WorkflowExecutionApprovalCard.test.tsx +0 -129
- package/src/workflow/__tests__/derive-task-detail.test.ts +0 -1265
- package/src/workflow/__tests__/derive-waterfall-entries.test.ts +0 -521
- package/src/workflow/__tests__/execution-inspector.test.tsx +0 -332
- package/src/workflow/execution/derive-waterfall-entries.ts +0 -377
- package/src/workflow/execution/useWaterfallEntries.ts +0 -125
- package/src/workflow/execution-inspector/AgentCallTab.tsx +0 -169
- package/src/workflow/execution-inspector/ErrorTab.tsx +0 -110
- package/src/workflow/execution-inspector/EventLogTab.tsx +0 -79
- package/src/workflow/execution-inspector/ExecutionInspector.tsx +0 -341
- package/src/workflow/execution-inspector/InputOutputTab.tsx +0 -325
- package/src/workflow/execution-inspector/RetriesTab.tsx +0 -68
- package/src/workflow/execution-inspector/SummaryTab.tsx +0 -62
- package/src/workflow/execution-inspector/derive-task-detail.ts +0 -584
- package/src/workflow/execution-inspector/index.ts +0 -14
- package/src/workflow/execution-inspector/useExecutionTaskDetail.ts +0 -55
- package/src/workflow/inspector/ExecutionInspectorAdapter.tsx +0 -40
- package/src/workflow/waterfall/WaterfallBar.tsx +0 -167
- package/src/workflow/waterfall/WaterfallRow.tsx +0 -112
- package/src/workflow/waterfall/WaterfallScale.tsx +0 -52
- package/src/workflow/waterfall/WaterfallTimeline.tsx +0 -138
- package/src/workflow/waterfall/WaterfallTooltip.tsx +0 -74
- package/src/workflow/waterfall/index.ts +0 -5
- package/workflow/WorkflowExecutionApprovalCard.d.ts +0 -34
- package/workflow/WorkflowExecutionApprovalCard.d.ts.map +0 -1
- package/workflow/WorkflowExecutionApprovalCard.js +0 -46
- package/workflow/WorkflowExecutionApprovalCard.js.map +0 -1
- package/workflow/WorkflowExecutionArtifactPanel.d.ts +0 -15
- package/workflow/WorkflowExecutionArtifactPanel.d.ts.map +0 -1
- package/workflow/WorkflowExecutionArtifactPanel.js +0 -46
- package/workflow/WorkflowExecutionArtifactPanel.js.map +0 -1
- package/workflow/WorkflowExecutionCostPanel.d.ts +0 -18
- package/workflow/WorkflowExecutionCostPanel.d.ts.map +0 -1
- package/workflow/WorkflowExecutionCostPanel.js +0 -31
- package/workflow/WorkflowExecutionCostPanel.js.map +0 -1
- package/workflow/WorkflowExecutionTaskPanel.d.ts +0 -24
- package/workflow/WorkflowExecutionTaskPanel.d.ts.map +0 -1
- package/workflow/WorkflowExecutionTaskPanel.js +0 -51
- package/workflow/WorkflowExecutionTaskPanel.js.map +0 -1
- package/workflow/WorkflowExecutionTimeline.d.ts +0 -42
- package/workflow/WorkflowExecutionTimeline.d.ts.map +0 -1
- package/workflow/WorkflowExecutionTimeline.js +0 -52
- package/workflow/WorkflowExecutionTimeline.js.map +0 -1
- package/workflow/WorkflowExecutionTimelineEvent.d.ts +0 -25
- package/workflow/WorkflowExecutionTimelineEvent.d.ts.map +0 -1
- package/workflow/WorkflowExecutionTimelineEvent.js +0 -179
- package/workflow/WorkflowExecutionTimelineEvent.js.map +0 -1
- package/workflow/execution/derive-waterfall-entries.d.ts +0 -85
- package/workflow/execution/derive-waterfall-entries.d.ts.map +0 -1
- package/workflow/execution/derive-waterfall-entries.js +0 -268
- package/workflow/execution/derive-waterfall-entries.js.map +0 -1
- package/workflow/execution/useWaterfallEntries.d.ts +0 -25
- package/workflow/execution/useWaterfallEntries.d.ts.map +0 -1
- package/workflow/execution/useWaterfallEntries.js +0 -67
- package/workflow/execution/useWaterfallEntries.js.map +0 -1
- package/workflow/execution-inspector/AgentCallTab.d.ts +0 -21
- package/workflow/execution-inspector/AgentCallTab.d.ts.map +0 -1
- package/workflow/execution-inspector/AgentCallTab.js +0 -36
- package/workflow/execution-inspector/AgentCallTab.js.map +0 -1
- package/workflow/execution-inspector/ErrorTab.d.ts +0 -9
- package/workflow/execution-inspector/ErrorTab.d.ts.map +0 -1
- package/workflow/execution-inspector/ErrorTab.js +0 -29
- package/workflow/execution-inspector/ErrorTab.js.map +0 -1
- package/workflow/execution-inspector/EventLogTab.d.ts +0 -11
- package/workflow/execution-inspector/EventLogTab.d.ts.map +0 -1
- package/workflow/execution-inspector/EventLogTab.js +0 -47
- package/workflow/execution-inspector/EventLogTab.js.map +0 -1
- package/workflow/execution-inspector/ExecutionInspector.d.ts +0 -69
- package/workflow/execution-inspector/ExecutionInspector.d.ts.map +0 -1
- package/workflow/execution-inspector/ExecutionInspector.js +0 -145
- package/workflow/execution-inspector/ExecutionInspector.js.map +0 -1
- package/workflow/execution-inspector/InputOutputTab.d.ts +0 -20
- package/workflow/execution-inspector/InputOutputTab.d.ts.map +0 -1
- package/workflow/execution-inspector/InputOutputTab.js +0 -124
- package/workflow/execution-inspector/InputOutputTab.js.map +0 -1
- package/workflow/execution-inspector/RetriesTab.d.ts +0 -7
- package/workflow/execution-inspector/RetriesTab.d.ts.map +0 -1
- package/workflow/execution-inspector/RetriesTab.js +0 -11
- package/workflow/execution-inspector/RetriesTab.js.map +0 -1
- package/workflow/execution-inspector/StructuredDataViewer.d.ts.map +0 -1
- package/workflow/execution-inspector/StructuredDataViewer.js.map +0 -1
- package/workflow/execution-inspector/SummaryTab.d.ts +0 -7
- package/workflow/execution-inspector/SummaryTab.d.ts.map +0 -1
- package/workflow/execution-inspector/SummaryTab.js +0 -10
- package/workflow/execution-inspector/SummaryTab.js.map +0 -1
- package/workflow/execution-inspector/derive-task-detail.d.ts +0 -140
- package/workflow/execution-inspector/derive-task-detail.d.ts.map +0 -1
- package/workflow/execution-inspector/derive-task-detail.js +0 -366
- package/workflow/execution-inspector/derive-task-detail.js.map +0 -1
- package/workflow/execution-inspector/index.d.ts +0 -4
- package/workflow/execution-inspector/index.d.ts.map +0 -1
- package/workflow/execution-inspector/index.js +0 -4
- package/workflow/execution-inspector/index.js.map +0 -1
- package/workflow/execution-inspector/useExecutionTaskDetail.d.ts +0 -38
- package/workflow/execution-inspector/useExecutionTaskDetail.d.ts.map +0 -1
- package/workflow/execution-inspector/useExecutionTaskDetail.js +0 -37
- package/workflow/execution-inspector/useExecutionTaskDetail.js.map +0 -1
- package/workflow/inspector/ExecutionInspectorAdapter.d.ts +0 -26
- package/workflow/inspector/ExecutionInspectorAdapter.d.ts.map +0 -1
- package/workflow/inspector/ExecutionInspectorAdapter.js +0 -23
- package/workflow/inspector/ExecutionInspectorAdapter.js.map +0 -1
- package/workflow/waterfall/WaterfallBar.d.ts +0 -19
- package/workflow/waterfall/WaterfallBar.d.ts.map +0 -1
- package/workflow/waterfall/WaterfallBar.js +0 -70
- package/workflow/waterfall/WaterfallBar.js.map +0 -1
- package/workflow/waterfall/WaterfallRow.d.ts +0 -18
- package/workflow/waterfall/WaterfallRow.d.ts.map +0 -1
- package/workflow/waterfall/WaterfallRow.js +0 -45
- package/workflow/waterfall/WaterfallRow.js.map +0 -1
- package/workflow/waterfall/WaterfallScale.d.ts +0 -14
- package/workflow/waterfall/WaterfallScale.d.ts.map +0 -1
- package/workflow/waterfall/WaterfallScale.js +0 -22
- package/workflow/waterfall/WaterfallScale.js.map +0 -1
- package/workflow/waterfall/WaterfallTimeline.d.ts +0 -46
- package/workflow/waterfall/WaterfallTimeline.d.ts.map +0 -1
- package/workflow/waterfall/WaterfallTimeline.js +0 -60
- package/workflow/waterfall/WaterfallTimeline.js.map +0 -1
- package/workflow/waterfall/WaterfallTooltip.d.ts +0 -15
- package/workflow/waterfall/WaterfallTooltip.d.ts.map +0 -1
- package/workflow/waterfall/WaterfallTooltip.js +0 -20
- package/workflow/waterfall/WaterfallTooltip.js.map +0 -1
- package/workflow/waterfall/index.d.ts +0 -6
- package/workflow/waterfall/index.d.ts.map +0 -1
- package/workflow/waterfall/index.js +0 -6
- package/workflow/waterfall/index.js.map +0 -1
- /package/src/workflow/{execution-inspector → task-detail}/StructuredDataViewer.tsx +0 -0
- /package/workflow/{execution-inspector → task-detail}/StructuredDataViewer.d.ts +0 -0
- /package/workflow/{execution-inspector → task-detail}/StructuredDataViewer.js +0 -0
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
import { describe, it, expect, vi } from "vitest";
|
|
2
2
|
import { create } from "@bufbuild/protobuf";
|
|
3
|
+
import type { JsonObject } from "@bufbuild/protobuf";
|
|
3
4
|
import {
|
|
4
5
|
WorkflowExecutionEventSchema,
|
|
5
6
|
WorkflowEventType,
|
|
6
7
|
TaskStartedPayloadSchema,
|
|
7
8
|
TaskCompletedPayloadSchema,
|
|
9
|
+
TaskFailedPayloadSchema,
|
|
10
|
+
AgentCallStartedPayloadSchema,
|
|
11
|
+
AgentCallProgressPayloadSchema,
|
|
8
12
|
ApprovalRequestedPayloadSchema,
|
|
9
13
|
ApprovalResolvedPayloadSchema,
|
|
10
14
|
} from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/event_pb";
|
|
11
15
|
import type { WorkflowExecutionEvent } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/event_pb";
|
|
16
|
+
import { WorkflowTaskKind } from "@stigmer/protos/ai/stigmer/agentic/workflow/v1/enum_pb";
|
|
17
|
+
import { ExecutionPhase as AgentExecutionPhase } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
12
18
|
import { WorkflowExecutionEventStore } from "../workflow-execution-event-store";
|
|
13
19
|
|
|
14
20
|
// ---------------------------------------------------------------------------
|
|
@@ -18,7 +24,11 @@ import { WorkflowExecutionEventStore } from "../workflow-execution-event-store";
|
|
|
18
24
|
function makeTaskStartedEvent(
|
|
19
25
|
seq: number,
|
|
20
26
|
taskName: string,
|
|
21
|
-
opts: {
|
|
27
|
+
opts: {
|
|
28
|
+
taskKind?: number;
|
|
29
|
+
attemptNumber?: number;
|
|
30
|
+
inputSummary?: JsonObject;
|
|
31
|
+
} = {},
|
|
22
32
|
): WorkflowExecutionEvent {
|
|
23
33
|
return create(WorkflowExecutionEventSchema, {
|
|
24
34
|
eventId: `evt-${seq}`,
|
|
@@ -31,6 +41,7 @@ function makeTaskStartedEvent(
|
|
|
31
41
|
value: create(TaskStartedPayloadSchema, {
|
|
32
42
|
taskKind: opts.taskKind ?? 1,
|
|
33
43
|
attemptNumber: opts.attemptNumber ?? 1,
|
|
44
|
+
inputSummary: opts.inputSummary,
|
|
34
45
|
}),
|
|
35
46
|
},
|
|
36
47
|
});
|
|
@@ -39,7 +50,12 @@ function makeTaskStartedEvent(
|
|
|
39
50
|
function makeTaskCompletedEvent(
|
|
40
51
|
seq: number,
|
|
41
52
|
taskName: string,
|
|
42
|
-
opts: {
|
|
53
|
+
opts: {
|
|
54
|
+
durationMs?: bigint;
|
|
55
|
+
costMicros?: bigint;
|
|
56
|
+
tokensUsed?: bigint;
|
|
57
|
+
outputSummary?: JsonObject;
|
|
58
|
+
} = {},
|
|
43
59
|
): WorkflowExecutionEvent {
|
|
44
60
|
return create(WorkflowExecutionEventSchema, {
|
|
45
61
|
eventId: `evt-${seq}`,
|
|
@@ -54,6 +70,7 @@ function makeTaskCompletedEvent(
|
|
|
54
70
|
durationMs: opts.durationMs ?? BigInt(100),
|
|
55
71
|
costMicros: opts.costMicros ?? BigInt(500),
|
|
56
72
|
tokensUsed: opts.tokensUsed ?? BigInt(200),
|
|
73
|
+
outputSummary: opts.outputSummary,
|
|
57
74
|
}),
|
|
58
75
|
},
|
|
59
76
|
});
|
|
@@ -98,6 +115,84 @@ function makeApprovalResolvedEvent(
|
|
|
98
115
|
});
|
|
99
116
|
}
|
|
100
117
|
|
|
118
|
+
function makeTaskFailedEvent(
|
|
119
|
+
seq: number,
|
|
120
|
+
taskName: string,
|
|
121
|
+
opts: { willRetry?: boolean; attemptNumber?: number; error?: string } = {},
|
|
122
|
+
): WorkflowExecutionEvent {
|
|
123
|
+
return create(WorkflowExecutionEventSchema, {
|
|
124
|
+
eventId: `evt-${seq}`,
|
|
125
|
+
sequenceNumber: BigInt(seq),
|
|
126
|
+
occurredAt: "2026-05-22T00:00:00Z",
|
|
127
|
+
taskName,
|
|
128
|
+
eventType: WorkflowEventType.task_failed,
|
|
129
|
+
payload: {
|
|
130
|
+
case: "taskFailed",
|
|
131
|
+
value: create(TaskFailedPayloadSchema, {
|
|
132
|
+
taskKind: WorkflowTaskKind.agent_call,
|
|
133
|
+
willRetry: opts.willRetry ?? false,
|
|
134
|
+
attemptNumber: opts.attemptNumber ?? 1,
|
|
135
|
+
error: opts.error ?? "boom",
|
|
136
|
+
durationMs: BigInt(100),
|
|
137
|
+
}),
|
|
138
|
+
},
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
function makeAgentCallStartedEvent(
|
|
143
|
+
seq: number,
|
|
144
|
+
taskName: string,
|
|
145
|
+
opts: { childExecutionId?: string; agentSlug?: string } = {},
|
|
146
|
+
): WorkflowExecutionEvent {
|
|
147
|
+
return create(WorkflowExecutionEventSchema, {
|
|
148
|
+
eventId: `evt-${seq}`,
|
|
149
|
+
sequenceNumber: BigInt(seq),
|
|
150
|
+
occurredAt: "2026-05-22T00:00:00Z",
|
|
151
|
+
taskName,
|
|
152
|
+
eventType: WorkflowEventType.agent_call_started,
|
|
153
|
+
payload: {
|
|
154
|
+
case: "agentCallStarted",
|
|
155
|
+
value: create(AgentCallStartedPayloadSchema, {
|
|
156
|
+
childExecutionId: opts.childExecutionId ?? "aex_child_1",
|
|
157
|
+
agentSlug: opts.agentSlug ?? "helper",
|
|
158
|
+
messageSummary: "do the thing",
|
|
159
|
+
}),
|
|
160
|
+
},
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* The REAL event shape the call-agent orchestrator emits on its 15s poll —
|
|
166
|
+
* `agentPhase` is the child AgentExecution's phase. The store derives the
|
|
167
|
+
* parent task's `waiting_approval` state from it (child gates are surfaced
|
|
168
|
+
* snapshot-only; no approval_requested event exists for agent_call tasks).
|
|
169
|
+
*/
|
|
170
|
+
function makeAgentCallProgressEvent(
|
|
171
|
+
seq: number,
|
|
172
|
+
taskName: string,
|
|
173
|
+
agentPhase: AgentExecutionPhase,
|
|
174
|
+
opts: { childExecutionId?: string; currentToolName?: string } = {},
|
|
175
|
+
): WorkflowExecutionEvent {
|
|
176
|
+
return create(WorkflowExecutionEventSchema, {
|
|
177
|
+
eventId: `evt-${seq}`,
|
|
178
|
+
sequenceNumber: BigInt(seq),
|
|
179
|
+
occurredAt: "2026-05-22T00:00:00Z",
|
|
180
|
+
taskName,
|
|
181
|
+
eventType: WorkflowEventType.agent_call_progress,
|
|
182
|
+
payload: {
|
|
183
|
+
case: "agentCallProgress",
|
|
184
|
+
value: create(AgentCallProgressPayloadSchema, {
|
|
185
|
+
childExecutionId: opts.childExecutionId ?? "aex_child_1",
|
|
186
|
+
agentPhase,
|
|
187
|
+
currentToolName: opts.currentToolName ?? "",
|
|
188
|
+
tokensConsumed: BigInt(0),
|
|
189
|
+
messagesCount: 0,
|
|
190
|
+
toolCallsCount: 0,
|
|
191
|
+
}),
|
|
192
|
+
},
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
|
|
101
196
|
// ---------------------------------------------------------------------------
|
|
102
197
|
// Tests
|
|
103
198
|
// ---------------------------------------------------------------------------
|
|
@@ -231,11 +326,208 @@ describe("WorkflowExecutionEventStore", () => {
|
|
|
231
326
|
});
|
|
232
327
|
|
|
233
328
|
it("approvalRequested without prior taskStarted is no-op (prev is undefined)", () => {
|
|
329
|
+
const states = new WorkflowExecutionEventStore();
|
|
330
|
+
states.appendEvents([makeApprovalRequestedEvent(1, "unknownTask")]);
|
|
331
|
+
|
|
332
|
+
expect(states.getTaskStates().has("unknownTask")).toBe(false);
|
|
333
|
+
});
|
|
334
|
+
});
|
|
335
|
+
|
|
336
|
+
// T06: the gate's request/resolution payloads are captured on the derived
|
|
337
|
+
// state — the thread card's in-place review surface reads them, so the
|
|
338
|
+
// capture must be reference-stable (structural sharing) and survive the
|
|
339
|
+
// task's settlement, while a restart resets it (a new attempt re-emits).
|
|
340
|
+
describe("deriveTaskStates — human_input gate capture (T06)", () => {
|
|
341
|
+
it("captures the approval_requested payload, reference-stable across unrelated appends", () => {
|
|
234
342
|
const store = new WorkflowExecutionEventStore();
|
|
235
|
-
store.appendEvents([
|
|
343
|
+
store.appendEvents([
|
|
344
|
+
makeTaskStartedEvent(1, "reviewGate", { taskKind: 16 }),
|
|
345
|
+
makeApprovalRequestedEvent(2, "reviewGate", "Ship it?"),
|
|
346
|
+
]);
|
|
347
|
+
const first = store.getTaskStates().get("reviewGate")!.approvalRequest;
|
|
348
|
+
expect(first?.prompt).toBe("Ship it?");
|
|
349
|
+
|
|
350
|
+
// An unrelated task's event invalidates the cache and re-derives the
|
|
351
|
+
// whole map — the captured payload must keep its identity, or every
|
|
352
|
+
// memoized gating card would re-render per stream append.
|
|
353
|
+
store.appendEvents([makeTaskStartedEvent(3, "other-task", { taskKind: 1 })]);
|
|
354
|
+
expect(store.getTaskStates().get("reviewGate")!.approvalRequest).toBe(first);
|
|
355
|
+
});
|
|
236
356
|
|
|
237
|
-
|
|
238
|
-
|
|
357
|
+
it("captures the approval_resolved payload and keeps both records through settlement", () => {
|
|
358
|
+
const store = new WorkflowExecutionEventStore();
|
|
359
|
+
store.appendEvents([
|
|
360
|
+
makeTaskStartedEvent(1, "reviewGate", { taskKind: 16 }),
|
|
361
|
+
makeApprovalRequestedEvent(2, "reviewGate"),
|
|
362
|
+
makeApprovalResolvedEvent(3, "reviewGate", { resolvedBy: "alice" }),
|
|
363
|
+
makeTaskCompletedEvent(4, "reviewGate"),
|
|
364
|
+
]);
|
|
365
|
+
|
|
366
|
+
const task = store.getTaskStates().get("reviewGate")!;
|
|
367
|
+
expect(task.status).toBe("completed");
|
|
368
|
+
expect(task.approvalRequest?.prompt).toBe("Please review");
|
|
369
|
+
expect(task.approvalResolution?.resolvedBy).toBe("alice");
|
|
370
|
+
});
|
|
371
|
+
|
|
372
|
+
it("a restart resets the gate record — a new attempt re-emits its own request", () => {
|
|
373
|
+
const store = new WorkflowExecutionEventStore();
|
|
374
|
+
store.appendEvents([
|
|
375
|
+
makeTaskStartedEvent(1, "reviewGate", { taskKind: 16 }),
|
|
376
|
+
makeApprovalRequestedEvent(2, "reviewGate"),
|
|
377
|
+
makeApprovalResolvedEvent(3, "reviewGate"),
|
|
378
|
+
makeTaskStartedEvent(4, "reviewGate", { taskKind: 16, attemptNumber: 2 }),
|
|
379
|
+
]);
|
|
380
|
+
|
|
381
|
+
const task = store.getTaskStates().get("reviewGate")!;
|
|
382
|
+
expect(task.approvalRequest).toBeNull();
|
|
383
|
+
expect(task.approvalResolution).toBeNull();
|
|
384
|
+
});
|
|
385
|
+
|
|
386
|
+
it("a fresh request clears a stale resolution (re-gated task never reports the old decision)", () => {
|
|
387
|
+
const store = new WorkflowExecutionEventStore();
|
|
388
|
+
store.appendEvents([
|
|
389
|
+
makeTaskStartedEvent(1, "reviewGate", { taskKind: 16 }),
|
|
390
|
+
makeApprovalRequestedEvent(2, "reviewGate", "First review"),
|
|
391
|
+
makeApprovalResolvedEvent(3, "reviewGate"),
|
|
392
|
+
makeApprovalRequestedEvent(4, "reviewGate", "Second review"),
|
|
393
|
+
]);
|
|
394
|
+
|
|
395
|
+
const task = store.getTaskStates().get("reviewGate")!;
|
|
396
|
+
expect(task.status).toBe("waiting_approval");
|
|
397
|
+
expect(task.approvalRequest?.prompt).toBe("Second review");
|
|
398
|
+
expect(task.approvalResolution).toBeNull();
|
|
399
|
+
});
|
|
400
|
+
});
|
|
401
|
+
|
|
402
|
+
// Child gates are surfaced snapshot-only (no approval_requested event for
|
|
403
|
+
// agent_call tasks) — the parent task's waiting_approval state is DERIVED
|
|
404
|
+
// from the child phase carried on agent_call_progress events. These tests
|
|
405
|
+
// pin every transition of that derivation (D-T02-14).
|
|
406
|
+
describe("deriveTaskStates — child-gate derivation from agent_call_progress", () => {
|
|
407
|
+
const AGENT_CALL = { taskKind: WorkflowTaskKind.agent_call };
|
|
408
|
+
|
|
409
|
+
/** A running agent_call task bound to its child — the common arrange. */
|
|
410
|
+
function runningAgentCall(store: WorkflowExecutionEventStore, task = "call-helper") {
|
|
411
|
+
store.appendEvents([
|
|
412
|
+
makeTaskStartedEvent(1, task, AGENT_CALL),
|
|
413
|
+
makeAgentCallStartedEvent(2, task),
|
|
414
|
+
]);
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
it("child phase WAITING_FOR_APPROVAL gates a running task", () => {
|
|
418
|
+
const store = new WorkflowExecutionEventStore();
|
|
419
|
+
runningAgentCall(store);
|
|
420
|
+
store.appendEvents([
|
|
421
|
+
makeAgentCallProgressEvent(3, "call-helper", AgentExecutionPhase.EXECUTION_WAITING_FOR_APPROVAL),
|
|
422
|
+
]);
|
|
423
|
+
|
|
424
|
+
const task = store.getTaskStates().get("call-helper")!;
|
|
425
|
+
expect(task.status).toBe("waiting_approval");
|
|
426
|
+
// The status flip must not drop the merged progress fields.
|
|
427
|
+
expect(task.childExecutionId).toBe("aex_child_1");
|
|
428
|
+
expect(task.agentSlug).toBe("helper");
|
|
429
|
+
});
|
|
430
|
+
|
|
431
|
+
it("child phase IN_PROGRESS un-gates a waiting task (child resumed)", () => {
|
|
432
|
+
const store = new WorkflowExecutionEventStore();
|
|
433
|
+
runningAgentCall(store);
|
|
434
|
+
store.appendEvents([
|
|
435
|
+
makeAgentCallProgressEvent(3, "call-helper", AgentExecutionPhase.EXECUTION_WAITING_FOR_APPROVAL),
|
|
436
|
+
makeAgentCallProgressEvent(4, "call-helper", AgentExecutionPhase.EXECUTION_IN_PROGRESS),
|
|
437
|
+
]);
|
|
438
|
+
|
|
439
|
+
expect(store.getTaskStates().get("call-helper")!.status).toBe("running");
|
|
440
|
+
});
|
|
441
|
+
|
|
442
|
+
it("phase UNSPECIFIED never un-gates a waiting task (the orchestrator's null-progress emits carry phase 0)", () => {
|
|
443
|
+
const store = new WorkflowExecutionEventStore();
|
|
444
|
+
runningAgentCall(store);
|
|
445
|
+
store.appendEvents([
|
|
446
|
+
makeAgentCallProgressEvent(3, "call-helper", AgentExecutionPhase.EXECUTION_WAITING_FOR_APPROVAL),
|
|
447
|
+
makeAgentCallProgressEvent(4, "call-helper", AgentExecutionPhase.EXECUTION_PHASE_UNSPECIFIED),
|
|
448
|
+
]);
|
|
449
|
+
|
|
450
|
+
expect(store.getTaskStates().get("call-helper")!.status).toBe("waiting_approval");
|
|
451
|
+
});
|
|
452
|
+
|
|
453
|
+
it("non-waiting phases leave a running task running (PENDING and UNSPECIFIED are not gates)", () => {
|
|
454
|
+
const store = new WorkflowExecutionEventStore();
|
|
455
|
+
runningAgentCall(store);
|
|
456
|
+
store.appendEvents([
|
|
457
|
+
makeAgentCallProgressEvent(3, "call-helper", AgentExecutionPhase.EXECUTION_PHASE_UNSPECIFIED),
|
|
458
|
+
makeAgentCallProgressEvent(4, "call-helper", AgentExecutionPhase.EXECUTION_PENDING),
|
|
459
|
+
makeAgentCallProgressEvent(5, "call-helper", AgentExecutionPhase.EXECUTION_IN_PROGRESS),
|
|
460
|
+
]);
|
|
461
|
+
|
|
462
|
+
expect(store.getTaskStates().get("call-helper")!.status).toBe("running");
|
|
463
|
+
});
|
|
464
|
+
|
|
465
|
+
it("taskCompleted settles a gated task (the task's own events stay authoritative)", () => {
|
|
466
|
+
const store = new WorkflowExecutionEventStore();
|
|
467
|
+
runningAgentCall(store);
|
|
468
|
+
store.appendEvents([
|
|
469
|
+
makeAgentCallProgressEvent(3, "call-helper", AgentExecutionPhase.EXECUTION_WAITING_FOR_APPROVAL),
|
|
470
|
+
makeTaskCompletedEvent(4, "call-helper"),
|
|
471
|
+
]);
|
|
472
|
+
|
|
473
|
+
expect(store.getTaskStates().get("call-helper")!.status).toBe("completed");
|
|
474
|
+
});
|
|
475
|
+
|
|
476
|
+
it("a stale WAITING progress event cannot re-gate a settled task", () => {
|
|
477
|
+
const store = new WorkflowExecutionEventStore();
|
|
478
|
+
runningAgentCall(store);
|
|
479
|
+
store.appendEvents([
|
|
480
|
+
makeTaskCompletedEvent(3, "call-helper"),
|
|
481
|
+
makeAgentCallProgressEvent(4, "call-helper", AgentExecutionPhase.EXECUTION_WAITING_FOR_APPROVAL),
|
|
482
|
+
]);
|
|
483
|
+
|
|
484
|
+
expect(store.getTaskStates().get("call-helper")!.status).toBe("completed");
|
|
485
|
+
});
|
|
486
|
+
|
|
487
|
+
it("a WAITING progress event cannot clobber a retrying task", () => {
|
|
488
|
+
const store = new WorkflowExecutionEventStore();
|
|
489
|
+
runningAgentCall(store);
|
|
490
|
+
store.appendEvents([
|
|
491
|
+
makeTaskFailedEvent(3, "call-helper", { willRetry: true }),
|
|
492
|
+
makeAgentCallProgressEvent(4, "call-helper", AgentExecutionPhase.EXECUTION_WAITING_FOR_APPROVAL),
|
|
493
|
+
]);
|
|
494
|
+
|
|
495
|
+
expect(store.getTaskStates().get("call-helper")!.status).toBe("retrying");
|
|
496
|
+
});
|
|
497
|
+
|
|
498
|
+
it("terminal child phase on progress un-gates; task settlement follows from task events", () => {
|
|
499
|
+
const store = new WorkflowExecutionEventStore();
|
|
500
|
+
runningAgentCall(store);
|
|
501
|
+
store.appendEvents([
|
|
502
|
+
makeAgentCallProgressEvent(3, "call-helper", AgentExecutionPhase.EXECUTION_WAITING_FOR_APPROVAL),
|
|
503
|
+
makeAgentCallProgressEvent(4, "call-helper", AgentExecutionPhase.EXECUTION_COMPLETED),
|
|
504
|
+
]);
|
|
505
|
+
expect(store.getTaskStates().get("call-helper")!.status).toBe("running");
|
|
506
|
+
|
|
507
|
+
store.appendEvents([makeTaskCompletedEvent(5, "call-helper")]);
|
|
508
|
+
expect(store.getTaskStates().get("call-helper")!.status).toBe("completed");
|
|
509
|
+
});
|
|
510
|
+
|
|
511
|
+
it("replaying a terminal history ends settled, not gated (history replay is safe)", () => {
|
|
512
|
+
const store = new WorkflowExecutionEventStore();
|
|
513
|
+
store.appendEvents([
|
|
514
|
+
makeTaskStartedEvent(1, "call-helper", AGENT_CALL),
|
|
515
|
+
makeAgentCallStartedEvent(2, "call-helper"),
|
|
516
|
+
makeAgentCallProgressEvent(3, "call-helper", AgentExecutionPhase.EXECUTION_WAITING_FOR_APPROVAL),
|
|
517
|
+
makeAgentCallProgressEvent(4, "call-helper", AgentExecutionPhase.EXECUTION_IN_PROGRESS),
|
|
518
|
+
makeTaskCompletedEvent(5, "call-helper"),
|
|
519
|
+
]);
|
|
520
|
+
|
|
521
|
+
expect(store.getTaskStates().get("call-helper")!.status).toBe("completed");
|
|
522
|
+
});
|
|
523
|
+
|
|
524
|
+
it("a progress event without a prior taskStarted is a no-op (prev is undefined)", () => {
|
|
525
|
+
const store = new WorkflowExecutionEventStore();
|
|
526
|
+
store.appendEvents([
|
|
527
|
+
makeAgentCallProgressEvent(1, "ghost", AgentExecutionPhase.EXECUTION_WAITING_FOR_APPROVAL),
|
|
528
|
+
]);
|
|
529
|
+
|
|
530
|
+
expect(store.getTaskStates().has("ghost")).toBe(false);
|
|
239
531
|
});
|
|
240
532
|
});
|
|
241
533
|
|
|
@@ -277,4 +569,82 @@ describe("WorkflowExecutionEventStore", () => {
|
|
|
277
569
|
expect(listener).toHaveBeenCalledTimes(1);
|
|
278
570
|
});
|
|
279
571
|
});
|
|
572
|
+
|
|
573
|
+
// T04: the truncated I/O summaries are the live preview source for the
|
|
574
|
+
// thread cards — the store must capture them, reset them correctly on
|
|
575
|
+
// retries, and keep them REFERENCE-STABLE across re-derivations (the
|
|
576
|
+
// projection's structural sharing compares them by identity).
|
|
577
|
+
describe("I/O summary capture (T04)", () => {
|
|
578
|
+
it("captures input_summary from task_started and output_summary from task_completed", () => {
|
|
579
|
+
const store = new WorkflowExecutionEventStore();
|
|
580
|
+
store.appendEvents([
|
|
581
|
+
makeTaskStartedEvent(1, "seed", {
|
|
582
|
+
inputSummary: { variables: { order_id: "o-1" } },
|
|
583
|
+
}),
|
|
584
|
+
makeTaskCompletedEvent(2, "seed", {
|
|
585
|
+
outputSummary: { result: 42 },
|
|
586
|
+
}),
|
|
587
|
+
]);
|
|
588
|
+
|
|
589
|
+
const state = store.getTaskStates().get("seed")!;
|
|
590
|
+
expect(state.inputSummary).toEqual({ variables: { order_id: "o-1" } });
|
|
591
|
+
expect(state.outputSummary).toEqual({ result: 42 });
|
|
592
|
+
});
|
|
593
|
+
|
|
594
|
+
it("defaults both summaries to null when the payloads omit them", () => {
|
|
595
|
+
const store = new WorkflowExecutionEventStore();
|
|
596
|
+
store.appendEvents([
|
|
597
|
+
makeTaskStartedEvent(1, "seed"),
|
|
598
|
+
makeTaskCompletedEvent(2, "seed"),
|
|
599
|
+
]);
|
|
600
|
+
|
|
601
|
+
const state = store.getTaskStates().get("seed")!;
|
|
602
|
+
expect(state.inputSummary).toBeNull();
|
|
603
|
+
expect(state.outputSummary).toBeNull();
|
|
604
|
+
});
|
|
605
|
+
|
|
606
|
+
it("a restart invalidates the prior attempt's output but keeps the input", () => {
|
|
607
|
+
const store = new WorkflowExecutionEventStore();
|
|
608
|
+
store.appendEvents([
|
|
609
|
+
makeTaskStartedEvent(1, "flaky", { inputSummary: { url: "a" } }),
|
|
610
|
+
makeTaskCompletedEvent(2, "flaky", { outputSummary: { ok: true } }),
|
|
611
|
+
// The engine re-runs the task (e.g. a workflow-level replay).
|
|
612
|
+
makeTaskStartedEvent(3, "flaky", { attemptNumber: 2 }),
|
|
613
|
+
]);
|
|
614
|
+
|
|
615
|
+
const state = store.getTaskStates().get("flaky")!;
|
|
616
|
+
expect(state.outputSummary).toBeNull();
|
|
617
|
+
expect(state.inputSummary).toEqual({ url: "a" });
|
|
618
|
+
});
|
|
619
|
+
|
|
620
|
+
it("a failure clears the output summary but keeps the input", () => {
|
|
621
|
+
const store = new WorkflowExecutionEventStore();
|
|
622
|
+
store.appendEvents([
|
|
623
|
+
makeTaskStartedEvent(1, "doomed", { inputSummary: { url: "a" } }),
|
|
624
|
+
makeTaskFailedEvent(2, "doomed"),
|
|
625
|
+
]);
|
|
626
|
+
|
|
627
|
+
const state = store.getTaskStates().get("doomed")!;
|
|
628
|
+
expect(state.inputSummary).toEqual({ url: "a" });
|
|
629
|
+
expect(state.outputSummary).toBeNull();
|
|
630
|
+
});
|
|
631
|
+
|
|
632
|
+
it("keeps summary references stable across re-derivations (structural-sharing contract)", () => {
|
|
633
|
+
const store = new WorkflowExecutionEventStore();
|
|
634
|
+
store.appendEvents([
|
|
635
|
+
makeTaskStartedEvent(1, "seed", { inputSummary: { a: 1 } }),
|
|
636
|
+
makeTaskCompletedEvent(2, "seed", { outputSummary: { b: 2 } }),
|
|
637
|
+
]);
|
|
638
|
+
const before = store.getTaskStates().get("seed")!;
|
|
639
|
+
|
|
640
|
+
// A later event for ANOTHER task invalidates the cache and forces a
|
|
641
|
+
// full re-derivation; "seed" summaries must keep object identity
|
|
642
|
+
// (they are read off the same immutable stored events).
|
|
643
|
+
store.appendEvents([makeTaskStartedEvent(3, "other")]);
|
|
644
|
+
const after = store.getTaskStates().get("seed")!;
|
|
645
|
+
|
|
646
|
+
expect(after.inputSummary).toBe(before.inputSummary);
|
|
647
|
+
expect(after.outputSummary).toBe(before.outputSummary);
|
|
648
|
+
});
|
|
649
|
+
});
|
|
280
650
|
});
|
|
@@ -21,9 +21,6 @@ export {
|
|
|
21
21
|
type DerivedCostSummary,
|
|
22
22
|
} from "./workflow-execution-event-store.js";
|
|
23
23
|
|
|
24
|
-
export { SelectionStore } from "./selection-store.js";
|
|
25
|
-
export type { SelectedThreadItem } from "./selection-store.js";
|
|
26
|
-
|
|
27
24
|
export { WorkspaceFileSelectionStore } from "./workspace-file-selection-store.js";
|
|
28
25
|
export type { SelectedWorkspaceFile } from "./workspace-file-selection-store.js";
|
|
29
26
|
|
|
@@ -1,6 +1,14 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type {
|
|
2
|
+
WorkflowExecutionEvent,
|
|
3
|
+
ApprovalRequestedPayload,
|
|
4
|
+
ApprovalResolvedPayload,
|
|
5
|
+
} from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/event_pb";
|
|
2
6
|
import { WorkflowEventType } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/event_pb";
|
|
3
7
|
import type { WorkflowTaskKind } from "@stigmer/protos/ai/stigmer/agentic/workflow/v1/enum_pb";
|
|
8
|
+
import type { JsonObject } from "@bufbuild/protobuf";
|
|
9
|
+
// The CHILD AgentExecution's phase enum (carried on agent_call_progress
|
|
10
|
+
// payloads) — distinct from the workflow's own ExecutionPhase.
|
|
11
|
+
import { ExecutionPhase as AgentExecutionPhase } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
4
12
|
|
|
5
13
|
// ---------------------------------------------------------------------------
|
|
6
14
|
// Stream state (mirrors ConversationStore's StreamState shape)
|
|
@@ -51,6 +59,38 @@ export interface DerivedTaskState {
|
|
|
51
59
|
readonly currentToolName: string;
|
|
52
60
|
readonly messagesCount: number;
|
|
53
61
|
readonly toolCallsCount: number;
|
|
62
|
+
/**
|
|
63
|
+
* Truncated resolved-input summary from `task_started` (T04). `null`
|
|
64
|
+
* until the event arrives. Reference-stable across re-derivations: the
|
|
65
|
+
* value is read off the SAME immutable stored event each walk, so
|
|
66
|
+
* downstream identity compares (structural sharing) hold.
|
|
67
|
+
*/
|
|
68
|
+
readonly inputSummary: JsonObject | null;
|
|
69
|
+
/**
|
|
70
|
+
* Truncated output summary from `task_completed` (T04). `null` while
|
|
71
|
+
* running and reset on a restart. The FULL output lives on the status
|
|
72
|
+
* snapshot (`status.tasks[].output`) — this is the live-stream preview
|
|
73
|
+
* source only (the event deliberately truncates to prevent bloat).
|
|
74
|
+
*/
|
|
75
|
+
readonly outputSummary: JsonObject | null;
|
|
76
|
+
/**
|
|
77
|
+
* The `approval_requested` payload for a human_input gate (T06) — the
|
|
78
|
+
* review material (prompt, outcomes, form schema, payload/artifact ref,
|
|
79
|
+
* ui hint) the gating card's in-thread review surface renders. `null`
|
|
80
|
+
* until the event arrives; reset on a restart (a new attempt re-emits
|
|
81
|
+
* its own request). Reference-stable like the summaries: the value IS
|
|
82
|
+
* the stored immutable event's payload message, so downstream identity
|
|
83
|
+
* compares (structural sharing) hold across re-derivations.
|
|
84
|
+
*/
|
|
85
|
+
readonly approvalRequest: ApprovalRequestedPayload | null;
|
|
86
|
+
/**
|
|
87
|
+
* The `approval_resolved` payload once the gate is decided (T06) —
|
|
88
|
+
* reviewer, comment, wait duration. Persists through the task's
|
|
89
|
+
* remaining lifecycle (completed/failed) so the card's resolved-decision
|
|
90
|
+
* summary survives settlement; reset on a restart. Reference-stable, as
|
|
91
|
+
* above.
|
|
92
|
+
*/
|
|
93
|
+
readonly approvalResolution: ApprovalResolvedPayload | null;
|
|
54
94
|
}
|
|
55
95
|
|
|
56
96
|
export interface DerivedCostSummary {
|
|
@@ -248,6 +288,11 @@ function deriveTaskStates(
|
|
|
248
288
|
currentToolName: prev?.currentToolName ?? "",
|
|
249
289
|
messagesCount: prev?.messagesCount ?? 0,
|
|
250
290
|
toolCallsCount: prev?.toolCallsCount ?? 0,
|
|
291
|
+
inputSummary: p.value.inputSummary ?? prev?.inputSummary ?? null,
|
|
292
|
+
// A (re)start invalidates any prior attempt's output and gate.
|
|
293
|
+
outputSummary: null,
|
|
294
|
+
approvalRequest: null,
|
|
295
|
+
approvalResolution: null,
|
|
251
296
|
});
|
|
252
297
|
break;
|
|
253
298
|
|
|
@@ -266,6 +311,12 @@ function deriveTaskStates(
|
|
|
266
311
|
currentToolName: "",
|
|
267
312
|
messagesCount: prev?.messagesCount ?? 0,
|
|
268
313
|
toolCallsCount: prev?.toolCallsCount ?? 0,
|
|
314
|
+
inputSummary: prev?.inputSummary ?? null,
|
|
315
|
+
outputSummary: p.value.outputSummary ?? null,
|
|
316
|
+
// The gate record survives settlement — the card's resolved
|
|
317
|
+
// decision summary reads it after the task completes.
|
|
318
|
+
approvalRequest: prev?.approvalRequest ?? null,
|
|
319
|
+
approvalResolution: prev?.approvalResolution ?? null,
|
|
269
320
|
});
|
|
270
321
|
break;
|
|
271
322
|
|
|
@@ -284,6 +335,10 @@ function deriveTaskStates(
|
|
|
284
335
|
currentToolName: "",
|
|
285
336
|
messagesCount: prev?.messagesCount ?? 0,
|
|
286
337
|
toolCallsCount: prev?.toolCallsCount ?? 0,
|
|
338
|
+
inputSummary: prev?.inputSummary ?? null,
|
|
339
|
+
outputSummary: null,
|
|
340
|
+
approvalRequest: prev?.approvalRequest ?? null,
|
|
341
|
+
approvalResolution: prev?.approvalResolution ?? null,
|
|
287
342
|
});
|
|
288
343
|
break;
|
|
289
344
|
|
|
@@ -302,6 +357,10 @@ function deriveTaskStates(
|
|
|
302
357
|
currentToolName: "",
|
|
303
358
|
messagesCount: 0,
|
|
304
359
|
toolCallsCount: 0,
|
|
360
|
+
inputSummary: null,
|
|
361
|
+
outputSummary: null,
|
|
362
|
+
approvalRequest: null,
|
|
363
|
+
approvalResolution: null,
|
|
305
364
|
});
|
|
306
365
|
break;
|
|
307
366
|
|
|
@@ -325,6 +384,7 @@ function deriveTaskStates(
|
|
|
325
384
|
if (prev) {
|
|
326
385
|
map.set(taskName, {
|
|
327
386
|
...prev,
|
|
387
|
+
status: deriveChildGateStatus(prev.status, p.value.agentPhase),
|
|
328
388
|
childExecutionId: p.value.childExecutionId || prev.childExecutionId,
|
|
329
389
|
currentToolName: p.value.currentToolName || prev.currentToolName,
|
|
330
390
|
messagesCount: p.value.messagesCount || prev.messagesCount,
|
|
@@ -349,13 +409,26 @@ function deriveTaskStates(
|
|
|
349
409
|
|
|
350
410
|
case "approvalRequested":
|
|
351
411
|
if (prev) {
|
|
352
|
-
map.set(taskName, {
|
|
412
|
+
map.set(taskName, {
|
|
413
|
+
...prev,
|
|
414
|
+
status: "waiting_approval",
|
|
415
|
+
// The stored event's payload message itself — reference-stable
|
|
416
|
+
// across re-derivations, so the gating card's memo compares hold.
|
|
417
|
+
approvalRequest: p.value,
|
|
418
|
+
approvalResolution: null,
|
|
419
|
+
});
|
|
353
420
|
}
|
|
354
421
|
break;
|
|
355
422
|
|
|
356
423
|
case "approvalResolved":
|
|
357
|
-
if (prev
|
|
358
|
-
map.set(taskName, {
|
|
424
|
+
if (prev) {
|
|
425
|
+
map.set(taskName, {
|
|
426
|
+
...prev,
|
|
427
|
+
// Only a waiting gate resumes; the resolution record is kept
|
|
428
|
+
// either way (an out-of-order event must not lose the decision).
|
|
429
|
+
status: prev.status === "waiting_approval" ? "running" : prev.status,
|
|
430
|
+
approvalResolution: p.value,
|
|
431
|
+
});
|
|
359
432
|
}
|
|
360
433
|
break;
|
|
361
434
|
}
|
|
@@ -364,6 +437,52 @@ function deriveTaskStates(
|
|
|
364
437
|
return map;
|
|
365
438
|
}
|
|
366
439
|
|
|
440
|
+
/**
|
|
441
|
+
* Derives the parent task's status from a child agent's phase on an
|
|
442
|
+
* `agent_call_progress` event — the ONLY live signal that an AGENT_CALL
|
|
443
|
+
* task is blocked on a child HITL gate.
|
|
444
|
+
*
|
|
445
|
+
* Why progress events drive gating: a child's tool/file gate is surfaced
|
|
446
|
+
* snapshot-only (`child_approval_required` signal → `status.pending_approvals`
|
|
447
|
+
* on the parent — no workflow event is emitted; source-confirmed in
|
|
448
|
+
* `test/conformance/src/suites-execution/workflowexecution-child-approval.conformance.test.ts`).
|
|
449
|
+
* The `approval_requested` event exists only for human_input tasks. Without
|
|
450
|
+
* this derivation the stream never shows an agent_call task as
|
|
451
|
+
* `waiting_approval`, and every waiting_approval consumer (thread/graph
|
|
452
|
+
* amber state, announcements, `useApprovalBoundary`'s snapshot refetch +
|
|
453
|
+
* gate auto-select) is blind to child gates. Deriving from the phase the
|
|
454
|
+
* progress payload already carries closes that gap with zero new events —
|
|
455
|
+
* and matches the documented task semantics
|
|
456
|
+
* (`apis/ai/stigmer/agentic/workflowexecution/docs/hitl-approvals.md`).
|
|
457
|
+
*
|
|
458
|
+
* Transition rules (deliberately narrow):
|
|
459
|
+
* - Only `running` can ENTER `waiting_approval` (child phase = WAITING).
|
|
460
|
+
* - Only `waiting_approval` can EXIT via a progress event, and only on a
|
|
461
|
+
* KNOWN non-waiting phase. `UNSPECIFIED` is an explicit no-op: the
|
|
462
|
+
* orchestrator's initial/fast-completion emits carry phase 0 (null
|
|
463
|
+
* progress) and must never un-gate a blocked task.
|
|
464
|
+
* - Every other status (retrying, settled, pending) passes through — a
|
|
465
|
+
* stale WAITING progress event can never resurrect or re-gate a task the
|
|
466
|
+
* authoritative task_* events have already moved on.
|
|
467
|
+
*/
|
|
468
|
+
function deriveChildGateStatus(
|
|
469
|
+
status: DerivedTaskState["status"],
|
|
470
|
+
childPhase: AgentExecutionPhase,
|
|
471
|
+
): DerivedTaskState["status"] {
|
|
472
|
+
if (status === "running") {
|
|
473
|
+
return childPhase === AgentExecutionPhase.EXECUTION_WAITING_FOR_APPROVAL
|
|
474
|
+
? "waiting_approval"
|
|
475
|
+
: "running";
|
|
476
|
+
}
|
|
477
|
+
if (status === "waiting_approval") {
|
|
478
|
+
return childPhase === AgentExecutionPhase.EXECUTION_WAITING_FOR_APPROVAL ||
|
|
479
|
+
childPhase === AgentExecutionPhase.EXECUTION_PHASE_UNSPECIFIED
|
|
480
|
+
? "waiting_approval"
|
|
481
|
+
: "running";
|
|
482
|
+
}
|
|
483
|
+
return status;
|
|
484
|
+
}
|
|
485
|
+
|
|
367
486
|
function deriveCostSummary(
|
|
368
487
|
events: readonly WorkflowExecutionEvent[],
|
|
369
488
|
): DerivedCostSummary {
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
// Which workspace file is open in the viewer.
|
|
2
|
-
// owns thread-item inspect selection) — the two are orthogonal domains with
|
|
3
|
-
// different lifecycles, so they stay separate stores rather than one fused FSM.
|
|
1
|
+
// Which workspace file is open in the viewer.
|
|
4
2
|
|
|
5
3
|
/**
|
|
6
4
|
* A file selected for viewing.
|
|
@@ -23,8 +21,7 @@ type Listener = () => void;
|
|
|
23
21
|
/**
|
|
24
22
|
* Framework-agnostic store for the currently-open workspace file.
|
|
25
23
|
*
|
|
26
|
-
* Implements the `useSyncExternalStore` contract
|
|
27
|
-
* {@link import("./selection-store.js").SelectionStore}: the context carries the
|
|
24
|
+
* Implements the `useSyncExternalStore` contract: the context carries the
|
|
28
25
|
* store instance (stable ref), and `getSelection` returns the stored object
|
|
29
26
|
* reference — a new object is allocated only inside `select` — so `getSnapshot`
|
|
30
27
|
* never triggers a re-render loop.
|