@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,180 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { useCallback, useState } from "react";
|
|
4
|
+
import { cn } from "@stigmer/theme";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Internal building blocks shared by the channel-app forms and panels.
|
|
8
|
+
* Not exported from the package — content-level pieces stay domain-local.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/** Labeled text/password input with an optional hint line. */
|
|
12
|
+
export function FormField({
|
|
13
|
+
id,
|
|
14
|
+
label,
|
|
15
|
+
value,
|
|
16
|
+
onChange,
|
|
17
|
+
placeholder,
|
|
18
|
+
hint,
|
|
19
|
+
type = "text",
|
|
20
|
+
disabled,
|
|
21
|
+
required,
|
|
22
|
+
}: {
|
|
23
|
+
id: string;
|
|
24
|
+
label: string;
|
|
25
|
+
value: string;
|
|
26
|
+
onChange: (v: string) => void;
|
|
27
|
+
placeholder: string;
|
|
28
|
+
hint?: string;
|
|
29
|
+
type?: "text" | "password";
|
|
30
|
+
disabled: boolean;
|
|
31
|
+
required?: boolean;
|
|
32
|
+
}) {
|
|
33
|
+
return (
|
|
34
|
+
<div className="space-y-1">
|
|
35
|
+
<label htmlFor={id} className="text-xs font-medium text-foreground">
|
|
36
|
+
{label}
|
|
37
|
+
</label>
|
|
38
|
+
<input
|
|
39
|
+
id={id}
|
|
40
|
+
type={type}
|
|
41
|
+
value={value}
|
|
42
|
+
onChange={(e) => onChange(e.target.value)}
|
|
43
|
+
placeholder={placeholder}
|
|
44
|
+
disabled={disabled}
|
|
45
|
+
required={required}
|
|
46
|
+
className={cn(
|
|
47
|
+
"w-full rounded-md border border-input bg-background px-2.5 py-1.5 text-xs text-foreground",
|
|
48
|
+
"placeholder:text-muted-foreground",
|
|
49
|
+
"focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
|
|
50
|
+
"disabled:pointer-events-none disabled:opacity-50",
|
|
51
|
+
)}
|
|
52
|
+
/>
|
|
53
|
+
{hint && <p className="text-[0.65rem] text-muted-foreground">{hint}</p>}
|
|
54
|
+
</div>
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* A single-line copyable value (webhook URL, redirect URL) with a copy
|
|
60
|
+
* button that confirms briefly.
|
|
61
|
+
*/
|
|
62
|
+
export function CopyRow({
|
|
63
|
+
label,
|
|
64
|
+
value,
|
|
65
|
+
copyTargetId,
|
|
66
|
+
}: {
|
|
67
|
+
label: string;
|
|
68
|
+
value: string;
|
|
69
|
+
copyTargetId?: string;
|
|
70
|
+
}) {
|
|
71
|
+
const { copied, copy } = useCopy(value);
|
|
72
|
+
|
|
73
|
+
return (
|
|
74
|
+
<div className="space-y-1">
|
|
75
|
+
<p className="text-xs font-medium text-foreground">{label}</p>
|
|
76
|
+
<div className="flex items-center gap-1.5">
|
|
77
|
+
<code
|
|
78
|
+
className={cn(
|
|
79
|
+
"min-w-0 flex-1 truncate rounded-md border border-border bg-muted-subtle",
|
|
80
|
+
"px-2 py-1.5 font-mono text-[0.65rem] text-foreground",
|
|
81
|
+
)}
|
|
82
|
+
title={value}
|
|
83
|
+
>
|
|
84
|
+
{value}
|
|
85
|
+
</code>
|
|
86
|
+
<CopyButton copied={copied} onCopy={copy} copyTargetId={copyTargetId} />
|
|
87
|
+
</div>
|
|
88
|
+
</div>
|
|
89
|
+
);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/** A multi-line copyable value (the app manifest) in a scrollable block. */
|
|
93
|
+
export function CopyBlock({
|
|
94
|
+
label,
|
|
95
|
+
value,
|
|
96
|
+
copyTargetId,
|
|
97
|
+
}: {
|
|
98
|
+
label: string;
|
|
99
|
+
value: string;
|
|
100
|
+
copyTargetId?: string;
|
|
101
|
+
}) {
|
|
102
|
+
const { copied, copy } = useCopy(value);
|
|
103
|
+
|
|
104
|
+
return (
|
|
105
|
+
<div className="space-y-1">
|
|
106
|
+
<div className="flex items-center justify-between">
|
|
107
|
+
<p className="text-[0.65rem] font-medium text-muted-foreground">
|
|
108
|
+
{label}
|
|
109
|
+
</p>
|
|
110
|
+
<CopyButton copied={copied} onCopy={copy} copyTargetId={copyTargetId} />
|
|
111
|
+
</div>
|
|
112
|
+
<pre
|
|
113
|
+
className={cn(
|
|
114
|
+
"max-h-40 overflow-auto rounded-md border border-border bg-muted-subtle",
|
|
115
|
+
"px-2.5 py-2 font-mono text-[0.65rem] leading-relaxed text-foreground",
|
|
116
|
+
)}
|
|
117
|
+
>
|
|
118
|
+
{value}
|
|
119
|
+
</pre>
|
|
120
|
+
</div>
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
function CopyButton({
|
|
125
|
+
copied,
|
|
126
|
+
onCopy,
|
|
127
|
+
copyTargetId,
|
|
128
|
+
}: {
|
|
129
|
+
copied: boolean;
|
|
130
|
+
onCopy: () => void;
|
|
131
|
+
copyTargetId?: string;
|
|
132
|
+
}) {
|
|
133
|
+
return (
|
|
134
|
+
<button
|
|
135
|
+
type="button"
|
|
136
|
+
onClick={onCopy}
|
|
137
|
+
data-cursor-target={copyTargetId}
|
|
138
|
+
className={cn(
|
|
139
|
+
"shrink-0 rounded-md border border-border px-2 py-1 text-[0.65rem] font-medium transition-colors",
|
|
140
|
+
copied
|
|
141
|
+
? "text-success"
|
|
142
|
+
: "text-muted-foreground hover:text-foreground hover:bg-accent-hover",
|
|
143
|
+
)}
|
|
144
|
+
aria-live="polite"
|
|
145
|
+
>
|
|
146
|
+
{copied ? "Copied" : "Copy"}
|
|
147
|
+
</button>
|
|
148
|
+
);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
function useCopy(value: string) {
|
|
152
|
+
const [copied, setCopied] = useState(false);
|
|
153
|
+
|
|
154
|
+
const copy = useCallback(() => {
|
|
155
|
+
void navigator.clipboard.writeText(value).then(() => {
|
|
156
|
+
setCopied(true);
|
|
157
|
+
window.setTimeout(() => setCopied(false), 1500);
|
|
158
|
+
});
|
|
159
|
+
}, [value]);
|
|
160
|
+
|
|
161
|
+
return { copied, copy };
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
export function SpinnerIcon() {
|
|
165
|
+
return (
|
|
166
|
+
<svg
|
|
167
|
+
width="12"
|
|
168
|
+
height="12"
|
|
169
|
+
viewBox="0 0 16 16"
|
|
170
|
+
fill="none"
|
|
171
|
+
stroke="currentColor"
|
|
172
|
+
strokeWidth="2"
|
|
173
|
+
strokeLinecap="round"
|
|
174
|
+
className="animate-spin"
|
|
175
|
+
aria-hidden="true"
|
|
176
|
+
>
|
|
177
|
+
<path d="M8 2a6 6 0 1 0 6 6" />
|
|
178
|
+
</svg>
|
|
179
|
+
);
|
|
180
|
+
}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure helpers for the "bring your own Slack app" setup surface
|
|
3
|
+
* (T04 item 2).
|
|
4
|
+
*
|
|
5
|
+
* A customer-owned Slack app needs three Stigmer-side values wired into
|
|
6
|
+
* its configuration on api.slack.com: the OAuth redirect URL (shared by
|
|
7
|
+
* every app — the console's callback route), the app's own events
|
|
8
|
+
* webhook URL (per-app by design: the path is how the receiver knows
|
|
9
|
+
* which signing secret verifies the request), and the fixed scope/event
|
|
10
|
+
* sets. These helpers derive those values and render a ready-to-paste
|
|
11
|
+
* Slack app manifest so creating the app is one paste instead of a dozen
|
|
12
|
+
* dashboard steps.
|
|
13
|
+
*
|
|
14
|
+
* Setup is inherently two-phase — Slack mints the credentials, Stigmer
|
|
15
|
+
* mints the webhook URL, and each needs the other's output:
|
|
16
|
+
*
|
|
17
|
+
* 1. Create the Slack app from {@link buildSlackChannelAppManifest}
|
|
18
|
+
* WITHOUT a webhook URL (events come later), then paste its
|
|
19
|
+
* credentials into `CreateChannelAppForm`.
|
|
20
|
+
* 2. The saved ChannelApp has an id, so `ChannelAppDetailPanel` can show
|
|
21
|
+
* the webhook URL — paste it into the app's Event Subscriptions (or
|
|
22
|
+
* re-apply the completed manifest).
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* The bot scopes every Stigmer channel app requests — the platform app's
|
|
27
|
+
* exact set (scope minimalism is deliberate: it is the first thing a
|
|
28
|
+
* workspace admin reviews on the consent screen).
|
|
29
|
+
*/
|
|
30
|
+
export const SLACK_CHANNEL_APP_BOT_SCOPES = [
|
|
31
|
+
"app_mentions:read",
|
|
32
|
+
"assistant:write",
|
|
33
|
+
"chat:write",
|
|
34
|
+
"im:history",
|
|
35
|
+
] as const;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* The bot events every Stigmer channel app subscribes to — the platform
|
|
39
|
+
* app's exact set (mentions, DMs, assistant surface, and the uninstall/
|
|
40
|
+
* revocation lifecycle events).
|
|
41
|
+
*/
|
|
42
|
+
export const SLACK_CHANNEL_APP_BOT_EVENTS = [
|
|
43
|
+
"app_home_opened",
|
|
44
|
+
"app_mention",
|
|
45
|
+
"app_uninstalled",
|
|
46
|
+
"assistant_thread_context_changed",
|
|
47
|
+
"assistant_thread_started",
|
|
48
|
+
"message.im",
|
|
49
|
+
"tokens_revoked",
|
|
50
|
+
] as const;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* The events webhook URL for one ChannelApp: the per-app route the
|
|
54
|
+
* receiver resolves the app's signing secret by.
|
|
55
|
+
*
|
|
56
|
+
* @param apiBaseUrl the Stigmer API origin (`stigmer.baseUrl`)
|
|
57
|
+
* @param channelAppId the ChannelApp resource id (`chapp_...`)
|
|
58
|
+
*/
|
|
59
|
+
export function slackChannelAppWebhookUrl(
|
|
60
|
+
apiBaseUrl: string,
|
|
61
|
+
channelAppId: string,
|
|
62
|
+
): string {
|
|
63
|
+
return `${apiBaseUrl.replace(/\/+$/, "")}/webhook/slack/${channelAppId}`;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* The OAuth redirect URL a customer registers on their Slack app — the
|
|
68
|
+
* console's install-callback route, shared by every app (the platform
|
|
69
|
+
* completes the code exchange server-side with the app's own
|
|
70
|
+
* credentials).
|
|
71
|
+
*
|
|
72
|
+
* @param consoleOrigin the console origin (defaults to the current
|
|
73
|
+
* window's origin; pass explicitly in non-browser
|
|
74
|
+
* hosts)
|
|
75
|
+
*/
|
|
76
|
+
export function slackChannelAppRedirectUrl(consoleOrigin?: string): string {
|
|
77
|
+
const origin =
|
|
78
|
+
consoleOrigin ??
|
|
79
|
+
(typeof window !== "undefined" ? window.location.origin : "");
|
|
80
|
+
return `${origin.replace(/\/+$/, "")}/oauth/slack/callback`;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/** Inputs for {@link buildSlackChannelAppManifest}. */
|
|
84
|
+
export interface SlackChannelAppManifestInput {
|
|
85
|
+
/** Bot display name — what the workspace @mentions. */
|
|
86
|
+
readonly name: string;
|
|
87
|
+
/** One-line app description shown on the consent screen. */
|
|
88
|
+
readonly description?: string;
|
|
89
|
+
/** The console's OAuth redirect URL ({@link slackChannelAppRedirectUrl}). */
|
|
90
|
+
readonly redirectUrl: string;
|
|
91
|
+
/**
|
|
92
|
+
* The app's events webhook URL ({@link slackChannelAppWebhookUrl}).
|
|
93
|
+
* Omit before the ChannelApp exists — the manifest then skips event
|
|
94
|
+
* subscriptions, which are completed from the detail panel after
|
|
95
|
+
* creation.
|
|
96
|
+
*/
|
|
97
|
+
readonly webhookUrl?: string;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Render the ready-to-paste Slack app manifest for a customer channel
|
|
102
|
+
* app — the platform app's manifest with the customer's identity.
|
|
103
|
+
*
|
|
104
|
+
* Deliberate mirrors of the platform manifest (do not "fix" them):
|
|
105
|
+
* four bot scopes only, `org_deploy_enabled: false` (Enterprise Grid
|
|
106
|
+
* org-wide installs are unsupported), no interactivity, no socket mode.
|
|
107
|
+
*/
|
|
108
|
+
export function buildSlackChannelAppManifest(
|
|
109
|
+
input: SlackChannelAppManifestInput,
|
|
110
|
+
): string {
|
|
111
|
+
const description =
|
|
112
|
+
input.description ??
|
|
113
|
+
"Chat with your organization's Stigmer agent without leaving Slack.";
|
|
114
|
+
|
|
115
|
+
const eventSubscriptions = input.webhookUrl
|
|
116
|
+
? ` event_subscriptions:
|
|
117
|
+
request_url: "${input.webhookUrl}"
|
|
118
|
+
bot_events:
|
|
119
|
+
${SLACK_CHANNEL_APP_BOT_EVENTS.map((e) => ` - ${e}`).join("\n")}
|
|
120
|
+
`
|
|
121
|
+
: "";
|
|
122
|
+
|
|
123
|
+
return `display_information:
|
|
124
|
+
name: ${input.name}
|
|
125
|
+
description: ${description}
|
|
126
|
+
|
|
127
|
+
features:
|
|
128
|
+
app_home:
|
|
129
|
+
home_tab_enabled: false
|
|
130
|
+
messages_tab_enabled: true
|
|
131
|
+
messages_tab_read_only_enabled: false
|
|
132
|
+
bot_user:
|
|
133
|
+
display_name: ${input.name}
|
|
134
|
+
always_online: true
|
|
135
|
+
assistant_view:
|
|
136
|
+
assistant_description: ${description}
|
|
137
|
+
suggested_prompts: []
|
|
138
|
+
|
|
139
|
+
oauth_config:
|
|
140
|
+
redirect_urls:
|
|
141
|
+
- "${input.redirectUrl}"
|
|
142
|
+
scopes:
|
|
143
|
+
bot:
|
|
144
|
+
${SLACK_CHANNEL_APP_BOT_SCOPES.map((s) => ` - ${s}`).join("\n")}
|
|
145
|
+
|
|
146
|
+
settings:
|
|
147
|
+
${eventSubscriptions} interactivity:
|
|
148
|
+
is_enabled: false
|
|
149
|
+
org_deploy_enabled: false
|
|
150
|
+
socket_mode_enabled: false
|
|
151
|
+
token_rotation_enabled: false
|
|
152
|
+
`;
|
|
153
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { create } from "@bufbuild/protobuf";
|
|
4
|
+
import { ListChannelAppsByOrgInputSchema } from "@stigmer/protos/ai/stigmer/agentic/channelapp/v1/io_pb";
|
|
5
|
+
import type { ChannelApp } from "@stigmer/protos/ai/stigmer/agentic/channelapp/v1/api_pb";
|
|
6
|
+
import { useStigmer } from "../hooks.js";
|
|
7
|
+
import { useFetch } from "../internal/useFetch.js";
|
|
8
|
+
|
|
9
|
+
/** Return value of {@link useChannelAppList}. */
|
|
10
|
+
export interface UseChannelAppListReturn {
|
|
11
|
+
/** Channel apps owned by the organization. Empty while loading or on error. */
|
|
12
|
+
readonly channelApps: readonly ChannelApp[];
|
|
13
|
+
/** `true` while the initial fetch or a refetch is in flight. */
|
|
14
|
+
readonly isLoading: boolean;
|
|
15
|
+
/** `true` while a background refetch is in flight and stale data is shown. */
|
|
16
|
+
readonly isRefetching: boolean;
|
|
17
|
+
/** Error from the last failed request, or `null` when healthy. */
|
|
18
|
+
readonly error: Error | null;
|
|
19
|
+
/** Discard cached data and re-fetch the list from the server. */
|
|
20
|
+
readonly refetch: () => void;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Data hook that fetches all {@link ChannelApp} entries for an
|
|
25
|
+
* organization.
|
|
26
|
+
*
|
|
27
|
+
* These are the customer-owned messaging-platform apps (bring-your-own
|
|
28
|
+
* Slack apps) that agent channels can install through instead of the
|
|
29
|
+
* shared Stigmer app. Secret fields arrive redacted.
|
|
30
|
+
*
|
|
31
|
+
* Pass `null` for `org` to skip fetching (stable no-op). Useful when
|
|
32
|
+
* the active organization has not been resolved yet.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```tsx
|
|
36
|
+
* const { channelApps, isLoading, error } = useChannelAppList(org);
|
|
37
|
+
*
|
|
38
|
+
* if (isLoading) return <Spinner />;
|
|
39
|
+
* channelApps.map((app) => app.metadata?.name);
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
export function useChannelAppList(
|
|
43
|
+
org: string | null,
|
|
44
|
+
): UseChannelAppListReturn {
|
|
45
|
+
const stigmer = useStigmer();
|
|
46
|
+
|
|
47
|
+
const { data: channelApps, isLoading, isRefetching, error, refetch } = useFetch(
|
|
48
|
+
org
|
|
49
|
+
? () =>
|
|
50
|
+
stigmer.channelapp
|
|
51
|
+
.listByOrg(create(ListChannelAppsByOrgInputSchema, { org }))
|
|
52
|
+
.then((r) => [...r.entries])
|
|
53
|
+
: null,
|
|
54
|
+
[org, stigmer],
|
|
55
|
+
[] as ChannelApp[],
|
|
56
|
+
);
|
|
57
|
+
|
|
58
|
+
return { channelApps, isLoading, isRefetching, error, refetch };
|
|
59
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { useCallback, useState } from "react";
|
|
4
|
+
import type { ChannelAppInput } from "@stigmer/sdk";
|
|
5
|
+
import type { ChannelApp } from "@stigmer/protos/ai/stigmer/agentic/channelapp/v1/api_pb";
|
|
6
|
+
import { useStigmer } from "../hooks.js";
|
|
7
|
+
import { toError } from "../internal/toError.js";
|
|
8
|
+
|
|
9
|
+
/** Return value of {@link useCreateChannelApp}. */
|
|
10
|
+
export interface UseCreateChannelAppReturn {
|
|
11
|
+
/** Submit a {@link ChannelAppInput} to create a new channel app. Resolves with the server-created resource. */
|
|
12
|
+
readonly create: (input: ChannelAppInput) => Promise<ChannelApp>;
|
|
13
|
+
/** `true` while the create request is in flight. */
|
|
14
|
+
readonly isCreating: boolean;
|
|
15
|
+
/** Error from the last failed create, or `null` when healthy. */
|
|
16
|
+
readonly error: Error | null;
|
|
17
|
+
/** Reset `error` to `null`. */
|
|
18
|
+
readonly clearError: () => void;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Mutation hook that wraps `channelapp.create()` with loading and error
|
|
23
|
+
* state.
|
|
24
|
+
*
|
|
25
|
+
* Creates a channel app — a customer-owned messaging-platform app whose
|
|
26
|
+
* credentials agent channels can install through instead of the shared
|
|
27
|
+
* Stigmer app. The secret fields (`clientSecret`, `signingSecret`) are
|
|
28
|
+
* encrypted server-side and come back redacted in the response.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```tsx
|
|
32
|
+
* const { create, isCreating, error } = useCreateChannelApp();
|
|
33
|
+
*
|
|
34
|
+
* const app = await create({
|
|
35
|
+
* name: "Acme Support Bot",
|
|
36
|
+
* org: "acme",
|
|
37
|
+
* slack: {
|
|
38
|
+
* clientId: "123456.789012",
|
|
39
|
+
* clientSecret: "…",
|
|
40
|
+
* signingSecret: "…",
|
|
41
|
+
* },
|
|
42
|
+
* });
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export function useCreateChannelApp(): UseCreateChannelAppReturn {
|
|
46
|
+
const stigmer = useStigmer();
|
|
47
|
+
const [isCreating, setIsCreating] = useState(false);
|
|
48
|
+
const [error, setError] = useState<Error | null>(null);
|
|
49
|
+
|
|
50
|
+
const clearError = useCallback(() => setError(null), []);
|
|
51
|
+
|
|
52
|
+
const create = useCallback(
|
|
53
|
+
async (input: ChannelAppInput): Promise<ChannelApp> => {
|
|
54
|
+
setIsCreating(true);
|
|
55
|
+
setError(null);
|
|
56
|
+
|
|
57
|
+
try {
|
|
58
|
+
return await stigmer.channelapp.create(input);
|
|
59
|
+
} catch (err) {
|
|
60
|
+
setError(toError(err));
|
|
61
|
+
throw err;
|
|
62
|
+
} finally {
|
|
63
|
+
setIsCreating(false);
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
[stigmer],
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
return { create, isCreating, error, clearError };
|
|
70
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { useCallback, useState } from "react";
|
|
4
|
+
import type { ChannelApp } from "@stigmer/protos/ai/stigmer/agentic/channelapp/v1/api_pb";
|
|
5
|
+
import { useStigmer } from "../hooks.js";
|
|
6
|
+
import { toError } from "../internal/toError.js";
|
|
7
|
+
|
|
8
|
+
/** Return value of {@link useDeleteChannelApp}. */
|
|
9
|
+
export interface UseDeleteChannelAppReturn {
|
|
10
|
+
/** Delete a channel app by its resource ID. Resolves with the deleted resource for confirmation display. */
|
|
11
|
+
readonly deleteApp: (id: string) => Promise<ChannelApp>;
|
|
12
|
+
/** `true` while the delete request is in flight. */
|
|
13
|
+
readonly isDeleting: boolean;
|
|
14
|
+
/** Error from the last failed delete, or `null` when healthy. */
|
|
15
|
+
readonly error: Error | null;
|
|
16
|
+
/** Reset `error` to `null`. */
|
|
17
|
+
readonly clearError: () => void;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Mutation hook that wraps `channelapp.delete()` with loading and error
|
|
22
|
+
* state.
|
|
23
|
+
*
|
|
24
|
+
* Deletes a channel app by its resource ID. The server refuses
|
|
25
|
+
* (`FAILED_PRECONDITION`) while any agent channel still references the
|
|
26
|
+
* app via `spec.app_ref` — the error message names the fix; surface it
|
|
27
|
+
* to the user rather than retrying.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```tsx
|
|
31
|
+
* const { deleteApp, isDeleting, error } = useDeleteChannelApp();
|
|
32
|
+
*
|
|
33
|
+
* await deleteApp("chapp_abc123");
|
|
34
|
+
* refetch(); // refresh the list after deletion
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export function useDeleteChannelApp(): UseDeleteChannelAppReturn {
|
|
38
|
+
const stigmer = useStigmer();
|
|
39
|
+
const [isDeleting, setIsDeleting] = useState(false);
|
|
40
|
+
const [error, setError] = useState<Error | null>(null);
|
|
41
|
+
|
|
42
|
+
const clearError = useCallback(() => setError(null), []);
|
|
43
|
+
|
|
44
|
+
const deleteApp = useCallback(
|
|
45
|
+
async (id: string): Promise<ChannelApp> => {
|
|
46
|
+
setIsDeleting(true);
|
|
47
|
+
setError(null);
|
|
48
|
+
|
|
49
|
+
try {
|
|
50
|
+
return await stigmer.channelapp.delete({ resourceId: id });
|
|
51
|
+
} catch (err) {
|
|
52
|
+
setError(toError(err));
|
|
53
|
+
throw err;
|
|
54
|
+
} finally {
|
|
55
|
+
setIsDeleting(false);
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
[stigmer],
|
|
59
|
+
);
|
|
60
|
+
|
|
61
|
+
return { deleteApp, isDeleting, error, clearError };
|
|
62
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { useCallback, useState } from "react";
|
|
4
|
+
import type { ChannelAppInput } from "@stigmer/sdk";
|
|
5
|
+
import type { ChannelApp } from "@stigmer/protos/ai/stigmer/agentic/channelapp/v1/api_pb";
|
|
6
|
+
import { useStigmer } from "../hooks.js";
|
|
7
|
+
import { toError } from "../internal/toError.js";
|
|
8
|
+
|
|
9
|
+
/** Return value of {@link useUpdateChannelApp}. */
|
|
10
|
+
export interface UseUpdateChannelAppReturn {
|
|
11
|
+
/** Submit a {@link ChannelAppInput} to update an existing channel app. Resolves with the updated resource. */
|
|
12
|
+
readonly update: (input: ChannelAppInput) => Promise<ChannelApp>;
|
|
13
|
+
/** `true` while the update request is in flight. */
|
|
14
|
+
readonly isUpdating: boolean;
|
|
15
|
+
/** Error from the last failed update, or `null` when healthy. */
|
|
16
|
+
readonly error: Error | null;
|
|
17
|
+
/** Reset `error` to `null`. */
|
|
18
|
+
readonly clearError: () => void;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Mutation hook that wraps `channelapp.update()` with loading and error
|
|
23
|
+
* state.
|
|
24
|
+
*
|
|
25
|
+
* Updates an existing channel app — typically to rotate its secrets.
|
|
26
|
+
* Sending the redaction marker (`***REDACTED***`) for a secret field
|
|
27
|
+
* preserves the stored value, so a form prefilled from a fetched
|
|
28
|
+
* (redacted) app can rotate one secret without re-entering the other.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```tsx
|
|
32
|
+
* const { update, isUpdating, error } = useUpdateChannelApp();
|
|
33
|
+
*
|
|
34
|
+
* await update({
|
|
35
|
+
* name: "Acme Support Bot",
|
|
36
|
+
* org: "acme",
|
|
37
|
+
* slack: {
|
|
38
|
+
* clientId: "123456.789012",
|
|
39
|
+
* clientSecret: "***REDACTED***", // keep the stored value
|
|
40
|
+
* signingSecret: "new-signing-secret", // rotate this one
|
|
41
|
+
* },
|
|
42
|
+
* });
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export function useUpdateChannelApp(): UseUpdateChannelAppReturn {
|
|
46
|
+
const stigmer = useStigmer();
|
|
47
|
+
const [isUpdating, setIsUpdating] = useState(false);
|
|
48
|
+
const [error, setError] = useState<Error | null>(null);
|
|
49
|
+
|
|
50
|
+
const clearError = useCallback(() => setError(null), []);
|
|
51
|
+
|
|
52
|
+
const update = useCallback(
|
|
53
|
+
async (input: ChannelAppInput): Promise<ChannelApp> => {
|
|
54
|
+
setIsUpdating(true);
|
|
55
|
+
setError(null);
|
|
56
|
+
|
|
57
|
+
try {
|
|
58
|
+
return await stigmer.channelapp.update(input);
|
|
59
|
+
} catch (err) {
|
|
60
|
+
setError(toError(err));
|
|
61
|
+
throw err;
|
|
62
|
+
} finally {
|
|
63
|
+
setIsUpdating(false);
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
[stigmer],
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
return { update, isUpdating, error, clearError };
|
|
70
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure helpers for the "bring your own Meta app" setup surface (T05).
|
|
3
|
+
*
|
|
4
|
+
* A customer-owned Meta app needs two Stigmer-side values wired into its
|
|
5
|
+
* WhatsApp webhook configuration on developers.facebook.com: the app's
|
|
6
|
+
* own events webhook URL (per-app by design: the path is how the
|
|
7
|
+
* receiver knows which app secret verifies the request) and the verify
|
|
8
|
+
* token Meta echoes during the GET verification handshake.
|
|
9
|
+
*
|
|
10
|
+
* Unlike Slack there is no app manifest to paste — Meta's dashboard has
|
|
11
|
+
* no equivalent — so the setup surface renders a checklist instead. And
|
|
12
|
+
* unlike Slack's install-minted bot token, every WhatsApp credential is
|
|
13
|
+
* authored by the customer on their own Meta app (DD-WA-3), including
|
|
14
|
+
* the verify token: Stigmer generates a strong one at registration as a
|
|
15
|
+
* convenience, and it must be pasted into Meta verbatim.
|
|
16
|
+
*
|
|
17
|
+
* Setup is inherently two-phase, same shape as Slack: the webhook URL
|
|
18
|
+
* embeds the ChannelApp id, which only exists after registration:
|
|
19
|
+
*
|
|
20
|
+
* 1. Gather the Meta app's credentials (app ID, app secret, a
|
|
21
|
+
* long-lived access token) and register them with a verify token in
|
|
22
|
+
* `CreateChannelAppForm`.
|
|
23
|
+
* 2. The saved ChannelApp has an id, so `ChannelAppDetailPanel` can
|
|
24
|
+
* show the webhook URL — paste it and the verify token into the
|
|
25
|
+
* app's WhatsApp webhook configuration.
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* The webhook fields every Stigmer WhatsApp channel app subscribes to —
|
|
30
|
+
* inbound messages only (field minimalism is deliberate; the adapter
|
|
31
|
+
* replies to inbound messages and needs nothing else).
|
|
32
|
+
*/
|
|
33
|
+
export const WHATSAPP_CHANNEL_APP_WEBHOOK_FIELDS = ["messages"] as const;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* The events webhook URL for one ChannelApp: the per-app route the
|
|
37
|
+
* receiver resolves the app's secret and verify token by.
|
|
38
|
+
*
|
|
39
|
+
* @param apiBaseUrl the Stigmer API origin (`stigmer.baseUrl`)
|
|
40
|
+
* @param channelAppId the ChannelApp resource id (`chapp_...`)
|
|
41
|
+
*/
|
|
42
|
+
export function whatsappChannelAppWebhookUrl(
|
|
43
|
+
apiBaseUrl: string,
|
|
44
|
+
channelAppId: string,
|
|
45
|
+
): string {
|
|
46
|
+
return `${apiBaseUrl.replace(/\/+$/, "")}/webhook/whatsapp/${channelAppId}`;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Generate a verify token for a new WhatsApp channel app: 32 bytes of
|
|
51
|
+
* CSPRNG randomness as lowercase hex (64 chars, paste-safe — no
|
|
52
|
+
* URL-hostile characters for Meta's form).
|
|
53
|
+
*
|
|
54
|
+
* The token is a shared secret in the weakest sense — Meta echoes it on
|
|
55
|
+
* the one-time GET handshake — but a guessable one would let a stranger
|
|
56
|
+
* "verify" a webhook they control, so it gets real entropy anyway.
|
|
57
|
+
*/
|
|
58
|
+
export function generateWhatsAppVerifyToken(): string {
|
|
59
|
+
const bytes = new Uint8Array(32);
|
|
60
|
+
crypto.getRandomValues(bytes);
|
|
61
|
+
return Array.from(bytes, (b) => b.toString(16).padStart(2, "0")).join("");
|
|
62
|
+
}
|
package/src/environment/index.ts
CHANGED
|
@@ -50,6 +50,8 @@ export {
|
|
|
50
50
|
} from "./systemEnvVars.js";
|
|
51
51
|
export { EnvironmentPicker } from "./EnvironmentPicker.js";
|
|
52
52
|
export type { EnvironmentPickerProps } from "./EnvironmentPicker.js";
|
|
53
|
+
export { useToolCredentialsReadiness } from "./useToolCredentialsReadiness.js";
|
|
54
|
+
export type { ToolCredentialsReadiness } from "./useToolCredentialsReadiness.js";
|
|
53
55
|
export {
|
|
54
56
|
PERSONAL_ENV_LABEL,
|
|
55
57
|
MANAGED_ENV_LABEL,
|