@stigmer/react 3.12.1 → 3.12.2
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/access/ManageAccessDialog.d.ts.map +1 -1
- package/access/ManageAccessDialog.js +7 -2
- package/access/ManageAccessDialog.js.map +1 -1
- package/activity/format-relative-time.d.ts +11 -9
- package/activity/format-relative-time.d.ts.map +1 -1
- package/activity/format-relative-time.js +11 -9
- package/activity/format-relative-time.js.map +1 -1
- package/agent/steps/CapabilitiesStep.js +5 -2
- package/agent/steps/CapabilitiesStep.js.map +1 -1
- package/agent/steps/IdentityStep.d.ts.map +1 -1
- package/agent/steps/IdentityStep.js +6 -5
- package/agent/steps/IdentityStep.js.map +1 -1
- package/agent-instance/CreateAgentInstanceDialog.d.ts.map +1 -1
- package/agent-instance/CreateAgentInstanceDialog.js +10 -2
- package/agent-instance/CreateAgentInstanceDialog.js.map +1 -1
- package/api-key/ApiKeyCreatedAlert.d.ts.map +1 -1
- package/api-key/ApiKeyCreatedAlert.js +12 -20
- package/api-key/ApiKeyCreatedAlert.js.map +1 -1
- package/api-key/ApiKeyListPanel.d.ts.map +1 -1
- package/api-key/ApiKeyListPanel.js +3 -23
- package/api-key/ApiKeyListPanel.js.map +1 -1
- package/api-key/CreateApiKeyForm.d.ts.map +1 -1
- package/api-key/CreateApiKeyForm.js +6 -10
- package/api-key/CreateApiKeyForm.js.map +1 -1
- package/approval-defaults-context.d.ts +47 -0
- package/approval-defaults-context.d.ts.map +1 -0
- package/approval-defaults-context.js +27 -0
- package/approval-defaults-context.js.map +1 -0
- package/attachment/index.d.ts +2 -0
- package/attachment/index.d.ts.map +1 -1
- package/attachment/index.js +1 -0
- package/attachment/index.js.map +1 -1
- package/attachment/vision-preflight.d.ts +113 -0
- package/attachment/vision-preflight.d.ts.map +1 -0
- package/attachment/vision-preflight.js +143 -0
- package/attachment/vision-preflight.js.map +1 -0
- package/billing/AutoRechargeCard.d.ts.map +1 -1
- package/billing/AutoRechargeCard.js +3 -2
- package/billing/AutoRechargeCard.js.map +1 -1
- package/billing/BillingSection.d.ts.map +1 -1
- package/billing/BillingSection.js +3 -2
- package/billing/BillingSection.js.map +1 -1
- package/channel/ChannelConversationsDialog.d.ts.map +1 -1
- package/channel/ChannelConversationsDialog.js +5 -4
- package/channel/ChannelConversationsDialog.js.map +1 -1
- package/channel/ChannelCredentialsDialog.d.ts.map +1 -1
- package/channel/ChannelCredentialsDialog.js +9 -4
- package/channel/ChannelCredentialsDialog.js.map +1 -1
- package/channel/ChannelTemplatesDialog.d.ts.map +1 -1
- package/channel/ChannelTemplatesDialog.js +5 -4
- package/channel/ChannelTemplatesDialog.js.map +1 -1
- package/channel/ConnectSlackDialog.d.ts.map +1 -1
- package/channel/ConnectSlackDialog.js +9 -4
- package/channel/ConnectSlackDialog.js.map +1 -1
- package/channel/ConnectWhatsAppDialog.d.ts.map +1 -1
- package/channel/ConnectWhatsAppDialog.js +9 -4
- package/channel/ConnectWhatsAppDialog.js.map +1 -1
- package/channel/useChannelSessions.d.ts.map +1 -1
- package/channel/useChannelSessions.js.map +1 -1
- package/channel-app/ChannelAppDetailPanel.d.ts.map +1 -1
- package/channel-app/ChannelAppDetailPanel.js +8 -5
- package/channel-app/ChannelAppDetailPanel.js.map +1 -1
- package/channel-app/CreateChannelAppForm.d.ts.map +1 -1
- package/channel-app/CreateChannelAppForm.js +12 -7
- package/channel-app/CreateChannelAppForm.js.map +1 -1
- package/channel-app/internal.d.ts +0 -1
- package/channel-app/internal.d.ts.map +1 -1
- package/channel-app/internal.js +5 -10
- package/channel-app/internal.js.map +1 -1
- package/composer/ComposerToolbar.js +2 -1
- package/composer/ComposerToolbar.js.map +1 -1
- package/composer/SessionComposer.d.ts +1 -1
- package/composer/SessionComposer.d.ts.map +1 -1
- package/composer/SessionComposer.js +120 -13
- package/composer/SessionComposer.js.map +1 -1
- package/composer/icons.d.ts +0 -1
- package/composer/icons.d.ts.map +1 -1
- package/composer/icons.js +0 -3
- package/composer/icons.js.map +1 -1
- package/conversation/ConversationComposer.js +1 -1
- package/conversation/ConversationComposer.js.map +1 -1
- package/conversation/ConversationListPane.d.ts.map +1 -1
- package/conversation/ConversationListPane.js +3 -2
- package/conversation/ConversationListPane.js.map +1 -1
- package/cursor-accounts/MemberCoverageTable.js +3 -14
- package/cursor-accounts/MemberCoverageTable.js.map +1 -1
- package/dashboard/DashboardFailedRuns.d.ts.map +1 -1
- package/dashboard/DashboardFailedRuns.js +2 -14
- package/dashboard/DashboardFailedRuns.js.map +1 -1
- package/environment/CreateEnvironmentForm.d.ts.map +1 -1
- package/environment/CreateEnvironmentForm.js +4 -8
- package/environment/CreateEnvironmentForm.js.map +1 -1
- package/environment/EnvVarForm.d.ts.map +1 -1
- package/environment/EnvVarForm.js +2 -4
- package/environment/EnvVarForm.js.map +1 -1
- package/environment/EnvironmentVariableEditor.d.ts.map +1 -1
- package/environment/EnvironmentVariableEditor.js +5 -7
- package/environment/EnvironmentVariableEditor.js.map +1 -1
- package/execution/ArtifactApplyButton.d.ts.map +1 -1
- package/execution/ArtifactApplyButton.js +2 -4
- package/execution/ArtifactApplyButton.js.map +1 -1
- package/execution/ExecutionErrorNotice.d.ts +36 -0
- package/execution/ExecutionErrorNotice.d.ts.map +1 -0
- package/execution/ExecutionErrorNotice.js +39 -0
- package/execution/ExecutionErrorNotice.js.map +1 -0
- package/execution/FilePathLink.d.ts.map +1 -1
- package/execution/FilePathLink.js +5 -8
- package/execution/FilePathLink.js.map +1 -1
- package/execution/FileReviewCard.d.ts.map +1 -1
- package/execution/FileReviewCard.js +1 -6
- package/execution/FileReviewCard.js.map +1 -1
- package/execution/FollowUpInput.d.ts.map +1 -1
- package/execution/FollowUpInput.js +1 -3
- package/execution/FollowUpInput.js.map +1 -1
- package/execution/LivenessStatusLine.d.ts +40 -0
- package/execution/LivenessStatusLine.d.ts.map +1 -0
- package/execution/LivenessStatusLine.js +34 -0
- package/execution/LivenessStatusLine.js.map +1 -0
- package/execution/MessageEntry.d.ts.map +1 -1
- package/execution/MessageEntry.js +31 -3
- package/execution/MessageEntry.js.map +1 -1
- package/execution/MessageThread.d.ts +25 -0
- package/execution/MessageThread.d.ts.map +1 -1
- package/execution/MessageThread.js +51 -36
- package/execution/MessageThread.js.map +1 -1
- package/execution/SetupProgress.d.ts.map +1 -1
- package/execution/SetupProgress.js +1 -1
- package/execution/SetupProgress.js.map +1 -1
- package/execution/SubAgentSection.d.ts.map +1 -1
- package/execution/SubAgentSection.js +9 -7
- package/execution/SubAgentSection.js.map +1 -1
- package/execution/TerminalSession.d.ts +30 -0
- package/execution/TerminalSession.d.ts.map +1 -1
- package/execution/TerminalSession.js +37 -1
- package/execution/TerminalSession.js.map +1 -1
- package/execution/ToolCallDetail.d.ts +9 -0
- package/execution/ToolCallDetail.d.ts.map +1 -1
- package/execution/ToolCallDetail.js +16 -0
- package/execution/ToolCallDetail.js.map +1 -1
- package/execution/ToolCallItem.d.ts +20 -6
- package/execution/ToolCallItem.d.ts.map +1 -1
- package/execution/ToolCallItem.js +102 -29
- package/execution/ToolCallItem.js.map +1 -1
- package/execution/ToolRunGroup.d.ts.map +1 -1
- package/execution/ToolRunGroup.js +11 -11
- package/execution/ToolRunGroup.js.map +1 -1
- package/execution/WriteBackCard.d.ts.map +1 -1
- package/execution/WriteBackCard.js +5 -20
- package/execution/WriteBackCard.js.map +1 -1
- package/execution/index.d.ts +6 -2
- package/execution/index.d.ts.map +1 -1
- package/execution/index.js +3 -1
- package/execution/index.js.map +1 -1
- package/execution/tool-categories.d.ts +42 -7
- package/execution/tool-categories.d.ts.map +1 -1
- package/execution/tool-categories.js +38 -4
- package/execution/tool-categories.js.map +1 -1
- package/execution/tool-presenter.d.ts +17 -1
- package/execution/tool-presenter.d.ts.map +1 -1
- package/execution/tool-presenter.js +4 -1
- package/execution/tool-presenter.js.map +1 -1
- package/execution/useArtifactInspection.d.ts.map +1 -1
- package/execution/useArtifactInspection.js +4 -7
- package/execution/useArtifactInspection.js.map +1 -1
- package/iam-policy/GrantAccessForm.d.ts.map +1 -1
- package/iam-policy/GrantAccessForm.js +2 -4
- package/iam-policy/GrantAccessForm.js.map +1 -1
- package/iam-policy/OrgMembersPanel.d.ts.map +1 -1
- package/iam-policy/OrgMembersPanel.js +3 -5
- package/iam-policy/OrgMembersPanel.js.map +1 -1
- package/iam-policy/RoleSelector.d.ts.map +1 -1
- package/iam-policy/RoleSelector.js +7 -1
- package/iam-policy/RoleSelector.js.map +1 -1
- package/identity-provider/CreateIdentityProviderForm.d.ts.map +1 -1
- package/identity-provider/CreateIdentityProviderForm.js +6 -9
- package/identity-provider/CreateIdentityProviderForm.js.map +1 -1
- package/identity-provider/IdentityProviderDetailPanel.d.ts.map +1 -1
- package/identity-provider/IdentityProviderDetailPanel.js +17 -26
- package/identity-provider/IdentityProviderDetailPanel.js.map +1 -1
- package/identity-provider/IdentityProviderListPanel.d.ts.map +1 -1
- package/identity-provider/IdentityProviderListPanel.js +2 -4
- package/identity-provider/IdentityProviderListPanel.js.map +1 -1
- package/identity-provider/IdentityProviderWizard.d.ts.map +1 -1
- package/identity-provider/IdentityProviderWizard.js +8 -7
- package/identity-provider/IdentityProviderWizard.js.map +1 -1
- package/identity-provider/SsoLoginPrompt.js +5 -6
- package/identity-provider/SsoLoginPrompt.js.map +1 -1
- package/index.d.ts +9 -8
- package/index.d.ts.map +1 -1
- package/index.js +4 -4
- package/index.js.map +1 -1
- package/internal/DecisionButton.d.ts.map +1 -1
- package/internal/DecisionButton.js +1 -6
- package/internal/DecisionButton.js.map +1 -1
- package/internal/SpinnerIcon.d.ts +22 -0
- package/internal/SpinnerIcon.d.ts.map +1 -0
- package/internal/SpinnerIcon.js +23 -0
- package/internal/SpinnerIcon.js.map +1 -0
- package/internal/select-element-text.d.ts +11 -0
- package/internal/select-element-text.d.ts.map +1 -0
- package/internal/select-element-text.js +19 -0
- package/internal/select-element-text.js.map +1 -0
- package/internal/thread-card/ThreadCardShell.d.ts +27 -10
- package/internal/thread-card/ThreadCardShell.d.ts.map +1 -1
- package/internal/thread-card/ThreadCardShell.js +11 -5
- package/internal/thread-card/ThreadCardShell.js.map +1 -1
- package/internal/thread-card/glyphs.d.ts +11 -2
- package/internal/thread-card/glyphs.d.ts.map +1 -1
- package/internal/thread-card/glyphs.js +9 -3
- package/internal/thread-card/glyphs.js.map +1 -1
- package/internal/thread-card/index.d.ts +1 -1
- package/internal/thread-card/index.d.ts.map +1 -1
- package/internal/thread-card/index.js.map +1 -1
- package/internal/useCopyFeedback.d.ts +28 -0
- package/internal/useCopyFeedback.d.ts.map +1 -0
- package/internal/useCopyFeedback.js +40 -0
- package/internal/useCopyFeedback.js.map +1 -0
- package/invitation/InvitationCreatedAlert.d.ts.map +1 -1
- package/invitation/InvitationCreatedAlert.js +12 -19
- package/invitation/InvitationCreatedAlert.js.map +1 -1
- package/invitation/InvitationManager.d.ts.map +1 -1
- package/invitation/InvitationManager.js +14 -21
- package/invitation/InvitationManager.js.map +1 -1
- package/invitation/InvitationRedemption.d.ts.map +1 -1
- package/invitation/InvitationRedemption.js +2 -4
- package/invitation/InvitationRedemption.js.map +1 -1
- package/library/useExportResource.d.ts.map +1 -1
- package/library/useExportResource.js +16 -27
- package/library/useExportResource.js.map +1 -1
- package/manifest/ApplyManifestDialog.js +1 -1
- package/manifest/EditResourceYamlDialog.js +1 -1
- package/mcp-server/DefinitionDriftNotice.d.ts +42 -0
- package/mcp-server/DefinitionDriftNotice.d.ts.map +1 -0
- package/mcp-server/DefinitionDriftNotice.js +52 -0
- package/mcp-server/DefinitionDriftNotice.js.map +1 -0
- package/mcp-server/McpServerConnectDialog.js +1 -1
- package/mcp-server/McpServerDetailView.d.ts.map +1 -1
- package/mcp-server/McpServerDetailView.js +47 -14
- package/mcp-server/McpServerDetailView.js.map +1 -1
- package/mcp-server/OAuthAppForm.d.ts.map +1 -1
- package/mcp-server/OAuthAppForm.js +2 -4
- package/mcp-server/OAuthAppForm.js.map +1 -1
- package/mcp-server/internal/definitionDrift.d.ts +39 -0
- package/mcp-server/internal/definitionDrift.d.ts.map +1 -0
- package/mcp-server/internal/definitionDrift.js +122 -0
- package/mcp-server/internal/definitionDrift.js.map +1 -0
- package/mcp-server/internal/mcpServerToInput.d.ts.map +1 -1
- package/mcp-server/internal/mcpServerToInput.js +3 -0
- package/mcp-server/internal/mcpServerToInput.js.map +1 -1
- package/mcp-server/steps/EnvironmentAuthStep.d.ts.map +1 -1
- package/mcp-server/steps/EnvironmentAuthStep.js +8 -4
- package/mcp-server/steps/EnvironmentAuthStep.js.map +1 -1
- package/mcp-server/steps/IdentityTransportStep.d.ts.map +1 -1
- package/mcp-server/steps/IdentityTransportStep.js +5 -4
- package/mcp-server/steps/IdentityTransportStep.js.map +1 -1
- package/mcp-server/useMcpServerConnect.d.ts +1 -1
- package/mcp-server/useMcpServerDefinitionDrift.d.ts +44 -0
- package/mcp-server/useMcpServerDefinitionDrift.d.ts.map +1 -0
- package/mcp-server/useMcpServerDefinitionDrift.js +61 -0
- package/mcp-server/useMcpServerDefinitionDrift.js.map +1 -0
- package/models/ModelRegistryContext.d.ts +7 -1
- package/models/ModelRegistryContext.d.ts.map +1 -1
- package/models/ModelRegistryContext.js.map +1 -1
- package/models/ModelSelector.js +9 -1
- package/models/ModelSelector.js.map +1 -1
- package/models/index.d.ts +2 -2
- package/models/index.d.ts.map +1 -1
- package/models/index.js +1 -1
- package/models/index.js.map +1 -1
- package/models/registry.d.ts +88 -6
- package/models/registry.d.ts.map +1 -1
- package/models/registry.js +133 -27
- package/models/registry.js.map +1 -1
- package/models/useModelRegistry.d.ts +7 -1
- package/models/useModelRegistry.d.ts.map +1 -1
- package/models/useModelRegistry.js +3 -2
- package/models/useModelRegistry.js.map +1 -1
- package/oauth-app/CreateOAuthAppForm.d.ts.map +1 -1
- package/oauth-app/CreateOAuthAppForm.js +4 -5
- package/oauth-app/CreateOAuthAppForm.js.map +1 -1
- package/oauth-app/OAuthAppDetailPanel.d.ts.map +1 -1
- package/oauth-app/OAuthAppDetailPanel.js +5 -6
- package/oauth-app/OAuthAppDetailPanel.js.map +1 -1
- package/organization/CreateOrganizationForm.d.ts.map +1 -1
- package/organization/CreateOrganizationForm.js +5 -9
- package/organization/CreateOrganizationForm.js.map +1 -1
- package/organization/OrgProfilePanel.d.ts.map +1 -1
- package/organization/OrgProfilePanel.js +7 -16
- package/organization/OrgProfilePanel.js.map +1 -1
- package/package.json +4 -4
- package/platform-client/CreatePlatformClientForm.d.ts.map +1 -1
- package/platform-client/CreatePlatformClientForm.js +5 -6
- package/platform-client/CreatePlatformClientForm.js.map +1 -1
- package/platform-client/PlatformClientDetailPanel.d.ts.map +1 -1
- package/platform-client/PlatformClientDetailPanel.js +6 -7
- package/platform-client/PlatformClientDetailPanel.js.map +1 -1
- package/platform-client/PlatformClientListPanel.d.ts.map +1 -1
- package/platform-client/PlatformClientListPanel.js +2 -4
- package/platform-client/PlatformClientListPanel.js.map +1 -1
- package/platform-client/PlatformClientSecretAlert.d.ts.map +1 -1
- package/platform-client/PlatformClientSecretAlert.js +18 -25
- package/platform-client/PlatformClientSecretAlert.js.map +1 -1
- package/provider.d.ts +34 -1
- package/provider.d.ts.map +1 -1
- package/provider.js +14 -7
- package/provider.js.map +1 -1
- package/resource-creation/WizardNav.d.ts.map +1 -1
- package/resource-creation/WizardNav.js +2 -4
- package/resource-creation/WizardNav.js.map +1 -1
- package/resource-detail/ConfirmDialog.js +1 -1
- package/resource-detail/useCopyResource.d.ts +4 -3
- package/resource-detail/useCopyResource.d.ts.map +1 -1
- package/resource-detail/useCopyResource.js +10 -19
- package/resource-detail/useCopyResource.js.map +1 -1
- package/schedule/ScheduleDetailView.d.ts.map +1 -1
- package/schedule/ScheduleDetailView.js +2 -4
- package/schedule/ScheduleDetailView.js.map +1 -1
- package/schedule/ScheduleForm.d.ts.map +1 -1
- package/schedule/ScheduleForm.js +6 -7
- package/schedule/ScheduleForm.js.map +1 -1
- package/session/NewSessionViewer.d.ts +52 -2
- package/session/NewSessionViewer.d.ts.map +1 -1
- package/session/NewSessionViewer.js +21 -6
- package/session/NewSessionViewer.js.map +1 -1
- package/session/SessionViewer.d.ts +63 -2
- package/session/SessionViewer.d.ts.map +1 -1
- package/session/SessionViewer.js +43 -17
- package/session/SessionViewer.js.map +1 -1
- package/session/audience.d.ts +17 -0
- package/session/audience.d.ts.map +1 -1
- package/session/index.d.ts +2 -1
- package/session/index.d.ts.map +1 -1
- package/session/index.js.map +1 -1
- package/session/run-config.d.ts +50 -0
- package/session/run-config.d.ts.map +1 -0
- package/session/run-config.js +15 -0
- package/session/run-config.js.map +1 -0
- package/session/useNewSessionFlow.d.ts +11 -0
- package/session/useNewSessionFlow.d.ts.map +1 -1
- package/session/useNewSessionFlow.js +29 -2
- package/session/useNewSessionFlow.js.map +1 -1
- package/session/useSessionConversation.d.ts +7 -7
- package/session/useSessionConversation.d.ts.map +1 -1
- package/session/useSessionConversation.js +2 -0
- package/session/useSessionConversation.js.map +1 -1
- package/session/useSessionPageFlow.d.ts +18 -4
- package/session/useSessionPageFlow.d.ts.map +1 -1
- package/session/useSessionPageFlow.js +33 -6
- package/session/useSessionPageFlow.js.map +1 -1
- package/session/useSessionPanel.d.ts +37 -2
- package/session/useSessionPanel.d.ts.map +1 -1
- package/session/useSessionPanel.js +44 -10
- package/session/useSessionPanel.js.map +1 -1
- package/settings/ApiKeysSection.d.ts.map +1 -1
- package/settings/ApiKeysSection.js +3 -2
- package/settings/ApiKeysSection.js.map +1 -1
- package/settings/ChannelAppsSection.d.ts.map +1 -1
- package/settings/ChannelAppsSection.js +3 -2
- package/settings/ChannelAppsSection.js.map +1 -1
- package/settings/EnvironmentsSection.js +5 -3
- package/settings/EnvironmentsSection.js.map +1 -1
- package/settings/IdentityProvidersSection.d.ts.map +1 -1
- package/settings/IdentityProvidersSection.js +3 -2
- package/settings/IdentityProvidersSection.js.map +1 -1
- package/settings/InvitationsSection.d.ts.map +1 -1
- package/settings/InvitationsSection.js +3 -1
- package/settings/InvitationsSection.js.map +1 -1
- package/settings/MembersSection.d.ts.map +1 -1
- package/settings/MembersSection.js +3 -1
- package/settings/MembersSection.js.map +1 -1
- package/settings/OAuthAppsSection.d.ts.map +1 -1
- package/settings/OAuthAppsSection.js +3 -2
- package/settings/OAuthAppsSection.js.map +1 -1
- package/settings/OrgProfileSection.d.ts.map +1 -1
- package/settings/OrgProfileSection.js +3 -2
- package/settings/OrgProfileSection.js.map +1 -1
- package/settings/PlatformClientsSection.d.ts.map +1 -1
- package/settings/PlatformClientsSection.js +3 -2
- package/settings/PlatformClientsSection.js.map +1 -1
- package/settings/UsageSection.d.ts.map +1 -1
- package/settings/UsageSection.js +3 -1
- package/settings/UsageSection.js.map +1 -1
- package/sharing/ShareAgentDialog.d.ts.map +1 -1
- package/sharing/ShareAgentDialog.js +18 -7
- package/sharing/ShareAgentDialog.js.map +1 -1
- package/sidebar/chrome.d.ts +3 -4
- package/sidebar/chrome.d.ts.map +1 -1
- package/sidebar/chrome.js +5 -4
- package/sidebar/chrome.js.map +1 -1
- package/skill/SkillDiffDialog.js +1 -1
- package/src/access/ManageAccessDialog.tsx +10 -4
- package/src/activity/format-relative-time.ts +11 -9
- package/src/agent/steps/CapabilitiesStep.tsx +6 -3
- package/src/agent/steps/IdentityStep.tsx +19 -12
- package/src/agent-instance/CreateAgentInstanceDialog.tsx +17 -8
- package/src/api-key/ApiKeyCreatedAlert.tsx +10 -19
- package/src/api-key/ApiKeyListPanel.tsx +3 -39
- package/src/api-key/CreateApiKeyForm.tsx +12 -26
- package/src/approval-defaults-context.ts +56 -0
- package/src/attachment/__tests__/vision-preflight.test.ts +311 -0
- package/src/attachment/index.ts +12 -0
- package/src/attachment/vision-preflight.ts +236 -0
- package/src/billing/AutoRechargeCard.tsx +5 -4
- package/src/billing/BillingSection.tsx +4 -3
- package/src/channel/ChannelConversationsDialog.tsx +8 -4
- package/src/channel/ChannelCredentialsDialog.tsx +14 -4
- package/src/channel/ChannelTemplatesDialog.tsx +8 -4
- package/src/channel/ConnectSlackDialog.tsx +14 -4
- package/src/channel/ConnectWhatsAppDialog.tsx +14 -4
- package/src/channel/useChannelSessions.ts +3 -0
- package/src/channel-app/ChannelAppDetailPanel.tsx +15 -12
- package/src/channel-app/CreateChannelAppForm.tsx +17 -12
- package/src/channel-app/internal.tsx +5 -25
- package/src/composer/ComposerToolbar.tsx +1 -1
- package/src/composer/SessionComposer.tsx +160 -13
- package/src/composer/__tests__/SessionComposer-modelCoherence.test.tsx +220 -0
- package/src/composer/__tests__/SessionComposer-visionPreflight.test.tsx +222 -0
- package/src/composer/icons.tsx +0 -18
- package/src/conversation/ConversationComposer.tsx +1 -1
- package/src/conversation/ConversationListPane.tsx +4 -3
- package/src/cursor-accounts/MemberCoverageTable.tsx +3 -14
- package/src/cursor-accounts/__tests__/CursorAccountsConsole.test.tsx +2 -10
- package/src/dashboard/DashboardFailedRuns.tsx +2 -12
- package/src/environment/CreateEnvironmentForm.tsx +8 -27
- package/src/environment/EnvVarForm.tsx +2 -18
- package/src/environment/EnvironmentVariableEditor.tsx +5 -21
- package/src/execution/ArtifactApplyButton.tsx +2 -17
- package/src/execution/ExecutionErrorNotice.tsx +99 -0
- package/src/execution/FilePathLink.tsx +5 -9
- package/src/execution/FileReviewCard.tsx +1 -20
- package/src/execution/FollowUpInput.tsx +1 -16
- package/src/execution/LivenessStatusLine.tsx +59 -0
- package/src/execution/MessageEntry.tsx +136 -25
- package/src/execution/MessageThread.tsx +84 -83
- package/src/execution/SetupProgress.tsx +5 -1
- package/src/execution/SubAgentSection.tsx +9 -20
- package/src/execution/TerminalSession.tsx +97 -10
- package/src/execution/ToolCallDetail.tsx +19 -0
- package/src/execution/ToolCallItem.tsx +157 -37
- package/src/execution/ToolRunGroup.tsx +30 -32
- package/src/execution/WriteBackCard.tsx +5 -24
- package/src/execution/__tests__/MessageEntry-copy.test.tsx +125 -0
- package/src/execution/__tests__/MessageThread.test.tsx +97 -0
- package/src/execution/__tests__/TerminalSession.test.tsx +71 -1
- package/src/execution/__tests__/ToolCallDetail.test.tsx +33 -1
- package/src/execution/__tests__/ToolCallItem.test.tsx +299 -11
- package/src/execution/__tests__/ToolRunGroup.test.tsx +41 -9
- package/src/execution/__tests__/message-thread-slots.test.tsx +92 -0
- package/src/execution/__tests__/tool-presenter.test.tsx +41 -4
- package/src/execution/index.ts +8 -2
- package/src/execution/tool-categories.ts +72 -8
- package/src/execution/tool-presenter.ts +22 -1
- package/src/execution/useArtifactInspection.ts +4 -8
- package/src/iam-policy/GrantAccessForm.tsx +2 -18
- package/src/iam-policy/OrgMembersPanel.tsx +3 -19
- package/src/iam-policy/RoleSelector.tsx +8 -1
- package/src/identity-provider/CreateIdentityProviderForm.tsx +13 -31
- package/src/identity-provider/IdentityProviderDetailPanel.tsx +24 -49
- package/src/identity-provider/IdentityProviderListPanel.tsx +2 -18
- package/src/identity-provider/IdentityProviderWizard.tsx +15 -32
- package/src/identity-provider/SsoLoginPrompt.tsx +6 -21
- package/src/index.ts +23 -1
- package/src/internal/DecisionButton.tsx +1 -20
- package/src/internal/SpinnerIcon.tsx +42 -0
- package/src/internal/__tests__/ThreadCardShell.test.tsx +43 -7
- package/src/internal/__tests__/useCopyFeedback.test.ts +92 -0
- package/src/internal/select-element-text.ts +17 -0
- package/src/internal/thread-card/ThreadCardShell.tsx +53 -21
- package/src/internal/thread-card/glyphs.tsx +24 -3
- package/src/internal/thread-card/index.ts +1 -0
- package/src/internal/useCopyFeedback.ts +61 -0
- package/src/invitation/InvitationCreatedAlert.tsx +10 -18
- package/src/invitation/InvitationManager.tsx +23 -34
- package/src/invitation/InvitationRedemption.tsx +2 -18
- package/src/library/useExportResource.ts +15 -29
- package/src/manifest/ApplyManifestDialog.tsx +1 -1
- package/src/manifest/EditResourceYamlDialog.tsx +1 -1
- package/src/mcp-server/DefinitionDriftNotice.tsx +120 -0
- package/src/mcp-server/McpServerConnectDialog.tsx +1 -1
- package/src/mcp-server/McpServerDetailView.tsx +58 -26
- package/src/mcp-server/OAuthAppForm.tsx +2 -18
- package/src/mcp-server/__tests__/DefinitionDriftNotice.test.tsx +57 -0
- package/src/mcp-server/__tests__/definitionDrift.test.ts +245 -0
- package/src/mcp-server/__tests__/mcpServerToInput.test.ts +201 -0
- package/src/mcp-server/__tests__/useMcpServerDefinitionDrift.test.tsx +173 -0
- package/src/mcp-server/internal/definitionDrift.ts +158 -0
- package/src/mcp-server/internal/mcpServerToInput.ts +3 -0
- package/src/mcp-server/steps/EnvironmentAuthStep.tsx +19 -19
- package/src/mcp-server/steps/IdentityTransportStep.tsx +24 -23
- package/src/mcp-server/useMcpServerConnect.ts +1 -1
- package/src/mcp-server/useMcpServerDefinitionDrift.ts +95 -0
- package/src/models/ModelRegistryContext.ts +7 -1
- package/src/models/ModelSelector.tsx +37 -0
- package/src/models/__tests__/ModelSelector-visionIndicator.test.tsx +129 -0
- package/src/models/__tests__/resolveDefaultModel.test.ts +115 -0
- package/src/models/__tests__/useModelRegistry.test.tsx +99 -4
- package/src/models/index.ts +2 -2
- package/src/models/registry.ts +196 -29
- package/src/models/useModelRegistry.ts +10 -2
- package/src/oauth-app/CreateOAuthAppForm.tsx +16 -31
- package/src/oauth-app/OAuthAppDetailPanel.tsx +16 -31
- package/src/organization/CreateOrganizationForm.tsx +10 -29
- package/src/organization/OrgProfilePanel.tsx +13 -44
- package/src/platform-client/CreatePlatformClientForm.tsx +9 -29
- package/src/platform-client/PlatformClientDetailPanel.tsx +10 -30
- package/src/platform-client/PlatformClientListPanel.tsx +2 -18
- package/src/platform-client/PlatformClientSecretAlert.tsx +26 -55
- package/src/provider.tsx +76 -33
- package/src/resource-creation/WizardNav.tsx +2 -18
- package/src/resource-detail/ConfirmDialog.tsx +1 -1
- package/src/resource-detail/useCopyResource.ts +17 -23
- package/src/schedule/ScheduleDetailView.tsx +2 -18
- package/src/schedule/ScheduleForm.tsx +19 -34
- package/src/session/NewSessionViewer.tsx +85 -7
- package/src/session/SessionViewer.tsx +120 -17
- package/src/session/__tests__/audienceWiring.test.tsx +76 -0
- package/src/session/__tests__/panelNegotiation.test.tsx +302 -0
- package/src/session/__tests__/useNewSessionFlow.test.tsx +134 -5
- package/src/session/__tests__/useSessionPageFlow.autoApprove.test.tsx +74 -0
- package/src/session/__tests__/useSessionPageFlow.runConfig.test.tsx +157 -0
- package/src/session/__tests__/useSessionPanel.test.ts +114 -0
- package/src/session/audience.ts +18 -0
- package/src/session/index.ts +2 -1
- package/src/session/run-config.ts +59 -0
- package/src/session/useNewSessionFlow.ts +39 -2
- package/src/session/useSessionConversation.ts +10 -8
- package/src/session/useSessionPageFlow.ts +51 -10
- package/src/session/useSessionPanel.ts +91 -10
- package/src/settings/ApiKeysSection.tsx +4 -3
- package/src/settings/ChannelAppsSection.tsx +4 -3
- package/src/settings/EnvironmentsSection.tsx +8 -5
- package/src/settings/IdentityProvidersSection.tsx +4 -3
- package/src/settings/InvitationsSection.tsx +4 -2
- package/src/settings/MembersSection.tsx +4 -2
- package/src/settings/OAuthAppsSection.tsx +4 -3
- package/src/settings/OrgProfileSection.tsx +4 -3
- package/src/settings/PlatformClientsSection.tsx +4 -3
- package/src/settings/UsageSection.tsx +4 -2
- package/src/sharing/ShareAgentDialog.tsx +28 -10
- package/src/sidebar/__tests__/WorkspaceSidebar.test.tsx +4 -1
- package/src/sidebar/chrome.tsx +6 -6
- package/src/skill/SkillDiffDialog.tsx +1 -1
- package/src/styles.css +43 -0
- package/src/version-history/VersionTimelineEntry.tsx +1 -21
- package/src/workflow/FailedRunsWidget.tsx +2 -9
- package/src/workflow/PendingApprovalsWidget.tsx +2 -9
- package/src/workflow/ViewYamlDialog.tsx +7 -22
- package/src/workflow/WorkflowArchitectDialog.tsx +8 -27
- package/src/workflow/WorkflowArtifactDocument.tsx +5 -9
- package/src/workflow/WorkflowCanvasEditor.tsx +2 -0
- package/src/workflow/WorkflowCanvasInner.tsx +14 -1
- package/src/workflow/WorkflowDiffGraph.tsx +7 -1
- package/src/workflow/WorkflowExecutionViewer.tsx +88 -11
- package/src/workflow/WorkflowExplainDialog.tsx +8 -24
- package/src/workflow/WorkflowOverviewGraph.tsx +9 -1
- package/src/workflow/WorkflowRefinePanel.tsx +2 -18
- package/src/workflow/WorkflowRepairCard.tsx +2 -18
- package/src/workflow/WorkflowRunDialog.tsx +3 -23
- package/src/workflow/WorkflowTaskApprovalSummary.tsx +2 -17
- package/src/workflow/WorkflowVersionBadge.tsx +4 -13
- package/src/workflow/WorkflowVersionTimeline.tsx +1 -25
- package/src/workflow/__tests__/panelNegotiation.test.tsx +230 -0
- package/src/workflow/__tests__/useWorkflowCanvas.dirty.test.tsx +178 -0
- package/src/workflow/__tests__/useWorkflowCanvas.drag.test.tsx +224 -0
- package/src/workflow/__tests__/useWorkflowExecutionPanel.test.ts +100 -0
- package/src/workflow/execution-comparison/ExecutionComparisonPicker.tsx +7 -11
- package/src/workflow/execution-history/ExecutionHistoryTable.tsx +1 -25
- package/src/workflow/index.ts +1 -0
- package/src/workflow/instance/CreateWorkflowInstanceDialog.tsx +1 -1
- package/src/workflow/instance/WorkflowInstanceDetailPanel.tsx +2 -1
- package/src/workflow/picker/BranchAddPopover.tsx +4 -3
- package/src/workflow/templates/WorkflowTemplatePreview.tsx +1 -1
- package/src/workflow/useApprovalBoundary.ts +1 -1
- package/src/workflow/useWorkflowCanvas.ts +114 -11
- package/src/workflow/useWorkflowExecutionPanel.ts +95 -13
- package/styles.css +1 -1
- package/version-history/VersionTimelineEntry.d.ts.map +1 -1
- package/version-history/VersionTimelineEntry.js +1 -23
- package/version-history/VersionTimelineEntry.js.map +1 -1
- package/workflow/CanvasTransitionEdge.d.ts +1 -1
- package/workflow/FailedRunsWidget.d.ts.map +1 -1
- package/workflow/FailedRunsWidget.js +2 -11
- package/workflow/FailedRunsWidget.js.map +1 -1
- package/workflow/PendingApprovalsWidget.d.ts.map +1 -1
- package/workflow/PendingApprovalsWidget.js +2 -11
- package/workflow/PendingApprovalsWidget.js.map +1 -1
- package/workflow/ViewYamlDialog.d.ts.map +1 -1
- package/workflow/ViewYamlDialog.js +7 -23
- package/workflow/ViewYamlDialog.js.map +1 -1
- package/workflow/WorkflowArchitectDialog.d.ts.map +1 -1
- package/workflow/WorkflowArchitectDialog.js +7 -11
- package/workflow/WorkflowArchitectDialog.js.map +1 -1
- package/workflow/WorkflowArtifactDocument.d.ts.map +1 -1
- package/workflow/WorkflowArtifactDocument.js +5 -8
- package/workflow/WorkflowArtifactDocument.js.map +1 -1
- package/workflow/WorkflowCanvasEditor.d.ts.map +1 -1
- package/workflow/WorkflowCanvasEditor.js +1 -1
- package/workflow/WorkflowCanvasEditor.js.map +1 -1
- package/workflow/WorkflowCanvasInner.d.ts +4 -2
- package/workflow/WorkflowCanvasInner.d.ts.map +1 -1
- package/workflow/WorkflowCanvasInner.js +7 -3
- package/workflow/WorkflowCanvasInner.js.map +1 -1
- package/workflow/WorkflowDiffGraph.js +6 -2
- package/workflow/WorkflowDiffGraph.js.map +1 -1
- package/workflow/WorkflowExecutionViewer.d.ts +51 -0
- package/workflow/WorkflowExecutionViewer.d.ts.map +1 -1
- package/workflow/WorkflowExecutionViewer.js +23 -6
- package/workflow/WorkflowExecutionViewer.js.map +1 -1
- package/workflow/WorkflowExplainDialog.d.ts.map +1 -1
- package/workflow/WorkflowExplainDialog.js +6 -8
- package/workflow/WorkflowExplainDialog.js.map +1 -1
- package/workflow/WorkflowOverviewGraph.js +8 -2
- package/workflow/WorkflowOverviewGraph.js.map +1 -1
- package/workflow/WorkflowRefinePanel.d.ts.map +1 -1
- package/workflow/WorkflowRefinePanel.js +2 -4
- package/workflow/WorkflowRefinePanel.js.map +1 -1
- package/workflow/WorkflowRepairCard.d.ts.map +1 -1
- package/workflow/WorkflowRepairCard.js +2 -4
- package/workflow/WorkflowRepairCard.js.map +1 -1
- package/workflow/WorkflowRunDialog.d.ts.map +1 -1
- package/workflow/WorkflowRunDialog.js +2 -7
- package/workflow/WorkflowRunDialog.js.map +1 -1
- package/workflow/WorkflowTaskApprovalSummary.d.ts.map +1 -1
- package/workflow/WorkflowTaskApprovalSummary.js +2 -4
- package/workflow/WorkflowTaskApprovalSummary.js.map +1 -1
- package/workflow/WorkflowVersionBadge.d.ts.map +1 -1
- package/workflow/WorkflowVersionBadge.js +4 -13
- package/workflow/WorkflowVersionBadge.js.map +1 -1
- package/workflow/WorkflowVersionTimeline.d.ts.map +1 -1
- package/workflow/WorkflowVersionTimeline.js +1 -26
- package/workflow/WorkflowVersionTimeline.js.map +1 -1
- package/workflow/execution-comparison/ExecutionComparisonPicker.d.ts.map +1 -1
- package/workflow/execution-comparison/ExecutionComparisonPicker.js +7 -15
- package/workflow/execution-comparison/ExecutionComparisonPicker.js.map +1 -1
- package/workflow/execution-history/ExecutionHistoryTable.d.ts.map +1 -1
- package/workflow/execution-history/ExecutionHistoryTable.js +1 -24
- package/workflow/execution-history/ExecutionHistoryTable.js.map +1 -1
- package/workflow/index.d.ts +1 -1
- package/workflow/index.d.ts.map +1 -1
- package/workflow/index.js.map +1 -1
- package/workflow/instance/CreateWorkflowInstanceDialog.js +1 -1
- package/workflow/instance/WorkflowInstanceDetailPanel.d.ts.map +1 -1
- package/workflow/instance/WorkflowInstanceDetailPanel.js +1 -1
- package/workflow/instance/WorkflowInstanceDetailPanel.js.map +1 -1
- package/workflow/picker/BranchAddPopover.d.ts.map +1 -1
- package/workflow/picker/BranchAddPopover.js +3 -2
- package/workflow/picker/BranchAddPopover.js.map +1 -1
- package/workflow/templates/WorkflowTemplatePreview.js +1 -1
- package/workflow/useApprovalBoundary.d.ts +1 -1
- package/workflow/useApprovalBoundary.js +1 -1
- package/workflow/useWorkflowCanvas.d.ts +5 -1
- package/workflow/useWorkflowCanvas.d.ts.map +1 -1
- package/workflow/useWorkflowCanvas.js +99 -13
- package/workflow/useWorkflowCanvas.js.map +1 -1
- package/workflow/useWorkflowExecutionPanel.d.ts +38 -2
- package/workflow/useWorkflowExecutionPanel.d.ts.map +1 -1
- package/workflow/useWorkflowExecutionPanel.js +46 -13
- package/workflow/useWorkflowExecutionPanel.js.map +1 -1
|
@@ -15,9 +15,11 @@ import { withTimeout } from "../internal/withTimeout.js";
|
|
|
15
15
|
import { useCreateAgentExecution } from "../execution/useCreateAgentExecution.js";
|
|
16
16
|
import type { ExecutionTargetOption } from "./execution-target.js";
|
|
17
17
|
import { useExecutionTarget } from "../execution-target-context.js";
|
|
18
|
+
import { useApprovalDefaults } from "../approval-defaults-context.js";
|
|
18
19
|
import { useRunnerAdapter } from "../runner-adapter.js";
|
|
19
20
|
import { resolveExecutionRuntimeEnv, type RuntimeEnvProvider } from "./runtime-env.js";
|
|
20
21
|
import type { SessionAudience } from "./audience.js";
|
|
22
|
+
import { assertValidRunConfig, type SessionRunConfig } from "./run-config.js";
|
|
21
23
|
|
|
22
24
|
const DEFAULT_AGENT_TIMEOUT_MS = 10_000;
|
|
23
25
|
|
|
@@ -141,6 +143,16 @@ export interface UseNewSessionFlowOptions {
|
|
|
141
143
|
* or Environment resources. Large values bloat every prompt.
|
|
142
144
|
*/
|
|
143
145
|
readonly sessionContext?: string;
|
|
146
|
+
/**
|
|
147
|
+
* Owner-pinned model/tier for the session's first execution
|
|
148
|
+
* (stigmer/stigmer#664). Stamped at submit, winning over the
|
|
149
|
+
* composer's selection and the restored Console preference. Pair
|
|
150
|
+
* with the same pin on the conversation surface
|
|
151
|
+
* (`useSessionPageFlow` / `SessionViewer`) so follow-ups match.
|
|
152
|
+
* Ignored for the `"guest"` audience (the platform share policy owns
|
|
153
|
+
* guest execution config). See {@link SessionRunConfig}.
|
|
154
|
+
*/
|
|
155
|
+
readonly runConfig?: SessionRunConfig;
|
|
144
156
|
}
|
|
145
157
|
|
|
146
158
|
/** Return value of {@link useNewSessionFlow}. */
|
|
@@ -257,9 +269,24 @@ export function useNewSessionFlow(
|
|
|
257
269
|
sessionContext,
|
|
258
270
|
} = options;
|
|
259
271
|
const isGuest = options.audience === "guest";
|
|
272
|
+
// Guests never carry a client pin: guest execution config is owned by
|
|
273
|
+
// the server-side share policy (GUEST_HARNESS reasoning). Validated at
|
|
274
|
+
// render so a statically-wrong pin (fast tier, no model) fails in the
|
|
275
|
+
// embedder's dev loop, not as the end user's failed send.
|
|
276
|
+
const runConfig = isGuest ? undefined : options.runConfig;
|
|
277
|
+
if (runConfig) assertValidRunConfig(runConfig);
|
|
278
|
+
const pinnedModelName = runConfig?.modelName;
|
|
279
|
+
const pinnedServiceTier = runConfig?.serviceTier;
|
|
260
280
|
const contextTarget = useExecutionTarget();
|
|
261
281
|
const executionTarget = options.executionTarget ?? contextTarget;
|
|
262
282
|
const adapter = useRunnerAdapter();
|
|
283
|
+
// Host approval default (#302): pre-arm auto_approve_all on the bootstrap
|
|
284
|
+
// create when the provider says so. Guests never inherit it — a share-link
|
|
285
|
+
// visitor is not the operator the host's trust judgment covers (the
|
|
286
|
+
// GUEST_HARNESS fixed-platform-policy reasoning).
|
|
287
|
+
const approvalDefaults = useApprovalDefaults();
|
|
288
|
+
const autoApproveAll =
|
|
289
|
+
(!isGuest && approvalDefaults?.autoApproveAll) || undefined;
|
|
263
290
|
|
|
264
291
|
const [harness, setHarnessRaw] = useState<HarnessOption>(() => {
|
|
265
292
|
// Guests get the fixed platform policy (see GUEST_HARNESS) and never
|
|
@@ -385,12 +412,19 @@ export function useNewSessionFlow(
|
|
|
385
412
|
const executionFields = {
|
|
386
413
|
org,
|
|
387
414
|
message,
|
|
388
|
-
|
|
415
|
+
// The owner pin wins over the composer and the restored
|
|
416
|
+
// preference (#664); the pinned tier is stamped only as
|
|
417
|
+
// "fast" — standard stays off the wire, preserving the #357
|
|
418
|
+
// UNSPECIFIED-vs-explicit telemetry distinction.
|
|
419
|
+
modelName: pinnedModelName ?? selectedModel ?? validModelId,
|
|
389
420
|
runtimeEnv,
|
|
390
421
|
attachments: context?.attachments,
|
|
391
422
|
interactionMode: context?.interactionMode,
|
|
392
|
-
serviceTier:
|
|
423
|
+
serviceTier: pinnedModelName
|
|
424
|
+
? (pinnedServiceTier === "fast" ? "fast" : undefined)
|
|
425
|
+
: context?.serviceTier,
|
|
393
426
|
workspaceFileRefs: context?.workspaceFileRefs,
|
|
427
|
+
autoApproveAll,
|
|
394
428
|
};
|
|
395
429
|
|
|
396
430
|
// Resolve which agent the bootstrapped session runs against: an
|
|
@@ -477,9 +511,12 @@ export function useNewSessionFlow(
|
|
|
477
511
|
isGuest,
|
|
478
512
|
harness,
|
|
479
513
|
executionTarget,
|
|
514
|
+
autoApproveAll,
|
|
480
515
|
adapter,
|
|
481
516
|
getRuntimeEnv,
|
|
482
517
|
validModelId,
|
|
518
|
+
pinnedModelName,
|
|
519
|
+
pinnedServiceTier,
|
|
483
520
|
workspace,
|
|
484
521
|
mcpServerUsages,
|
|
485
522
|
skillRefs,
|
|
@@ -21,7 +21,9 @@ import type { ServiceTierOption } from "../models/service-tier.js";
|
|
|
21
21
|
import { useStigmer } from "../hooks.js";
|
|
22
22
|
import { toError } from "../internal/toError.js";
|
|
23
23
|
import { useConversationStoreRef } from "../internal/store/index.js";
|
|
24
|
-
import
|
|
24
|
+
// Type-only import so the SharedAgentExecutionFields doc links below resolve;
|
|
25
|
+
// the strict tsdoc gate (tsdoc:check) guards it against removal.
|
|
26
|
+
import { useCreateAgentExecution, type SharedAgentExecutionFields } from "../execution/useCreateAgentExecution.js";
|
|
25
27
|
import { useExecutionStream } from "../execution/useExecutionStream.js";
|
|
26
28
|
import { useAgentExecutionActions } from "../execution/useAgentExecutionActions.js";
|
|
27
29
|
import { useSubmitApproval } from "../execution/useSubmitApproval.js";
|
|
@@ -79,7 +81,7 @@ export interface SendFollowUpOptions {
|
|
|
79
81
|
* instance. Keys must be declared in the agent's env declarations
|
|
80
82
|
* (a whitelist, not a value source) or they are dropped.
|
|
81
83
|
*
|
|
82
|
-
* @see {@link
|
|
84
|
+
* @see {@link SharedAgentExecutionFields.runtimeEnv}
|
|
83
85
|
*/
|
|
84
86
|
readonly runtimeEnv?: Record<string, EnvVarInput>;
|
|
85
87
|
/**
|
|
@@ -89,7 +91,7 @@ export interface SendFollowUpOptions {
|
|
|
89
91
|
* `agentExecution.uploadAttachment()`. Forwarded directly to
|
|
90
92
|
* execution creation.
|
|
91
93
|
*
|
|
92
|
-
* @see {@link
|
|
94
|
+
* @see {@link SharedAgentExecutionFields.attachments}
|
|
93
95
|
*/
|
|
94
96
|
readonly attachments?: AttachmentInput[];
|
|
95
97
|
/**
|
|
@@ -106,19 +108,19 @@ export interface SendFollowUpOptions {
|
|
|
106
108
|
* the unspecified-vs-explicit distinction (unset resolves to standard on
|
|
107
109
|
* the platform side — never the provider account default).
|
|
108
110
|
*
|
|
109
|
-
* @see {@link
|
|
111
|
+
* @see {@link SharedAgentExecutionFields.serviceTier}
|
|
110
112
|
*/
|
|
111
113
|
readonly serviceTier?: ServiceTierOption;
|
|
112
114
|
/**
|
|
113
115
|
* Marks this execution as a Build-from-plan turn.
|
|
114
116
|
*
|
|
115
|
-
* @see {@link
|
|
117
|
+
* @see {@link SharedAgentExecutionFields.buildFromPlan}
|
|
116
118
|
*/
|
|
117
119
|
readonly buildFromPlan?: boolean;
|
|
118
120
|
/**
|
|
119
121
|
* Auto-approve every tool call for this execution (bypass the HITL gate).
|
|
120
122
|
*
|
|
121
|
-
* @see {@link
|
|
123
|
+
* @see {@link SharedAgentExecutionFields.autoApproveAll}
|
|
122
124
|
*/
|
|
123
125
|
readonly autoApproveAll?: boolean;
|
|
124
126
|
/**
|
|
@@ -127,7 +129,7 @@ export interface SendFollowUpOptions {
|
|
|
127
129
|
* Lightweight "attention" signals — no upload, no injection. The agent
|
|
128
130
|
* reads these files directly from the workspace filesystem.
|
|
129
131
|
*
|
|
130
|
-
* @see {@link
|
|
132
|
+
* @see {@link SharedAgentExecutionFields.workspaceFileRefs}
|
|
131
133
|
*/
|
|
132
134
|
readonly workspaceFileRefs?: string[];
|
|
133
135
|
/**
|
|
@@ -136,7 +138,7 @@ export interface SendFollowUpOptions {
|
|
|
136
138
|
* The conversation read model hides the superseded execution so the
|
|
137
139
|
* edited message replaces the original in place.
|
|
138
140
|
*
|
|
139
|
-
* @see {@link
|
|
141
|
+
* @see {@link SharedAgentExecutionFields.supersedesExecutionId}
|
|
140
142
|
*/
|
|
141
143
|
readonly supersedesExecutionId?: string;
|
|
142
144
|
}
|
|
@@ -6,6 +6,7 @@ import { ApprovalAction } from "@stigmer/protos/ai/stigmer/agentic/agentexecutio
|
|
|
6
6
|
import type { AgentResolution } from "../agent/index.js";
|
|
7
7
|
import { useDefaultAgent } from "../agent/index.js";
|
|
8
8
|
import { useStigmer } from "../hooks.js";
|
|
9
|
+
import { useApprovalDefaults } from "../approval-defaults-context.js";
|
|
9
10
|
import { useWorkspaceEntries, type UseWorkspaceEntriesReturn } from "../workspace/index.js";
|
|
10
11
|
import { useSessionVariables, type UseSessionVariablesReturn } from "../execution/useSessionVariables.js";
|
|
11
12
|
import type { SessionComposerSubmitContext, InteractionModeOption } from "../composer/index.js";
|
|
@@ -19,6 +20,7 @@ import { useAgentRefFromSession } from "./useAgentRefFromSession.js";
|
|
|
19
20
|
import { usePersistedModel, type UsePersistedModelReturn } from "./usePersistedModel.js";
|
|
20
21
|
import { specMcpUsagesToInput, specSkillRefsToInput } from "./session-spec-converters.js";
|
|
21
22
|
import type { SessionAudience } from "./audience.js";
|
|
23
|
+
import { assertValidRunConfig, type SessionRunConfig } from "./run-config.js";
|
|
22
24
|
|
|
23
25
|
/**
|
|
24
26
|
* Well-known Daytona sandbox workspace root. Used as the SDK safety-net
|
|
@@ -56,6 +58,16 @@ export interface UseSessionPageFlowOptions {
|
|
|
56
58
|
* @default "integrator"
|
|
57
59
|
*/
|
|
58
60
|
readonly audience?: SessionAudience;
|
|
61
|
+
/**
|
|
62
|
+
* Owner-pinned model/tier for every follow-up on this surface
|
|
63
|
+
* (stigmer/stigmer#664). Stamped at submit — after the composer, so
|
|
64
|
+
* it wins over composer state, the persisted Console preference, and
|
|
65
|
+
* the last execution's model — and therefore also covers retries,
|
|
66
|
+
* which re-enter the same submit path. Ignored for the `"guest"`
|
|
67
|
+
* audience (the server-side share policy owns guest execution
|
|
68
|
+
* config). See {@link SessionRunConfig}.
|
|
69
|
+
*/
|
|
70
|
+
readonly runConfig?: SessionRunConfig;
|
|
59
71
|
}
|
|
60
72
|
|
|
61
73
|
/** Return value of {@link useSessionPageFlow}. */
|
|
@@ -130,10 +142,13 @@ export interface UseSessionPageFlowReturn {
|
|
|
130
142
|
/**
|
|
131
143
|
* Session-scoped "auto-approve tool calls" preference.
|
|
132
144
|
*
|
|
133
|
-
* `false` by default
|
|
134
|
-
*
|
|
135
|
-
*
|
|
136
|
-
*
|
|
145
|
+
* `false` by default; a host can pre-arm it app-wide via
|
|
146
|
+
* `StigmerProvider`'s `approvalDefaults` (#302, guests excluded). Flipped
|
|
147
|
+
* to `true` when the user chooses "Approve & don't ask again" at an
|
|
148
|
+
* approval gate (see {@link submitApproval}), and carried into every
|
|
149
|
+
* subsequent follow-up via {@link handleSubmit}. Held in memory only —
|
|
150
|
+
* reset on reload / new session back to the host default, never persisted
|
|
151
|
+
* server-side.
|
|
137
152
|
*/
|
|
138
153
|
readonly autoApproveAll: boolean;
|
|
139
154
|
/**
|
|
@@ -240,6 +255,18 @@ export function useSessionPageFlow(
|
|
|
240
255
|
): UseSessionPageFlowReturn {
|
|
241
256
|
const { sessionId, org, getRuntimeEnv } = options;
|
|
242
257
|
const isGuest = options.audience === "guest";
|
|
258
|
+
// Guests never carry a client pin: guest execution config is owned by
|
|
259
|
+
// the server-side share policy, and the no-modelName guest invariant
|
|
260
|
+
// is test-pinned.
|
|
261
|
+
const runConfig = isGuest ? undefined : options.runConfig;
|
|
262
|
+
// Render-time, not submit-time: the pin is static host configuration,
|
|
263
|
+
// so a statically-wrong shape (fast tier, no model) should fail at
|
|
264
|
+
// mount in the embedder's dev loop — not as an end user's failed send.
|
|
265
|
+
if (runConfig) assertValidRunConfig(runConfig);
|
|
266
|
+
// Scalars, not the object: hosts pass inline literals, and the submit
|
|
267
|
+
// callback's identity must not churn on every render (DD-010).
|
|
268
|
+
const pinnedModelName = runConfig?.modelName;
|
|
269
|
+
const pinnedServiceTier = runConfig?.serviceTier;
|
|
243
270
|
|
|
244
271
|
const stigmer = useStigmer();
|
|
245
272
|
const conv = useSessionConversation(sessionId, org);
|
|
@@ -294,9 +321,17 @@ export function useSessionPageFlow(
|
|
|
294
321
|
const [skillRefs, setSkillRefs] = useState<ResourceRef[]>([]);
|
|
295
322
|
const initialSyncDone = useRef(false);
|
|
296
323
|
|
|
297
|
-
// Session-scoped auto-approve
|
|
298
|
-
//
|
|
299
|
-
|
|
324
|
+
// Session-scoped auto-approve. Armed either at the approval gate ("Approve &
|
|
325
|
+
// don't ask again") or from the host's provider-level approvalDefaults
|
|
326
|
+
// (#302) — an app-level trust judgment, so it seeds the INITIAL state only;
|
|
327
|
+
// the user's in-session "Turn off" always wins from then on. Guests never
|
|
328
|
+
// inherit the host default (a share-link visitor is not the operator the
|
|
329
|
+
// host's trust judgment covers). Lives only in memory for the life of this
|
|
330
|
+
// page — reset on reload re-applies the host default, never a user choice.
|
|
331
|
+
const approvalDefaults = useApprovalDefaults();
|
|
332
|
+
const [autoApproveAll, setAutoApproveAll] = useState(
|
|
333
|
+
() => !isGuest && (approvalDefaults?.autoApproveAll ?? false),
|
|
334
|
+
);
|
|
300
335
|
|
|
301
336
|
const submitApproval = useCallback<UseSessionConversationReturn["submitApproval"]>(
|
|
302
337
|
async (toolCallId, action, comment) => {
|
|
@@ -429,7 +464,11 @@ export function useSessionPageFlow(
|
|
|
429
464
|
|
|
430
465
|
conv.sendFollowUp(message, {
|
|
431
466
|
agentInstanceId: agentInstanceIdOverride,
|
|
432
|
-
|
|
467
|
+
// The owner pin wins over everything the user or the SDK
|
|
468
|
+
// resolved (#664); the pinned tier is stamped only as "fast" —
|
|
469
|
+
// an untouched/standard tier stays off the wire, preserving the
|
|
470
|
+
// #357 UNSPECIFIED-vs-explicit telemetry distinction.
|
|
471
|
+
modelName: pinnedModelName ?? selectedModel ?? modelId,
|
|
433
472
|
workspaceEntries: workspace.hasEntries
|
|
434
473
|
? workspace.toInput()
|
|
435
474
|
: undefined,
|
|
@@ -438,7 +477,9 @@ export function useSessionPageFlow(
|
|
|
438
477
|
runtimeEnv,
|
|
439
478
|
attachments: context?.attachments,
|
|
440
479
|
interactionMode: context?.interactionMode,
|
|
441
|
-
serviceTier:
|
|
480
|
+
serviceTier: pinnedModelName
|
|
481
|
+
? (pinnedServiceTier === "fast" ? "fast" : undefined)
|
|
482
|
+
: context?.serviceTier,
|
|
442
483
|
buildFromPlan: context?.buildFromPlan,
|
|
443
484
|
// Sourced from the session-scoped preference set at the approval gate,
|
|
444
485
|
// not from the composer (the pre-arm toggle was removed).
|
|
@@ -449,7 +490,7 @@ export function useSessionPageFlow(
|
|
|
449
490
|
|
|
450
491
|
sessionVariables.clear();
|
|
451
492
|
},
|
|
452
|
-
[conv.sendFollowUp, modelId, workspace, mcpServerUsages, skillRefs, sessionVariables.clear, resolution, agentRef, sessionInstanceId, stigmer, autoApproveAll, getRuntimeEnv],
|
|
493
|
+
[conv.sendFollowUp, modelId, pinnedModelName, pinnedServiceTier, workspace, mcpServerUsages, skillRefs, sessionVariables.clear, resolution, agentRef, sessionInstanceId, stigmer, autoApproveAll, getRuntimeEnv],
|
|
453
494
|
);
|
|
454
495
|
|
|
455
496
|
// -------------------------------------------------------------------------
|
|
@@ -58,6 +58,37 @@ export interface UseSessionPanelOptions {
|
|
|
58
58
|
* @default "files"
|
|
59
59
|
*/
|
|
60
60
|
readonly defaultView?: string;
|
|
61
|
+
/**
|
|
62
|
+
* Controlled open state. When provided, the host owns whether the panel is
|
|
63
|
+
* expanded: internal open intents (the chip toggle, a file/artifact/plan
|
|
64
|
+
* open, plan auto-open) no longer flip state themselves — they surface
|
|
65
|
+
* through {@link UseSessionPanelOptions.onOpenChange} and the panel follows
|
|
66
|
+
* this value. Leave `undefined` for the self-managing default.
|
|
67
|
+
*/
|
|
68
|
+
readonly open?: boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Initial open state in uncontrolled mode. Ignored when
|
|
71
|
+
* {@link UseSessionPanelOptions.open} is provided.
|
|
72
|
+
*
|
|
73
|
+
* @default false
|
|
74
|
+
*/
|
|
75
|
+
readonly defaultOpen?: boolean;
|
|
76
|
+
/**
|
|
77
|
+
* Called on every effective open/close transition — in BOTH modes, unlike
|
|
78
|
+
* `useDetailTabs`'s DD-T05A-001 convention of swallowing the callback when
|
|
79
|
+
* uncontrolled. The difference is principled, not stylistic: tabs change
|
|
80
|
+
* only through user clicks, so an uncontrolled host loses nothing by not
|
|
81
|
+
* hearing about them — but this panel opens ITSELF (`openFile`,
|
|
82
|
+
* `openArtifact`, `openPlanDocument`, and the plan-key auto-open all expand
|
|
83
|
+
* a collapsed panel), and an embedding host that must react to those
|
|
84
|
+
* moments (widen a dock, make room for a streaming plan) has no other seam.
|
|
85
|
+
* Passing only this callback observes the panel without controlling it.
|
|
86
|
+
*
|
|
87
|
+
* In controlled mode this fires once per open/close REQUEST (the host may
|
|
88
|
+
* decline by not updating `open` — a later identical request re-fires); in
|
|
89
|
+
* uncontrolled mode it fires once per actual transition.
|
|
90
|
+
*/
|
|
91
|
+
readonly onOpenChange?: (open: boolean) => void;
|
|
61
92
|
}
|
|
62
93
|
|
|
63
94
|
/**
|
|
@@ -81,7 +112,11 @@ export interface UseSessionPanelOptions {
|
|
|
81
112
|
export interface SessionPanelController {
|
|
82
113
|
/** The open-editor group store; subscribe with `useWorkspaceEditors`. */
|
|
83
114
|
readonly editorsStore: WorkspaceEditorsStore;
|
|
84
|
-
/**
|
|
115
|
+
/**
|
|
116
|
+
* Whether the panel is expanded (chat narrow) or collapsed to the chip.
|
|
117
|
+
* In controlled mode ({@link UseSessionPanelOptions.open}) this mirrors
|
|
118
|
+
* the host's value.
|
|
119
|
+
*/
|
|
85
120
|
readonly isOpen: boolean;
|
|
86
121
|
/** The active rail view id (`"files"`, `"search"`, or an injected facet). */
|
|
87
122
|
readonly view: string;
|
|
@@ -149,9 +184,49 @@ export function useSessionPanel({
|
|
|
149
184
|
hasChanges,
|
|
150
185
|
planKey = null,
|
|
151
186
|
defaultView = "files",
|
|
187
|
+
open,
|
|
188
|
+
defaultOpen = false,
|
|
189
|
+
onOpenChange,
|
|
152
190
|
}: UseSessionPanelOptions): SessionPanelController {
|
|
153
191
|
const editorsStore = useWorkspaceEditorsStoreRef();
|
|
154
|
-
|
|
192
|
+
|
|
193
|
+
// Uncontrolled-by-default / controlled-when-`open`-is-provided (React's own
|
|
194
|
+
// value/defaultValue convention — presence of the value prop decides, so an
|
|
195
|
+
// observe-only host can pass just `onOpenChange`). Everything below reads
|
|
196
|
+
// the EFFECTIVE value: the render-adjust triggers (first write-back) and
|
|
197
|
+
// the returned controller must agree with the host's state, never a stale
|
|
198
|
+
// internal one.
|
|
199
|
+
const isControlled = open !== undefined;
|
|
200
|
+
const [internalIsOpen, setInternalIsOpen] = useState(defaultOpen);
|
|
201
|
+
const isOpen = isControlled ? open : internalIsOpen;
|
|
202
|
+
|
|
203
|
+
// Latest-ref idiom (see YamlEditor's onChangeRef): the host's callback and
|
|
204
|
+
// the mode/value mirrors live in refs so `requestOpenChange` — and every
|
|
205
|
+
// action callback built on it — stays referentially stable regardless of
|
|
206
|
+
// how the host authored `onOpenChange` (DD-010: an inline lambda must not
|
|
207
|
+
// churn the memoized controller and re-render the panel subtree).
|
|
208
|
+
const onOpenChangeRef = useRef(onOpenChange);
|
|
209
|
+
onOpenChangeRef.current = onOpenChange;
|
|
210
|
+
const isControlledRef = useRef(isControlled);
|
|
211
|
+
isControlledRef.current = isControlled;
|
|
212
|
+
const isOpenRef = useRef(isOpen);
|
|
213
|
+
isOpenRef.current = isOpen;
|
|
214
|
+
|
|
215
|
+
// The single seam every open/close intent routes through — the chip
|
|
216
|
+
// toggle, file/artifact/plan opens, the surface's collapse affordance, and
|
|
217
|
+
// the plan-key auto-open. Uncontrolled: apply + notify (the ref is updated
|
|
218
|
+
// eagerly so two same-tick intents produce one notification). Controlled:
|
|
219
|
+
// notify only — the host owns the state, and the panel follows the `open`
|
|
220
|
+
// prop; the ref is NOT updated, so a declined request stays re-fireable.
|
|
221
|
+
const requestOpenChange = useCallback((next: boolean) => {
|
|
222
|
+
if (isOpenRef.current === next) return;
|
|
223
|
+
if (!isControlledRef.current) {
|
|
224
|
+
isOpenRef.current = next;
|
|
225
|
+
setInternalIsOpen(next);
|
|
226
|
+
}
|
|
227
|
+
onOpenChangeRef.current?.(next);
|
|
228
|
+
}, []);
|
|
229
|
+
|
|
155
230
|
const [view, setViewState] = useState(defaultView);
|
|
156
231
|
|
|
157
232
|
// Sticky explicit pick (rail click) — auto-switching yields to it until a
|
|
@@ -184,8 +259,8 @@ export function useSessionPanel({
|
|
|
184
259
|
|
|
185
260
|
const openPlanDocument = useCallback(() => {
|
|
186
261
|
editorsStore.openPinned(PLAN_DOCUMENT_ENTRY_ID, PLAN_DOCUMENT_PATH);
|
|
187
|
-
|
|
188
|
-
}, [editorsStore]);
|
|
262
|
+
requestOpenChange(true);
|
|
263
|
+
}, [editorsStore, requestOpenChange]);
|
|
189
264
|
|
|
190
265
|
// A new plan arrived (first plan, or a refinement superseding it) → open the
|
|
191
266
|
// plan document tab, expanding a collapsed panel (see the planKey option doc
|
|
@@ -204,9 +279,15 @@ export function useSessionPanel({
|
|
|
204
279
|
}
|
|
205
280
|
}, [planKey, openPlanDocument]);
|
|
206
281
|
|
|
207
|
-
const openPanel = useCallback(
|
|
282
|
+
const openPanel = useCallback(
|
|
283
|
+
() => requestOpenChange(true),
|
|
284
|
+
[requestOpenChange],
|
|
285
|
+
);
|
|
208
286
|
|
|
209
|
-
const closePanel = useCallback(
|
|
287
|
+
const closePanel = useCallback(
|
|
288
|
+
() => requestOpenChange(false),
|
|
289
|
+
[requestOpenChange],
|
|
290
|
+
);
|
|
210
291
|
|
|
211
292
|
const setView = useCallback((viewId: string) => {
|
|
212
293
|
userPickedViewRef.current = true;
|
|
@@ -216,17 +297,17 @@ export function useSessionPanel({
|
|
|
216
297
|
const openFile = useCallback(
|
|
217
298
|
(entryId: string, path: string, options?: OpenFileOptions) => {
|
|
218
299
|
editorsStore.openPreview(entryId, path, options);
|
|
219
|
-
|
|
300
|
+
requestOpenChange(true);
|
|
220
301
|
},
|
|
221
|
-
[editorsStore],
|
|
302
|
+
[editorsStore, requestOpenChange],
|
|
222
303
|
);
|
|
223
304
|
|
|
224
305
|
const openArtifact = useCallback(
|
|
225
306
|
(artifact: ExecutionArtifact) => {
|
|
226
307
|
editorsStore.openPreview(ARTIFACT_DOCUMENT_ENTRY_ID, artifactKey(artifact));
|
|
227
|
-
|
|
308
|
+
requestOpenChange(true);
|
|
228
309
|
},
|
|
229
|
-
[editorsStore],
|
|
310
|
+
[editorsStore, requestOpenChange],
|
|
230
311
|
);
|
|
231
312
|
|
|
232
313
|
const pinArtifact = useCallback(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import { useCallback, useRef, useState } from "react";
|
|
3
|
+
import { useCallback, useId, useRef, useState } from "react";
|
|
4
4
|
import type { ApiKey } from "@stigmer/protos/ai/stigmer/iam/apikey/v1/api_pb";
|
|
5
5
|
import { ApiKeyListPanel } from "../api-key/ApiKeyListPanel.js";
|
|
6
6
|
import { CreateApiKeyForm } from "../api-key/CreateApiKeyForm.js";
|
|
@@ -16,6 +16,7 @@ type FlowState =
|
|
|
16
16
|
|
|
17
17
|
/** Settings section for listing and creating organization API keys. */
|
|
18
18
|
export function ApiKeysSection() {
|
|
19
|
+
const headingId = useId();
|
|
19
20
|
const org = useActiveOrgSlug();
|
|
20
21
|
const apiKeysAvailable = useResourceAvailable(ApiResourceKind.api_key);
|
|
21
22
|
const [flow, setFlow] = useState<FlowState>({ phase: "idle" });
|
|
@@ -37,10 +38,10 @@ export function ApiKeysSection() {
|
|
|
37
38
|
}, []);
|
|
38
39
|
|
|
39
40
|
return (
|
|
40
|
-
<section aria-labelledby=
|
|
41
|
+
<section aria-labelledby={headingId}>
|
|
41
42
|
<div className="stg:mb-3 stg:flex stg:items-center stg:justify-between">
|
|
42
43
|
<h2
|
|
43
|
-
id=
|
|
44
|
+
id={headingId}
|
|
44
45
|
className="stg:text-foreground stg:text-sm stg:font-semibold"
|
|
45
46
|
>
|
|
46
47
|
API Keys
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import { useCallback, useRef, useState } from "react";
|
|
3
|
+
import { useCallback, useId, useRef, useState } from "react";
|
|
4
4
|
import type { ChannelApp } from "@stigmer/protos/ai/stigmer/agentic/channelapp/v1/api_pb";
|
|
5
5
|
import { ChannelAppListPanel } from "../channel-app/ChannelAppListPanel.js";
|
|
6
6
|
import {
|
|
@@ -38,6 +38,7 @@ type FlowState =
|
|
|
38
38
|
* Channels tab offers it as the serving app.
|
|
39
39
|
*/
|
|
40
40
|
export function ChannelAppsSection() {
|
|
41
|
+
const headingId = useId();
|
|
41
42
|
const org = useActiveOrgSlug();
|
|
42
43
|
// Channel installs (the consumer of these credentials) are cloud-only;
|
|
43
44
|
// gate the whole section the way the Channels tab gates connects.
|
|
@@ -72,10 +73,10 @@ export function ChannelAppsSection() {
|
|
|
72
73
|
}, []);
|
|
73
74
|
|
|
74
75
|
return (
|
|
75
|
-
<section aria-labelledby=
|
|
76
|
+
<section aria-labelledby={headingId}>
|
|
76
77
|
<div className="stg:mb-3 stg:flex stg:items-center stg:justify-between">
|
|
77
78
|
<h2
|
|
78
|
-
id=
|
|
79
|
+
id={headingId}
|
|
79
80
|
className="stg:text-foreground stg:text-sm stg:font-semibold"
|
|
80
81
|
>
|
|
81
82
|
Channel Apps
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import { useCallback, useEffect, useRef, useState } from "react";
|
|
3
|
+
import { useCallback, useEffect, useId, useRef, useState } from "react";
|
|
4
4
|
import { getUserMessage } from "@stigmer/sdk";
|
|
5
5
|
import { usePersonalEnvironment } from "../environment/usePersonalEnvironment.js";
|
|
6
6
|
import { EnvironmentVariableEditor } from "../environment/EnvironmentVariableEditor.js";
|
|
@@ -47,12 +47,13 @@ function PersonalEnvironmentCard({ org }: { org: string }) {
|
|
|
47
47
|
}, [org, isLoading, environment, getOrCreate]);
|
|
48
48
|
|
|
49
49
|
const environmentId = environment?.metadata?.id;
|
|
50
|
+
const headingId = useId();
|
|
50
51
|
|
|
51
52
|
return (
|
|
52
|
-
<section aria-labelledby=
|
|
53
|
+
<section aria-labelledby={headingId}>
|
|
53
54
|
<div className="stg:mb-3 stg:flex stg:items-baseline stg:gap-2">
|
|
54
55
|
<h2
|
|
55
|
-
id=
|
|
56
|
+
id={headingId}
|
|
56
57
|
className="stg:text-foreground stg:text-sm stg:font-semibold"
|
|
57
58
|
>
|
|
58
59
|
Personal Environment
|
|
@@ -97,11 +98,13 @@ function EnvironmentsCard({ org }: { org: string }) {
|
|
|
97
98
|
listRefetchRef.current?.();
|
|
98
99
|
}, []);
|
|
99
100
|
|
|
101
|
+
const headingId = useId();
|
|
102
|
+
|
|
100
103
|
return (
|
|
101
|
-
<section aria-labelledby=
|
|
104
|
+
<section aria-labelledby={headingId}>
|
|
102
105
|
<div className="stg:mb-3 stg:flex stg:items-center stg:justify-between">
|
|
103
106
|
<h2
|
|
104
|
-
id=
|
|
107
|
+
id={headingId}
|
|
105
108
|
className="stg:text-foreground stg:text-sm stg:font-semibold"
|
|
106
109
|
>
|
|
107
110
|
Environments
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import { useCallback, useRef, useState } from "react";
|
|
3
|
+
import { useCallback, useId, useRef, useState } from "react";
|
|
4
4
|
import type { IdentityProvider } from "@stigmer/protos/ai/stigmer/iam/identityprovider/v1/api_pb";
|
|
5
5
|
import { IdentityProviderListPanel } from "../identity-provider/IdentityProviderListPanel.js";
|
|
6
6
|
import { IdentityProviderWizard } from "../identity-provider/IdentityProviderWizard.js";
|
|
@@ -28,6 +28,7 @@ type FlowState =
|
|
|
28
28
|
export function IdentityProvidersSection({
|
|
29
29
|
ssoLoginBaseUrl,
|
|
30
30
|
}: IdentityProvidersSectionProps = {}) {
|
|
31
|
+
const headingId = useId();
|
|
31
32
|
const { activeOrg } = useOrg();
|
|
32
33
|
const idpAvailable = useResourceAvailable(ApiResourceKind.identity_provider);
|
|
33
34
|
const orgSlug = activeOrg?.metadata?.slug ?? "";
|
|
@@ -54,10 +55,10 @@ export function IdentityProvidersSection({
|
|
|
54
55
|
(typeof window !== "undefined" ? window.location.origin : "");
|
|
55
56
|
|
|
56
57
|
return (
|
|
57
|
-
<section aria-labelledby=
|
|
58
|
+
<section aria-labelledby={headingId}>
|
|
58
59
|
<div className="stg:mb-3 stg:flex stg:items-center stg:justify-between">
|
|
59
60
|
<h2
|
|
60
|
-
id=
|
|
61
|
+
id={headingId}
|
|
61
62
|
className="stg:text-foreground stg:text-sm stg:font-semibold"
|
|
62
63
|
>
|
|
63
64
|
Identity Providers
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
+
import { useId } from "react";
|
|
3
4
|
import { InvitationManager } from "../invitation/InvitationManager.js";
|
|
4
5
|
import { useResourceAvailable, ApiResourceKind } from "../deployment-mode.js";
|
|
5
6
|
import { CloudFeatureNotice } from "../internal/CloudFeatureNotice.js";
|
|
@@ -7,14 +8,15 @@ import { useActiveOrgSlug } from "../organization/OrgProvider.js";
|
|
|
7
8
|
|
|
8
9
|
/** Settings section for creating and managing organization invitations. */
|
|
9
10
|
export function InvitationsSection() {
|
|
11
|
+
const headingId = useId();
|
|
10
12
|
const org = useActiveOrgSlug();
|
|
11
13
|
const invitationsAvailable = useResourceAvailable(ApiResourceKind.invitation);
|
|
12
14
|
|
|
13
15
|
return (
|
|
14
|
-
<section aria-labelledby=
|
|
16
|
+
<section aria-labelledby={headingId}>
|
|
15
17
|
<div className="stg:mb-3">
|
|
16
18
|
<h2
|
|
17
|
-
id=
|
|
19
|
+
id={headingId}
|
|
18
20
|
className="stg:text-foreground stg:text-sm stg:font-semibold"
|
|
19
21
|
>
|
|
20
22
|
Invitations
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
+
import { useId } from "react";
|
|
3
4
|
import { OrgMembersPanel } from "../iam-policy/OrgMembersPanel.js";
|
|
4
5
|
import { useResourceAvailable, ApiResourceKind } from "../deployment-mode.js";
|
|
5
6
|
import { CloudFeatureNotice } from "../internal/CloudFeatureNotice.js";
|
|
@@ -8,6 +9,7 @@ import { useIdentityProviderList } from "../identity-provider/useIdentityProvide
|
|
|
8
9
|
|
|
9
10
|
/** Settings section for organization membership and role management. */
|
|
10
11
|
export function MembersSection() {
|
|
12
|
+
const headingId = useId();
|
|
11
13
|
const { activeOrg } = useOrg();
|
|
12
14
|
const membersAvailable = useResourceAvailable(ApiResourceKind.iam_policy);
|
|
13
15
|
const idpAvailable = useResourceAvailable(ApiResourceKind.identity_provider);
|
|
@@ -23,9 +25,9 @@ export function MembersSection() {
|
|
|
23
25
|
);
|
|
24
26
|
|
|
25
27
|
return (
|
|
26
|
-
<section aria-labelledby=
|
|
28
|
+
<section aria-labelledby={headingId}>
|
|
27
29
|
<h2
|
|
28
|
-
id=
|
|
30
|
+
id={headingId}
|
|
29
31
|
className="stg:text-foreground stg:mb-1 stg:text-sm stg:font-semibold"
|
|
30
32
|
>
|
|
31
33
|
Members
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import { useCallback, useRef, useState } from "react";
|
|
3
|
+
import { useCallback, useId, useRef, useState } from "react";
|
|
4
4
|
import type { OAuthApp } from "@stigmer/protos/ai/stigmer/iam/oauthapp/v1/api_pb";
|
|
5
5
|
import { OAuthAppListPanel } from "../oauth-app/OAuthAppListPanel.js";
|
|
6
6
|
import { CreateOAuthAppForm } from "../oauth-app/CreateOAuthAppForm.js";
|
|
@@ -16,6 +16,7 @@ type FlowState =
|
|
|
16
16
|
|
|
17
17
|
/** Settings section for organization OAuth app credentials. */
|
|
18
18
|
export function OAuthAppsSection() {
|
|
19
|
+
const headingId = useId();
|
|
19
20
|
const org = useActiveOrgSlug();
|
|
20
21
|
const oauthAppsAvailable = useResourceAvailable(ApiResourceKind.oauth_app);
|
|
21
22
|
|
|
@@ -42,10 +43,10 @@ export function OAuthAppsSection() {
|
|
|
42
43
|
}, []);
|
|
43
44
|
|
|
44
45
|
return (
|
|
45
|
-
<section aria-labelledby=
|
|
46
|
+
<section aria-labelledby={headingId}>
|
|
46
47
|
<div className="stg:mb-3 stg:flex stg:items-center stg:justify-between">
|
|
47
48
|
<h2
|
|
48
|
-
id=
|
|
49
|
+
id={headingId}
|
|
49
50
|
className="stg:text-foreground stg:text-sm stg:font-semibold"
|
|
50
51
|
>
|
|
51
52
|
OAuth Apps
|