@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
package/src/provider.tsx
CHANGED
|
@@ -14,6 +14,8 @@ import type { ThemePresetId } from "@stigmer/theme";
|
|
|
14
14
|
import { StigmerContext } from "./context.js";
|
|
15
15
|
import { DeploymentModeContext } from "./deployment-mode.js";
|
|
16
16
|
import { ExecutionTargetContext } from "./execution-target-context.js";
|
|
17
|
+
import { ApprovalDefaultsContext } from "./approval-defaults-context.js";
|
|
18
|
+
import type { ApprovalDefaults } from "./approval-defaults-context.js";
|
|
17
19
|
import type { ExecutionTargetOption } from "./session/execution-target.js";
|
|
18
20
|
import type { RunnerAdapter } from "./runner-adapter.js";
|
|
19
21
|
import { RunnerAdapterContext } from "./runner-adapter.js";
|
|
@@ -22,7 +24,7 @@ import { ColorModeContext, useSystemColorMode } from "./color-mode.js";
|
|
|
22
24
|
import { PortalContainerContext } from "./portal-container.js";
|
|
23
25
|
import { ModelRegistryContext } from "./models/ModelRegistryContext.js";
|
|
24
26
|
import type { ModelRegistryState } from "./models/ModelRegistryContext.js";
|
|
25
|
-
import {
|
|
27
|
+
import { fetchModelRegistryDocument } from "./models/registry.js";
|
|
26
28
|
import { TaskKindRegistryContext } from "./workflow/TaskKindRegistryContext.js";
|
|
27
29
|
import type { TaskKindRegistryState } from "./workflow/TaskKindRegistryContext.js";
|
|
28
30
|
import type { TaskKindDescriptor } from "./workflow/types.js";
|
|
@@ -84,6 +86,38 @@ export interface StigmerProviderProps {
|
|
|
84
86
|
* ```
|
|
85
87
|
*/
|
|
86
88
|
readonly runnerAdapter?: RunnerAdapter;
|
|
89
|
+
/**
|
|
90
|
+
* Approval defaults for all interactive sessions in this provider scope.
|
|
91
|
+
*
|
|
92
|
+
* This is an app-level trust judgment, not a per-session choice (the
|
|
93
|
+
* `executionTarget` precedent): a host embedding sessions over a surface
|
|
94
|
+
* it has already judged trusted — e.g. a desktop app operating on the
|
|
95
|
+
* user's own local folder — can arm `autoApproveAll` so users are not
|
|
96
|
+
* re-asked at every fresh conversation's first mutating tool call. The
|
|
97
|
+
* user keeps the last word: the "Auto-approving tool calls" notice shows
|
|
98
|
+
* from the first render with its "Turn off" affordance.
|
|
99
|
+
*
|
|
100
|
+
* Consumed by the interactive-session surface only (`useNewSessionFlow`,
|
|
101
|
+
* `useSessionPageFlow` and the organisms composing them). Specialized
|
|
102
|
+
* flows (workflow architect/explain/diagnose) and headless creation are
|
|
103
|
+
* deliberately unaffected — those callers pass `autoApproveAll`
|
|
104
|
+
* explicitly when they mean it.
|
|
105
|
+
*
|
|
106
|
+
* Omit on shared or sensitive surfaces — everything stays fail-closed
|
|
107
|
+
* exactly as today. Pass a referentially stable object (module constant
|
|
108
|
+
* or `useMemo`).
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* ```tsx
|
|
112
|
+
* // A desktop host whose sessions operate on the user's own machine
|
|
113
|
+
* const APPROVAL_DEFAULTS = { autoApproveAll: true };
|
|
114
|
+
*
|
|
115
|
+
* <StigmerProvider client={client} approvalDefaults={APPROVAL_DEFAULTS}>
|
|
116
|
+
* <App />
|
|
117
|
+
* </StigmerProvider>
|
|
118
|
+
* ```
|
|
119
|
+
*/
|
|
120
|
+
readonly approvalDefaults?: ApprovalDefaults;
|
|
87
121
|
/**
|
|
88
122
|
* Built-in theme preset to apply.
|
|
89
123
|
*
|
|
@@ -238,6 +272,7 @@ export function StigmerProvider({
|
|
|
238
272
|
deploymentMode = "cloud",
|
|
239
273
|
executionTarget,
|
|
240
274
|
runnerAdapter,
|
|
275
|
+
approvalDefaults,
|
|
241
276
|
preset,
|
|
242
277
|
className,
|
|
243
278
|
colorMode = "light",
|
|
@@ -258,34 +293,36 @@ export function StigmerProvider({
|
|
|
258
293
|
<StigmerContext.Provider value={client}>
|
|
259
294
|
<DeploymentModeContext.Provider value={deploymentMode}>
|
|
260
295
|
<ExecutionTargetContext.Provider value={executionTarget}>
|
|
261
|
-
<
|
|
262
|
-
<
|
|
263
|
-
<
|
|
264
|
-
<
|
|
265
|
-
<
|
|
266
|
-
<
|
|
267
|
-
{
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
296
|
+
<ApprovalDefaultsContext.Provider value={approvalDefaults}>
|
|
297
|
+
<RunnerAdapterContext.Provider value={runnerAdapter ?? null}>
|
|
298
|
+
<ColorModeContext.Provider value={resolvedMode}>
|
|
299
|
+
<ModelRegistryContext.Provider value={registryState}>
|
|
300
|
+
<TaskKindRegistryContext.Provider value={taskKindRegistryState}>
|
|
301
|
+
<ReviewRendererContext.Provider value={reviewRenderers ?? EMPTY_REVIEW_RENDERERS}>
|
|
302
|
+
<PortalContainerContext.Provider value={portalContainer}>
|
|
303
|
+
{/*
|
|
304
|
+
The in-tree scoping container. `data-stgm-root` is a
|
|
305
|
+
stable public selector — the documented seam for hosts
|
|
306
|
+
to style THIS element only (e.g. the fixed-height
|
|
307
|
+
embedding recipe, #260). It must never be mirrored
|
|
308
|
+
onto the portal container, whose own `data-stgm-portal`
|
|
309
|
+
marker keeps host in-tree-only CSS away from the
|
|
310
|
+
off-tree element.
|
|
311
|
+
*/}
|
|
312
|
+
<div
|
|
313
|
+
className={scope.className}
|
|
314
|
+
data-stgm-root=""
|
|
315
|
+
data-stgm-color-mode={scope.colorMode}
|
|
316
|
+
>
|
|
317
|
+
{children}
|
|
318
|
+
</div>
|
|
319
|
+
</PortalContainerContext.Provider>
|
|
320
|
+
</ReviewRendererContext.Provider>
|
|
321
|
+
</TaskKindRegistryContext.Provider>
|
|
322
|
+
</ModelRegistryContext.Provider>
|
|
323
|
+
</ColorModeContext.Provider>
|
|
324
|
+
</RunnerAdapterContext.Provider>
|
|
325
|
+
</ApprovalDefaultsContext.Provider>
|
|
289
326
|
</ExecutionTargetContext.Provider>
|
|
290
327
|
</DeploymentModeContext.Provider>
|
|
291
328
|
</StigmerContext.Provider>
|
|
@@ -310,6 +347,7 @@ function useModelRegistryFetch(client: Stigmer): ModelRegistryState {
|
|
|
310
347
|
const [version, setVersion] = useState(0);
|
|
311
348
|
const [state, setState] = useState<Omit<ModelRegistryState, "refetch">>({
|
|
312
349
|
models: [],
|
|
350
|
+
visionLimits: undefined,
|
|
313
351
|
isLoading: true,
|
|
314
352
|
error: null,
|
|
315
353
|
});
|
|
@@ -333,7 +371,7 @@ function useModelRegistryFetch(client: Stigmer): ModelRegistryState {
|
|
|
333
371
|
}
|
|
334
372
|
}
|
|
335
373
|
|
|
336
|
-
return
|
|
374
|
+
return fetchModelRegistryDocument(c.baseUrl, token, c.fetch);
|
|
337
375
|
}, []);
|
|
338
376
|
|
|
339
377
|
useEffect(() => {
|
|
@@ -348,9 +386,14 @@ function useModelRegistryFetch(client: Stigmer): ModelRegistryState {
|
|
|
348
386
|
setState((prev) => (prev.isLoading ? prev : { ...prev, isLoading: true }));
|
|
349
387
|
|
|
350
388
|
try {
|
|
351
|
-
const
|
|
352
|
-
if (!signal.aborted &&
|
|
353
|
-
setState({
|
|
389
|
+
const document = await doFetch(signal);
|
|
390
|
+
if (!signal.aborted && document) {
|
|
391
|
+
setState({
|
|
392
|
+
models: document.models,
|
|
393
|
+
visionLimits: document.visionLimits,
|
|
394
|
+
isLoading: false,
|
|
395
|
+
error: null,
|
|
396
|
+
});
|
|
354
397
|
fetchAttemptRef.current = 0;
|
|
355
398
|
}
|
|
356
399
|
} catch (err: unknown) {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
3
|
import { cn } from "@stigmer/theme";
|
|
4
|
+
import { SpinnerIcon } from "../internal/SpinnerIcon.js";
|
|
4
5
|
|
|
5
6
|
/** Props for {@link WizardNav}. */
|
|
6
7
|
export interface WizardNavProps {
|
|
@@ -98,7 +99,7 @@ export function WizardNav({
|
|
|
98
99
|
"stg:disabled:pointer-events-none stg:disabled:opacity-40",
|
|
99
100
|
)}
|
|
100
101
|
>
|
|
101
|
-
{isSubmitting && <SpinnerIcon />}
|
|
102
|
+
{isSubmitting && <SpinnerIcon size={14} />}
|
|
102
103
|
{nextLabel}
|
|
103
104
|
{!isSubmitting && <ArrowRightIcon className="stg:size-3.5" />}
|
|
104
105
|
</button>
|
|
@@ -145,20 +146,3 @@ function ArrowRightIcon({ className }: { readonly className?: string }) {
|
|
|
145
146
|
);
|
|
146
147
|
}
|
|
147
148
|
|
|
148
|
-
function SpinnerIcon() {
|
|
149
|
-
return (
|
|
150
|
-
<svg
|
|
151
|
-
width="14"
|
|
152
|
-
height="14"
|
|
153
|
-
viewBox="0 0 16 16"
|
|
154
|
-
fill="none"
|
|
155
|
-
stroke="currentColor"
|
|
156
|
-
strokeWidth="2"
|
|
157
|
-
strokeLinecap="round"
|
|
158
|
-
className="stg:animate-spin"
|
|
159
|
-
aria-hidden="true"
|
|
160
|
-
>
|
|
161
|
-
<path d="M8 2a6 6 0 1 0 6 6" />
|
|
162
|
-
</svg>
|
|
163
|
-
);
|
|
164
|
-
}
|
|
@@ -81,7 +81,7 @@ export function ConfirmDialog({
|
|
|
81
81
|
onCancel={handleDialogCancel}
|
|
82
82
|
className={cn(
|
|
83
83
|
"stg:fixed stg:inset-0 stg:z-50 stg:m-auto stg:w-full stg:max-w-sm stg:rounded-lg stg:border stg:border-border stg:bg-popover stg:p-0 stg:text-popover-foreground stg:shadow-lg",
|
|
84
|
-
"stg:backdrop:bg-
|
|
84
|
+
"stg:backdrop:bg-backdrop",
|
|
85
85
|
"stg:open:animate-in stg:open:fade-in-0 stg:open:zoom-in-95",
|
|
86
86
|
)}
|
|
87
87
|
>
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { useCallback, useMemo } from "react";
|
|
4
4
|
import { toast } from "../feedback/toast.js";
|
|
5
|
+
import { useCopyFeedback } from "../internal/useCopyFeedback.js";
|
|
5
6
|
|
|
6
7
|
export interface UseCopyResourceReturn {
|
|
7
8
|
/** Copy arbitrary text to the clipboard with toast feedback. */
|
|
@@ -17,9 +18,10 @@ export interface UseCopyResourceReturn {
|
|
|
17
18
|
/**
|
|
18
19
|
* Clipboard helper for resource detail pages.
|
|
19
20
|
*
|
|
20
|
-
* Wraps `
|
|
21
|
-
* copy action is confirmed visually (Nielsen heuristic #1 — visibility
|
|
22
|
-
* of system status).
|
|
21
|
+
* Wraps the shared copy behavior (`useCopyFeedback`) with toast feedback so
|
|
22
|
+
* every copy action is confirmed visually (Nielsen heuristic #1 — visibility
|
|
23
|
+
* of system status). A rejected write (insecure context, denied permission)
|
|
24
|
+
* toasts an error instead of claiming a copy that didn't happen.
|
|
23
25
|
*
|
|
24
26
|
* @example
|
|
25
27
|
* ```tsx
|
|
@@ -31,15 +33,18 @@ export interface UseCopyResourceReturn {
|
|
|
31
33
|
* ```
|
|
32
34
|
*/
|
|
33
35
|
export function useCopyResource(): UseCopyResourceReturn {
|
|
34
|
-
const copy =
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
36
|
+
const { copy: copyText } = useCopyFeedback();
|
|
37
|
+
|
|
38
|
+
const copy = useCallback(
|
|
39
|
+
async (text: string, label: string) => {
|
|
40
|
+
if (await copyText(text)) {
|
|
41
|
+
toast.success(`${label} copied`);
|
|
42
|
+
} else {
|
|
43
|
+
toast.error(`Couldn't copy ${label}`);
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
[copyText],
|
|
47
|
+
);
|
|
43
48
|
|
|
44
49
|
const copyId = useCallback(
|
|
45
50
|
(id: string) => copy(id, "ID"),
|
|
@@ -61,14 +66,3 @@ export function useCopyResource(): UseCopyResourceReturn {
|
|
|
61
66
|
[copy, copyId, copySlug, copyQualifiedSlug],
|
|
62
67
|
);
|
|
63
68
|
}
|
|
64
|
-
|
|
65
|
-
function fallbackCopy(text: string): void {
|
|
66
|
-
const textarea = document.createElement("textarea");
|
|
67
|
-
textarea.value = text;
|
|
68
|
-
textarea.style.position = "fixed";
|
|
69
|
-
textarea.style.opacity = "0";
|
|
70
|
-
document.body.appendChild(textarea);
|
|
71
|
-
textarea.select();
|
|
72
|
-
document.execCommand("copy");
|
|
73
|
-
document.body.removeChild(textarea);
|
|
74
|
-
}
|
|
@@ -71,6 +71,7 @@ import { useResumeSchedule } from "./useResumeSchedule.js";
|
|
|
71
71
|
import { useSetScheduleEnabled } from "./useSetScheduleEnabled.js";
|
|
72
72
|
import { useTriggerSchedule } from "./useTriggerSchedule.js";
|
|
73
73
|
import { useUpdateScheduleSpec } from "./useUpdateScheduleSpec.js";
|
|
74
|
+
import { SpinnerIcon } from "../internal/SpinnerIcon.js";
|
|
74
75
|
|
|
75
76
|
/** Props for {@link ScheduleDetailView}. */
|
|
76
77
|
export interface ScheduleDetailViewProps {
|
|
@@ -1311,7 +1312,7 @@ function InlineEditActions({
|
|
|
1311
1312
|
"stg:focus-visible:outline-none stg:focus-visible:ring-2 stg:focus-visible:ring-ring",
|
|
1312
1313
|
)}
|
|
1313
1314
|
>
|
|
1314
|
-
{isSaving && <SpinnerIcon />}
|
|
1315
|
+
{isSaving && <SpinnerIcon size={14} />}
|
|
1315
1316
|
Save
|
|
1316
1317
|
</button>
|
|
1317
1318
|
</div>
|
|
@@ -1632,20 +1633,3 @@ function PencilIcon({ className }: { readonly className?: string }) {
|
|
|
1632
1633
|
);
|
|
1633
1634
|
}
|
|
1634
1635
|
|
|
1635
|
-
function SpinnerIcon() {
|
|
1636
|
-
return (
|
|
1637
|
-
<svg
|
|
1638
|
-
width="14"
|
|
1639
|
-
height="14"
|
|
1640
|
-
viewBox="0 0 16 16"
|
|
1641
|
-
fill="none"
|
|
1642
|
-
stroke="currentColor"
|
|
1643
|
-
strokeWidth="2"
|
|
1644
|
-
strokeLinecap="round"
|
|
1645
|
-
className="stg:animate-spin"
|
|
1646
|
-
aria-hidden="true"
|
|
1647
|
-
>
|
|
1648
|
-
<path d="M8 2a6 6 0 1 0 6 6" />
|
|
1649
|
-
</svg>
|
|
1650
|
-
);
|
|
1651
|
-
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import { useCallback,
|
|
3
|
+
import { type FormEvent, useCallback, useId, useState } from "react";
|
|
4
4
|
import { cn } from "@stigmer/theme";
|
|
5
5
|
import {
|
|
6
6
|
getUserMessage,
|
|
@@ -24,6 +24,7 @@ import { CadenceField } from "./CadenceField.js";
|
|
|
24
24
|
import { TimeZoneField, browserTimeZone } from "./TimeZoneField.js";
|
|
25
25
|
import { useCreateSchedule } from "./useCreateSchedule.js";
|
|
26
26
|
import { cadenceToCron, validateCron, type CadencePreset } from "./cadence.js";
|
|
27
|
+
import { SpinnerIcon } from "../internal/SpinnerIcon.js";
|
|
27
28
|
|
|
28
29
|
// ---------------------------------------------------------------------------
|
|
29
30
|
// Public API
|
|
@@ -84,6 +85,7 @@ export function ScheduleForm({
|
|
|
84
85
|
onCancel,
|
|
85
86
|
className,
|
|
86
87
|
}: ScheduleFormProps) {
|
|
88
|
+
const baseId = useId();
|
|
87
89
|
const { create, isCreating, error, clearError } = useCreateSchedule();
|
|
88
90
|
|
|
89
91
|
const [name, setName] = useState("");
|
|
@@ -209,11 +211,11 @@ export function ScheduleForm({
|
|
|
209
211
|
>
|
|
210
212
|
{/* Name */}
|
|
211
213
|
<div className="stg:space-y-1">
|
|
212
|
-
<label htmlFor=
|
|
214
|
+
<label htmlFor={`${baseId}-name`} className={labelClasses}>
|
|
213
215
|
Name
|
|
214
216
|
</label>
|
|
215
217
|
<input
|
|
216
|
-
id=
|
|
218
|
+
id={`${baseId}-name`}
|
|
217
219
|
type="text"
|
|
218
220
|
value={name}
|
|
219
221
|
onChange={(e) => setName(e.target.value)}
|
|
@@ -227,13 +229,13 @@ export function ScheduleForm({
|
|
|
227
229
|
|
|
228
230
|
{/* Target agent */}
|
|
229
231
|
<div className="stg:space-y-1">
|
|
230
|
-
<span id=
|
|
232
|
+
<span id={`${baseId}-agent-label`} className={labelClasses}>
|
|
231
233
|
Agent to run
|
|
232
234
|
</span>
|
|
233
235
|
<Popover.Root open={pickerOpen} onOpenChange={setPickerOpen}>
|
|
234
236
|
<Popover.Trigger
|
|
235
237
|
disabled={isCreating}
|
|
236
|
-
aria-labelledby=
|
|
238
|
+
aria-labelledby={`${baseId}-agent-label`}
|
|
237
239
|
className={cn(
|
|
238
240
|
"stg:flex stg:w-full stg:items-center stg:justify-between stg:rounded-md stg:border stg:border-input stg:bg-background stg:px-2.5 stg:py-1.5 stg:text-left stg:text-xs",
|
|
239
241
|
"stg:focus-visible:outline-none stg:focus-visible:ring-1 stg:focus-visible:ring-ring",
|
|
@@ -267,11 +269,11 @@ export function ScheduleForm({
|
|
|
267
269
|
|
|
268
270
|
{/* Message */}
|
|
269
271
|
<div className="stg:space-y-1">
|
|
270
|
-
<label htmlFor=
|
|
272
|
+
<label htmlFor={`${baseId}-message`} className={labelClasses}>
|
|
271
273
|
Message
|
|
272
274
|
</label>
|
|
273
275
|
<textarea
|
|
274
|
-
id=
|
|
276
|
+
id={`${baseId}-message`}
|
|
275
277
|
value={message}
|
|
276
278
|
onChange={(e) => setMessage(e.target.value)}
|
|
277
279
|
placeholder="The instruction the agent receives on every fire — write it for a run with no human present."
|
|
@@ -314,7 +316,7 @@ export function ScheduleForm({
|
|
|
314
316
|
schedule fire, so the picker is filtered to visibility_org —
|
|
315
317
|
the same credential surface a channel binding uses. */}
|
|
316
318
|
<div className="stg:space-y-1">
|
|
317
|
-
<span id=
|
|
319
|
+
<span id={`${baseId}-env-label`} className={labelClasses}>
|
|
318
320
|
Environments <span className="stg:font-normal stg:text-muted-foreground">(optional)</span>
|
|
319
321
|
</span>
|
|
320
322
|
<EnvironmentPicker
|
|
@@ -391,12 +393,12 @@ export function ScheduleForm({
|
|
|
391
393
|
surface: nobody is watching a 3 AM fire (DD-018 D-5). Clamped
|
|
392
394
|
by the platform profile; tool-round bounds stay API-only. */}
|
|
393
395
|
<div className="stg:space-y-1">
|
|
394
|
-
<label htmlFor=
|
|
396
|
+
<label htmlFor={`${baseId}-budget`} className={labelClasses}>
|
|
395
397
|
Budget per run (USD){" "}
|
|
396
398
|
<span className="stg:font-normal stg:text-muted-foreground">(optional)</span>
|
|
397
399
|
</label>
|
|
398
400
|
<input
|
|
399
|
-
id=
|
|
401
|
+
id={`${baseId}-budget`}
|
|
400
402
|
type="number"
|
|
401
403
|
min="0"
|
|
402
404
|
step="any"
|
|
@@ -415,11 +417,11 @@ export function ScheduleForm({
|
|
|
415
417
|
|
|
416
418
|
{/* Time zone */}
|
|
417
419
|
<div className="stg:space-y-1">
|
|
418
|
-
<label htmlFor=
|
|
420
|
+
<label htmlFor={`${baseId}-tz`} className={labelClasses}>
|
|
419
421
|
Time zone
|
|
420
422
|
</label>
|
|
421
423
|
<TimeZoneField
|
|
422
|
-
id=
|
|
424
|
+
id={`${baseId}-tz`}
|
|
423
425
|
value={timeZone}
|
|
424
426
|
onChange={setTimeZone}
|
|
425
427
|
disabled={isCreating}
|
|
@@ -429,16 +431,16 @@ export function ScheduleForm({
|
|
|
429
431
|
{/* Enabled */}
|
|
430
432
|
<div className="stg:flex stg:items-start stg:gap-3">
|
|
431
433
|
<Switch
|
|
432
|
-
id=
|
|
434
|
+
id={`${baseId}-enabled`}
|
|
433
435
|
checked={enabled}
|
|
434
436
|
onCheckedChange={setEnabled}
|
|
435
437
|
disabled={isCreating}
|
|
436
|
-
aria-labelledby=
|
|
438
|
+
aria-labelledby={`${baseId}-enabled-label`}
|
|
437
439
|
/>
|
|
438
440
|
<div className="stg:space-y-0.5">
|
|
439
441
|
<label
|
|
440
|
-
id=
|
|
441
|
-
htmlFor=
|
|
442
|
+
id={`${baseId}-enabled-label`}
|
|
443
|
+
htmlFor={`${baseId}-enabled`}
|
|
442
444
|
className={labelClasses}
|
|
443
445
|
>
|
|
444
446
|
Enabled
|
|
@@ -467,7 +469,7 @@ export function ScheduleForm({
|
|
|
467
469
|
"stg:disabled:pointer-events-none stg:disabled:opacity-40",
|
|
468
470
|
)}
|
|
469
471
|
>
|
|
470
|
-
{isCreating && <SpinnerIcon />}
|
|
472
|
+
{isCreating && <SpinnerIcon size={14} />}
|
|
471
473
|
Create schedule
|
|
472
474
|
</button>
|
|
473
475
|
|
|
@@ -597,20 +599,3 @@ function ChevronIcon() {
|
|
|
597
599
|
);
|
|
598
600
|
}
|
|
599
601
|
|
|
600
|
-
function SpinnerIcon() {
|
|
601
|
-
return (
|
|
602
|
-
<svg
|
|
603
|
-
width="14"
|
|
604
|
-
height="14"
|
|
605
|
-
viewBox="0 0 16 16"
|
|
606
|
-
fill="none"
|
|
607
|
-
stroke="currentColor"
|
|
608
|
-
strokeWidth="2"
|
|
609
|
-
strokeLinecap="round"
|
|
610
|
-
className="stg:animate-spin"
|
|
611
|
-
aria-hidden="true"
|
|
612
|
-
>
|
|
613
|
-
<path d="M8 2a6 6 0 1 0 6 6" />
|
|
614
|
-
</svg>
|
|
615
|
-
);
|
|
616
|
-
}
|
|
@@ -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}
|