@stigmer/react 3.12.0 → 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/execution/useCreateAgentExecution.d.ts +3 -2
- package/execution/useCreateAgentExecution.d.ts.map +1 -1
- package/execution/useCreateAgentExecution.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/isUnimplemented.d.ts +17 -0
- package/internal/isUnimplemented.d.ts.map +1 -0
- package/internal/isUnimplemented.js +26 -0
- package/internal/isUnimplemented.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 +8 -4
- package/mcp-server/McpServerConnectDialog.js.map +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/useMcpServerCredentials.d.ts +38 -10
- package/mcp-server/useMcpServerCredentials.d.ts.map +1 -1
- package/mcp-server/useMcpServerCredentials.js +50 -7
- package/mcp-server/useMcpServerCredentials.js.map +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/mcp-server/useOrgOAuthApp.d.ts +22 -0
- package/mcp-server/useOrgOAuthApp.d.ts.map +1 -1
- package/mcp-server/useOrgOAuthApp.js +39 -7
- package/mcp-server/useOrgOAuthApp.js.map +1 -1
- 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 +11 -9
- 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/skill/useSkillVersions.d.ts.map +1 -1
- package/skill/useSkillVersions.js +1 -9
- package/skill/useSkillVersions.js.map +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/execution/useCreateAgentExecution.ts +3 -2
- 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/isUnimplemented.ts +26 -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 +30 -12
- 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__/VendorApprovalBlocked.surfaces.test.tsx +103 -5
- package/src/mcp-server/__tests__/byoaEditionDegradation.test.tsx +323 -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__/useMcpServerCredentials.test.tsx +306 -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/useMcpServerCredentials.ts +87 -19
- package/src/mcp-server/useMcpServerDefinitionDrift.ts +95 -0
- package/src/mcp-server/useOrgOAuthApp.ts +54 -8
- 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 +14 -10
- 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/skill/useSkillVersions.ts +1 -11
- 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 +39 -7
- package/src/workflow/WorkflowCanvasInner.tsx +14 -1
- package/src/workflow/WorkflowDiffGraph.tsx +7 -1
- package/src/workflow/WorkflowExecutionGraph.tsx +26 -1
- package/src/workflow/WorkflowExecutionViewer.tsx +115 -24
- package/src/workflow/WorkflowExplainDialog.tsx +8 -24
- package/src/workflow/WorkflowNode.tsx +5 -2
- 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 +31 -24
- 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__/WorkflowExecutionViewer.reconciliation.test.tsx +48 -1
- package/src/workflow/__tests__/WorkflowNode.test.tsx +93 -0
- package/src/workflow/__tests__/WorkflowRunDialog.test.tsx +127 -0
- package/src/workflow/__tests__/graph-history.test.ts +103 -0
- package/src/workflow/__tests__/overview-graph.test.ts +17 -0
- package/src/workflow/__tests__/panelNegotiation.test.tsx +230 -0
- package/src/workflow/__tests__/useCanvasKeyboardShortcuts.undo.test.ts +115 -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__/useWorkflowCanvas.undo.test.tsx +133 -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 +17 -8
- package/src/workflow/instance/WorkflowInstanceDetailPanel.tsx +2 -1
- package/src/workflow/instance/useDeleteWorkflowInstance.ts +9 -4
- package/src/workflow/layout/registry-dimensions.ts +2 -5
- package/src/workflow/node-shell/NodeShell.tsx +4 -0
- package/src/workflow/picker/BranchAddPopover.tsx +4 -3
- package/src/workflow/task-type-visual-registry.ts +5 -3
- package/src/workflow/templates/WorkflowTemplatePreview.tsx +1 -1
- package/src/workflow/useApprovalBoundary.ts +1 -1
- package/src/workflow/useCanvasKeyboardShortcuts.ts +33 -3
- package/src/workflow/useGraphHistory.ts +22 -41
- package/src/workflow/useWorkflowCanvas.ts +126 -21
- package/src/workflow/useWorkflowExecutionPanel.ts +95 -13
- package/src/workflow/useWorkflowSave.ts +2 -15
- package/src/workflow/workflow-graph-conversions.ts +25 -3
- 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 +31 -6
- 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/WorkflowExecutionGraph.d.ts.map +1 -1
- package/workflow/WorkflowExecutionGraph.js +27 -1
- package/workflow/WorkflowExecutionGraph.js.map +1 -1
- package/workflow/WorkflowExecutionViewer.d.ts +51 -0
- package/workflow/WorkflowExecutionViewer.d.ts.map +1 -1
- package/workflow/WorkflowExecutionViewer.js +49 -18
- 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/WorkflowNode.d.ts.map +1 -1
- package/workflow/WorkflowNode.js +2 -2
- package/workflow/WorkflowNode.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 +11 -1
- package/workflow/WorkflowRunDialog.d.ts.map +1 -1
- package/workflow/WorkflowRunDialog.js +18 -9
- 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.d.ts.map +1 -1
- package/workflow/instance/CreateWorkflowInstanceDialog.js +10 -2
- package/workflow/instance/CreateWorkflowInstanceDialog.js.map +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/instance/useDeleteWorkflowInstance.d.ts +9 -4
- package/workflow/instance/useDeleteWorkflowInstance.d.ts.map +1 -1
- package/workflow/instance/useDeleteWorkflowInstance.js +4 -2
- package/workflow/instance/useDeleteWorkflowInstance.js.map +1 -1
- package/workflow/layout/registry-dimensions.d.ts.map +1 -1
- package/workflow/layout/registry-dimensions.js +2 -5
- package/workflow/layout/registry-dimensions.js.map +1 -1
- package/workflow/node-shell/NodeShell.js +1 -1
- package/workflow/node-shell/NodeShell.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/task-type-visual-registry.d.ts.map +1 -1
- package/workflow/task-type-visual-registry.js +5 -3
- package/workflow/task-type-visual-registry.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/useCanvasKeyboardShortcuts.d.ts +15 -4
- package/workflow/useCanvasKeyboardShortcuts.d.ts.map +1 -1
- package/workflow/useCanvasKeyboardShortcuts.js +25 -4
- package/workflow/useCanvasKeyboardShortcuts.js.map +1 -1
- package/workflow/useGraphHistory.d.ts +16 -9
- package/workflow/useGraphHistory.d.ts.map +1 -1
- package/workflow/useGraphHistory.js +19 -33
- package/workflow/useGraphHistory.js.map +1 -1
- package/workflow/useWorkflowCanvas.d.ts +6 -4
- package/workflow/useWorkflowCanvas.d.ts.map +1 -1
- package/workflow/useWorkflowCanvas.js +115 -23
- 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
- package/workflow/useWorkflowSave.d.ts.map +1 -1
- package/workflow/useWorkflowSave.js +2 -15
- package/workflow/useWorkflowSave.js.map +1 -1
- package/workflow/workflow-graph-conversions.d.ts +19 -1
- package/workflow/workflow-graph-conversions.d.ts.map +1 -1
- package/workflow/workflow-graph-conversions.js +17 -3
- package/workflow/workflow-graph-conversions.js.map +1 -1
|
@@ -18,7 +18,8 @@ import { useSessionPanel } from "./useSessionPanel.js";
|
|
|
18
18
|
import { useSessionRailViews } from "./useSessionRailViews.js";
|
|
19
19
|
import { SessionPanelChip } from "./SessionPanelChip.js";
|
|
20
20
|
import type { RuntimeEnvProvider } from "./runtime-env.js";
|
|
21
|
-
import type { SessionAudience } from "./audience.js";
|
|
21
|
+
import type { SessionAudience, SessionPanelMode } from "./audience.js";
|
|
22
|
+
import type { SessionRunConfig } from "./run-config.js";
|
|
22
23
|
|
|
23
24
|
/** Props for {@link NewSessionViewer}. */
|
|
24
25
|
export interface NewSessionViewerProps {
|
|
@@ -98,6 +99,61 @@ export interface NewSessionViewerProps {
|
|
|
98
99
|
*/
|
|
99
100
|
readonly audience?: SessionAudience;
|
|
100
101
|
|
|
102
|
+
/**
|
|
103
|
+
* Owner-pinned model/tier for the session's first execution
|
|
104
|
+
* (stigmer/stigmer#664). Same contract as
|
|
105
|
+
* {@link SessionViewerProps.runConfig} (DD-016 parity): wins over the
|
|
106
|
+
* composer and the restored preference, hides the model picker, and
|
|
107
|
+
* is ignored for the `"guest"` audience. Pair with the same pin on
|
|
108
|
+
* the conversation's `SessionViewer` so follow-ups match. See
|
|
109
|
+
* {@link SessionRunConfig}.
|
|
110
|
+
*/
|
|
111
|
+
readonly runConfig?: SessionRunConfig;
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Whether the composer offers the model picker. Same contract as
|
|
115
|
+
* {@link SessionViewerProps.showModelSelector} (DD-016 parity):
|
|
116
|
+
* forced off by a {@link NewSessionViewerProps.runConfig} model pin
|
|
117
|
+
* and for the `"guest"` audience.
|
|
118
|
+
*
|
|
119
|
+
* @default true
|
|
120
|
+
*/
|
|
121
|
+
readonly showModelSelector?: boolean;
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Whether the launcher offers the session panel at all — `"none"` removes
|
|
125
|
+
* the panel and its toggle chip while keeping every composer capability
|
|
126
|
+
* the audience allows. Same contract as
|
|
127
|
+
* {@link SessionViewerProps.panel} (DD-016 parity); see
|
|
128
|
+
* {@link SessionPanelMode}.
|
|
129
|
+
*
|
|
130
|
+
* @default "auto"
|
|
131
|
+
*/
|
|
132
|
+
readonly panel?: SessionPanelMode;
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Initial open state of the session panel in uncontrolled mode. Ignored
|
|
136
|
+
* when {@link NewSessionViewerProps.panelOpen} is provided. Same contract
|
|
137
|
+
* as {@link SessionViewerProps.defaultPanelOpen} (DD-016 parity).
|
|
138
|
+
*
|
|
139
|
+
* @default false
|
|
140
|
+
*/
|
|
141
|
+
readonly defaultPanelOpen?: boolean;
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Controlled open state of the session panel. Same contract as
|
|
145
|
+
* {@link SessionViewerProps.panelOpen} (DD-016 parity).
|
|
146
|
+
*/
|
|
147
|
+
readonly panelOpen?: boolean;
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Called on every panel open/close transition, in both modes. Same
|
|
151
|
+
* contract as {@link SessionViewerProps.onPanelOpenChange} (DD-016
|
|
152
|
+
* parity); the launcher has no plan auto-open, so its transitions come
|
|
153
|
+
* from the chip toggle and file opens only.
|
|
154
|
+
*/
|
|
155
|
+
readonly onPanelOpenChange?: (open: boolean) => void;
|
|
156
|
+
|
|
101
157
|
/**
|
|
102
158
|
* Harness pre-selected for new sessions when the user has not made
|
|
103
159
|
* an explicit choice yet. The user can still switch before starting
|
|
@@ -190,6 +246,12 @@ export function NewSessionViewer({
|
|
|
190
246
|
workspaceContentSearcher,
|
|
191
247
|
getRuntimeEnv,
|
|
192
248
|
audience = "integrator",
|
|
249
|
+
runConfig,
|
|
250
|
+
showModelSelector = true,
|
|
251
|
+
panel: panelMode = "auto",
|
|
252
|
+
defaultPanelOpen,
|
|
253
|
+
panelOpen,
|
|
254
|
+
onPanelOpenChange,
|
|
193
255
|
defaultHarness,
|
|
194
256
|
initialAgentRef,
|
|
195
257
|
initialInstanceId,
|
|
@@ -208,12 +270,22 @@ export function NewSessionViewer({
|
|
|
208
270
|
getRuntimeEnv,
|
|
209
271
|
defaultHarness,
|
|
210
272
|
audience,
|
|
273
|
+
runConfig,
|
|
211
274
|
});
|
|
212
275
|
const [interactionMode, setInteractionMode] = useState<InteractionModeOption>("agent");
|
|
213
276
|
const isGuest = audience === "guest";
|
|
277
|
+
// A pinned model makes the picker a dead control (the pin wins over any
|
|
278
|
+
// choice it could offer), so the pin forces it hidden; the guest strip
|
|
279
|
+
// and the host's explicit opt-out compose with it (DD-016: same rule as
|
|
280
|
+
// SessionViewer).
|
|
281
|
+
const modelSelectorVisible =
|
|
282
|
+
showModelSelector && !isGuest && runConfig?.modelName === undefined;
|
|
214
283
|
// Both curated audiences (endUser, guest) lock the agent and hide the
|
|
215
284
|
// integrator pickers; guest adds its own restrictions below.
|
|
216
285
|
const isCurated = audience !== "integrator";
|
|
286
|
+
// Host opt-out or audience restriction — the same single flag
|
|
287
|
+
// SessionViewer derives (DD-016), gating the chip and the region together.
|
|
288
|
+
const panelEnabled = panelMode !== "none" && !isGuest;
|
|
217
289
|
|
|
218
290
|
// Guest agent binding is host configuration, not a picker interaction:
|
|
219
291
|
// the composer's agent machinery (picker, env-collection, personal
|
|
@@ -238,6 +310,11 @@ export function NewSessionViewer({
|
|
|
238
310
|
phase: null,
|
|
239
311
|
hasChanges: false,
|
|
240
312
|
defaultView: "configure",
|
|
313
|
+
// Same inertness contract as SessionViewer: a disabled panel is pinned
|
|
314
|
+
// controlled-closed and unobserved (DD-016).
|
|
315
|
+
open: panelEnabled ? panelOpen : false,
|
|
316
|
+
defaultOpen: defaultPanelOpen,
|
|
317
|
+
onOpenChange: panelEnabled ? onPanelOpenChange : undefined,
|
|
241
318
|
});
|
|
242
319
|
const { editors, activeKey, activeFile, reveal } = useWorkspaceEditors(
|
|
243
320
|
panel.editorsStore,
|
|
@@ -362,7 +439,7 @@ export function NewSessionViewer({
|
|
|
362
439
|
interactionMode={interactionMode}
|
|
363
440
|
onInteractionModeChange={setInteractionMode}
|
|
364
441
|
showInteractionModePicker={!isGuest}
|
|
365
|
-
showModelSelector={
|
|
442
|
+
showModelSelector={modelSelectorVisible}
|
|
366
443
|
enableAttachments={!isGuest}
|
|
367
444
|
defaultModelId={flow.modelId}
|
|
368
445
|
onModelChange={flow.setModelId}
|
|
@@ -396,11 +473,12 @@ export function NewSessionViewer({
|
|
|
396
473
|
// collapse control when the last context item is removed. Always-on is
|
|
397
474
|
// the predictable, discoverable shape; opening homes on the Config
|
|
398
475
|
// facet, which carries useful defaults (harness/model) pre-session.
|
|
399
|
-
//
|
|
400
|
-
// has no business with
|
|
401
|
-
//
|
|
476
|
+
// A panel-less viewer is the exception: guests (the panel exposes
|
|
477
|
+
// configuration a visitor has no business with) and hosts passing
|
|
478
|
+
// panel="none" get no chip — the panel's only toggle is simply
|
|
479
|
+
// absent and the panel can never open.
|
|
402
480
|
chip={
|
|
403
|
-
|
|
481
|
+
panelEnabled ? (
|
|
404
482
|
<SessionPanelChip
|
|
405
483
|
isOpen={panel.isOpen}
|
|
406
484
|
onToggle={panel.isOpen ? panel.closePanel : panel.openPanel}
|
|
@@ -409,7 +487,7 @@ export function NewSessionViewer({
|
|
|
409
487
|
}
|
|
410
488
|
conversation={composerNode}
|
|
411
489
|
panel={
|
|
412
|
-
panel.isOpen ? (
|
|
490
|
+
panel.isOpen && panelEnabled ? (
|
|
413
491
|
<WorkspaceSurface
|
|
414
492
|
entries={flow.workspace.entries}
|
|
415
493
|
lister={workspaceFileLister}
|
|
@@ -61,7 +61,8 @@ import {
|
|
|
61
61
|
import type { SetupTabProps } from "./facets/SetupTab.js";
|
|
62
62
|
import { ExecutionPhase } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
63
63
|
import type { RuntimeEnvProvider } from "./runtime-env.js";
|
|
64
|
-
import type { SessionAudience } from "./audience.js";
|
|
64
|
+
import type { SessionAudience, SessionPanelMode } from "./audience.js";
|
|
65
|
+
import type { SessionRunConfig } from "./run-config.js";
|
|
65
66
|
|
|
66
67
|
/**
|
|
67
68
|
* Where the approved plan mounts in the implement execution's workspace —
|
|
@@ -226,6 +227,66 @@ export interface SessionViewerProps {
|
|
|
226
227
|
* @default "integrator"
|
|
227
228
|
*/
|
|
228
229
|
readonly audience?: SessionAudience;
|
|
230
|
+
/**
|
|
231
|
+
* Owner-pinned model/tier for every execution sent from this viewer
|
|
232
|
+
* (stigmer/stigmer#664) — for product-embedded conversations where
|
|
233
|
+
* the platform, not the end user, decides what serves the session
|
|
234
|
+
* (pair with `audience="endUser"`). A pinned model wins over the
|
|
235
|
+
* composer, the persisted Console preference, and the last
|
|
236
|
+
* execution's model — follow-ups and retries included — and hides
|
|
237
|
+
* the model picker (a control that has no effect must not render).
|
|
238
|
+
* Ignored for the `"guest"` audience, whose execution config the
|
|
239
|
+
* server-side share policy owns. See {@link SessionRunConfig}.
|
|
240
|
+
*/
|
|
241
|
+
readonly runConfig?: SessionRunConfig;
|
|
242
|
+
/**
|
|
243
|
+
* Whether the follow-up composer offers the model picker. `false`
|
|
244
|
+
* hides the picker while keeping the SDK's model sourcing (persisted
|
|
245
|
+
* preference, then the last execution's model) — for hosts whose
|
|
246
|
+
* surrounding surface owns model choice without pinning it. Forced
|
|
247
|
+
* off by a {@link SessionViewerProps.runConfig} model pin and for the
|
|
248
|
+
* `"guest"` audience.
|
|
249
|
+
*
|
|
250
|
+
* @default true
|
|
251
|
+
*/
|
|
252
|
+
readonly showModelSelector?: boolean;
|
|
253
|
+
/**
|
|
254
|
+
* Whether the viewer offers the session panel at all. `"none"` removes the
|
|
255
|
+
* panel AND its toggle chip, suppresses plan-mode auto-open, and lets
|
|
256
|
+
* transcript file paths keep their default copy behavior — for hosts whose
|
|
257
|
+
* surrounding surface already renders the workspace — while keeping every
|
|
258
|
+
* composer capability the audience allows. This is the panel half of what
|
|
259
|
+
* `audience="guest"` does, WITHOUT guest's composer strip-down; guest
|
|
260
|
+
* still forces it regardless of this prop. A union (not a boolean) so a
|
|
261
|
+
* future mode (e.g. a host-rendered panel) extends rather than breaks it.
|
|
262
|
+
*
|
|
263
|
+
* @default "auto"
|
|
264
|
+
*/
|
|
265
|
+
readonly panel?: SessionPanelMode;
|
|
266
|
+
/**
|
|
267
|
+
* Initial open state of the session panel in uncontrolled mode — a docking
|
|
268
|
+
* host that wants the workspace visible from the first paint passes `true`.
|
|
269
|
+
* Ignored when {@link SessionViewerProps.panelOpen} is provided.
|
|
270
|
+
*
|
|
271
|
+
* @default false
|
|
272
|
+
*/
|
|
273
|
+
readonly defaultPanelOpen?: boolean;
|
|
274
|
+
/**
|
|
275
|
+
* Controlled open state of the session panel. When provided, the host owns
|
|
276
|
+
* the panel: the chip toggle, file/plan/artifact opens, and plan-mode
|
|
277
|
+
* auto-open surface through {@link SessionViewerProps.onPanelOpenChange}
|
|
278
|
+
* instead of flipping state, and the panel follows this value. Leave
|
|
279
|
+
* `undefined` for the self-managing default.
|
|
280
|
+
*/
|
|
281
|
+
readonly panelOpen?: boolean;
|
|
282
|
+
/**
|
|
283
|
+
* Called on every panel open/close transition, in BOTH modes — pass it
|
|
284
|
+
* alone (uncontrolled) to simply observe the panel, e.g. widening a docked
|
|
285
|
+
* pane when a streaming plan auto-opens it and reclaiming the room on
|
|
286
|
+
* close. See {@link UseSessionPanelOptions.onOpenChange} for the exact
|
|
287
|
+
* request-vs-transition semantics in each mode.
|
|
288
|
+
*/
|
|
289
|
+
readonly onPanelOpenChange?: (open: boolean) => void;
|
|
229
290
|
/**
|
|
230
291
|
* Slot for host-injected header actions. Rendered in the top-right corner
|
|
231
292
|
* of the viewer, beside the panel chip. Keeps the SDK organism
|
|
@@ -306,15 +367,32 @@ export function SessionViewer({
|
|
|
306
367
|
workspaceContentSearcher,
|
|
307
368
|
getRuntimeEnv,
|
|
308
369
|
audience = "integrator",
|
|
370
|
+
runConfig,
|
|
371
|
+
showModelSelector = true,
|
|
372
|
+
panel: panelMode = "auto",
|
|
373
|
+
defaultPanelOpen,
|
|
374
|
+
panelOpen,
|
|
375
|
+
onPanelOpenChange,
|
|
309
376
|
headerActions,
|
|
310
377
|
accessSlot,
|
|
311
378
|
onApplied,
|
|
312
379
|
threadSlots,
|
|
313
380
|
className,
|
|
314
381
|
}: SessionViewerProps) {
|
|
315
|
-
const flow = useSessionPageFlow({
|
|
382
|
+
const flow = useSessionPageFlow({
|
|
383
|
+
sessionId,
|
|
384
|
+
org,
|
|
385
|
+
getRuntimeEnv,
|
|
386
|
+
audience,
|
|
387
|
+
runConfig,
|
|
388
|
+
});
|
|
316
389
|
const { conv } = flow;
|
|
317
390
|
const isGuest = audience === "guest";
|
|
391
|
+
// A pinned model makes the picker a dead control (the pin wins over any
|
|
392
|
+
// choice it could offer), so the pin forces it hidden; the guest strip
|
|
393
|
+
// and the host's explicit opt-out compose with it.
|
|
394
|
+
const modelSelectorVisible =
|
|
395
|
+
showModelSelector && !isGuest && runConfig?.modelName === undefined;
|
|
318
396
|
// Channel-originated sessions (Slack/WhatsApp conversations owned by the
|
|
319
397
|
// channel runtime) are read-only for every console caller — the server
|
|
320
398
|
// grants channel viewers can_view without can_create_execution_in — so the
|
|
@@ -326,6 +404,12 @@ export function SessionViewer({
|
|
|
326
404
|
// Curated audiences (endUser, guest, observer) lock the agent and hide the
|
|
327
405
|
// integrator configuration; guest and observer add their own restrictions.
|
|
328
406
|
const isCurated = audience !== "integrator" || isObserver;
|
|
407
|
+
// The one flag every panel affordance keys on: the host opted out
|
|
408
|
+
// (`panel="none"`) or the audience forbids it (guests have no business
|
|
409
|
+
// with session configuration). Everything the panel touches — the chip,
|
|
410
|
+
// the region, plan auto-open, transcript path clicks — gates on this, so
|
|
411
|
+
// the four affordances can never drift apart.
|
|
412
|
+
const panelEnabled = panelMode !== "none" && !isGuest;
|
|
329
413
|
|
|
330
414
|
const [modelId, setModelId] = flow.model;
|
|
331
415
|
const [interactionMode, setInteractionMode] = flow.interactionMode;
|
|
@@ -405,9 +489,16 @@ export function SessionViewer({
|
|
|
405
489
|
const panel = useSessionPanel({
|
|
406
490
|
phase: hasPhase ? phase : null,
|
|
407
491
|
hasChanges: hasWriteBacks,
|
|
408
|
-
// A streaming plan auto-opens the panel via its key — but
|
|
409
|
-
//
|
|
410
|
-
|
|
492
|
+
// A streaming plan auto-opens the panel via its key — but a viewer
|
|
493
|
+
// without a panel (guest, or panel="none") suppresses the trigger
|
|
494
|
+
// along with the chip.
|
|
495
|
+
planKey: panelEnabled ? panelPlanKey : null,
|
|
496
|
+
// With the panel disabled the controller is pinned controlled-closed
|
|
497
|
+
// and unobserved — airtight inertness, not just hidden UI: no intent
|
|
498
|
+
// can flip state or reach the host's callback.
|
|
499
|
+
open: panelEnabled ? panelOpen : false,
|
|
500
|
+
defaultOpen: defaultPanelOpen,
|
|
501
|
+
onOpenChange: panelEnabled ? onPanelOpenChange : undefined,
|
|
411
502
|
});
|
|
412
503
|
|
|
413
504
|
const handleBuildFromPlan = useCallback(() => {
|
|
@@ -520,10 +611,10 @@ export function SessionViewer({
|
|
|
520
611
|
// (which subscribes), never this streaming column.
|
|
521
612
|
const handleTranscriptFilePathClick = useCallback(
|
|
522
613
|
(path: string): boolean => {
|
|
523
|
-
//
|
|
524
|
-
// default copy behavior instead of opening a surface that
|
|
525
|
-
// render.
|
|
526
|
-
if (
|
|
614
|
+
// No panel (guest, or panel="none") means no file viewer, so paths
|
|
615
|
+
// keep their default copy behavior instead of opening a surface that
|
|
616
|
+
// cannot render.
|
|
617
|
+
if (!panelEnabled) return false;
|
|
527
618
|
const selection = resolveWorkspaceFileSelection(
|
|
528
619
|
path,
|
|
529
620
|
flow.workspace.entries,
|
|
@@ -533,7 +624,7 @@ export function SessionViewer({
|
|
|
533
624
|
panel.openFile(selection.entryId, selection.path);
|
|
534
625
|
return true;
|
|
535
626
|
},
|
|
536
|
-
[
|
|
627
|
+
[panelEnabled, flow.workspace.entries, flow.sandboxWorkspaceRoot, panel.openFile],
|
|
537
628
|
);
|
|
538
629
|
|
|
539
630
|
if (conv.isLoading) {
|
|
@@ -558,12 +649,12 @@ export function SessionViewer({
|
|
|
558
649
|
// Top-right controls: host actions + the panel chip. The chip is the
|
|
559
650
|
// panel's always-mounted toggle; while collapsed it carries only the
|
|
560
651
|
// pending-item count. Execution status is never surfaced as header
|
|
561
|
-
// chrome — the thread itself communicates run state.
|
|
562
|
-
//
|
|
563
|
-
//
|
|
652
|
+
// chrome — the thread itself communicates run state. A viewer without
|
|
653
|
+
// a panel (guests — session configuration is not a visitor's business
|
|
654
|
+
// — or a host's panel="none") has no toggle: it is simply absent.
|
|
564
655
|
headerActions={headerActions}
|
|
565
656
|
chip={
|
|
566
|
-
|
|
657
|
+
panelEnabled ? (
|
|
567
658
|
<SessionPanelChip
|
|
568
659
|
isOpen={panel.isOpen}
|
|
569
660
|
onToggle={panel.isOpen ? panel.closePanel : panel.openPanel}
|
|
@@ -594,11 +685,12 @@ export function SessionViewer({
|
|
|
594
685
|
isCurated={isCurated}
|
|
595
686
|
isGuest={isGuest}
|
|
596
687
|
isObserver={isObserver}
|
|
688
|
+
modelSelectorVisible={modelSelectorVisible}
|
|
597
689
|
threadSlots={threadSlots}
|
|
598
690
|
/>
|
|
599
691
|
}
|
|
600
692
|
panel={
|
|
601
|
-
panel.isOpen &&
|
|
693
|
+
panel.isOpen && panelEnabled ? (
|
|
602
694
|
<SessionPanelRegion
|
|
603
695
|
flow={flow}
|
|
604
696
|
org={org}
|
|
@@ -675,6 +767,13 @@ interface ConversationColumnProps {
|
|
|
675
767
|
* stream indicators stay (watching an in-flight turn is the point).
|
|
676
768
|
*/
|
|
677
769
|
readonly isObserver: boolean;
|
|
770
|
+
/**
|
|
771
|
+
* Whether the composer offers the model picker — the composed result
|
|
772
|
+
* of the host's `showModelSelector`, the guest strip, and a
|
|
773
|
+
* `runConfig` model pin (a pinned model makes the picker a dead
|
|
774
|
+
* control, so the pin forces it hidden).
|
|
775
|
+
*/
|
|
776
|
+
readonly modelSelectorVisible: boolean;
|
|
678
777
|
readonly threadSlots?: MessageThreadSlots;
|
|
679
778
|
}
|
|
680
779
|
|
|
@@ -699,6 +798,7 @@ const ConversationColumn = memo(function ConversationColumn({
|
|
|
699
798
|
isCurated,
|
|
700
799
|
isGuest,
|
|
701
800
|
isObserver,
|
|
801
|
+
modelSelectorVisible,
|
|
702
802
|
threadSlots,
|
|
703
803
|
}: ConversationColumnProps) {
|
|
704
804
|
const { conv } = flow;
|
|
@@ -891,7 +991,7 @@ const ConversationColumn = memo(function ConversationColumn({
|
|
|
891
991
|
interactionMode={interactionMode}
|
|
892
992
|
onInteractionModeChange={setInteractionMode}
|
|
893
993
|
showInteractionModePicker={!isGuest}
|
|
894
|
-
showModelSelector={
|
|
994
|
+
showModelSelector={modelSelectorVisible}
|
|
895
995
|
enableAttachments={!isGuest}
|
|
896
996
|
workspace={isGuest ? undefined : flow.workspace}
|
|
897
997
|
gitHubConnection={isGuest ? undefined : gitHubConnection}
|
|
@@ -1290,7 +1390,10 @@ function SessionStarting() {
|
|
|
1290
1390
|
* Low-weight, always-visible indicator shown while the session-scoped
|
|
1291
1391
|
* auto-approve preference is active. The "Turn off" control reverts the
|
|
1292
1392
|
* preference in one click — the safety affordance for "Approve & don't ask
|
|
1293
|
-
* again".
|
|
1393
|
+
* again". Visible from the first render when the host pre-armed the
|
|
1394
|
+
* preference via `StigmerProvider`'s `approvalDefaults` (#302); otherwise
|
|
1395
|
+
* nothing about approvals appears until the user opts in at a gate. Either
|
|
1396
|
+
* way the user keeps the last word.
|
|
1294
1397
|
*/
|
|
1295
1398
|
function AutoApproveIndicator({ onTurnOff }: { onTurnOff: () => void }) {
|
|
1296
1399
|
return (
|
|
@@ -441,3 +441,79 @@ describe("SessionViewer — audience wiring", () => {
|
|
|
441
441
|
expect(alert.textContent).toContain("token mint failed");
|
|
442
442
|
});
|
|
443
443
|
});
|
|
444
|
+
|
|
445
|
+
describe("owner-pinned runConfig wiring (#664)", () => {
|
|
446
|
+
const PIN = { modelName: "pinned-model", serviceTier: "fast" } as const;
|
|
447
|
+
|
|
448
|
+
it("SessionViewer forwards runConfig to the flow and hides the model picker (no dead controls)", () => {
|
|
449
|
+
render(
|
|
450
|
+
<SessionViewer sessionId="ses_1" org="acme" audience="endUser" runConfig={PIN} />,
|
|
451
|
+
);
|
|
452
|
+
|
|
453
|
+
expect(mockUseSessionPageFlow).toHaveBeenCalledWith(
|
|
454
|
+
expect.objectContaining({ runConfig: PIN }),
|
|
455
|
+
);
|
|
456
|
+
expect(lastComposerProps().showModelSelector).toBe(false);
|
|
457
|
+
});
|
|
458
|
+
|
|
459
|
+
it("SessionViewer keeps the picker for endUser without a pin (the #167 curation contract)", () => {
|
|
460
|
+
render(<SessionViewer sessionId="ses_1" org="acme" audience="endUser" />);
|
|
461
|
+
|
|
462
|
+
expect(lastComposerProps().showModelSelector).toBe(true);
|
|
463
|
+
});
|
|
464
|
+
|
|
465
|
+
it("SessionViewer honors showModelSelector={false} alone — hidden picker, no pin", () => {
|
|
466
|
+
render(
|
|
467
|
+
<SessionViewer sessionId="ses_1" org="acme" showModelSelector={false} />,
|
|
468
|
+
);
|
|
469
|
+
|
|
470
|
+
expect(mockUseSessionPageFlow).toHaveBeenCalledWith(
|
|
471
|
+
expect.objectContaining({ runConfig: undefined }),
|
|
472
|
+
);
|
|
473
|
+
expect(lastComposerProps().showModelSelector).toBe(false);
|
|
474
|
+
});
|
|
475
|
+
|
|
476
|
+
it("SessionViewer: a tier-only pin (no model) keeps the picker — nothing pins the model", () => {
|
|
477
|
+
// The flow hook itself rejects this shape at render (fail-fast, covered
|
|
478
|
+
// by its own suite); the wiring contract here is only that picker
|
|
479
|
+
// visibility keys on the MODEL pin, never on the tier.
|
|
480
|
+
render(
|
|
481
|
+
<SessionViewer
|
|
482
|
+
sessionId="ses_1"
|
|
483
|
+
org="acme"
|
|
484
|
+
runConfig={{ serviceTier: "standard" }}
|
|
485
|
+
/>,
|
|
486
|
+
);
|
|
487
|
+
|
|
488
|
+
expect(lastComposerProps().showModelSelector).toBe(true);
|
|
489
|
+
});
|
|
490
|
+
|
|
491
|
+
it("NewSessionViewer forwards runConfig to the flow and hides the model picker (DD-016 parity)", () => {
|
|
492
|
+
render(
|
|
493
|
+
<NewSessionViewer
|
|
494
|
+
org="acme"
|
|
495
|
+
onSessionCreated={vi.fn()}
|
|
496
|
+
audience="endUser"
|
|
497
|
+
initialAgentRef={AGENT_REF}
|
|
498
|
+
runConfig={PIN}
|
|
499
|
+
/>,
|
|
500
|
+
);
|
|
501
|
+
|
|
502
|
+
expect(mockUseNewSessionFlow).toHaveBeenCalledWith(
|
|
503
|
+
expect.objectContaining({ runConfig: PIN }),
|
|
504
|
+
);
|
|
505
|
+
expect(lastComposerProps().showModelSelector).toBe(false);
|
|
506
|
+
});
|
|
507
|
+
|
|
508
|
+
it("NewSessionViewer honors showModelSelector={false} alone (DD-016 parity)", () => {
|
|
509
|
+
render(
|
|
510
|
+
<NewSessionViewer
|
|
511
|
+
org="acme"
|
|
512
|
+
onSessionCreated={vi.fn()}
|
|
513
|
+
showModelSelector={false}
|
|
514
|
+
/>,
|
|
515
|
+
);
|
|
516
|
+
|
|
517
|
+
expect(lastComposerProps().showModelSelector).toBe(false);
|
|
518
|
+
});
|
|
519
|
+
});
|