@stigmer/react 3.1.16 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -1
- package/agent-instance/AgentInstanceList.d.ts.map +1 -1
- package/agent-instance/AgentInstanceList.js +11 -3
- package/agent-instance/AgentInstanceList.js.map +1 -1
- package/channel/AgentChannelsPanel.d.ts +60 -0
- package/channel/AgentChannelsPanel.d.ts.map +1 -0
- package/channel/AgentChannelsPanel.js +255 -0
- package/channel/AgentChannelsPanel.js.map +1 -0
- package/channel/ChannelConversationsDialog.d.ts +41 -0
- package/channel/ChannelConversationsDialog.d.ts.map +1 -0
- package/channel/ChannelConversationsDialog.js +94 -0
- package/channel/ChannelConversationsDialog.js.map +1 -0
- package/channel/ChannelCredentialsDialog.d.ts +37 -0
- package/channel/ChannelCredentialsDialog.d.ts.map +1 -0
- package/channel/ChannelCredentialsDialog.js +75 -0
- package/channel/ChannelCredentialsDialog.js.map +1 -0
- package/channel/ChannelToolCredentials.d.ts +31 -0
- package/channel/ChannelToolCredentials.d.ts.map +1 -0
- package/channel/ChannelToolCredentials.js +41 -0
- package/channel/ChannelToolCredentials.js.map +1 -0
- package/channel/ConnectSlackDialog.d.ts +61 -0
- package/channel/ConnectSlackDialog.d.ts.map +1 -0
- package/channel/ConnectSlackDialog.js +238 -0
- package/channel/ConnectSlackDialog.js.map +1 -0
- package/channel/ConnectWhatsAppDialog.d.ts +70 -0
- package/channel/ConnectWhatsAppDialog.d.ts.map +1 -0
- package/channel/ConnectWhatsAppDialog.js +256 -0
- package/channel/ConnectWhatsAppDialog.js.map +1 -0
- package/channel/SlackMarkIcon.d.ts +11 -0
- package/channel/SlackMarkIcon.d.ts.map +1 -0
- package/channel/SlackMarkIcon.js +13 -0
- package/channel/SlackMarkIcon.js.map +1 -0
- package/channel/WhatsAppMarkIcon.d.ts +12 -0
- package/channel/WhatsAppMarkIcon.d.ts.map +1 -0
- package/channel/WhatsAppMarkIcon.js +14 -0
- package/channel/WhatsAppMarkIcon.js.map +1 -0
- package/channel/connect/ServingAppSection.d.ts +57 -0
- package/channel/connect/ServingAppSection.d.ts.map +1 -0
- package/channel/connect/ServingAppSection.js +49 -0
- package/channel/connect/ServingAppSection.js.map +1 -0
- package/channel/connect/ToolCredentialsSection.d.ts +20 -0
- package/channel/connect/ToolCredentialsSection.d.ts.map +1 -0
- package/channel/connect/ToolCredentialsSection.js +22 -0
- package/channel/connect/ToolCredentialsSection.js.map +1 -0
- package/channel/connect/VerbatimRefusal.d.ts +16 -0
- package/channel/connect/VerbatimRefusal.d.ts.map +1 -0
- package/channel/connect/VerbatimRefusal.js +18 -0
- package/channel/connect/VerbatimRefusal.js.map +1 -0
- package/channel/connect/icons.d.ts +16 -0
- package/channel/connect/icons.d.ts.map +1 -0
- package/channel/connect/icons.js +21 -0
- package/channel/connect/icons.js.map +1 -0
- package/channel/index.d.ts +36 -0
- package/channel/index.d.ts.map +1 -0
- package/channel/index.js +19 -0
- package/channel/index.js.map +1 -0
- package/channel/providerPresentation.d.ts +44 -0
- package/channel/providerPresentation.d.ts.map +1 -0
- package/channel/providerPresentation.js +106 -0
- package/channel/providerPresentation.js.map +1 -0
- package/channel/providers.d.ts +62 -0
- package/channel/providers.d.ts.map +1 -0
- package/channel/providers.js +26 -0
- package/channel/providers.js.map +1 -0
- package/channel/useAgentChannel.d.ts +31 -0
- package/channel/useAgentChannel.d.ts.map +1 -0
- package/channel/useAgentChannel.js +34 -0
- package/channel/useAgentChannel.js.map +1 -0
- package/channel/useAgentChannelList.d.ts +43 -0
- package/channel/useAgentChannelList.d.ts.map +1 -0
- package/channel/useAgentChannelList.js +39 -0
- package/channel/useAgentChannelList.js.map +1 -0
- package/channel/useChannelSessions.d.ts +47 -0
- package/channel/useChannelSessions.d.ts.map +1 -0
- package/channel/useChannelSessions.js +38 -0
- package/channel/useChannelSessions.js.map +1 -0
- package/channel/useChannelToolReadiness.d.ts +23 -0
- package/channel/useChannelToolReadiness.d.ts.map +1 -0
- package/channel/useChannelToolReadiness.js +28 -0
- package/channel/useChannelToolReadiness.js.map +1 -0
- package/channel/useConnectSlackChannel.d.ts +75 -0
- package/channel/useConnectSlackChannel.d.ts.map +1 -0
- package/channel/useConnectSlackChannel.js +115 -0
- package/channel/useConnectSlackChannel.js.map +1 -0
- package/channel/useCreateAgentChannel.d.ts +42 -0
- package/channel/useCreateAgentChannel.d.ts.map +1 -0
- package/channel/useCreateAgentChannel.js +48 -0
- package/channel/useCreateAgentChannel.js.map +1 -0
- package/channel/useDeleteAgentChannel.d.ts +40 -0
- package/channel/useDeleteAgentChannel.d.ts.map +1 -0
- package/channel/useDeleteAgentChannel.js +44 -0
- package/channel/useDeleteAgentChannel.js.map +1 -0
- package/channel/useInstallChannel.d.ts +60 -0
- package/channel/useInstallChannel.d.ts.map +1 -0
- package/channel/useInstallChannel.js +63 -0
- package/channel/useInstallChannel.js.map +1 -0
- package/channel/useOrgAgentChannelList.d.ts +32 -0
- package/channel/useOrgAgentChannelList.d.ts.map +1 -0
- package/channel/useOrgAgentChannelList.js +29 -0
- package/channel/useOrgAgentChannelList.js.map +1 -0
- package/channel/useSaveAgentChannel.d.ts +63 -0
- package/channel/useSaveAgentChannel.d.ts.map +1 -0
- package/channel/useSaveAgentChannel.js +104 -0
- package/channel/useSaveAgentChannel.js.map +1 -0
- package/channel-app/ChannelAppDetailPanel.d.ts +46 -0
- package/channel-app/ChannelAppDetailPanel.d.ts.map +1 -0
- package/channel-app/ChannelAppDetailPanel.js +142 -0
- package/channel-app/ChannelAppDetailPanel.js.map +1 -0
- package/channel-app/ChannelAppListPanel.d.ts +36 -0
- package/channel-app/ChannelAppListPanel.d.ts.map +1 -0
- package/channel-app/ChannelAppListPanel.js +63 -0
- package/channel-app/ChannelAppListPanel.js.map +1 -0
- package/channel-app/CreateChannelAppForm.d.ts +54 -0
- package/channel-app/CreateChannelAppForm.d.ts.map +1 -0
- package/channel-app/CreateChannelAppForm.js +140 -0
- package/channel-app/CreateChannelAppForm.js.map +1 -0
- package/channel-app/index.d.ts +18 -0
- package/channel-app/index.d.ts.map +1 -0
- package/channel-app/index.js +10 -0
- package/channel-app/index.js.map +1 -0
- package/channel-app/internal.d.ts +33 -0
- package/channel-app/internal.d.ts.map +1 -0
- package/channel-app/internal.js +44 -0
- package/channel-app/internal.js.map +1 -0
- package/channel-app/slackAppSetup.d.ts +80 -0
- package/channel-app/slackAppSetup.d.ts.map +1 -0
- package/channel-app/slackAppSetup.js +123 -0
- package/channel-app/slackAppSetup.js.map +1 -0
- package/channel-app/useChannelAppList.d.ts +35 -0
- package/channel-app/useChannelAppList.d.ts.map +1 -0
- package/channel-app/useChannelAppList.js +34 -0
- package/channel-app/useChannelAppList.js.map +1 -0
- package/channel-app/useCreateChannelApp.d.ts +39 -0
- package/channel-app/useCreateChannelApp.d.ts.map +1 -0
- package/channel-app/useCreateChannelApp.js +50 -0
- package/channel-app/useCreateChannelApp.js.map +1 -0
- package/channel-app/useDeleteChannelApp.d.ts +31 -0
- package/channel-app/useDeleteChannelApp.d.ts.map +1 -0
- package/channel-app/useDeleteChannelApp.js +43 -0
- package/channel-app/useDeleteChannelApp.js.map +1 -0
- package/channel-app/useUpdateChannelApp.d.ts +39 -0
- package/channel-app/useUpdateChannelApp.d.ts.map +1 -0
- package/channel-app/useUpdateChannelApp.js +50 -0
- package/channel-app/useUpdateChannelApp.js.map +1 -0
- package/channel-app/whatsappAppSetup.d.ts +51 -0
- package/channel-app/whatsappAppSetup.d.ts.map +1 -0
- package/channel-app/whatsappAppSetup.js +57 -0
- package/channel-app/whatsappAppSetup.js.map +1 -0
- package/environment/index.d.ts +2 -0
- package/environment/index.d.ts.map +1 -1
- package/environment/index.js +1 -0
- package/environment/index.js.map +1 -1
- package/environment/useToolCredentialsReadiness.d.ts +52 -0
- package/environment/useToolCredentialsReadiness.d.ts.map +1 -0
- package/environment/useToolCredentialsReadiness.js +84 -0
- package/environment/useToolCredentialsReadiness.js.map +1 -0
- package/execution/ArtifactContentBody.d.ts.map +1 -1
- package/execution/ArtifactContentBody.js +5 -21
- package/execution/ArtifactContentBody.js.map +1 -1
- package/execution/ArtifactFileContent.d.ts +28 -0
- package/execution/ArtifactFileContent.d.ts.map +1 -0
- package/execution/ArtifactFileContent.js +36 -0
- package/execution/ArtifactFileContent.js.map +1 -0
- package/execution/ArtifactRow.d.ts +8 -20
- package/execution/ArtifactRow.d.ts.map +1 -1
- package/execution/ArtifactRow.js +12 -45
- package/execution/ArtifactRow.js.map +1 -1
- package/execution/ArtifactRowView.d.ts +43 -0
- package/execution/ArtifactRowView.d.ts.map +1 -0
- package/execution/ArtifactRowView.js +35 -0
- package/execution/ArtifactRowView.js.map +1 -0
- package/execution/FileChangesView.d.ts.map +1 -1
- package/execution/FileChangesView.js +1 -61
- package/execution/FileChangesView.js.map +1 -1
- package/execution/SubAgentSection.d.ts.map +1 -1
- package/execution/SubAgentSection.js +4 -15
- package/execution/SubAgentSection.js.map +1 -1
- package/execution/ToolCallItem.d.ts.map +1 -1
- package/execution/ToolCallItem.js +16 -61
- package/execution/ToolCallItem.js.map +1 -1
- package/execution/agent-execution-document.d.ts +31 -0
- package/execution/agent-execution-document.d.ts.map +1 -0
- package/execution/agent-execution-document.js +48 -0
- package/execution/agent-execution-document.js.map +1 -0
- package/{session → execution}/artifact-document.d.ts +2 -3
- package/execution/artifact-document.d.ts.map +1 -0
- package/execution/artifact-document.js +23 -0
- package/execution/artifact-document.js.map +1 -0
- package/execution/artifact-row-item.d.ts +56 -0
- package/execution/artifact-row-item.d.ts.map +1 -0
- package/execution/artifact-row-item.js +57 -0
- package/execution/artifact-row-item.js.map +1 -0
- package/execution/deriveExecutionFileChanges.d.ts +55 -0
- package/execution/deriveExecutionFileChanges.d.ts.map +1 -0
- package/execution/deriveExecutionFileChanges.js +216 -0
- package/execution/deriveExecutionFileChanges.js.map +1 -0
- package/execution/file-change-document.d.ts +22 -0
- package/execution/file-change-document.d.ts.map +1 -0
- package/execution/file-change-document.js +34 -0
- package/execution/file-change-document.js.map +1 -0
- package/execution/index.d.ts +14 -0
- package/execution/index.d.ts.map +1 -1
- package/execution/index.js +9 -0
- package/execution/index.js.map +1 -1
- package/execution/useArtifactContentById.d.ts +61 -0
- package/execution/useArtifactContentById.d.ts.map +1 -0
- package/execution/useArtifactContentById.js +63 -0
- package/execution/useArtifactContentById.js.map +1 -0
- package/execution/useArtifactDownload.d.ts +4 -3
- package/execution/useArtifactDownload.d.ts.map +1 -1
- package/execution/useArtifactDownload.js +4 -3
- package/execution/useArtifactDownload.js.map +1 -1
- package/execution/useCreateAgentExecution.d.ts +1 -1
- package/execution/useLiveAgentExecution.d.ts +59 -0
- package/execution/useLiveAgentExecution.d.ts.map +1 -0
- package/execution/useLiveAgentExecution.js +73 -0
- package/execution/useLiveAgentExecution.js.map +1 -0
- package/index.d.ts +15 -10
- package/index.d.ts.map +1 -1
- package/index.js +21 -6
- package/index.js.map +1 -1
- package/internal/DecisionButton.d.ts +4 -3
- package/internal/DecisionButton.d.ts.map +1 -1
- package/internal/DecisionButton.js +4 -3
- package/internal/DecisionButton.js.map +1 -1
- package/internal/oauthPopup.d.ts +101 -0
- package/internal/oauthPopup.d.ts.map +1 -0
- package/internal/oauthPopup.js +208 -0
- package/internal/oauthPopup.js.map +1 -0
- package/internal/store/index.d.ts +0 -2
- package/internal/store/index.d.ts.map +1 -1
- package/internal/store/index.js +0 -1
- package/internal/store/index.js.map +1 -1
- package/internal/store/workflow-execution-event-store.d.ts +34 -1
- package/internal/store/workflow-execution-event-store.d.ts.map +1 -1
- package/internal/store/workflow-execution-event-store.js +81 -3
- package/internal/store/workflow-execution-event-store.js.map +1 -1
- package/internal/store/workspace-file-selection-store.d.ts +1 -2
- package/internal/store/workspace-file-selection-store.d.ts.map +1 -1
- package/internal/store/workspace-file-selection-store.js +2 -5
- package/internal/store/workspace-file-selection-store.js.map +1 -1
- package/internal/thread-card/ThreadCardShell.d.ts +91 -0
- package/internal/thread-card/ThreadCardShell.d.ts.map +1 -0
- package/internal/thread-card/ThreadCardShell.js +41 -0
- package/internal/thread-card/ThreadCardShell.js.map +1 -0
- package/internal/thread-card/glyphs.d.ts +34 -0
- package/internal/thread-card/glyphs.d.ts.map +1 -0
- package/internal/thread-card/glyphs.js +50 -0
- package/internal/thread-card/glyphs.js.map +1 -0
- package/internal/thread-card/index.d.ts +3 -0
- package/internal/thread-card/index.d.ts.map +1 -0
- package/internal/thread-card/index.js +3 -0
- package/internal/thread-card/index.js.map +1 -0
- package/internal/useRevealLine.d.ts +2 -2
- package/internal/useRevealLine.js +2 -2
- package/mcp-server/OAuthCallbackHandler.js +1 -1
- package/mcp-server/OAuthCallbackHandler.js.map +1 -1
- package/mcp-server/useMcpServerOAuthConnect.d.ts +4 -23
- package/mcp-server/useMcpServerOAuthConnect.d.ts.map +1 -1
- package/mcp-server/useMcpServerOAuthConnect.js +12 -145
- package/mcp-server/useMcpServerOAuthConnect.js.map +1 -1
- package/package.json +4 -4
- package/provider.d.ts +32 -0
- package/provider.d.ts.map +1 -1
- package/provider.js +25 -1
- package/provider.js.map +1 -1
- package/session/NewSessionViewer.d.ts.map +1 -1
- package/session/NewSessionViewer.js +0 -1
- package/session/NewSessionViewer.js.map +1 -1
- package/session/SessionPanelChip.d.ts +7 -22
- package/session/SessionPanelChip.d.ts.map +1 -1
- package/session/SessionPanelChip.js +8 -36
- package/session/SessionPanelChip.js.map +1 -1
- package/session/SessionViewer.d.ts +7 -4
- package/session/SessionViewer.d.ts.map +1 -1
- package/session/SessionViewer.js +32 -30
- package/session/SessionViewer.js.map +1 -1
- package/session/audience.d.ts +15 -1
- package/session/audience.d.ts.map +1 -1
- package/session/channelOrigin.d.ts +33 -0
- package/session/channelOrigin.d.ts.map +1 -0
- package/session/channelOrigin.js +36 -0
- package/session/channelOrigin.js.map +1 -0
- package/session/facets/index.d.ts +0 -2
- package/session/facets/index.d.ts.map +1 -1
- package/session/facets/index.js +0 -1
- package/session/facets/index.js.map +1 -1
- package/session/index.d.ts +2 -2
- package/session/index.d.ts.map +1 -1
- package/session/index.js +5 -3
- package/session/index.js.map +1 -1
- package/session/useSessionFileChanges.d.ts +10 -34
- package/session/useSessionFileChanges.d.ts.map +1 -1
- package/session/useSessionFileChanges.js +9 -141
- package/session/useSessionFileChanges.js.map +1 -1
- package/session/useSessionPanel.d.ts +5 -15
- package/session/useSessionPanel.d.ts.map +1 -1
- package/session/useSessionPanel.js +3 -35
- package/session/useSessionPanel.js.map +1 -1
- package/session/useSessionRailViews.d.ts +3 -6
- package/session/useSessionRailViews.d.ts.map +1 -1
- package/session/useSessionRailViews.js +3 -17
- package/session/useSessionRailViews.js.map +1 -1
- package/settings/ChannelAppsSection.d.ts +13 -0
- package/settings/ChannelAppsSection.d.ts.map +1 -0
- package/settings/ChannelAppsSection.js +48 -0
- package/settings/ChannelAppsSection.js.map +1 -0
- package/settings/index.d.ts +1 -0
- package/settings/index.d.ts.map +1 -1
- package/settings/index.js +1 -0
- package/settings/index.js.map +1 -1
- package/settings/settings-nav.d.ts.map +1 -1
- package/settings/settings-nav.js +6 -1
- package/settings/settings-nav.js.map +1 -1
- package/sharing/AgentShareList.d.ts.map +1 -1
- package/sharing/AgentShareList.js +11 -3
- package/sharing/AgentShareList.js.map +1 -1
- package/sharing/ShareAgentDialog.js +1 -1
- package/sharing/useShareToolReadiness.d.ts +9 -38
- package/sharing/useShareToolReadiness.d.ts.map +1 -1
- package/sharing/useShareToolReadiness.js +7 -72
- package/sharing/useShareToolReadiness.js.map +1 -1
- package/src/__tests__/provider-container.layout.test.tsx +165 -0
- package/src/__tests__/provider-theme-scope.test.tsx +31 -0
- package/src/agent-instance/AgentInstanceList.tsx +60 -42
- package/src/agent-instance/__tests__/AgentInstanceList.test.tsx +161 -0
- package/src/channel/AgentChannelsPanel.tsx +688 -0
- package/src/channel/ChannelConversationsDialog.tsx +267 -0
- package/src/channel/ChannelCredentialsDialog.tsx +219 -0
- package/src/channel/ChannelToolCredentials.tsx +124 -0
- package/src/channel/ConnectSlackDialog.tsx +611 -0
- package/src/channel/ConnectWhatsAppDialog.tsx +624 -0
- package/src/channel/SlackMarkIcon.tsx +21 -0
- package/src/channel/WhatsAppMarkIcon.tsx +22 -0
- package/src/channel/__tests__/AgentChannelsPanel.test.tsx +638 -0
- package/src/channel/__tests__/ChannelConversationsDialog.test.tsx +114 -0
- package/src/channel/__tests__/ChannelCredentialsDialog.test.tsx +240 -0
- package/src/channel/__tests__/ConnectSlackDialog.test.tsx +659 -0
- package/src/channel/__tests__/ConnectWhatsAppDialog.test.tsx +564 -0
- package/src/channel/__tests__/providers.test.ts +118 -0
- package/src/channel/__tests__/useAgentChannel.test.tsx +116 -0
- package/src/channel/__tests__/useAgentChannelList.test.tsx +166 -0
- package/src/channel/__tests__/useChannelSessions.test.tsx +95 -0
- package/src/channel/__tests__/useChannelToolReadiness.test.tsx +158 -0
- package/src/channel/__tests__/useConnectSlackChannel.test.tsx +276 -0
- package/src/channel/__tests__/useDeleteAgentChannel.test.tsx +97 -0
- package/src/channel/__tests__/useInstallChannel.test.tsx +177 -0
- package/src/channel/__tests__/useSaveAgentChannel.test.tsx +294 -0
- package/src/channel/connect/ServingAppSection.tsx +185 -0
- package/src/channel/connect/ToolCredentialsSection.tsx +67 -0
- package/src/channel/connect/VerbatimRefusal.tsx +27 -0
- package/src/channel/connect/icons.tsx +42 -0
- package/src/channel/index.ts +65 -0
- package/src/channel/providerPresentation.ts +154 -0
- package/src/channel/providers.ts +73 -0
- package/src/channel/useAgentChannel.ts +58 -0
- package/src/channel/useAgentChannelList.ts +69 -0
- package/src/channel/useChannelSessions.ts +73 -0
- package/src/channel/useChannelToolReadiness.ts +39 -0
- package/src/channel/useConnectSlackChannel.ts +195 -0
- package/src/channel/useCreateAgentChannel.ts +73 -0
- package/src/channel/useDeleteAgentChannel.ts +71 -0
- package/src/channel/useInstallChannel.ts +117 -0
- package/src/channel/useOrgAgentChannelList.ts +60 -0
- package/src/channel/useSaveAgentChannel.ts +133 -0
- package/src/channel-app/ChannelAppDetailPanel.tsx +510 -0
- package/src/channel-app/ChannelAppListPanel.tsx +201 -0
- package/src/channel-app/CreateChannelAppForm.tsx +529 -0
- package/src/channel-app/__tests__/channelAppWhatsApp.test.tsx +270 -0
- package/src/channel-app/__tests__/slackAppSetup.test.ts +75 -0
- package/src/channel-app/__tests__/useChannelAppHooks.test.tsx +157 -0
- package/src/channel-app/__tests__/whatsappAppSetup.test.ts +39 -0
- package/src/channel-app/index.ts +30 -0
- package/src/channel-app/internal.tsx +180 -0
- package/src/channel-app/slackAppSetup.ts +153 -0
- package/src/channel-app/useChannelAppList.ts +59 -0
- package/src/channel-app/useCreateChannelApp.ts +70 -0
- package/src/channel-app/useDeleteChannelApp.ts +62 -0
- package/src/channel-app/useUpdateChannelApp.ts +70 -0
- package/src/channel-app/whatsappAppSetup.ts +62 -0
- package/src/environment/index.ts +2 -0
- package/src/environment/useToolCredentialsReadiness.ts +122 -0
- package/src/execution/ArtifactContentBody.tsx +6 -88
- package/src/execution/ArtifactFileContent.tsx +110 -0
- package/src/execution/ArtifactRow.tsx +28 -118
- package/src/execution/ArtifactRowView.tsx +137 -0
- package/src/execution/FileChangesView.tsx +4 -69
- package/src/execution/SubAgentSection.tsx +2 -36
- package/src/execution/ToolCallItem.tsx +48 -175
- package/src/execution/__tests__/ArtifactFileContent.test.tsx +60 -0
- package/src/execution/__tests__/ArtifactRowView.test.tsx +78 -0
- package/src/execution/__tests__/agent-execution-document.test.ts +45 -0
- package/src/execution/__tests__/artifact-row-item.test.ts +128 -0
- package/src/execution/__tests__/deriveExecutionFileChanges.test.ts +270 -0
- package/src/execution/__tests__/useArtifactContentById.test.tsx +85 -0
- package/src/execution/__tests__/useLiveAgentExecution.test.tsx +202 -0
- package/src/execution/agent-execution-document.ts +54 -0
- package/src/execution/artifact-document.ts +24 -0
- package/src/execution/artifact-row-item.ts +97 -0
- package/src/execution/deriveExecutionFileChanges.ts +237 -0
- package/src/execution/file-change-document.ts +37 -0
- package/src/execution/index.ts +36 -0
- package/src/execution/useArtifactContentById.ts +120 -0
- package/src/execution/useArtifactDownload.ts +4 -3
- package/src/execution/useCreateAgentExecution.ts +1 -1
- package/src/execution/useLiveAgentExecution.ts +127 -0
- package/src/index.ts +155 -11
- package/src/internal/DecisionButton.tsx +4 -3
- package/src/internal/__tests__/ThreadCardShell.test.tsx +105 -0
- package/src/internal/__tests__/oauthPopup.test.ts +245 -0
- package/src/internal/oauthPopup.ts +261 -0
- package/src/internal/store/__tests__/workflow-execution-event-store.test.ts +375 -5
- package/src/internal/store/index.ts +0 -3
- package/src/internal/store/workflow-execution-event-store.ts +123 -4
- package/src/internal/store/workspace-file-selection-store.ts +2 -5
- package/src/internal/thread-card/ThreadCardShell.tsx +189 -0
- package/src/internal/thread-card/glyphs.tsx +108 -0
- package/src/internal/thread-card/index.ts +19 -0
- package/src/internal/useRevealLine.ts +2 -2
- package/src/mcp-server/OAuthCallbackHandler.tsx +2 -2
- package/src/mcp-server/useMcpServerOAuthConnect.ts +22 -184
- package/src/provider.tsx +42 -0
- package/src/session/NewSessionViewer.tsx +0 -1
- package/src/session/SessionPanelChip.tsx +10 -96
- package/src/session/SessionViewer.tsx +170 -144
- package/src/session/__tests__/SessionViewer-artifactTabs.test.tsx +1 -1
- package/src/session/__tests__/observerAudience.test.tsx +241 -0
- package/src/session/__tests__/useSessionPanel.test.ts +6 -61
- package/src/session/__tests__/useSessionRailViews.test.tsx +5 -27
- package/src/session/audience.ts +15 -1
- package/src/session/channelOrigin.ts +45 -0
- package/src/session/facets/index.ts +0 -3
- package/src/session/index.ts +9 -6
- package/src/session/useSessionFileChanges.ts +12 -153
- package/src/session/useSessionPanel.ts +8 -51
- package/src/session/useSessionRailViews.tsx +2 -27
- package/src/settings/ChannelAppsSection.tsx +133 -0
- package/src/settings/index.ts +1 -0
- package/src/settings/settings-nav.ts +6 -0
- package/src/sharing/AgentShareList.tsx +85 -64
- package/src/sharing/ShareAgentDialog.tsx +1 -1
- package/src/sharing/__tests__/AgentShareList.test.tsx +92 -12
- package/src/sharing/useShareToolReadiness.ts +13 -101
- package/src/styles.css +14 -0
- package/src/workflow/WorkflowAgentExecutionDocument.tsx +283 -0
- package/src/workflow/WorkflowApprovalList.tsx +158 -0
- package/src/workflow/WorkflowArtifactDocument.tsx +257 -0
- package/src/workflow/WorkflowExecutionGraph.tsx +40 -78
- package/src/workflow/WorkflowExecutionViewer.tsx +610 -287
- package/src/workflow/WorkflowFileReviewList.tsx +1 -1
- package/src/workflow/WorkflowTaskApprovalCard.tsx +5 -4
- package/src/workflow/WorkflowTaskApprovalSummary.tsx +6 -6
- package/src/workflow/__tests__/WorkflowAgentExecutionDocument.test.tsx +651 -0
- package/src/workflow/__tests__/WorkflowApprovalList.test.tsx +229 -0
- package/src/workflow/__tests__/WorkflowArtifactDocument.test.tsx +90 -0
- package/src/workflow/__tests__/WorkflowArtifactsTab.test.tsx +85 -0
- package/src/workflow/__tests__/WorkflowChangesTab.test.tsx +113 -0
- package/src/workflow/__tests__/WorkflowExecutionViewer.approvals.test.tsx +473 -0
- package/src/workflow/__tests__/WorkflowExecutionViewer.reconciliation.test.tsx +632 -0
- package/src/workflow/__tests__/WorkflowTaskApprovalSummary.test.tsx +1 -1
- package/src/workflow/__tests__/WorkflowTaskThread.test.tsx +947 -0
- package/src/workflow/__tests__/WorkflowUsageTab.test.tsx +163 -0
- package/src/workflow/__tests__/agent-call-live-experience.test.ts +6 -53
- package/src/workflow/__tests__/derive-execution-overlays.test.ts +4 -0
- package/src/workflow/__tests__/deriveWorkflowArtifactItems.test.ts +71 -0
- package/src/workflow/__tests__/deriveWorkflowUsageItems.test.ts +132 -0
- package/src/workflow/__tests__/execution-graph.test.ts +8 -0
- package/src/workflow/__tests__/project-thread-items.test.ts +428 -0
- package/src/workflow/__tests__/structured-data-viewer.test.tsx +1 -1
- package/src/workflow/__tests__/task-approval.test.ts +149 -0
- package/src/workflow/__tests__/task-detail-io.test.ts +40 -0
- package/src/workflow/__tests__/task-presentation.test.ts +479 -0
- package/src/workflow/__tests__/useActiveTaskName.test.ts +4 -0
- package/src/workflow/__tests__/useApprovalBoundary.test.ts +158 -0
- package/src/workflow/__tests__/useExecutionAnnouncements.test.ts +4 -0
- package/src/workflow/__tests__/useFollowExecution.test.ts +2 -89
- package/src/workflow/__tests__/useWorkflowExecutionFileChanges.test.tsx +412 -0
- package/src/workflow/__tests__/useWorkflowExecutionPanel.test.ts +297 -0
- package/src/workflow/__tests__/useWorkflowExecutionRailViews.test.tsx +115 -0
- package/src/workflow/deriveWorkflowArtifactItems.ts +59 -0
- package/src/workflow/deriveWorkflowUsageItems.ts +73 -0
- package/src/workflow/diagnosis-document.ts +31 -0
- package/src/workflow/execution/index.ts +0 -15
- package/src/workflow/facets/WorkflowArtifactsTab.tsx +99 -0
- package/src/workflow/facets/WorkflowChangesTab.tsx +129 -0
- package/src/workflow/facets/WorkflowUsageTab.tsx +258 -0
- package/src/workflow/format-utils.ts +2 -3
- package/src/workflow/index.ts +106 -62
- package/src/workflow/inspector/index.ts +0 -4
- package/src/workflow/instance/WorkflowInstanceList.tsx +59 -41
- package/src/workflow/instance/__tests__/WorkflowInstanceList.test.tsx +156 -0
- package/src/workflow/task-detail/index.ts +11 -0
- package/src/workflow/task-detail/task-approval.ts +158 -0
- package/src/workflow/task-detail/task-detail-io.ts +65 -0
- package/src/workflow/thread/WorkflowTaskThread.tsx +845 -0
- package/src/workflow/thread/project-thread-items.ts +235 -0
- package/src/workflow/thread/task-presentation.ts +427 -0
- package/src/workflow/thread/thread-presentation.ts +59 -0
- package/src/workflow/thread/useWorkflowThreadItems.ts +34 -0
- package/src/workflow/useApprovalBoundary.ts +72 -0
- package/src/workflow/useFollowExecution.ts +0 -26
- package/src/workflow/useWorkflowArtifactDownload.ts +68 -0
- package/src/workflow/useWorkflowExecutionActions.ts +3 -2
- package/src/workflow/useWorkflowExecutionFileChanges.ts +341 -0
- package/src/workflow/useWorkflowExecutionGraph.ts +3 -43
- package/src/workflow/useWorkflowExecutionPanel.ts +292 -0
- package/src/workflow/useWorkflowExecutionRailViews.tsx +173 -0
- package/src/workspace/FileViewer.tsx +3 -3
- package/src/workspace/PanelChip.tsx +103 -0
- package/src/workspace/WorkspaceSurface.tsx +50 -6
- package/src/workspace/__tests__/WorkspaceSurface.test.tsx +110 -0
- package/src/workspace/index.ts +3 -0
- package/styles.css +1 -1
- package/workflow/WorkflowAgentExecutionDocument.d.ts +79 -0
- package/workflow/WorkflowAgentExecutionDocument.d.ts.map +1 -0
- package/workflow/WorkflowAgentExecutionDocument.js +87 -0
- package/workflow/WorkflowAgentExecutionDocument.js.map +1 -0
- package/workflow/WorkflowApprovalList.d.ts +62 -0
- package/workflow/WorkflowApprovalList.d.ts.map +1 -0
- package/workflow/WorkflowApprovalList.js +52 -0
- package/workflow/WorkflowApprovalList.js.map +1 -0
- package/workflow/WorkflowArtifactDocument.d.ts +29 -0
- package/workflow/WorkflowArtifactDocument.d.ts.map +1 -0
- package/workflow/WorkflowArtifactDocument.js +89 -0
- package/workflow/WorkflowArtifactDocument.js.map +1 -0
- package/workflow/WorkflowExecutionGraph.d.ts +15 -13
- package/workflow/WorkflowExecutionGraph.d.ts.map +1 -1
- package/workflow/WorkflowExecutionGraph.js +18 -53
- package/workflow/WorkflowExecutionGraph.js.map +1 -1
- package/workflow/WorkflowExecutionViewer.d.ts +8 -5
- package/workflow/WorkflowExecutionViewer.d.ts.map +1 -1
- package/workflow/WorkflowExecutionViewer.js +329 -54
- package/workflow/WorkflowExecutionViewer.js.map +1 -1
- package/workflow/WorkflowFileReviewList.d.ts +1 -1
- package/workflow/WorkflowFileReviewList.js +1 -1
- package/workflow/WorkflowTaskApprovalCard.d.ts +4 -3
- package/workflow/WorkflowTaskApprovalCard.d.ts.map +1 -1
- package/workflow/WorkflowTaskApprovalCard.js +5 -4
- package/workflow/WorkflowTaskApprovalCard.js.map +1 -1
- package/workflow/WorkflowTaskApprovalSummary.d.ts +6 -6
- package/workflow/WorkflowTaskApprovalSummary.js +5 -5
- package/workflow/deriveWorkflowArtifactItems.d.ts +30 -0
- package/workflow/deriveWorkflowArtifactItems.d.ts.map +1 -0
- package/workflow/deriveWorkflowArtifactItems.js +38 -0
- package/workflow/deriveWorkflowArtifactItems.js.map +1 -0
- package/workflow/deriveWorkflowUsageItems.d.ts +36 -0
- package/workflow/deriveWorkflowUsageItems.d.ts.map +1 -0
- package/workflow/deriveWorkflowUsageItems.js +50 -0
- package/workflow/deriveWorkflowUsageItems.js.map +1 -0
- package/workflow/diagnosis-document.d.ts +17 -0
- package/workflow/diagnosis-document.d.ts.map +1 -0
- package/workflow/diagnosis-document.js +29 -0
- package/workflow/diagnosis-document.js.map +1 -0
- package/workflow/execution/index.d.ts +0 -2
- package/workflow/execution/index.d.ts.map +1 -1
- package/workflow/execution/index.js +0 -2
- package/workflow/execution/index.js.map +1 -1
- package/workflow/facets/WorkflowArtifactsTab.d.ts +26 -0
- package/workflow/facets/WorkflowArtifactsTab.d.ts.map +1 -0
- package/workflow/facets/WorkflowArtifactsTab.js +34 -0
- package/workflow/facets/WorkflowArtifactsTab.js.map +1 -0
- package/workflow/facets/WorkflowChangesTab.d.ts +37 -0
- package/workflow/facets/WorkflowChangesTab.d.ts.map +1 -0
- package/workflow/facets/WorkflowChangesTab.js +50 -0
- package/workflow/facets/WorkflowChangesTab.js.map +1 -0
- package/workflow/facets/WorkflowUsageTab.d.ts +27 -0
- package/workflow/facets/WorkflowUsageTab.d.ts.map +1 -0
- package/workflow/facets/WorkflowUsageTab.js +87 -0
- package/workflow/facets/WorkflowUsageTab.js.map +1 -0
- package/workflow/format-utils.d.ts +2 -3
- package/workflow/format-utils.d.ts.map +1 -1
- package/workflow/format-utils.js +2 -3
- package/workflow/format-utils.js.map +1 -1
- package/workflow/index.d.ts +21 -10
- package/workflow/index.d.ts.map +1 -1
- package/workflow/index.js +29 -14
- package/workflow/index.js.map +1 -1
- package/workflow/inspector/index.d.ts +0 -2
- package/workflow/inspector/index.d.ts.map +1 -1
- package/workflow/inspector/index.js +0 -2
- package/workflow/inspector/index.js.map +1 -1
- package/workflow/instance/WorkflowInstanceList.d.ts.map +1 -1
- package/workflow/instance/WorkflowInstanceList.js +11 -3
- package/workflow/instance/WorkflowInstanceList.js.map +1 -1
- package/workflow/task-detail/StructuredDataViewer.d.ts.map +1 -0
- package/workflow/task-detail/StructuredDataViewer.js.map +1 -0
- package/workflow/task-detail/index.d.ts +4 -0
- package/workflow/task-detail/index.d.ts.map +1 -0
- package/workflow/task-detail/index.js +4 -0
- package/workflow/task-detail/index.js.map +1 -0
- package/workflow/task-detail/task-approval.d.ts +89 -0
- package/workflow/task-detail/task-approval.d.ts.map +1 -0
- package/workflow/task-detail/task-approval.js +84 -0
- package/workflow/task-detail/task-approval.js.map +1 -0
- package/workflow/task-detail/task-detail-io.d.ts +39 -0
- package/workflow/task-detail/task-detail-io.d.ts.map +1 -0
- package/workflow/task-detail/task-detail-io.js +42 -0
- package/workflow/task-detail/task-detail-io.js.map +1 -0
- package/workflow/thread/WorkflowTaskThread.d.ts +91 -0
- package/workflow/thread/WorkflowTaskThread.d.ts.map +1 -0
- package/workflow/thread/WorkflowTaskThread.js +318 -0
- package/workflow/thread/WorkflowTaskThread.js.map +1 -0
- package/workflow/thread/project-thread-items.d.ts +108 -0
- package/workflow/thread/project-thread-items.d.ts.map +1 -0
- package/workflow/thread/project-thread-items.js +126 -0
- package/workflow/thread/project-thread-items.js.map +1 -0
- package/workflow/thread/task-presentation.d.ts +73 -0
- package/workflow/thread/task-presentation.d.ts.map +1 -0
- package/workflow/thread/task-presentation.js +331 -0
- package/workflow/thread/task-presentation.js.map +1 -0
- package/workflow/thread/thread-presentation.d.ts +28 -0
- package/workflow/thread/thread-presentation.d.ts.map +1 -0
- package/workflow/thread/thread-presentation.js +28 -0
- package/workflow/thread/thread-presentation.js.map +1 -0
- package/workflow/thread/useWorkflowThreadItems.d.ts +16 -0
- package/workflow/thread/useWorkflowThreadItems.d.ts.map +1 -0
- package/workflow/thread/useWorkflowThreadItems.js +22 -0
- package/workflow/thread/useWorkflowThreadItems.js.map +1 -0
- package/workflow/useApprovalBoundary.d.ts +38 -0
- package/workflow/useApprovalBoundary.d.ts.map +1 -0
- package/workflow/useApprovalBoundary.js +55 -0
- package/workflow/useApprovalBoundary.js.map +1 -0
- package/workflow/useFollowExecution.d.ts +0 -20
- package/workflow/useFollowExecution.d.ts.map +1 -1
- package/workflow/useFollowExecution.js +0 -17
- package/workflow/useFollowExecution.js.map +1 -1
- package/workflow/useWorkflowArtifactDownload.d.ts +28 -0
- package/workflow/useWorkflowArtifactDownload.d.ts.map +1 -0
- package/workflow/useWorkflowArtifactDownload.js +45 -0
- package/workflow/useWorkflowArtifactDownload.js.map +1 -0
- package/workflow/useWorkflowExecutionActions.d.ts +3 -2
- package/workflow/useWorkflowExecutionActions.d.ts.map +1 -1
- package/workflow/useWorkflowExecutionActions.js.map +1 -1
- package/workflow/useWorkflowExecutionFileChanges.d.ts +107 -0
- package/workflow/useWorkflowExecutionFileChanges.d.ts.map +1 -0
- package/workflow/useWorkflowExecutionFileChanges.js +244 -0
- package/workflow/useWorkflowExecutionFileChanges.js.map +1 -0
- package/workflow/useWorkflowExecutionGraph.d.ts +1 -14
- package/workflow/useWorkflowExecutionGraph.d.ts.map +1 -1
- package/workflow/useWorkflowExecutionGraph.js +2 -25
- package/workflow/useWorkflowExecutionGraph.js.map +1 -1
- package/workflow/useWorkflowExecutionPanel.d.ts +108 -0
- package/workflow/useWorkflowExecutionPanel.d.ts.map +1 -0
- package/workflow/useWorkflowExecutionPanel.js +103 -0
- package/workflow/useWorkflowExecutionPanel.js.map +1 -0
- package/workflow/useWorkflowExecutionRailViews.d.ts +46 -0
- package/workflow/useWorkflowExecutionRailViews.d.ts.map +1 -0
- package/workflow/useWorkflowExecutionRailViews.js +81 -0
- package/workflow/useWorkflowExecutionRailViews.js.map +1 -0
- package/workspace/FileViewer.d.ts +1 -1
- package/workspace/FileViewer.js +3 -3
- package/workspace/FileViewer.js.map +1 -1
- package/workspace/PanelChip.d.ts +27 -0
- package/workspace/PanelChip.d.ts.map +1 -0
- package/workspace/PanelChip.js +42 -0
- package/workspace/PanelChip.js.map +1 -0
- package/workspace/WorkspaceSurface.d.ts +25 -1
- package/workspace/WorkspaceSurface.d.ts.map +1 -1
- package/workspace/WorkspaceSurface.js +21 -9
- package/workspace/WorkspaceSurface.js.map +1 -1
- package/workspace/index.d.ts +3 -1
- package/workspace/index.d.ts.map +1 -1
- package/workspace/index.js +1 -0
- package/workspace/index.js.map +1 -1
- package/execution/ThreadSelectionContext.d.ts +0 -17
- package/execution/ThreadSelectionContext.d.ts.map +0 -1
- package/execution/ThreadSelectionContext.js +0 -18
- package/execution/ThreadSelectionContext.js.map +0 -1
- package/execution/useThreadSelection.d.ts +0 -35
- package/execution/useThreadSelection.d.ts.map +0 -1
- package/execution/useThreadSelection.js +0 -65
- package/execution/useThreadSelection.js.map +0 -1
- package/internal/store/selection-store.d.ts +0 -53
- package/internal/store/selection-store.d.ts.map +0 -1
- package/internal/store/selection-store.js +0 -88
- package/internal/store/selection-store.js.map +0 -1
- package/session/artifact-document.d.ts.map +0 -1
- package/session/artifact-document.js +0 -22
- package/session/artifact-document.js.map +0 -1
- package/session/facets/InspectTab.d.ts +0 -13
- package/session/facets/InspectTab.d.ts.map +0 -1
- package/session/facets/InspectTab.js +0 -19
- package/session/facets/InspectTab.js.map +0 -1
- package/src/execution/ThreadSelectionContext.tsx +0 -20
- package/src/execution/useThreadSelection.ts +0 -95
- package/src/internal/store/__tests__/selection-store.test.ts +0 -115
- package/src/internal/store/selection-store.ts +0 -112
- package/src/session/artifact-document.ts +0 -23
- package/src/session/facets/InspectTab.tsx +0 -57
- package/src/workflow/WorkflowExecutionApprovalCard.tsx +0 -154
- package/src/workflow/WorkflowExecutionArtifactPanel.tsx +0 -107
- package/src/workflow/WorkflowExecutionCostPanel.tsx +0 -120
- package/src/workflow/WorkflowExecutionTaskPanel.tsx +0 -129
- package/src/workflow/WorkflowExecutionTimeline.tsx +0 -151
- package/src/workflow/WorkflowExecutionTimelineEvent.tsx +0 -497
- package/src/workflow/__tests__/ExecutionInspector.test.tsx +0 -155
- package/src/workflow/__tests__/WorkflowExecutionApprovalCard.test.tsx +0 -129
- package/src/workflow/__tests__/derive-task-detail.test.ts +0 -1265
- package/src/workflow/__tests__/derive-waterfall-entries.test.ts +0 -521
- package/src/workflow/__tests__/execution-inspector.test.tsx +0 -332
- package/src/workflow/execution/derive-waterfall-entries.ts +0 -377
- package/src/workflow/execution/useWaterfallEntries.ts +0 -125
- package/src/workflow/execution-inspector/AgentCallTab.tsx +0 -169
- package/src/workflow/execution-inspector/ErrorTab.tsx +0 -110
- package/src/workflow/execution-inspector/EventLogTab.tsx +0 -79
- package/src/workflow/execution-inspector/ExecutionInspector.tsx +0 -341
- package/src/workflow/execution-inspector/InputOutputTab.tsx +0 -325
- package/src/workflow/execution-inspector/RetriesTab.tsx +0 -68
- package/src/workflow/execution-inspector/SummaryTab.tsx +0 -62
- package/src/workflow/execution-inspector/derive-task-detail.ts +0 -584
- package/src/workflow/execution-inspector/index.ts +0 -14
- package/src/workflow/execution-inspector/useExecutionTaskDetail.ts +0 -55
- package/src/workflow/inspector/ExecutionInspectorAdapter.tsx +0 -40
- package/src/workflow/waterfall/WaterfallBar.tsx +0 -167
- package/src/workflow/waterfall/WaterfallRow.tsx +0 -112
- package/src/workflow/waterfall/WaterfallScale.tsx +0 -52
- package/src/workflow/waterfall/WaterfallTimeline.tsx +0 -138
- package/src/workflow/waterfall/WaterfallTooltip.tsx +0 -74
- package/src/workflow/waterfall/index.ts +0 -5
- package/workflow/WorkflowExecutionApprovalCard.d.ts +0 -34
- package/workflow/WorkflowExecutionApprovalCard.d.ts.map +0 -1
- package/workflow/WorkflowExecutionApprovalCard.js +0 -46
- package/workflow/WorkflowExecutionApprovalCard.js.map +0 -1
- package/workflow/WorkflowExecutionArtifactPanel.d.ts +0 -15
- package/workflow/WorkflowExecutionArtifactPanel.d.ts.map +0 -1
- package/workflow/WorkflowExecutionArtifactPanel.js +0 -46
- package/workflow/WorkflowExecutionArtifactPanel.js.map +0 -1
- package/workflow/WorkflowExecutionCostPanel.d.ts +0 -18
- package/workflow/WorkflowExecutionCostPanel.d.ts.map +0 -1
- package/workflow/WorkflowExecutionCostPanel.js +0 -31
- package/workflow/WorkflowExecutionCostPanel.js.map +0 -1
- package/workflow/WorkflowExecutionTaskPanel.d.ts +0 -24
- package/workflow/WorkflowExecutionTaskPanel.d.ts.map +0 -1
- package/workflow/WorkflowExecutionTaskPanel.js +0 -51
- package/workflow/WorkflowExecutionTaskPanel.js.map +0 -1
- package/workflow/WorkflowExecutionTimeline.d.ts +0 -42
- package/workflow/WorkflowExecutionTimeline.d.ts.map +0 -1
- package/workflow/WorkflowExecutionTimeline.js +0 -52
- package/workflow/WorkflowExecutionTimeline.js.map +0 -1
- package/workflow/WorkflowExecutionTimelineEvent.d.ts +0 -25
- package/workflow/WorkflowExecutionTimelineEvent.d.ts.map +0 -1
- package/workflow/WorkflowExecutionTimelineEvent.js +0 -179
- package/workflow/WorkflowExecutionTimelineEvent.js.map +0 -1
- package/workflow/execution/derive-waterfall-entries.d.ts +0 -85
- package/workflow/execution/derive-waterfall-entries.d.ts.map +0 -1
- package/workflow/execution/derive-waterfall-entries.js +0 -268
- package/workflow/execution/derive-waterfall-entries.js.map +0 -1
- package/workflow/execution/useWaterfallEntries.d.ts +0 -25
- package/workflow/execution/useWaterfallEntries.d.ts.map +0 -1
- package/workflow/execution/useWaterfallEntries.js +0 -67
- package/workflow/execution/useWaterfallEntries.js.map +0 -1
- package/workflow/execution-inspector/AgentCallTab.d.ts +0 -21
- package/workflow/execution-inspector/AgentCallTab.d.ts.map +0 -1
- package/workflow/execution-inspector/AgentCallTab.js +0 -36
- package/workflow/execution-inspector/AgentCallTab.js.map +0 -1
- package/workflow/execution-inspector/ErrorTab.d.ts +0 -9
- package/workflow/execution-inspector/ErrorTab.d.ts.map +0 -1
- package/workflow/execution-inspector/ErrorTab.js +0 -29
- package/workflow/execution-inspector/ErrorTab.js.map +0 -1
- package/workflow/execution-inspector/EventLogTab.d.ts +0 -11
- package/workflow/execution-inspector/EventLogTab.d.ts.map +0 -1
- package/workflow/execution-inspector/EventLogTab.js +0 -47
- package/workflow/execution-inspector/EventLogTab.js.map +0 -1
- package/workflow/execution-inspector/ExecutionInspector.d.ts +0 -69
- package/workflow/execution-inspector/ExecutionInspector.d.ts.map +0 -1
- package/workflow/execution-inspector/ExecutionInspector.js +0 -145
- package/workflow/execution-inspector/ExecutionInspector.js.map +0 -1
- package/workflow/execution-inspector/InputOutputTab.d.ts +0 -20
- package/workflow/execution-inspector/InputOutputTab.d.ts.map +0 -1
- package/workflow/execution-inspector/InputOutputTab.js +0 -124
- package/workflow/execution-inspector/InputOutputTab.js.map +0 -1
- package/workflow/execution-inspector/RetriesTab.d.ts +0 -7
- package/workflow/execution-inspector/RetriesTab.d.ts.map +0 -1
- package/workflow/execution-inspector/RetriesTab.js +0 -11
- package/workflow/execution-inspector/RetriesTab.js.map +0 -1
- package/workflow/execution-inspector/StructuredDataViewer.d.ts.map +0 -1
- package/workflow/execution-inspector/StructuredDataViewer.js.map +0 -1
- package/workflow/execution-inspector/SummaryTab.d.ts +0 -7
- package/workflow/execution-inspector/SummaryTab.d.ts.map +0 -1
- package/workflow/execution-inspector/SummaryTab.js +0 -10
- package/workflow/execution-inspector/SummaryTab.js.map +0 -1
- package/workflow/execution-inspector/derive-task-detail.d.ts +0 -140
- package/workflow/execution-inspector/derive-task-detail.d.ts.map +0 -1
- package/workflow/execution-inspector/derive-task-detail.js +0 -366
- package/workflow/execution-inspector/derive-task-detail.js.map +0 -1
- package/workflow/execution-inspector/index.d.ts +0 -4
- package/workflow/execution-inspector/index.d.ts.map +0 -1
- package/workflow/execution-inspector/index.js +0 -4
- package/workflow/execution-inspector/index.js.map +0 -1
- package/workflow/execution-inspector/useExecutionTaskDetail.d.ts +0 -38
- package/workflow/execution-inspector/useExecutionTaskDetail.d.ts.map +0 -1
- package/workflow/execution-inspector/useExecutionTaskDetail.js +0 -37
- package/workflow/execution-inspector/useExecutionTaskDetail.js.map +0 -1
- package/workflow/inspector/ExecutionInspectorAdapter.d.ts +0 -26
- package/workflow/inspector/ExecutionInspectorAdapter.d.ts.map +0 -1
- package/workflow/inspector/ExecutionInspectorAdapter.js +0 -23
- package/workflow/inspector/ExecutionInspectorAdapter.js.map +0 -1
- package/workflow/waterfall/WaterfallBar.d.ts +0 -19
- package/workflow/waterfall/WaterfallBar.d.ts.map +0 -1
- package/workflow/waterfall/WaterfallBar.js +0 -70
- package/workflow/waterfall/WaterfallBar.js.map +0 -1
- package/workflow/waterfall/WaterfallRow.d.ts +0 -18
- package/workflow/waterfall/WaterfallRow.d.ts.map +0 -1
- package/workflow/waterfall/WaterfallRow.js +0 -45
- package/workflow/waterfall/WaterfallRow.js.map +0 -1
- package/workflow/waterfall/WaterfallScale.d.ts +0 -14
- package/workflow/waterfall/WaterfallScale.d.ts.map +0 -1
- package/workflow/waterfall/WaterfallScale.js +0 -22
- package/workflow/waterfall/WaterfallScale.js.map +0 -1
- package/workflow/waterfall/WaterfallTimeline.d.ts +0 -46
- package/workflow/waterfall/WaterfallTimeline.d.ts.map +0 -1
- package/workflow/waterfall/WaterfallTimeline.js +0 -60
- package/workflow/waterfall/WaterfallTimeline.js.map +0 -1
- package/workflow/waterfall/WaterfallTooltip.d.ts +0 -15
- package/workflow/waterfall/WaterfallTooltip.d.ts.map +0 -1
- package/workflow/waterfall/WaterfallTooltip.js +0 -20
- package/workflow/waterfall/WaterfallTooltip.js.map +0 -1
- package/workflow/waterfall/index.d.ts +0 -6
- package/workflow/waterfall/index.d.ts.map +0 -1
- package/workflow/waterfall/index.js +0 -6
- package/workflow/waterfall/index.js.map +0 -1
- /package/src/workflow/{execution-inspector → task-detail}/StructuredDataViewer.tsx +0 -0
- /package/workflow/{execution-inspector → task-detail}/StructuredDataViewer.d.ts +0 -0
- /package/workflow/{execution-inspector → task-detail}/StructuredDataViewer.js +0 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { WorkflowTaskKind } from "@stigmer/protos/ai/stigmer/agentic/workflow/v1/enum_pb";
|
|
2
|
+
import type { TopologyNodeCategory } from "../useWorkflowTopology.js";
|
|
3
|
+
import { categorizeKind } from "../kind-metadata.js";
|
|
4
|
+
import { taskKindToString } from "../workflow-graph-conversions.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Presentation variant for a task card in the workflow task thread.
|
|
8
|
+
*
|
|
9
|
+
* Deliberately NOT a new task-kind classification (D-T02-3): variants are a
|
|
10
|
+
* thin presentation projection of the canonical categories from
|
|
11
|
+
* `kind-metadata.ts` (`categorizeKind` — the single source of truth that
|
|
12
|
+
* already consolidated three drifted client-side classifications), plus one
|
|
13
|
+
* kind-level special case for the flagship `agent_call` card.
|
|
14
|
+
*
|
|
15
|
+
* - `agent-call` — the flagship: live agent slug, current tool, message and
|
|
16
|
+
* tool-call counts, transcript expansion (D-T02-2).
|
|
17
|
+
* - `control` — control-flow tasks (switch/fork/for-each/try-catch/wait).
|
|
18
|
+
* - `gate` — governance tasks (human_input); the stop-sign of the thread.
|
|
19
|
+
* - `event` — signal/timing tasks (listen/emit/notification/raise-error).
|
|
20
|
+
* - `action` — everything else (invocations, data transforms, LLM calls);
|
|
21
|
+
* also the fallback for `unspecified` kinds, which the snapshot-derived
|
|
22
|
+
* fallback task map produces when the event log is empty.
|
|
23
|
+
*/
|
|
24
|
+
export type WorkflowThreadCardVariant =
|
|
25
|
+
| "agent-call"
|
|
26
|
+
| "control"
|
|
27
|
+
| "gate"
|
|
28
|
+
| "event"
|
|
29
|
+
| "action";
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Canonical category → card variant. Data, not branches — the same table
|
|
33
|
+
* pattern the graph's visual registry and the session's tool taxonomy use.
|
|
34
|
+
*/
|
|
35
|
+
const VARIANT_FOR_CATEGORY: ReadonlyMap<
|
|
36
|
+
TopologyNodeCategory,
|
|
37
|
+
WorkflowThreadCardVariant
|
|
38
|
+
> = new Map([
|
|
39
|
+
["ai", "action"], // agent_call is special-cased below; llm_call/eval read as actions
|
|
40
|
+
["control_flow", "control"],
|
|
41
|
+
["invocation", "action"],
|
|
42
|
+
["data", "action"],
|
|
43
|
+
["governance", "gate"],
|
|
44
|
+
["event", "event"],
|
|
45
|
+
["unspecified", "action"],
|
|
46
|
+
]);
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Resolves the thread card variant for a task kind.
|
|
50
|
+
*
|
|
51
|
+
* `agent_call` is the one kind-level special case (the flagship card);
|
|
52
|
+
* every other kind flows through the canonical category classification.
|
|
53
|
+
*/
|
|
54
|
+
export function threadCardVariant(
|
|
55
|
+
kind: WorkflowTaskKind,
|
|
56
|
+
): WorkflowThreadCardVariant {
|
|
57
|
+
if (kind === WorkflowTaskKind.agent_call) return "agent-call";
|
|
58
|
+
return VARIANT_FOR_CATEGORY.get(categorizeKind(taskKindToString(kind))) ?? "action";
|
|
59
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { useRef } from "react";
|
|
4
|
+
import type { DerivedTaskState } from "../../internal/store/workflow-execution-event-store.js";
|
|
5
|
+
import {
|
|
6
|
+
projectThreadItems,
|
|
7
|
+
type WorkflowThreadProjection,
|
|
8
|
+
} from "./project-thread-items.js";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Behavior hook binding {@link projectThreadItems} to a render loop with
|
|
12
|
+
* structural sharing: items whose fields did not change keep their object
|
|
13
|
+
* identity across event appends, so memoized card rows bail (DD-010).
|
|
14
|
+
*
|
|
15
|
+
* The projection is cheap (one pass over the task map), so it recomputes
|
|
16
|
+
* per render of the (memoized) thread organism rather than adding a
|
|
17
|
+
* `useMemo` whose dependency — the store's `taskStates` — changes identity
|
|
18
|
+
* on every event append anyway. The ref carries only the previous items
|
|
19
|
+
* for identity reuse; it holds no state of its own (single source of truth
|
|
20
|
+
* stays the store).
|
|
21
|
+
*/
|
|
22
|
+
export function useWorkflowThreadItems(
|
|
23
|
+
taskStates: ReadonlyMap<string, DerivedTaskState>,
|
|
24
|
+
totalTasks: number,
|
|
25
|
+
): WorkflowThreadProjection {
|
|
26
|
+
const previousItemsRef = useRef<WorkflowThreadProjection["items"]>([]);
|
|
27
|
+
const projection = projectThreadItems(
|
|
28
|
+
taskStates,
|
|
29
|
+
totalTasks,
|
|
30
|
+
previousItemsRef.current,
|
|
31
|
+
);
|
|
32
|
+
previousItemsRef.current = projection.items;
|
|
33
|
+
return projection;
|
|
34
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { useEffect, useRef } from "react";
|
|
4
|
+
import type { DerivedTaskState } from "../internal/store/workflow-execution-event-store.js";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Tasks that crossed the `waiting_approval` boundary in one commit of the
|
|
8
|
+
* derived task-state map, in the map's (first-started) order.
|
|
9
|
+
*/
|
|
10
|
+
export interface ApprovalBoundaryCrossing {
|
|
11
|
+
/** Task names that transitioned INTO `waiting_approval` (a gate opened). */
|
|
12
|
+
readonly entered: readonly string[];
|
|
13
|
+
/** Task names that transitioned OUT of `waiting_approval` (a gate resolved). */
|
|
14
|
+
readonly exited: readonly string[];
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Behavior hook that watches the live derived task-state map and reports
|
|
19
|
+
* when any task crosses the `waiting_approval` boundary — the client-side
|
|
20
|
+
* mirror of the stream's `approval_requested` / `approval_resolved` events.
|
|
21
|
+
*
|
|
22
|
+
* Why this exists: the execution SNAPSHOT (`status.pending_approvals` /
|
|
23
|
+
* `status.pending_file_reviews`) is fetched once and carries the gate
|
|
24
|
+
* payloads, while the event STREAM is live but carries only task status.
|
|
25
|
+
* A boundary crossing is precisely the moment the snapshot goes stale, so
|
|
26
|
+
* consumers refetch it then — derived-over-stored: the stream is the
|
|
27
|
+
* signal, the snapshot stays the single source for gate payloads. The
|
|
28
|
+
* `WorkflowExecutionViewer` additionally auto-selects a newly gated task so
|
|
29
|
+
* the decision surface (the panel's Inspect Approval tab) is never hidden
|
|
30
|
+
* while the run is blocked.
|
|
31
|
+
*
|
|
32
|
+
* Same diffing shape as {@link useExecutionAnnouncements} (prev-map ref,
|
|
33
|
+
* diff on each map commit). A task first observed already in
|
|
34
|
+
* `waiting_approval` counts as entered — with rAF-coalesced commits the
|
|
35
|
+
* running→waiting transition can collapse into the task's first appearance.
|
|
36
|
+
*
|
|
37
|
+
* `enabled` gates the CALLBACK, not the tracking: state is tracked even
|
|
38
|
+
* while disabled so enabling later never replays stale crossings. Keep it
|
|
39
|
+
* `false` for terminal executions — their event-history replay crosses the
|
|
40
|
+
* boundary for long-decided gates.
|
|
41
|
+
*/
|
|
42
|
+
export function useApprovalBoundary(
|
|
43
|
+
taskStates: ReadonlyMap<string, DerivedTaskState>,
|
|
44
|
+
enabled: boolean,
|
|
45
|
+
onCrossing: (crossing: ApprovalBoundaryCrossing) => void,
|
|
46
|
+
): void {
|
|
47
|
+
const prevStatesRef = useRef<ReadonlyMap<string, DerivedTaskState>>(new Map());
|
|
48
|
+
// Render-synced ref so the diff effect never re-runs (and never fires
|
|
49
|
+
// spuriously) because a consumer passed a fresh callback identity.
|
|
50
|
+
const onCrossingRef = useRef(onCrossing);
|
|
51
|
+
onCrossingRef.current = onCrossing;
|
|
52
|
+
|
|
53
|
+
useEffect(() => {
|
|
54
|
+
const prev = prevStatesRef.current;
|
|
55
|
+
prevStatesRef.current = taskStates;
|
|
56
|
+
if (!enabled) return;
|
|
57
|
+
|
|
58
|
+
const entered: string[] = [];
|
|
59
|
+
const exited: string[] = [];
|
|
60
|
+
|
|
61
|
+
for (const [name, state] of taskStates) {
|
|
62
|
+
const prevStatus = prev.get(name)?.status;
|
|
63
|
+
if (prevStatus === state.status) continue;
|
|
64
|
+
if (state.status === "waiting_approval") entered.push(name);
|
|
65
|
+
else if (prevStatus === "waiting_approval") exited.push(name);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
if (entered.length > 0 || exited.length > 0) {
|
|
69
|
+
onCrossingRef.current({ entered, exited });
|
|
70
|
+
}
|
|
71
|
+
}, [taskStates, enabled]);
|
|
72
|
+
}
|
|
@@ -105,32 +105,6 @@ export function computeFollowCenter(input: FollowCenterInput): FollowCenterResul
|
|
|
105
105
|
};
|
|
106
106
|
}
|
|
107
107
|
|
|
108
|
-
/** Inputs for the follow-selection decision. */
|
|
109
|
-
export interface FollowSelectionInput {
|
|
110
|
-
/** Whether the follow state machine is in "following" state. */
|
|
111
|
-
readonly isFollowing: boolean;
|
|
112
|
-
/** The currently active (running/waiting) task name, or null. */
|
|
113
|
-
readonly activeTaskName: string | null;
|
|
114
|
-
/** The currently selected task name in the graph, or null. */
|
|
115
|
-
readonly currentSelectedTask: string | null;
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
/**
|
|
119
|
-
* Pure function that determines whether follow-selection should update
|
|
120
|
-
* the selected task. Returns the task name to select, or `null` when
|
|
121
|
-
* no change is needed. Extracted for testability (DD-003).
|
|
122
|
-
*
|
|
123
|
-
* Selection should update when all three conditions hold:
|
|
124
|
-
* 1. Follow is active (`isFollowing`)
|
|
125
|
-
* 2. An active task exists (`activeTaskName`)
|
|
126
|
-
* 3. The active task differs from the current selection
|
|
127
|
-
*/
|
|
128
|
-
export function computeFollowSelection(input: FollowSelectionInput): string | null {
|
|
129
|
-
if (!input.isFollowing || !input.activeTaskName) return null;
|
|
130
|
-
if (input.activeTaskName === input.currentSelectedTask) return null;
|
|
131
|
-
return input.activeTaskName;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
108
|
/**
|
|
135
109
|
* Behavior hook implementing a follow-execution state machine for the
|
|
136
110
|
* workflow execution graph viewport.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// Behavior hook that downloads an Artifact resource on demand.
|
|
4
|
+
// Domain: workflow (the Artifact-resource counterpart of useArtifactDownload).
|
|
5
|
+
|
|
6
|
+
import { useCallback, useMemo, useState } from "react";
|
|
7
|
+
import { useStigmer } from "../hooks.js";
|
|
8
|
+
import { toError } from "../internal/toError.js";
|
|
9
|
+
|
|
10
|
+
/** Return value of {@link useWorkflowArtifactDownload}. */
|
|
11
|
+
export interface UseWorkflowArtifactDownloadReturn {
|
|
12
|
+
/**
|
|
13
|
+
* Mint a fresh download URL for the artifact and open it. No-op when the
|
|
14
|
+
* id is empty or a download is already in flight. Resolves once the
|
|
15
|
+
* download has been initiated.
|
|
16
|
+
*
|
|
17
|
+
* @param artifactId - The `Artifact` resource id (`art_…`).
|
|
18
|
+
*/
|
|
19
|
+
readonly download: (artifactId: string) => Promise<void>;
|
|
20
|
+
/** `true` while a URL is being minted / the download is being initiated. */
|
|
21
|
+
readonly isDownloading: boolean;
|
|
22
|
+
/** Error from the last failed download attempt, or `null` when healthy. */
|
|
23
|
+
readonly error: Error | null;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Behavior hook that downloads an `Artifact` resource on demand via
|
|
28
|
+
* `stigmer.artifact.getDownloadUrl(id)` — mint-at-click-time so the
|
|
29
|
+
* (short-TTL, presigned in Cloud) URL is always valid.
|
|
30
|
+
*
|
|
31
|
+
* Mirrors {@link useArtifactDownload}, which serves the session's
|
|
32
|
+
* `ExecutionArtifact` model (addressed by `executionId` + `storageKey`);
|
|
33
|
+
* this one serves the workflow's first-class `Artifact` resource (addressed
|
|
34
|
+
* by artifact id). The two models are deliberately unified only at the
|
|
35
|
+
* presentational layer, so each keeps its own download mechanics.
|
|
36
|
+
*/
|
|
37
|
+
export function useWorkflowArtifactDownload(): UseWorkflowArtifactDownloadReturn {
|
|
38
|
+
const stigmer = useStigmer();
|
|
39
|
+
const [isDownloading, setIsDownloading] = useState(false);
|
|
40
|
+
const [error, setError] = useState<Error | null>(null);
|
|
41
|
+
|
|
42
|
+
const download = useCallback(
|
|
43
|
+
async (artifactId: string) => {
|
|
44
|
+
if (!artifactId || isDownloading) return;
|
|
45
|
+
setIsDownloading(true);
|
|
46
|
+
setError(null);
|
|
47
|
+
try {
|
|
48
|
+
const result = await stigmer.artifact.getDownloadUrl(artifactId);
|
|
49
|
+
if (result.url) {
|
|
50
|
+
// New tab rather than an anchor download: the URL's disposition is
|
|
51
|
+
// owned by the server (presigned in Cloud), and the `download`
|
|
52
|
+
// attribute is ignored cross-origin anyway.
|
|
53
|
+
window.open(result.url, "_blank", "noopener,noreferrer");
|
|
54
|
+
}
|
|
55
|
+
} catch (err) {
|
|
56
|
+
setError(toError(err));
|
|
57
|
+
} finally {
|
|
58
|
+
setIsDownloading(false);
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
[stigmer, isDownloading],
|
|
62
|
+
);
|
|
63
|
+
|
|
64
|
+
return useMemo(
|
|
65
|
+
() => ({ download, isDownloading, error }),
|
|
66
|
+
[download, isDownloading, error],
|
|
67
|
+
);
|
|
68
|
+
}
|
|
@@ -116,8 +116,9 @@ export interface UseWorkflowExecutionActionsReturn {
|
|
|
116
116
|
readonly approvalSubmittingToolCallIds: ReadonlySet<string>;
|
|
117
117
|
/**
|
|
118
118
|
* Per-gate agent-tool approval failures, keyed by `toolCallId`. Consumed by
|
|
119
|
-
*
|
|
120
|
-
* beside the gate that failed. Cleared for a gate when it
|
|
119
|
+
* `WorkflowApprovalList` (via the shared `ApprovalCard`) to surface the
|
|
120
|
+
* failure in-card, beside the gate that failed. Cleared for a gate when it
|
|
121
|
+
* is retried.
|
|
121
122
|
*/
|
|
122
123
|
readonly approvalErrorsByToolCallId: ReadonlyMap<string, Error>;
|
|
123
124
|
/**
|
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// Execution-level file-change rollup for the workflow panel's Changes facet.
|
|
4
|
+
// Domain: workflow (the Changes-facet analog of useWorkflowExecutionArtifacts).
|
|
5
|
+
//
|
|
6
|
+
// Unlike Artifacts (a server-side aggregate: `artifact.listByExecution`) and
|
|
7
|
+
// Usage (server-emitted budget checkpoints), file changes have NO parent-level
|
|
8
|
+
// aggregate BY DESIGN: the server keeps diffs single-sourced on each child
|
|
9
|
+
// AgentExecution and surfaces only references from the parent (see
|
|
10
|
+
// `WorkflowExecutionStatus.pending_file_reviews`). So this hook dereferences
|
|
11
|
+
// the children client-side — the same reference→dereference architecture as
|
|
12
|
+
// `WorkflowFileReviewList`, generalized from "pending gates" to the settled
|
|
13
|
+
// net rollup, with a one-shot `get()` per child instead of a live stream
|
|
14
|
+
// (the rollup needs task-boundary freshness, not token-level liveness).
|
|
15
|
+
// Should a server rollup ever land, it can replace the fan-out behind this
|
|
16
|
+
// hook's plain `FileChange[]` seam without touching consumers.
|
|
17
|
+
|
|
18
|
+
import { useEffect, useMemo, useRef, useState } from "react";
|
|
19
|
+
import type { AgentExecution } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
|
|
20
|
+
import type { FileChange } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/message_pb";
|
|
21
|
+
import type { WorkflowTask } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/api_pb";
|
|
22
|
+
import { WorkflowTaskStatus } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/enum_pb";
|
|
23
|
+
import { deriveExecutionFileChanges } from "../execution/deriveExecutionFileChanges.js";
|
|
24
|
+
import { useStigmer } from "../hooks.js";
|
|
25
|
+
import { toError } from "../internal/toError.js";
|
|
26
|
+
import type { DerivedTaskState } from "../internal/store/workflow-execution-event-store.js";
|
|
27
|
+
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
// Enumeration (pure — exported for tests, DD-003)
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
|
|
32
|
+
/** One AGENT_CALL task's child execution, as enumerated for the rollup. */
|
|
33
|
+
export interface AgentCallChild {
|
|
34
|
+
/** Name of the owning workflow task. */
|
|
35
|
+
readonly taskName: string;
|
|
36
|
+
/** The child AgentExecution id (`aex_*`). */
|
|
37
|
+
readonly childExecutionId: string;
|
|
38
|
+
/**
|
|
39
|
+
* `true` once the owning task has settled (completed/failed/skipped) — the
|
|
40
|
+
* child's file changes are final and will never change again.
|
|
41
|
+
*/
|
|
42
|
+
readonly settled: boolean;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const SETTLED_TASK_STATUSES: ReadonlySet<DerivedTaskState["status"]> = new Set([
|
|
46
|
+
"completed",
|
|
47
|
+
"failed",
|
|
48
|
+
"skipped",
|
|
49
|
+
]);
|
|
50
|
+
|
|
51
|
+
const SETTLED_SNAPSHOT_STATUSES: ReadonlySet<WorkflowTaskStatus> = new Set([
|
|
52
|
+
WorkflowTaskStatus.WORKFLOW_TASK_COMPLETED,
|
|
53
|
+
WorkflowTaskStatus.WORKFLOW_TASK_FAILED,
|
|
54
|
+
WorkflowTaskStatus.WORKFLOW_TASK_SKIPPED,
|
|
55
|
+
]);
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Enumerates the AGENT_CALL children of a workflow execution in
|
|
59
|
+
* task-chronological order, deduplicated by child execution id.
|
|
60
|
+
*
|
|
61
|
+
* **Ordering is a correctness input downstream**: two agent-call tasks can
|
|
62
|
+
* edit the same path, and `deriveExecutionFileChanges` anchors each path's
|
|
63
|
+
* net diff on its first and last change — so children must be visited in the
|
|
64
|
+
* order their tasks ran.
|
|
65
|
+
*
|
|
66
|
+
* Two sources, mirroring `buildAgentCall` in the execution inspector:
|
|
67
|
+
*
|
|
68
|
+
* 1. **Event-derived task states** (primary). `DerivedTaskState.childExecutionId`
|
|
69
|
+
* is populated from `agentCallStarted`/`agentCallProgress` events, and the
|
|
70
|
+
* map's insertion order follows first-event order — i.e. task chronology.
|
|
71
|
+
* 2. **Snapshot task metadata** (fallback — load-bearing, not decorative).
|
|
72
|
+
* `execution.status.tasks[].metadata.agent_execution_id` covers tasks whose
|
|
73
|
+
* events are absent: the viewer's fallback task states (built when event
|
|
74
|
+
* persistence failed) hardcode `childExecutionId: ""`, so for those runs
|
|
75
|
+
* the snapshot is the ONLY id source. The dedupe therefore keys on tasks
|
|
76
|
+
* that actually CONTRIBUTED an id from events — an event-known task with
|
|
77
|
+
* an empty id must still resolve through its snapshot, or the fallback
|
|
78
|
+
* would never fire at all. Snapshot-resolved entries are appended after
|
|
79
|
+
* event-derived ones, ordered among themselves by `startedAt` (in the
|
|
80
|
+
* pure-fallback case that IS the chronological order; in the transient
|
|
81
|
+
* mixed case — a running task whose `agentCallStarted` event hasn't
|
|
82
|
+
* arrived yet — the tail position is an approximation the next event
|
|
83
|
+
* corrects). Settled-ness prefers the live event status when the task is
|
|
84
|
+
* known to events, falling back to the snapshot status.
|
|
85
|
+
*/
|
|
86
|
+
export function enumerateAgentCallChildren(
|
|
87
|
+
taskStates: ReadonlyMap<string, DerivedTaskState>,
|
|
88
|
+
taskSnapshots: readonly WorkflowTask[] | undefined,
|
|
89
|
+
): readonly AgentCallChild[] {
|
|
90
|
+
const children: AgentCallChild[] = [];
|
|
91
|
+
const seenIds = new Set<string>();
|
|
92
|
+
const tasksWithEventIds = new Set<string>();
|
|
93
|
+
|
|
94
|
+
for (const state of taskStates.values()) {
|
|
95
|
+
if (!state.childExecutionId || seenIds.has(state.childExecutionId)) continue;
|
|
96
|
+
seenIds.add(state.childExecutionId);
|
|
97
|
+
tasksWithEventIds.add(state.taskName);
|
|
98
|
+
children.push({
|
|
99
|
+
taskName: state.taskName,
|
|
100
|
+
childExecutionId: state.childExecutionId,
|
|
101
|
+
settled: SETTLED_TASK_STATUSES.has(state.status),
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
if (!taskSnapshots || taskSnapshots.length === 0) return children;
|
|
106
|
+
|
|
107
|
+
const fromSnapshots: Array<AgentCallChild & { readonly startedAt: string }> = [];
|
|
108
|
+
for (const task of taskSnapshots) {
|
|
109
|
+
if (!task.taskName || tasksWithEventIds.has(task.taskName)) continue;
|
|
110
|
+
// Only agent-call tasks carry an agent_execution_id in their metadata —
|
|
111
|
+
// presence of the id IS the discriminator (same read as the inspector's
|
|
112
|
+
// snapshot fallback).
|
|
113
|
+
const meta = task.metadata as unknown as Record<string, unknown> | undefined;
|
|
114
|
+
const childId = meta?.agent_execution_id;
|
|
115
|
+
if (typeof childId !== "string" || !childId || seenIds.has(childId)) continue;
|
|
116
|
+
seenIds.add(childId);
|
|
117
|
+
const eventState = taskStates.get(task.taskName);
|
|
118
|
+
fromSnapshots.push({
|
|
119
|
+
taskName: task.taskName,
|
|
120
|
+
childExecutionId: childId,
|
|
121
|
+
settled: eventState
|
|
122
|
+
? SETTLED_TASK_STATUSES.has(eventState.status)
|
|
123
|
+
: SETTLED_SNAPSHOT_STATUSES.has(task.status),
|
|
124
|
+
startedAt: task.startedAt ?? "",
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// RFC 3339 UTC timestamps sort chronologically as strings; tasks without a
|
|
129
|
+
// startedAt keep their snapshot (definition) order at the end.
|
|
130
|
+
fromSnapshots.sort((a, b) =>
|
|
131
|
+
a.startedAt && b.startedAt ? a.startedAt.localeCompare(b.startedAt) : 0,
|
|
132
|
+
);
|
|
133
|
+
for (const { startedAt: _startedAt, ...child } of fromSnapshots) {
|
|
134
|
+
children.push(child);
|
|
135
|
+
}
|
|
136
|
+
return children;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* The fetch-plan signature of an enumeration: one line per child,
|
|
141
|
+
* `id:settledFlag`, in rollup order. Two enumerations with the same signature
|
|
142
|
+
* need identical fetches AND produce identically-ordered rollups — so it is
|
|
143
|
+
* both the effect dependency and the memo key that shields downstream
|
|
144
|
+
* consumers from the event store's per-event `taskStates` identity churn
|
|
145
|
+
* (DD-009/DD-010: never key an effect on the map reference itself).
|
|
146
|
+
*/
|
|
147
|
+
export function agentCallChildrenSignature(
|
|
148
|
+
children: readonly AgentCallChild[],
|
|
149
|
+
): string {
|
|
150
|
+
return children
|
|
151
|
+
.map((c) => `${c.childExecutionId}:${c.settled ? "1" : "0"}`)
|
|
152
|
+
.join("\n");
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// ---------------------------------------------------------------------------
|
|
156
|
+
// Hook
|
|
157
|
+
// ---------------------------------------------------------------------------
|
|
158
|
+
|
|
159
|
+
/** Options for {@link useWorkflowExecutionFileChanges}. */
|
|
160
|
+
export interface UseWorkflowExecutionFileChangesOptions {
|
|
161
|
+
/**
|
|
162
|
+
* The workflow execution id — the reset boundary: switching executions
|
|
163
|
+
* clears fetched children so run A's changes never bleed into run B.
|
|
164
|
+
*/
|
|
165
|
+
readonly executionId: string | null;
|
|
166
|
+
/** Derived task states (pass the viewer's `effectiveTaskStates`). */
|
|
167
|
+
readonly taskStates: ReadonlyMap<string, DerivedTaskState>;
|
|
168
|
+
/** Per-task status snapshots (`execution.status.tasks`) — the fallback source. */
|
|
169
|
+
readonly taskSnapshots?: readonly WorkflowTask[];
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/** Return value of {@link useWorkflowExecutionFileChanges}. */
|
|
173
|
+
export interface UseWorkflowExecutionFileChangesReturn {
|
|
174
|
+
/**
|
|
175
|
+
* One net {@link FileChange} per file touched across all AGENT_CALL tasks,
|
|
176
|
+
* in file-list order (see {@link deriveExecutionFileChanges}).
|
|
177
|
+
*/
|
|
178
|
+
readonly fileChanges: readonly FileChange[];
|
|
179
|
+
/** Number of distinct files changed. */
|
|
180
|
+
readonly fileChangeCount: number;
|
|
181
|
+
/** `true` while the first child fetches are in flight (no data yet). */
|
|
182
|
+
readonly isLoading: boolean;
|
|
183
|
+
/** `true` while later child fetches are in flight and stale data is shown. */
|
|
184
|
+
readonly isRefetching: boolean;
|
|
185
|
+
/** First error from the last fetch round, or `null`. Partial data still renders. */
|
|
186
|
+
readonly error: Error | null;
|
|
187
|
+
/** Re-fetch every child from scratch (manual escape hatch). */
|
|
188
|
+
readonly refetch: () => void;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Aggregates a workflow execution's file changes across all its AGENT_CALL
|
|
193
|
+
* children into one net change per file — the data source for the panel's
|
|
194
|
+
* Changes facet.
|
|
195
|
+
*
|
|
196
|
+
* **Fetch policy (bounded: ≤2 gets per child).** Each child is fetched
|
|
197
|
+
* one-shot via `agentExecution.get()` when first enumerated, and once more
|
|
198
|
+
* when its task settles (the terminal snapshot carries the final ledger —
|
|
199
|
+
* `displayFileChangeSets` folds `status.file_review_event_stream` for a
|
|
200
|
+
* terminal execution). No live child streams: the rollup refreshes at task
|
|
201
|
+
* boundaries, which is the freshness this facet promises. A failed child
|
|
202
|
+
* fetch surfaces `error` but never blocks the other children's results.
|
|
203
|
+
*
|
|
204
|
+
* **Stability.** The fetch effect and all derived memos key on the
|
|
205
|
+
* enumeration *signature*, not the `taskStates` map identity (which churns
|
|
206
|
+
* per event during a live run) — so mid-task events cause zero fetches and
|
|
207
|
+
* zero re-derivation. The returned object is memoized (DD-010).
|
|
208
|
+
*
|
|
209
|
+
* @see WorkflowChangesTab — the facet rendering this data
|
|
210
|
+
* @see useSessionFileChanges — the session-side counterpart over the same core
|
|
211
|
+
*/
|
|
212
|
+
export function useWorkflowExecutionFileChanges({
|
|
213
|
+
executionId,
|
|
214
|
+
taskStates,
|
|
215
|
+
taskSnapshots,
|
|
216
|
+
}: UseWorkflowExecutionFileChangesOptions): UseWorkflowExecutionFileChangesReturn {
|
|
217
|
+
const stigmer = useStigmer();
|
|
218
|
+
const stigmerRef = useRef(stigmer);
|
|
219
|
+
stigmerRef.current = stigmer;
|
|
220
|
+
|
|
221
|
+
// Enumerate on every render (cheap map walk), then pin identity to the
|
|
222
|
+
// signature so the event store's per-event map churn never propagates.
|
|
223
|
+
const children = enumerateAgentCallChildren(taskStates, taskSnapshots);
|
|
224
|
+
const signature = agentCallChildrenSignature(children);
|
|
225
|
+
const stableChildrenRef = useRef<{
|
|
226
|
+
signature: string;
|
|
227
|
+
children: readonly AgentCallChild[];
|
|
228
|
+
}>({ signature, children });
|
|
229
|
+
if (stableChildrenRef.current.signature !== signature) {
|
|
230
|
+
stableChildrenRef.current = { signature, children };
|
|
231
|
+
}
|
|
232
|
+
const stableChildren = stableChildrenRef.current.children;
|
|
233
|
+
|
|
234
|
+
// Fetched child snapshots by id (rendered state) + the settled-ness each id
|
|
235
|
+
// was fetched at (ref — drives the ≤2-fetches policy, never rendered).
|
|
236
|
+
const [executionsById, setExecutionsById] = useState<
|
|
237
|
+
ReadonlyMap<string, AgentExecution>
|
|
238
|
+
>(() => new Map());
|
|
239
|
+
const fetchedSettledRef = useRef(new Map<string, boolean>());
|
|
240
|
+
|
|
241
|
+
const [isFetching, setIsFetching] = useState(false);
|
|
242
|
+
const [error, setError] = useState<Error | null>(null);
|
|
243
|
+
const [fetchKey, setFetchKey] = useState(0);
|
|
244
|
+
|
|
245
|
+
const refetch = useMemo(
|
|
246
|
+
() => () => {
|
|
247
|
+
fetchedSettledRef.current.clear();
|
|
248
|
+
setFetchKey((k) => k + 1);
|
|
249
|
+
},
|
|
250
|
+
[],
|
|
251
|
+
);
|
|
252
|
+
|
|
253
|
+
// Reset on execution switch — same identity-boundary treatment as
|
|
254
|
+
// useFetch/useWorkflowExecutionEventStream. `isFetching` must reset too:
|
|
255
|
+
// a fetch in flight for run A is cancelled by the effect cleanup, and if
|
|
256
|
+
// run B needs no fetches the effect bails before ever writing the flag —
|
|
257
|
+
// a stale `true` would report "loading" forever.
|
|
258
|
+
const prevExecutionIdRef = useRef(executionId);
|
|
259
|
+
if (prevExecutionIdRef.current !== executionId) {
|
|
260
|
+
prevExecutionIdRef.current = executionId;
|
|
261
|
+
fetchedSettledRef.current.clear();
|
|
262
|
+
setExecutionsById(new Map());
|
|
263
|
+
setIsFetching(false);
|
|
264
|
+
setError(null);
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
useEffect(() => {
|
|
268
|
+
if (!executionId) return;
|
|
269
|
+
|
|
270
|
+
// A child needs a fetch when never fetched, or fetched live and now
|
|
271
|
+
// settled (the settle fetch picks up the final ledger).
|
|
272
|
+
const toFetch = stableChildren.filter((child) => {
|
|
273
|
+
const fetchedAs = fetchedSettledRef.current.get(child.childExecutionId);
|
|
274
|
+
return fetchedAs === undefined || (fetchedAs === false && child.settled);
|
|
275
|
+
});
|
|
276
|
+
if (toFetch.length === 0) return;
|
|
277
|
+
|
|
278
|
+
let cancelled = false;
|
|
279
|
+
setIsFetching(true);
|
|
280
|
+
setError(null);
|
|
281
|
+
|
|
282
|
+
(async () => {
|
|
283
|
+
const results = await Promise.all(
|
|
284
|
+
toFetch.map(async (child) => {
|
|
285
|
+
try {
|
|
286
|
+
const execution = await stigmerRef.current.agentExecution.get(
|
|
287
|
+
child.childExecutionId,
|
|
288
|
+
);
|
|
289
|
+
return { child, execution, error: null as Error | null };
|
|
290
|
+
} catch (err) {
|
|
291
|
+
return { child, execution: null, error: toError(err) };
|
|
292
|
+
}
|
|
293
|
+
}),
|
|
294
|
+
);
|
|
295
|
+
if (cancelled) return;
|
|
296
|
+
|
|
297
|
+
setExecutionsById((prev) => {
|
|
298
|
+
const next = new Map(prev);
|
|
299
|
+
for (const { child, execution } of results) {
|
|
300
|
+
if (!execution) continue;
|
|
301
|
+
next.set(child.childExecutionId, execution);
|
|
302
|
+
fetchedSettledRef.current.set(child.childExecutionId, child.settled);
|
|
303
|
+
}
|
|
304
|
+
return next;
|
|
305
|
+
});
|
|
306
|
+
const firstError = results.find((r) => r.error)?.error ?? null;
|
|
307
|
+
setError(firstError);
|
|
308
|
+
setIsFetching(false);
|
|
309
|
+
})();
|
|
310
|
+
|
|
311
|
+
return () => {
|
|
312
|
+
cancelled = true;
|
|
313
|
+
};
|
|
314
|
+
// signature (not stableChildren/taskStates identity) keys the fetch plan.
|
|
315
|
+
}, [executionId, signature, fetchKey]);
|
|
316
|
+
|
|
317
|
+
const fileChanges = useMemo(() => {
|
|
318
|
+
const ordered: AgentExecution[] = [];
|
|
319
|
+
for (const child of stableChildren) {
|
|
320
|
+
const execution = executionsById.get(child.childExecutionId);
|
|
321
|
+
if (execution) ordered.push(execution);
|
|
322
|
+
}
|
|
323
|
+
return deriveExecutionFileChanges(ordered);
|
|
324
|
+
}, [stableChildren, executionsById]);
|
|
325
|
+
|
|
326
|
+
const hasData = executionsById.size > 0;
|
|
327
|
+
const isLoading = isFetching && !hasData;
|
|
328
|
+
const isRefetching = isFetching && hasData;
|
|
329
|
+
|
|
330
|
+
return useMemo(
|
|
331
|
+
() => ({
|
|
332
|
+
fileChanges,
|
|
333
|
+
fileChangeCount: fileChanges.length,
|
|
334
|
+
isLoading,
|
|
335
|
+
isRefetching,
|
|
336
|
+
error,
|
|
337
|
+
refetch,
|
|
338
|
+
}),
|
|
339
|
+
[fileChanges, isLoading, isRefetching, error, refetch],
|
|
340
|
+
);
|
|
341
|
+
}
|