@stigmer/react 3.10.0 → 3.11.1-dev.20260812192248

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.
Files changed (1415) hide show
  1. package/access/ManageAccessButton.js +1 -1
  2. package/access/ManageAccessButton.js.map +1 -1
  3. package/access/ManageAccessDialog.js +3 -3
  4. package/access/ManageAccessDialog.js.map +1 -1
  5. package/action-menu/ActionMenu.js +3 -3
  6. package/action-menu/ActionMenu.js.map +1 -1
  7. package/activity/useRecentActivity.d.ts +6 -1
  8. package/activity/useRecentActivity.d.ts.map +1 -1
  9. package/activity/useRecentActivity.js +6 -1
  10. package/activity/useRecentActivity.js.map +1 -1
  11. package/agent/AgentDetailView.js +21 -21
  12. package/agent/AgentDetailView.js.map +1 -1
  13. package/agent/AgentPicker.js +8 -8
  14. package/agent/AgentPicker.js.map +1 -1
  15. package/agent/steps/CapabilitiesStep.js +3 -3
  16. package/agent/steps/CapabilitiesStep.js.map +1 -1
  17. package/agent/steps/IdentityStep.js +6 -6
  18. package/agent/steps/IdentityStep.js.map +1 -1
  19. package/agent/steps/ReviewStep.js +3 -3
  20. package/agent/steps/ReviewStep.js.map +1 -1
  21. package/agent-instance/AgentInstanceDetailPanel.js +2 -2
  22. package/agent-instance/AgentInstanceDetailPanel.js.map +1 -1
  23. package/agent-instance/AgentInstanceList.d.ts.map +1 -1
  24. package/agent-instance/AgentInstanceList.js +5 -4
  25. package/agent-instance/AgentInstanceList.js.map +1 -1
  26. package/agent-instance/CreateAgentInstanceDialog.js +1 -1
  27. package/agent-instance/CreateAgentInstanceDialog.js.map +1 -1
  28. package/api-key/ApiKeyCreatedAlert.js +1 -1
  29. package/api-key/ApiKeyCreatedAlert.js.map +1 -1
  30. package/api-key/ApiKeyListPanel.d.ts.map +1 -1
  31. package/api-key/ApiKeyListPanel.js +10 -9
  32. package/api-key/ApiKeyListPanel.js.map +1 -1
  33. package/api-key/CreateApiKeyForm.js +5 -5
  34. package/api-key/CreateApiKeyForm.js.map +1 -1
  35. package/attachment/AttachmentChipList.d.ts.map +1 -1
  36. package/attachment/AttachmentChipList.js +18 -17
  37. package/attachment/AttachmentChipList.js.map +1 -1
  38. package/attachment/AttachmentImageLightbox.d.ts.map +1 -1
  39. package/attachment/AttachmentImageLightbox.js +1 -1
  40. package/attachment/AttachmentImageLightbox.js.map +1 -1
  41. package/attachment/attachment-utils.d.ts +8 -5
  42. package/attachment/attachment-utils.d.ts.map +1 -1
  43. package/attachment/attachment-utils.js +8 -5
  44. package/attachment/attachment-utils.js.map +1 -1
  45. package/billing/AutoRechargeCard.js +2 -2
  46. package/billing/AutoRechargeCard.js.map +1 -1
  47. package/billing/BillingSection.js +6 -6
  48. package/billing/BillingSection.js.map +1 -1
  49. package/billing/CreditBalanceCard.js +4 -4
  50. package/billing/CreditBalanceCard.js.map +1 -1
  51. package/billing/CreditLedgerTable.js +13 -13
  52. package/billing/CreditLedgerTable.js.map +1 -1
  53. package/billing/CreditPackGrid.js +2 -2
  54. package/billing/CreditPackGrid.js.map +1 -1
  55. package/billing/LowBalanceBanner.js +4 -4
  56. package/billing/LowBalanceBanner.js.map +1 -1
  57. package/billing/PaymentMethodCard.js +2 -2
  58. package/billing/PaymentMethodCard.js.map +1 -1
  59. package/button/Button.js +7 -7
  60. package/button/Button.js.map +1 -1
  61. package/channel/AgentChannelsPanel.d.ts.map +1 -1
  62. package/channel/AgentChannelsPanel.js +13 -12
  63. package/channel/AgentChannelsPanel.js.map +1 -1
  64. package/channel/ChannelConversationsDialog.d.ts.map +1 -1
  65. package/channel/ChannelConversationsDialog.js +7 -6
  66. package/channel/ChannelConversationsDialog.js.map +1 -1
  67. package/channel/ChannelCredentialsDialog.js +2 -2
  68. package/channel/ChannelCredentialsDialog.js.map +1 -1
  69. package/channel/ChannelTemplatesDialog.d.ts.map +1 -1
  70. package/channel/ChannelTemplatesDialog.js +14 -13
  71. package/channel/ChannelTemplatesDialog.js.map +1 -1
  72. package/channel/ChannelToolCredentials.js +3 -3
  73. package/channel/ChannelToolCredentials.js.map +1 -1
  74. package/channel/ConnectSlackDialog.js +13 -13
  75. package/channel/ConnectSlackDialog.js.map +1 -1
  76. package/channel/ConnectWhatsAppDialog.js +8 -8
  77. package/channel/ConnectWhatsAppDialog.js.map +1 -1
  78. package/channel/connect/ServingAppSection.js +5 -5
  79. package/channel/connect/ServingAppSection.js.map +1 -1
  80. package/channel/connect/ToolCredentialsSection.js +1 -1
  81. package/channel/connect/ToolCredentialsSection.js.map +1 -1
  82. package/channel/connect/VerbatimRefusal.js +1 -1
  83. package/channel/connect/VerbatimRefusal.js.map +1 -1
  84. package/channel/connect/icons.js +1 -1
  85. package/channel/connect/icons.js.map +1 -1
  86. package/channel-app/ChannelAppDetailPanel.js +3 -3
  87. package/channel-app/ChannelAppDetailPanel.js.map +1 -1
  88. package/channel-app/ChannelAppListPanel.js +5 -5
  89. package/channel-app/ChannelAppListPanel.js.map +1 -1
  90. package/channel-app/CreateChannelAppForm.js +6 -6
  91. package/channel-app/CreateChannelAppForm.js.map +1 -1
  92. package/channel-app/internal.d.ts.map +1 -1
  93. package/channel-app/internal.js +8 -7
  94. package/channel-app/internal.js.map +1 -1
  95. package/composer/ComposerToolbar.d.ts.map +1 -1
  96. package/composer/ComposerToolbar.js +10 -7
  97. package/composer/ComposerToolbar.js.map +1 -1
  98. package/composer/ConfigureMenu.d.ts.map +1 -1
  99. package/composer/ConfigureMenu.js +5 -4
  100. package/composer/ConfigureMenu.js.map +1 -1
  101. package/composer/ContextChip.d.ts.map +1 -1
  102. package/composer/ContextChip.js +5 -4
  103. package/composer/ContextChip.js.map +1 -1
  104. package/composer/ContextPopover.d.ts.map +1 -1
  105. package/composer/ContextPopover.js +5 -4
  106. package/composer/ContextPopover.js.map +1 -1
  107. package/composer/InteractionModePicker.js +5 -5
  108. package/composer/InteractionModePicker.js.map +1 -1
  109. package/composer/SessionComposer.d.ts +13 -0
  110. package/composer/SessionComposer.d.ts.map +1 -1
  111. package/composer/SessionComposer.js +19 -9
  112. package/composer/SessionComposer.js.map +1 -1
  113. package/composer/icons.js +3 -3
  114. package/composer/icons.js.map +1 -1
  115. package/conversation/ConversationAttentionBanner.js +2 -2
  116. package/conversation/ConversationAttentionBanner.js.map +1 -1
  117. package/conversation/ConversationComposer.js +2 -2
  118. package/conversation/ConversationComposer.js.map +1 -1
  119. package/conversation/ConversationControlBanner.js +5 -5
  120. package/conversation/ConversationControlBanner.js.map +1 -1
  121. package/conversation/ConversationListPane.js +12 -12
  122. package/conversation/ConversationListPane.js.map +1 -1
  123. package/conversation/ConversationMediaAttachment.d.ts.map +1 -1
  124. package/conversation/ConversationMediaAttachment.js +5 -4
  125. package/conversation/ConversationMediaAttachment.js.map +1 -1
  126. package/conversation/ConversationTimelineView.d.ts.map +1 -1
  127. package/conversation/ConversationTimelineView.js +25 -15
  128. package/conversation/ConversationTimelineView.js.map +1 -1
  129. package/conversation/ConversationsWorkbench.js +3 -3
  130. package/conversation/ConversationsWorkbench.js.map +1 -1
  131. package/conversation/conversationPresentation.d.ts +28 -0
  132. package/conversation/conversationPresentation.d.ts.map +1 -1
  133. package/conversation/conversationPresentation.js +38 -1
  134. package/conversation/conversationPresentation.js.map +1 -1
  135. package/cursor-accounts/CursorAccountEditor.js +1 -1
  136. package/cursor-accounts/CursorAccountEditor.js.map +1 -1
  137. package/cursor-accounts/CursorAccountsAccessNotice.js +1 -1
  138. package/cursor-accounts/CursorAccountsAccessNotice.js.map +1 -1
  139. package/cursor-accounts/CursorAccountsConsole.js +9 -9
  140. package/cursor-accounts/CursorAccountsConsole.js.map +1 -1
  141. package/cursor-accounts/MemberCoverageTable.d.ts.map +1 -1
  142. package/cursor-accounts/MemberCoverageTable.js +11 -10
  143. package/cursor-accounts/MemberCoverageTable.js.map +1 -1
  144. package/cursor-accounts/MemberKeysPanel.js +3 -3
  145. package/cursor-accounts/MemberKeysPanel.js.map +1 -1
  146. package/cursor-accounts/badges.js +1 -1
  147. package/cursor-accounts/badges.js.map +1 -1
  148. package/dashboard/DashboardFailedRuns.js +4 -4
  149. package/dashboard/DashboardFailedRuns.js.map +1 -1
  150. package/dashboard/DashboardKPICards.d.ts.map +1 -1
  151. package/dashboard/DashboardKPICards.js +9 -7
  152. package/dashboard/DashboardKPICards.js.map +1 -1
  153. package/dashboard/OperationalDashboard.js +1 -1
  154. package/dashboard/OperationalDashboard.js.map +1 -1
  155. package/datastore/CollectionRecordsBrowser.d.ts.map +1 -1
  156. package/datastore/CollectionRecordsBrowser.js +14 -11
  157. package/datastore/CollectionRecordsBrowser.js.map +1 -1
  158. package/datastore/CollectionSchemaView.js +4 -4
  159. package/datastore/CollectionSchemaView.js.map +1 -1
  160. package/datastore/DatastoreDetailView.js +4 -4
  161. package/datastore/DatastoreDetailView.js.map +1 -1
  162. package/datastore/DatastoreSyncReport.js +1 -1
  163. package/datastore/DatastoreSyncReport.js.map +1 -1
  164. package/datastore/DeleteDatastoreDialog.js +1 -1
  165. package/datastore/DeleteDatastoreDialog.js.map +1 -1
  166. package/datastore/FieldValueControl.js +2 -2
  167. package/datastore/FieldValueControl.js.map +1 -1
  168. package/datastore/RecordFilterBuilder.js +4 -4
  169. package/datastore/RecordFilterBuilder.js.map +1 -1
  170. package/datastore/RecordFormPanel.js +5 -5
  171. package/datastore/RecordFormPanel.js.map +1 -1
  172. package/dependency-graph/DependencyGraph.js +1 -1
  173. package/dependency-graph/DependencyGraph.js.map +1 -1
  174. package/dependency-graph/DependencyTreeNode.js +8 -8
  175. package/dependency-graph/DependencyTreeNode.js.map +1 -1
  176. package/empty-state/EmptyState.js +3 -3
  177. package/empty-state/EmptyState.js.map +1 -1
  178. package/empty-state/useEmptyState.js +1 -1
  179. package/empty-state/useEmptyState.js.map +1 -1
  180. package/environment/CreateEnvironmentForm.js +2 -2
  181. package/environment/CreateEnvironmentForm.js.map +1 -1
  182. package/environment/EnvVarForm.js +4 -4
  183. package/environment/EnvVarForm.js.map +1 -1
  184. package/environment/EnvironmentListPanel.js +9 -9
  185. package/environment/EnvironmentListPanel.js.map +1 -1
  186. package/environment/EnvironmentPicker.js +4 -4
  187. package/environment/EnvironmentPicker.js.map +1 -1
  188. package/environment/EnvironmentVariableEditor.d.ts.map +1 -1
  189. package/environment/EnvironmentVariableEditor.js +18 -17
  190. package/environment/EnvironmentVariableEditor.js.map +1 -1
  191. package/error/ErrorMessage.js +1 -1
  192. package/error/ErrorMessage.js.map +1 -1
  193. package/error/SecretFlowErrorGuide.js +1 -1
  194. package/error/SecretFlowErrorGuide.js.map +1 -1
  195. package/execution/ApprovalCard.d.ts.map +1 -1
  196. package/execution/ApprovalCard.js +8 -8
  197. package/execution/ApprovalCard.js.map +1 -1
  198. package/execution/ArtifactApplyButton.js +4 -4
  199. package/execution/ArtifactApplyButton.js.map +1 -1
  200. package/execution/ArtifactContentBody.js +3 -3
  201. package/execution/ArtifactContentBody.js.map +1 -1
  202. package/execution/ArtifactContentRenderer.js +19 -19
  203. package/execution/ArtifactContentRenderer.js.map +1 -1
  204. package/execution/ArtifactDocument.js +10 -10
  205. package/execution/ArtifactDocument.js.map +1 -1
  206. package/execution/ArtifactFileContent.js +4 -4
  207. package/execution/ArtifactFileContent.js.map +1 -1
  208. package/execution/ArtifactPreviewModal.js +11 -11
  209. package/execution/ArtifactPreviewModal.js.map +1 -1
  210. package/execution/ArtifactRowView.d.ts.map +1 -1
  211. package/execution/ArtifactRowView.js +3 -2
  212. package/execution/ArtifactRowView.js.map +1 -1
  213. package/execution/ArtifactsWidget.js +1 -1
  214. package/execution/ArtifactsWidget.js.map +1 -1
  215. package/execution/ContextGauge.js +9 -9
  216. package/execution/ContextGauge.js.map +1 -1
  217. package/execution/EmptyChangeNotice.js +1 -1
  218. package/execution/EmptyChangeNotice.js.map +1 -1
  219. package/execution/ExecutionPhaseBadge.js +10 -10
  220. package/execution/ExecutionPhaseBadge.js.map +1 -1
  221. package/execution/ExecutionProgress.js +1 -1
  222. package/execution/ExecutionProgress.js.map +1 -1
  223. package/execution/FileChangeProgressBar.js +3 -3
  224. package/execution/FileChangeProgressBar.js.map +1 -1
  225. package/execution/FileChangesView.js +5 -5
  226. package/execution/FileChangesView.js.map +1 -1
  227. package/execution/FilePathLink.d.ts +4 -4
  228. package/execution/FilePathLink.d.ts.map +1 -1
  229. package/execution/FilePathLink.js +8 -8
  230. package/execution/FilePathLink.js.map +1 -1
  231. package/execution/FileReviewAtoms.js +7 -7
  232. package/execution/FileReviewAtoms.js.map +1 -1
  233. package/execution/FileReviewCard.js +18 -18
  234. package/execution/FileReviewCard.js.map +1 -1
  235. package/execution/FileReviewDock.js +1 -1
  236. package/execution/FileReviewDock.js.map +1 -1
  237. package/execution/FollowUpInput.js +3 -3
  238. package/execution/FollowUpInput.js.map +1 -1
  239. package/execution/InteractionModeBadge.js +1 -1
  240. package/execution/InteractionModeBadge.js.map +1 -1
  241. package/execution/McpToolDetail.d.ts.map +1 -1
  242. package/execution/McpToolDetail.js +13 -12
  243. package/execution/McpToolDetail.js.map +1 -1
  244. package/execution/MessageAttachments.d.ts.map +1 -1
  245. package/execution/MessageAttachments.js +13 -11
  246. package/execution/MessageAttachments.js.map +1 -1
  247. package/execution/MessageEntry.d.ts.map +1 -1
  248. package/execution/MessageEntry.js +9 -8
  249. package/execution/MessageEntry.js.map +1 -1
  250. package/execution/MessageThread.js +12 -12
  251. package/execution/MessageThread.js.map +1 -1
  252. package/execution/PlanArtifactCard.d.ts.map +1 -1
  253. package/execution/PlanArtifactCard.js +14 -11
  254. package/execution/PlanArtifactCard.js.map +1 -1
  255. package/execution/PlanCompletionCard.js +2 -2
  256. package/execution/PlanCompletionCard.js.map +1 -1
  257. package/execution/PlanDocumentMessage.js +2 -2
  258. package/execution/PlanDocumentMessage.js.map +1 -1
  259. package/execution/PlanStreamingCard.js +3 -3
  260. package/execution/PlanStreamingCard.js.map +1 -1
  261. package/execution/ResultView.js +17 -17
  262. package/execution/ResultView.js.map +1 -1
  263. package/execution/SessionVariablesInput.js +6 -6
  264. package/execution/SessionVariablesInput.js.map +1 -1
  265. package/execution/SetupProgress.js +2 -2
  266. package/execution/SetupProgress.js.map +1 -1
  267. package/execution/SubAgentSection.js +19 -19
  268. package/execution/SubAgentSection.js.map +1 -1
  269. package/execution/SummarizationBadge.js +3 -3
  270. package/execution/SummarizationBadge.js.map +1 -1
  271. package/execution/SummarizationCard.js +2 -2
  272. package/execution/SummarizationCard.js.map +1 -1
  273. package/execution/TerminalSession.js +2 -2
  274. package/execution/TerminalSession.js.map +1 -1
  275. package/execution/ThreadSkeleton.js +1 -1
  276. package/execution/ThreadSkeleton.js.map +1 -1
  277. package/execution/TodoCard.js +3 -3
  278. package/execution/TodoCard.js.map +1 -1
  279. package/execution/TodoList.js +8 -8
  280. package/execution/TodoList.js.map +1 -1
  281. package/execution/ToolArgsView.js +4 -4
  282. package/execution/ToolArgsView.js.map +1 -1
  283. package/execution/ToolCallDetail.d.ts.map +1 -1
  284. package/execution/ToolCallDetail.js +4 -4
  285. package/execution/ToolCallDetail.js.map +1 -1
  286. package/execution/ToolCallGroup.js +1 -1
  287. package/execution/ToolCallGroup.js.map +1 -1
  288. package/execution/ToolCallItem.d.ts.map +1 -1
  289. package/execution/ToolCallItem.js +20 -16
  290. package/execution/ToolCallItem.js.map +1 -1
  291. package/execution/ToolRunGroup.js +9 -9
  292. package/execution/ToolRunGroup.js.map +1 -1
  293. package/execution/UsageWidget.js +3 -3
  294. package/execution/UsageWidget.js.map +1 -1
  295. package/execution/WriteBackCard.d.ts.map +1 -1
  296. package/execution/WriteBackCard.js +18 -16
  297. package/execution/WriteBackCard.js.map +1 -1
  298. package/execution/WriteBacksWidget.js +1 -1
  299. package/execution/WriteBacksWidget.js.map +1 -1
  300. package/execution/artifact-row-item.d.ts +1 -1
  301. package/execution/artifact-row-item.d.ts.map +1 -1
  302. package/execution/tool-rendering-primitives.js +5 -5
  303. package/execution/tool-rendering-primitives.js.map +1 -1
  304. package/feedback/StigmerToaster.d.ts.map +1 -1
  305. package/feedback/StigmerToaster.js +9 -5
  306. package/feedback/StigmerToaster.js.map +1 -1
  307. package/file-reference/FileReferenceChipList.d.ts.map +1 -1
  308. package/file-reference/FileReferenceChipList.js +8 -3
  309. package/file-reference/FileReferenceChipList.js.map +1 -1
  310. package/github/GitHubRepoPicker.js +26 -26
  311. package/github/GitHubRepoPicker.js.map +1 -1
  312. package/iam-policy/GrantAccessForm.js +2 -2
  313. package/iam-policy/GrantAccessForm.js.map +1 -1
  314. package/iam-policy/OrgMembersPanel.d.ts.map +1 -1
  315. package/iam-policy/OrgMembersPanel.js +13 -12
  316. package/iam-policy/OrgMembersPanel.js.map +1 -1
  317. package/iam-policy/PeopleWithAccess.js +4 -4
  318. package/iam-policy/PeopleWithAccess.js.map +1 -1
  319. package/iam-policy/PrincipalPicker.js +6 -6
  320. package/iam-policy/PrincipalPicker.js.map +1 -1
  321. package/iam-policy/ProviderBadge.d.ts.map +1 -1
  322. package/iam-policy/ProviderBadge.js +3 -2
  323. package/iam-policy/ProviderBadge.js.map +1 -1
  324. package/iam-policy/RoleSelector.d.ts.map +1 -1
  325. package/iam-policy/RoleSelector.js +4 -4
  326. package/iam-policy/RoleSelector.js.map +1 -1
  327. package/iam-policy/SharePanel.js +1 -1
  328. package/iam-policy/SharePanel.js.map +1 -1
  329. package/identity-provider/CreateIdentityProviderForm.js +6 -6
  330. package/identity-provider/CreateIdentityProviderForm.js.map +1 -1
  331. package/identity-provider/IdentityProviderDetailPanel.js +11 -11
  332. package/identity-provider/IdentityProviderDetailPanel.js.map +1 -1
  333. package/identity-provider/IdentityProviderListPanel.d.ts.map +1 -1
  334. package/identity-provider/IdentityProviderListPanel.js +9 -8
  335. package/identity-provider/IdentityProviderListPanel.js.map +1 -1
  336. package/identity-provider/IdentityProviderWizard.js +16 -16
  337. package/identity-provider/IdentityProviderWizard.js.map +1 -1
  338. package/identity-provider/ProviderPicker.js +11 -11
  339. package/identity-provider/ProviderPicker.js.map +1 -1
  340. package/identity-provider/SsoLoginPrompt.js +7 -7
  341. package/identity-provider/SsoLoginPrompt.js.map +1 -1
  342. package/index.d.ts +1 -1
  343. package/index.d.ts.map +1 -1
  344. package/index.js +1 -1
  345. package/index.js.map +1 -1
  346. package/inline-edit/InlineEditImage.js +5 -5
  347. package/inline-edit/InlineEditImage.js.map +1 -1
  348. package/inline-edit/InlineEditKeyValue.js +3 -3
  349. package/inline-edit/InlineEditKeyValue.js.map +1 -1
  350. package/inline-edit/InlineEditResourceList.js +8 -8
  351. package/inline-edit/InlineEditResourceList.js.map +1 -1
  352. package/inline-edit/InlineEditSelect.js +8 -8
  353. package/inline-edit/InlineEditSelect.js.map +1 -1
  354. package/inline-edit/InlineEditText.js +6 -6
  355. package/inline-edit/InlineEditText.js.map +1 -1
  356. package/inline-edit/InlineEditTextarea.js +4 -4
  357. package/inline-edit/InlineEditTextarea.js.map +1 -1
  358. package/internal/ApprovalPeekBar.js +3 -3
  359. package/internal/ApprovalPeekBar.js.map +1 -1
  360. package/internal/BoundedContent.d.ts +1 -1
  361. package/internal/BoundedContent.d.ts.map +1 -1
  362. package/internal/BoundedContent.js +2 -2
  363. package/internal/BoundedContent.js.map +1 -1
  364. package/internal/CloudFeatureNotice.js +1 -1
  365. package/internal/CloudFeatureNotice.js.map +1 -1
  366. package/internal/DecisionButton.js +6 -6
  367. package/internal/DecisionButton.js.map +1 -1
  368. package/internal/InCardDecisionError.js +1 -1
  369. package/internal/InCardDecisionError.js.map +1 -1
  370. package/internal/JumpToLatestButton.js +3 -3
  371. package/internal/JumpToLatestButton.js.map +1 -1
  372. package/internal/MermaidDiagram.js +2 -2
  373. package/internal/MermaidDiagram.js.map +1 -1
  374. package/internal/Pagination.js +2 -2
  375. package/internal/Pagination.js.map +1 -1
  376. package/internal/ResizableSplit.d.ts +28 -6
  377. package/internal/ResizableSplit.d.ts.map +1 -1
  378. package/internal/ResizableSplit.js +18 -4
  379. package/internal/ResizableSplit.js.map +1 -1
  380. package/internal/RevealToggle.js +2 -2
  381. package/internal/RevealToggle.js.map +1 -1
  382. package/internal/ScrollFade.js +2 -2
  383. package/internal/ScrollFade.js.map +1 -1
  384. package/internal/VirtualizedThread.js +2 -2
  385. package/internal/VirtualizedThread.js.map +1 -1
  386. package/internal/file-icons/index.js +2 -2
  387. package/internal/file-icons/index.js.map +1 -1
  388. package/internal/file-tree/FileTreeNode.js +3 -3
  389. package/internal/file-tree/FileTreeNode.js.map +1 -1
  390. package/internal/form-primitives.d.ts +12 -10
  391. package/internal/form-primitives.d.ts.map +1 -1
  392. package/internal/form-primitives.js +14 -12
  393. package/internal/form-primitives.js.map +1 -1
  394. package/internal/markdown-components.js +23 -23
  395. package/internal/markdown-components.js.map +1 -1
  396. package/internal/menu.js +5 -5
  397. package/internal/menu.js.map +1 -1
  398. package/internal/scroll-area.js +1 -1
  399. package/internal/scroll-area.js.map +1 -1
  400. package/internal/thread-card/ThreadCardShell.js +7 -7
  401. package/internal/thread-card/ThreadCardShell.js.map +1 -1
  402. package/internal/thread-card/glyphs.js +2 -2
  403. package/internal/thread-card/glyphs.js.map +1 -1
  404. package/internal/tooltip.d.ts.map +1 -1
  405. package/internal/tooltip.js +4 -6
  406. package/internal/tooltip.js.map +1 -1
  407. package/internal/truncated-text.d.ts +17 -0
  408. package/internal/truncated-text.d.ts.map +1 -0
  409. package/internal/truncated-text.js +27 -0
  410. package/internal/truncated-text.js.map +1 -0
  411. package/invitation/InvitationCreatedAlert.js +1 -1
  412. package/invitation/InvitationCreatedAlert.js.map +1 -1
  413. package/invitation/InvitationManager.d.ts.map +1 -1
  414. package/invitation/InvitationManager.js +25 -24
  415. package/invitation/InvitationManager.js.map +1 -1
  416. package/invitation/InvitationRedemption.js +12 -12
  417. package/invitation/InvitationRedemption.js.map +1 -1
  418. package/library/ResourceCountCard.js +4 -4
  419. package/library/ResourceCountCard.js.map +1 -1
  420. package/library/ScopeToggle.d.ts.map +1 -1
  421. package/library/ScopeToggle.js +13 -5
  422. package/library/ScopeToggle.js.map +1 -1
  423. package/library/VisibilityOptionRow.d.ts +1 -1
  424. package/library/VisibilityOptionRow.d.ts.map +1 -1
  425. package/library/VisibilityOptionRow.js +22 -22
  426. package/library/VisibilityOptionRow.js.map +1 -1
  427. package/library/VisibilitySelector.d.ts.map +1 -1
  428. package/library/VisibilitySelector.js +6 -5
  429. package/library/VisibilitySelector.js.map +1 -1
  430. package/manifest/ApplyManifestDialog.js +6 -6
  431. package/manifest/ApplyManifestDialog.js.map +1 -1
  432. package/manifest/EditResourceYamlDialog.js +2 -2
  433. package/manifest/EditResourceYamlDialog.js.map +1 -1
  434. package/manifest/RedactedSecretsNotice.js +1 -1
  435. package/manifest/RedactedSecretsNotice.js.map +1 -1
  436. package/manifest/YamlEditor.js +1 -1
  437. package/manifest/YamlEditor.js.map +1 -1
  438. package/mcp-server/McpServerConfigPanel.d.ts +30 -1
  439. package/mcp-server/McpServerConfigPanel.d.ts.map +1 -1
  440. package/mcp-server/McpServerConfigPanel.js +36 -26
  441. package/mcp-server/McpServerConfigPanel.js.map +1 -1
  442. package/mcp-server/McpServerConnectDialog.d.ts +12 -1
  443. package/mcp-server/McpServerConnectDialog.d.ts.map +1 -1
  444. package/mcp-server/McpServerConnectDialog.js +48 -21
  445. package/mcp-server/McpServerConnectDialog.js.map +1 -1
  446. package/mcp-server/McpServerDetailView.d.ts.map +1 -1
  447. package/mcp-server/McpServerDetailView.js +113 -64
  448. package/mcp-server/McpServerDetailView.js.map +1 -1
  449. package/mcp-server/McpServerPicker.d.ts.map +1 -1
  450. package/mcp-server/McpServerPicker.js +101 -20
  451. package/mcp-server/McpServerPicker.js.map +1 -1
  452. package/mcp-server/McpToolSelector.d.ts.map +1 -1
  453. package/mcp-server/McpToolSelector.js +5 -4
  454. package/mcp-server/McpToolSelector.js.map +1 -1
  455. package/mcp-server/OAuthAppForm.js +2 -2
  456. package/mcp-server/OAuthAppForm.js.map +1 -1
  457. package/mcp-server/OAuthCallbackHandler.js +4 -4
  458. package/mcp-server/OAuthCallbackHandler.js.map +1 -1
  459. package/mcp-server/OAuthRequiredNotice.js +1 -1
  460. package/mcp-server/OAuthRequiredNotice.js.map +1 -1
  461. package/mcp-server/StdioSandboxNotice.js +1 -1
  462. package/mcp-server/StdioSandboxNotice.js.map +1 -1
  463. package/mcp-server/VendorApprovalBlockedNotice.d.ts +77 -0
  464. package/mcp-server/VendorApprovalBlockedNotice.d.ts.map +1 -0
  465. package/mcp-server/VendorApprovalBlockedNotice.js +62 -0
  466. package/mcp-server/VendorApprovalBlockedNotice.js.map +1 -0
  467. package/mcp-server/index.d.ts +1 -1
  468. package/mcp-server/index.d.ts.map +1 -1
  469. package/mcp-server/index.js +1 -1
  470. package/mcp-server/index.js.map +1 -1
  471. package/mcp-server/mcpServerSetupReducer.d.ts +18 -0
  472. package/mcp-server/mcpServerSetupReducer.d.ts.map +1 -1
  473. package/mcp-server/mcpServerSetupReducer.js +6 -0
  474. package/mcp-server/mcpServerSetupReducer.js.map +1 -1
  475. package/mcp-server/steps/EnvironmentAuthStep.js +4 -4
  476. package/mcp-server/steps/EnvironmentAuthStep.js.map +1 -1
  477. package/mcp-server/steps/IdentityTransportStep.js +8 -8
  478. package/mcp-server/steps/IdentityTransportStep.js.map +1 -1
  479. package/mcp-server/steps/ReviewStep.js +3 -3
  480. package/mcp-server/steps/ReviewStep.js.map +1 -1
  481. package/mcp-server/useMcpServerOAuthConnect.d.ts +29 -0
  482. package/mcp-server/useMcpServerOAuthConnect.d.ts.map +1 -1
  483. package/mcp-server/useMcpServerOAuthConnect.js +49 -10
  484. package/mcp-server/useMcpServerOAuthConnect.js.map +1 -1
  485. package/mcp-server/useMcpServerSetup.d.ts.map +1 -1
  486. package/mcp-server/useMcpServerSetup.js +7 -0
  487. package/mcp-server/useMcpServerSetup.js.map +1 -1
  488. package/models/HarnessSelector.js +8 -8
  489. package/models/HarnessSelector.js.map +1 -1
  490. package/models/ModelSelector.js +11 -11
  491. package/models/ModelSelector.js.map +1 -1
  492. package/oauth-app/CreateOAuthAppForm.js +4 -4
  493. package/oauth-app/CreateOAuthAppForm.js.map +1 -1
  494. package/oauth-app/OAuthAppDetailPanel.js +8 -8
  495. package/oauth-app/OAuthAppDetailPanel.js.map +1 -1
  496. package/oauth-app/OAuthAppListPanel.d.ts.map +1 -1
  497. package/oauth-app/OAuthAppListPanel.js +7 -6
  498. package/oauth-app/OAuthAppListPanel.js.map +1 -1
  499. package/organization/CreateOrganizationForm.js +4 -4
  500. package/organization/CreateOrganizationForm.js.map +1 -1
  501. package/organization/OrgProfilePanel.js +10 -10
  502. package/organization/OrgProfilePanel.js.map +1 -1
  503. package/organization/OrgSwitcher.js +5 -5
  504. package/organization/OrgSwitcher.js.map +1 -1
  505. package/package.json +4 -4
  506. package/platform-client/CreatePlatformClientForm.js +5 -5
  507. package/platform-client/CreatePlatformClientForm.js.map +1 -1
  508. package/platform-client/PlatformClientDetailPanel.js +8 -8
  509. package/platform-client/PlatformClientDetailPanel.js.map +1 -1
  510. package/platform-client/PlatformClientListPanel.d.ts.map +1 -1
  511. package/platform-client/PlatformClientListPanel.js +11 -10
  512. package/platform-client/PlatformClientListPanel.js.map +1 -1
  513. package/platform-client/PlatformClientSecretAlert.js +2 -2
  514. package/platform-client/PlatformClientSecretAlert.js.map +1 -1
  515. package/portal-container.d.ts +34 -9
  516. package/portal-container.d.ts.map +1 -1
  517. package/portal-container.js +33 -8
  518. package/portal-container.js.map +1 -1
  519. package/pricing-governance/BaselineEditor.d.ts.map +1 -1
  520. package/pricing-governance/BaselineEditor.js +11 -5
  521. package/pricing-governance/BaselineEditor.js.map +1 -1
  522. package/pricing-governance/ModelCatalogPanel.d.ts.map +1 -1
  523. package/pricing-governance/ModelCatalogPanel.js +6 -5
  524. package/pricing-governance/ModelCatalogPanel.js.map +1 -1
  525. package/pricing-governance/ModelGovernanceDetail.js +7 -7
  526. package/pricing-governance/ModelGovernanceDetail.js.map +1 -1
  527. package/pricing-governance/OperatorAccessNotice.js +1 -1
  528. package/pricing-governance/OperatorAccessNotice.js.map +1 -1
  529. package/pricing-governance/PricingGovernanceConsole.d.ts.map +1 -1
  530. package/pricing-governance/PricingGovernanceConsole.js +9 -8
  531. package/pricing-governance/PricingGovernanceConsole.js.map +1 -1
  532. package/pricing-governance/PricingGovernancePanel.d.ts.map +1 -1
  533. package/pricing-governance/PricingGovernancePanel.js +5 -4
  534. package/pricing-governance/PricingGovernancePanel.js.map +1 -1
  535. package/pricing-governance/RetireConfirm.js +1 -1
  536. package/pricing-governance/RetireConfirm.js.map +1 -1
  537. package/pricing-governance/governance-primitives.js +6 -6
  538. package/pricing-governance/governance-primitives.js.map +1 -1
  539. package/resource-creation/CreationPicker.js +7 -7
  540. package/resource-creation/CreationPicker.js.map +1 -1
  541. package/resource-creation/StepIndicator.js +4 -4
  542. package/resource-creation/StepIndicator.js.map +1 -1
  543. package/resource-creation/TemplateCard.js +15 -15
  544. package/resource-creation/TemplateCard.js.map +1 -1
  545. package/resource-creation/TemplateGallery.js +5 -5
  546. package/resource-creation/TemplateGallery.js.map +1 -1
  547. package/resource-creation/WizardNav.js +2 -2
  548. package/resource-creation/WizardNav.js.map +1 -1
  549. package/resource-creation/WizardShell.js +2 -2
  550. package/resource-creation/WizardShell.js.map +1 -1
  551. package/resource-detail/ConfirmDialog.js +3 -3
  552. package/resource-detail/ConfirmDialog.js.map +1 -1
  553. package/resource-detail/ResourceActionBar.js +2 -2
  554. package/resource-detail/ResourceActionBar.js.map +1 -1
  555. package/resource-detail/ResourceDetailShell.js +3 -3
  556. package/resource-detail/ResourceDetailShell.js.map +1 -1
  557. package/resource-detail/Section.js +1 -1
  558. package/resource-detail/Section.js.map +1 -1
  559. package/resource-workbench/components/BulkActionBar.js +4 -4
  560. package/resource-workbench/components/BulkActionBar.js.map +1 -1
  561. package/resource-workbench/components/ColumnHeader.js +3 -3
  562. package/resource-workbench/components/ColumnHeader.js.map +1 -1
  563. package/resource-workbench/components/FilterBar.js +3 -3
  564. package/resource-workbench/components/FilterBar.js.map +1 -1
  565. package/resource-workbench/components/ResourceAvatar.js +18 -18
  566. package/resource-workbench/components/ResourceAvatar.js.map +1 -1
  567. package/resource-workbench/components/ResourceCards.js +2 -2
  568. package/resource-workbench/components/ResourceCards.js.map +1 -1
  569. package/resource-workbench/components/ResourceInspector.js +1 -1
  570. package/resource-workbench/components/ResourceInspector.js.map +1 -1
  571. package/resource-workbench/components/ResourceList.js +2 -2
  572. package/resource-workbench/components/ResourceList.js.map +1 -1
  573. package/resource-workbench/components/ResourceTable.js +5 -5
  574. package/resource-workbench/components/ResourceTable.js.map +1 -1
  575. package/resource-workbench/components/ResourceWorkbench.js +11 -11
  576. package/resource-workbench/components/ResourceWorkbench.js.map +1 -1
  577. package/resource-workbench/components/SelectionCheckbox.js +1 -1
  578. package/resource-workbench/components/SelectionCheckbox.js.map +1 -1
  579. package/resource-workbench/components/StatusBadge.d.ts.map +1 -1
  580. package/resource-workbench/components/StatusBadge.js +17 -16
  581. package/resource-workbench/components/StatusBadge.js.map +1 -1
  582. package/resource-workbench/components/ViewSwitcher.js +4 -4
  583. package/resource-workbench/components/ViewSwitcher.js.map +1 -1
  584. package/schedule/CadenceField.d.ts.map +1 -1
  585. package/schedule/CadenceField.js +26 -19
  586. package/schedule/CadenceField.js.map +1 -1
  587. package/schedule/ScheduleDetailView.js +39 -39
  588. package/schedule/ScheduleDetailView.js.map +1 -1
  589. package/schedule/ScheduleForm.js +9 -9
  590. package/schedule/ScheduleForm.js.map +1 -1
  591. package/schedule/ScheduleRowActions.js +1 -1
  592. package/schedule/ScheduleRowActions.js.map +1 -1
  593. package/schedule/ScheduleRunsTable.d.ts.map +1 -1
  594. package/schedule/ScheduleRunsTable.js +18 -17
  595. package/schedule/ScheduleRunsTable.js.map +1 -1
  596. package/schedule/TimeZoneField.js +5 -5
  597. package/schedule/TimeZoneField.js.map +1 -1
  598. package/schedule/scheduleColumns.js +5 -5
  599. package/schedule/scheduleColumns.js.map +1 -1
  600. package/session/NewSessionViewer.js +3 -3
  601. package/session/NewSessionViewer.js.map +1 -1
  602. package/session/PlanEditor.d.ts.map +1 -1
  603. package/session/PlanEditor.js +9 -11
  604. package/session/PlanEditor.js.map +1 -1
  605. package/session/PlanStreamingDocument.js +2 -2
  606. package/session/PlanStreamingDocument.js.map +1 -1
  607. package/session/SessionViewer.js +21 -21
  608. package/session/SessionViewer.js.map +1 -1
  609. package/session/SessionViewerLayout.d.ts +11 -8
  610. package/session/SessionViewerLayout.d.ts.map +1 -1
  611. package/session/SessionViewerLayout.js +1 -1
  612. package/session/SessionViewerLayout.js.map +1 -1
  613. package/session/facets/ArtifactsTab.js +2 -2
  614. package/session/facets/ArtifactsTab.js.map +1 -1
  615. package/session/facets/ChangesTab.js +3 -3
  616. package/session/facets/ChangesTab.js.map +1 -1
  617. package/session/facets/SetupTab.js +11 -11
  618. package/session/facets/SetupTab.js.map +1 -1
  619. package/session/facets/UsageTab.js +1 -1
  620. package/session/facets/UsageTab.js.map +1 -1
  621. package/settings/ApiKeysSection.js +1 -1
  622. package/settings/ApiKeysSection.js.map +1 -1
  623. package/settings/ChannelAppsSection.js +1 -1
  624. package/settings/ChannelAppsSection.js.map +1 -1
  625. package/settings/EnvironmentsSection.js +4 -4
  626. package/settings/EnvironmentsSection.js.map +1 -1
  627. package/settings/IdentityProvidersSection.js +1 -1
  628. package/settings/IdentityProvidersSection.js.map +1 -1
  629. package/settings/InvitationsSection.js +1 -1
  630. package/settings/InvitationsSection.js.map +1 -1
  631. package/settings/MembersSection.js +1 -1
  632. package/settings/MembersSection.js.map +1 -1
  633. package/settings/OAuthAppsSection.js +1 -1
  634. package/settings/OAuthAppsSection.js.map +1 -1
  635. package/settings/OrgProfileSection.js +1 -1
  636. package/settings/OrgProfileSection.js.map +1 -1
  637. package/settings/PlatformClientsSection.js +1 -1
  638. package/settings/PlatformClientsSection.js.map +1 -1
  639. package/settings/UsageSection.js +1 -1
  640. package/settings/UsageSection.js.map +1 -1
  641. package/sharing/AgentShareList.d.ts.map +1 -1
  642. package/sharing/AgentShareList.js +7 -5
  643. package/sharing/AgentShareList.js.map +1 -1
  644. package/sharing/ShareAgentDialog.d.ts.map +1 -1
  645. package/sharing/ShareAgentDialog.js +31 -30
  646. package/sharing/ShareAgentDialog.js.map +1 -1
  647. package/sharing/SharedAgentChat.js +6 -6
  648. package/sharing/SharedAgentChat.js.map +1 -1
  649. package/sidebar/SettingsSidebar.js +5 -5
  650. package/sidebar/SettingsSidebar.js.map +1 -1
  651. package/sidebar/WorkspaceSidebar.js +13 -13
  652. package/sidebar/WorkspaceSidebar.js.map +1 -1
  653. package/sidebar/chrome.js +5 -5
  654. package/sidebar/chrome.js.map +1 -1
  655. package/skill/SkillDetailView.d.ts.map +1 -1
  656. package/skill/SkillDetailView.js +14 -13
  657. package/skill/SkillDetailView.js.map +1 -1
  658. package/skill/SkillDiffDialog.js +2 -2
  659. package/skill/SkillDiffDialog.js.map +1 -1
  660. package/skill/SkillFileBrowser.js +4 -4
  661. package/skill/SkillFileBrowser.js.map +1 -1
  662. package/skill/SkillPicker.js +10 -10
  663. package/skill/SkillPicker.js.map +1 -1
  664. package/skill/SkillUploader.js +8 -8
  665. package/skill/SkillUploader.js.map +1 -1
  666. package/src/__tests__/helpers/compile-sdk-styles.ts +33 -0
  667. package/src/__tests__/helpers/open-menu.ts +88 -0
  668. package/src/__tests__/portal-container.test.tsx +97 -0
  669. package/src/__tests__/preflight-parity.layout.test.tsx +156 -0
  670. package/src/__tests__/scope-unprefixed.test.ts +86 -0
  671. package/src/__tests__/styles-border-layer-invariant.test.ts +86 -58
  672. package/src/__tests__/styles-dist-isolation.test.ts +195 -0
  673. package/src/__tests__/styles-host-isolation.layout.test.tsx +204 -0
  674. package/src/access/ManageAccessButton.tsx +3 -3
  675. package/src/access/ManageAccessDialog.tsx +19 -19
  676. package/src/action-menu/ActionMenu.tsx +8 -8
  677. package/src/activity/useRecentActivity.ts +6 -1
  678. package/src/agent/AgentDetailView.tsx +112 -112
  679. package/src/agent/AgentPicker.tsx +26 -26
  680. package/src/agent/steps/CapabilitiesStep.tsx +36 -36
  681. package/src/agent/steps/IdentityStep.tsx +45 -45
  682. package/src/agent/steps/ReviewStep.tsx +18 -18
  683. package/src/agent-instance/AgentInstanceDetailPanel.tsx +45 -45
  684. package/src/agent-instance/AgentInstanceList.tsx +40 -41
  685. package/src/agent-instance/CreateAgentInstanceDialog.tsx +35 -35
  686. package/src/agent-instance/__tests__/AgentInstanceList.test.tsx +5 -10
  687. package/src/api-key/ApiKeyCreatedAlert.tsx +15 -15
  688. package/src/api-key/ApiKeyListPanel.tsx +39 -31
  689. package/src/api-key/CreateApiKeyForm.tsx +25 -25
  690. package/src/attachment/AttachmentChipList.tsx +86 -77
  691. package/src/attachment/AttachmentImageLightbox.tsx +13 -14
  692. package/src/attachment/__tests__/AttachmentChipList.test.tsx +5 -4
  693. package/src/attachment/attachment-utils.ts +8 -5
  694. package/src/billing/AutoRechargeCard.tsx +26 -26
  695. package/src/billing/BillingSection.tsx +14 -14
  696. package/src/billing/CreditBalanceCard.tsx +7 -7
  697. package/src/billing/CreditLedgerTable.tsx +27 -27
  698. package/src/billing/CreditPackGrid.tsx +13 -13
  699. package/src/billing/LowBalanceBanner.tsx +6 -6
  700. package/src/billing/PaymentMethodCard.tsx +13 -13
  701. package/src/button/Button.tsx +10 -10
  702. package/src/button/__tests__/Button.test.tsx +9 -9
  703. package/src/channel/AgentChannelsPanel.tsx +37 -38
  704. package/src/channel/ChannelConversationsDialog.tsx +25 -23
  705. package/src/channel/ChannelCredentialsDialog.tsx +13 -13
  706. package/src/channel/ChannelTemplatesDialog.tsx +38 -39
  707. package/src/channel/ChannelToolCredentials.tsx +5 -5
  708. package/src/channel/ConnectSlackDialog.tsx +48 -48
  709. package/src/channel/ConnectWhatsAppDialog.tsx +42 -42
  710. package/src/channel/__tests__/AgentChannelsPanel.test.tsx +18 -18
  711. package/src/channel/connect/ServingAppSection.tsx +14 -14
  712. package/src/channel/connect/ToolCredentialsSection.tsx +5 -5
  713. package/src/channel/connect/VerbatimRefusal.tsx +1 -1
  714. package/src/channel/connect/icons.tsx +1 -1
  715. package/src/channel-app/ChannelAppDetailPanel.tsx +44 -44
  716. package/src/channel-app/ChannelAppListPanel.tsx +15 -15
  717. package/src/channel-app/CreateChannelAppForm.tsx +37 -37
  718. package/src/channel-app/internal.tsx +25 -26
  719. package/src/composer/ComposerToolbar.tsx +124 -92
  720. package/src/composer/ConfigureMenu.tsx +49 -40
  721. package/src/composer/ContextChip.tsx +13 -14
  722. package/src/composer/ContextPopover.tsx +30 -21
  723. package/src/composer/InteractionModePicker.tsx +14 -14
  724. package/src/composer/SessionComposer.tsx +64 -32
  725. package/src/composer/__tests__/SessionComposer-agentSetupError.test.tsx +124 -0
  726. package/src/composer/__tests__/SessionComposer-lockAgent.test.tsx +13 -17
  727. package/src/composer/__tests__/SessionComposer-serviceTier.test.tsx +2 -7
  728. package/src/composer/icons.tsx +5 -5
  729. package/src/conversation/ConversationAttentionBanner.tsx +6 -6
  730. package/src/conversation/ConversationComposer.tsx +13 -13
  731. package/src/conversation/ConversationControlBanner.tsx +11 -11
  732. package/src/conversation/ConversationListPane.tsx +38 -38
  733. package/src/conversation/ConversationMediaAttachment.tsx +14 -14
  734. package/src/conversation/ConversationTimelineView.tsx +64 -47
  735. package/src/conversation/ConversationsWorkbench.tsx +10 -10
  736. package/src/conversation/__tests__/ConversationComposer.test.tsx +1 -1
  737. package/src/conversation/__tests__/ConversationTimelineView.test.tsx +106 -3
  738. package/src/conversation/conversationPresentation.ts +52 -1
  739. package/src/cursor-accounts/CursorAccountEditor.tsx +13 -13
  740. package/src/cursor-accounts/CursorAccountsAccessNotice.tsx +3 -3
  741. package/src/cursor-accounts/CursorAccountsConsole.tsx +35 -35
  742. package/src/cursor-accounts/MemberCoverageTable.tsx +41 -39
  743. package/src/cursor-accounts/MemberKeysPanel.tsx +17 -17
  744. package/src/cursor-accounts/__tests__/CursorAccountsConsole.test.tsx +4 -4
  745. package/src/cursor-accounts/badges.tsx +4 -4
  746. package/src/dashboard/DashboardFailedRuns.tsx +17 -17
  747. package/src/dashboard/DashboardKPICards.tsx +14 -13
  748. package/src/dashboard/OperationalDashboard.tsx +2 -2
  749. package/src/datastore/CollectionRecordsBrowser.tsx +42 -41
  750. package/src/datastore/CollectionSchemaView.tsx +43 -43
  751. package/src/datastore/DatastoreDetailView.tsx +18 -18
  752. package/src/datastore/DatastoreSyncReport.tsx +13 -13
  753. package/src/datastore/DeleteDatastoreDialog.tsx +21 -21
  754. package/src/datastore/FieldValueControl.tsx +7 -7
  755. package/src/datastore/RecordFilterBuilder.tsx +35 -35
  756. package/src/datastore/RecordFormPanel.tsx +35 -35
  757. package/src/dependency-graph/DependencyGraph.tsx +6 -6
  758. package/src/dependency-graph/DependencyTreeNode.tsx +21 -21
  759. package/src/empty-state/EmptyState.tsx +7 -7
  760. package/src/empty-state/useEmptyState.ts +1 -1
  761. package/src/environment/CreateEnvironmentForm.tsx +24 -24
  762. package/src/environment/EnvVarForm.tsx +40 -40
  763. package/src/environment/EnvironmentListPanel.tsx +19 -19
  764. package/src/environment/EnvironmentPicker.tsx +22 -22
  765. package/src/environment/EnvironmentVariableEditor.tsx +69 -58
  766. package/src/error/ErrorMessage.tsx +22 -22
  767. package/src/error/SecretFlowErrorGuide.tsx +19 -19
  768. package/src/execution/ApprovalCard.tsx +20 -22
  769. package/src/execution/ArtifactApplyButton.tsx +7 -7
  770. package/src/execution/ArtifactContentBody.tsx +11 -11
  771. package/src/execution/ArtifactContentRenderer.tsx +29 -29
  772. package/src/execution/ArtifactDocument.tsx +22 -22
  773. package/src/execution/ArtifactFileContent.tsx +6 -6
  774. package/src/execution/ArtifactPreviewModal.tsx +33 -33
  775. package/src/execution/ArtifactRowView.tsx +70 -50
  776. package/src/execution/ArtifactsWidget.tsx +4 -4
  777. package/src/execution/ContextGauge.tsx +24 -24
  778. package/src/execution/EmptyChangeNotice.tsx +1 -1
  779. package/src/execution/ExecutionPhaseBadge.tsx +12 -12
  780. package/src/execution/ExecutionProgress.tsx +2 -2
  781. package/src/execution/FileChangeProgressBar.tsx +9 -9
  782. package/src/execution/FileChangesView.tsx +12 -12
  783. package/src/execution/FilePathLink.tsx +51 -35
  784. package/src/execution/FileReviewAtoms.tsx +9 -9
  785. package/src/execution/FileReviewCard.tsx +37 -37
  786. package/src/execution/FileReviewDock.tsx +2 -2
  787. package/src/execution/FollowUpInput.tsx +9 -9
  788. package/src/execution/InteractionModeBadge.tsx +2 -2
  789. package/src/execution/McpToolDetail.tsx +33 -29
  790. package/src/execution/MessageAttachments.tsx +64 -48
  791. package/src/execution/MessageEntry.tsx +40 -33
  792. package/src/execution/MessageThread.tsx +28 -28
  793. package/src/execution/PlanArtifactCard.tsx +44 -37
  794. package/src/execution/PlanCompletionCard.tsx +10 -10
  795. package/src/execution/PlanDocumentMessage.tsx +6 -6
  796. package/src/execution/PlanStreamingCard.tsx +11 -11
  797. package/src/execution/ResultView.tsx +44 -44
  798. package/src/execution/SessionVariablesInput.tsx +38 -38
  799. package/src/execution/SetupProgress.tsx +5 -5
  800. package/src/execution/SubAgentSection.tsx +42 -42
  801. package/src/execution/SummarizationBadge.tsx +15 -15
  802. package/src/execution/SummarizationCard.tsx +11 -11
  803. package/src/execution/TerminalSession.tsx +7 -7
  804. package/src/execution/ThreadSkeleton.tsx +10 -10
  805. package/src/execution/TodoCard.tsx +11 -11
  806. package/src/execution/TodoList.tsx +13 -13
  807. package/src/execution/ToolArgsView.tsx +8 -8
  808. package/src/execution/ToolCallDetail.tsx +7 -10
  809. package/src/execution/ToolCallGroup.tsx +1 -1
  810. package/src/execution/ToolCallItem.tsx +45 -34
  811. package/src/execution/ToolRunGroup.tsx +16 -16
  812. package/src/execution/UsageWidget.tsx +12 -12
  813. package/src/execution/WriteBackCard.tsx +60 -51
  814. package/src/execution/WriteBacksWidget.tsx +4 -4
  815. package/src/execution/__tests__/ApprovalCard.test.tsx +12 -12
  816. package/src/execution/__tests__/ArtifactContentRenderer.test.tsx +3 -3
  817. package/src/execution/__tests__/ArtifactRow.test.tsx +6 -2
  818. package/src/execution/__tests__/ArtifactRowView.test.tsx +5 -2
  819. package/src/execution/__tests__/FileChangesView.test.tsx +2 -2
  820. package/src/execution/__tests__/FilePathLink.test.tsx +11 -7
  821. package/src/execution/__tests__/FileReviewCard.test.tsx +2 -1
  822. package/src/execution/__tests__/FileReviewDock.test.tsx +1 -1
  823. package/src/execution/__tests__/MessageEntry-attachments.test.tsx +5 -4
  824. package/src/execution/__tests__/MessageThread.test.tsx +7 -2
  825. package/src/execution/__tests__/TerminalSession.test.tsx +1 -1
  826. package/src/execution/__tests__/ToolCallDetail.test.tsx +1 -1
  827. package/src/execution/__tests__/ToolCallGroup.test.tsx +4 -4
  828. package/src/execution/__tests__/ToolCallItem.test.tsx +9 -9
  829. package/src/execution/__tests__/ToolRunGroup.test.tsx +6 -6
  830. package/src/execution/__tests__/WriteBackCard.test.tsx +4 -4
  831. package/src/execution/__tests__/artifact-row-tooltips.layout.test.tsx +115 -0
  832. package/src/execution/__tests__/message-entry.test.tsx +8 -8
  833. package/src/execution/__tests__/thread-memoization.test.ts +2 -2
  834. package/src/execution/__tests__/thread-skeleton.test.tsx +1 -1
  835. package/src/execution/__tests__/virtualized-thread.test.tsx +1 -1
  836. package/src/execution/artifact-row-item.ts +1 -1
  837. package/src/execution/tool-rendering-primitives.tsx +12 -12
  838. package/src/feedback/StigmerToaster.tsx +8 -5
  839. package/src/file-reference/FileReferenceChipList.tsx +31 -19
  840. package/src/file-reference/__tests__/FileReferenceChipList.test.tsx +5 -2
  841. package/src/github/GitHubRepoPicker.tsx +60 -60
  842. package/src/iam-policy/GrantAccessForm.tsx +11 -11
  843. package/src/iam-policy/OrgMembersPanel.tsx +70 -63
  844. package/src/iam-policy/PeopleWithAccess.tsx +23 -23
  845. package/src/iam-policy/PrincipalPicker.tsx +34 -34
  846. package/src/iam-policy/ProviderBadge.tsx +17 -10
  847. package/src/iam-policy/RoleSelector.tsx +9 -10
  848. package/src/iam-policy/SharePanel.tsx +5 -5
  849. package/src/identity-provider/CreateIdentityProviderForm.tsx +47 -47
  850. package/src/identity-provider/IdentityProviderDetailPanel.tsx +73 -73
  851. package/src/identity-provider/IdentityProviderListPanel.tsx +44 -36
  852. package/src/identity-provider/IdentityProviderWizard.tsx +72 -72
  853. package/src/identity-provider/ProviderPicker.tsx +17 -17
  854. package/src/identity-provider/SsoLoginPrompt.tsx +39 -39
  855. package/src/index.ts +1 -0
  856. package/src/inline-edit/InlineEditImage.tsx +26 -26
  857. package/src/inline-edit/InlineEditKeyValue.tsx +44 -44
  858. package/src/inline-edit/InlineEditResourceList.tsx +48 -48
  859. package/src/inline-edit/InlineEditSelect.tsx +22 -22
  860. package/src/inline-edit/InlineEditText.tsx +29 -29
  861. package/src/inline-edit/InlineEditTextarea.tsx +27 -27
  862. package/src/internal/ApprovalPeekBar.tsx +9 -9
  863. package/src/internal/BoundedContent.tsx +3 -3
  864. package/src/internal/CloudFeatureNotice.tsx +3 -3
  865. package/src/internal/DecisionButton.tsx +10 -10
  866. package/src/internal/InCardDecisionError.tsx +1 -1
  867. package/src/internal/JumpToLatestButton.tsx +9 -9
  868. package/src/internal/MermaidDiagram.tsx +5 -5
  869. package/src/internal/Pagination.tsx +5 -5
  870. package/src/internal/ResizableSplit.tsx +61 -20
  871. package/src/internal/RevealToggle.tsx +5 -5
  872. package/src/internal/ScrollFade.tsx +2 -2
  873. package/src/internal/VirtualizedThread.tsx +6 -6
  874. package/src/internal/__tests__/BoundedContent.test.tsx +1 -1
  875. package/src/internal/__tests__/DecisionButton.test.tsx +14 -14
  876. package/src/internal/__tests__/ResizableSplit.layout.test.tsx +136 -0
  877. package/src/internal/__tests__/ResizableSplit.test.tsx +49 -2
  878. package/src/internal/__tests__/ThreadCardShell.test.tsx +4 -4
  879. package/src/internal/__tests__/markdown-components.test.tsx +2 -2
  880. package/src/internal/__tests__/thread-animation.test.tsx +6 -6
  881. package/src/internal/__tests__/truncated-text.layout.test.tsx +68 -0
  882. package/src/internal/__tests__/truncated-text.test.tsx +33 -0
  883. package/src/internal/file-icons/index.tsx +2 -2
  884. package/src/internal/file-tree/FileTreeNode.tsx +9 -9
  885. package/src/internal/file-tree/__tests__/FileTreeNode-explorer.test.tsx +1 -1
  886. package/src/internal/form-primitives.tsx +18 -16
  887. package/src/internal/markdown-components.tsx +24 -24
  888. package/src/internal/menu.tsx +18 -18
  889. package/src/internal/scroll-area.tsx +6 -6
  890. package/src/internal/thread-card/ThreadCardShell.tsx +10 -10
  891. package/src/internal/thread-card/glyphs.tsx +3 -3
  892. package/src/internal/tooltip.tsx +9 -11
  893. package/src/internal/truncated-text.tsx +81 -0
  894. package/src/invitation/InvitationCreatedAlert.tsx +15 -15
  895. package/src/invitation/InvitationManager.tsx +96 -83
  896. package/src/invitation/InvitationRedemption.tsx +49 -49
  897. package/src/library/ResourceCountCard.tsx +7 -7
  898. package/src/library/ScopeToggle.tsx +21 -9
  899. package/src/library/VisibilityOptionRow.tsx +30 -30
  900. package/src/library/VisibilitySelector.tsx +38 -31
  901. package/src/library/__tests__/VisibilitySelector.test.tsx +0 -6
  902. package/src/manifest/ApplyManifestDialog.tsx +36 -36
  903. package/src/manifest/EditResourceYamlDialog.tsx +32 -32
  904. package/src/manifest/RedactedSecretsNotice.tsx +2 -2
  905. package/src/manifest/YamlEditor.tsx +1 -1
  906. package/src/mcp-server/McpServerConfigPanel.tsx +145 -103
  907. package/src/mcp-server/McpServerConnectDialog.tsx +120 -57
  908. package/src/mcp-server/McpServerDetailView.tsx +341 -256
  909. package/src/mcp-server/McpServerPicker.tsx +149 -57
  910. package/src/mcp-server/McpToolSelector.tsx +37 -32
  911. package/src/mcp-server/OAuthAppForm.tsx +32 -32
  912. package/src/mcp-server/OAuthCallbackHandler.tsx +11 -11
  913. package/src/mcp-server/OAuthRequiredNotice.tsx +3 -3
  914. package/src/mcp-server/StdioSandboxNotice.tsx +3 -3
  915. package/src/mcp-server/VendorApprovalBlockedNotice.tsx +221 -0
  916. package/src/mcp-server/__tests__/McpServerDetailView.test.tsx +162 -7
  917. package/src/mcp-server/__tests__/McpServerPicker.test.tsx +504 -0
  918. package/src/mcp-server/__tests__/VendorApprovalBlocked.surfaces.test.tsx +321 -0
  919. package/src/mcp-server/__tests__/VendorApprovalBlockedNotice.test.tsx +154 -0
  920. package/src/mcp-server/__tests__/useMcpServerOAuthConnect.test.tsx +159 -0
  921. package/src/mcp-server/index.ts +4 -1
  922. package/src/mcp-server/mcpServerSetupReducer.ts +24 -0
  923. package/src/mcp-server/steps/EnvironmentAuthStep.tsx +71 -71
  924. package/src/mcp-server/steps/IdentityTransportStep.tsx +94 -94
  925. package/src/mcp-server/steps/ReviewStep.tsx +17 -17
  926. package/src/mcp-server/useMcpServerOAuthConnect.ts +65 -10
  927. package/src/mcp-server/useMcpServerSetup.ts +9 -0
  928. package/src/models/HarnessSelector.tsx +8 -8
  929. package/src/models/ModelSelector.tsx +58 -58
  930. package/src/models/__tests__/ModelSelector-serviceTier.test.tsx +2 -7
  931. package/src/oauth-app/CreateOAuthAppForm.tsx +28 -28
  932. package/src/oauth-app/OAuthAppDetailPanel.tsx +51 -51
  933. package/src/oauth-app/OAuthAppListPanel.tsx +25 -17
  934. package/src/organization/CreateOrganizationForm.tsx +37 -37
  935. package/src/organization/OrgProfilePanel.tsx +65 -65
  936. package/src/organization/OrgSwitcher.tsx +33 -33
  937. package/src/platform-client/CreatePlatformClientForm.tsx +59 -59
  938. package/src/platform-client/PlatformClientDetailPanel.tsx +107 -107
  939. package/src/platform-client/PlatformClientListPanel.tsx +70 -53
  940. package/src/platform-client/PlatformClientSecretAlert.tsx +18 -18
  941. package/src/portal-container.ts +36 -9
  942. package/src/pricing-governance/BaselineEditor.tsx +49 -29
  943. package/src/pricing-governance/ModelCatalogPanel.tsx +35 -31
  944. package/src/pricing-governance/ModelGovernanceDetail.tsx +35 -35
  945. package/src/pricing-governance/OperatorAccessNotice.tsx +3 -3
  946. package/src/pricing-governance/PricingGovernanceConsole.tsx +38 -34
  947. package/src/pricing-governance/PricingGovernancePanel.tsx +31 -22
  948. package/src/pricing-governance/RetireConfirm.tsx +7 -7
  949. package/src/pricing-governance/__tests__/ModelCatalogPanel.test.tsx +37 -0
  950. package/src/pricing-governance/governance-primitives.tsx +12 -12
  951. package/src/resource-creation/CreationPicker.tsx +23 -23
  952. package/src/resource-creation/StepIndicator.tsx +17 -17
  953. package/src/resource-creation/TemplateCard.tsx +23 -23
  954. package/src/resource-creation/TemplateGallery.tsx +13 -13
  955. package/src/resource-creation/WizardNav.tsx +19 -19
  956. package/src/resource-creation/WizardShell.tsx +7 -7
  957. package/src/resource-detail/ConfirmDialog.tsx +16 -16
  958. package/src/resource-detail/ResourceActionBar.tsx +6 -6
  959. package/src/resource-detail/ResourceDetailShell.tsx +14 -14
  960. package/src/resource-detail/Section.tsx +10 -10
  961. package/src/resource-workbench/components/BulkActionBar.tsx +13 -13
  962. package/src/resource-workbench/components/ColumnHeader.tsx +9 -9
  963. package/src/resource-workbench/components/FilterBar.tsx +9 -9
  964. package/src/resource-workbench/components/ResourceAvatar.tsx +19 -19
  965. package/src/resource-workbench/components/ResourceCards.tsx +8 -8
  966. package/src/resource-workbench/components/ResourceInspector.tsx +8 -8
  967. package/src/resource-workbench/components/ResourceList.tsx +7 -7
  968. package/src/resource-workbench/components/ResourceTable.tsx +12 -12
  969. package/src/resource-workbench/components/ResourceWorkbench.tsx +42 -42
  970. package/src/resource-workbench/components/SelectionCheckbox.tsx +2 -2
  971. package/src/resource-workbench/components/StatusBadge.tsx +23 -19
  972. package/src/resource-workbench/components/ViewSwitcher.tsx +7 -7
  973. package/src/schedule/CadenceField.tsx +68 -57
  974. package/src/schedule/ScheduleDetailView.tsx +105 -105
  975. package/src/schedule/ScheduleForm.tsx +49 -49
  976. package/src/schedule/ScheduleRowActions.tsx +4 -4
  977. package/src/schedule/ScheduleRunsTable.tsx +64 -52
  978. package/src/schedule/TimeZoneField.tsx +12 -12
  979. package/src/schedule/__tests__/cadence-tooltips.layout.test.tsx +86 -0
  980. package/src/schedule/__tests__/scheduleCreation.test.tsx +0 -7
  981. package/src/schedule/scheduleColumns.tsx +7 -7
  982. package/src/session/NewSessionViewer.tsx +5 -5
  983. package/src/session/PlanEditor.tsx +46 -45
  984. package/src/session/PlanStreamingDocument.tsx +8 -8
  985. package/src/session/SessionViewer.tsx +48 -48
  986. package/src/session/SessionViewerLayout.tsx +14 -11
  987. package/src/session/__tests__/NewSessionViewer.test.tsx +4 -4
  988. package/src/session/__tests__/PlanEditor.test.tsx +2 -2
  989. package/src/session/__tests__/SessionViewerLayout.test.tsx +20 -8
  990. package/src/session/facets/ArtifactsTab.tsx +3 -3
  991. package/src/session/facets/ChangesTab.tsx +5 -5
  992. package/src/session/facets/SetupTab.tsx +26 -26
  993. package/src/session/facets/UsageTab.tsx +2 -2
  994. package/src/settings/ApiKeysSection.tsx +6 -6
  995. package/src/settings/ChannelAppsSection.tsx +6 -6
  996. package/src/settings/EnvironmentsSection.tsx +15 -15
  997. package/src/settings/IdentityProvidersSection.tsx +7 -7
  998. package/src/settings/InvitationsSection.tsx +4 -4
  999. package/src/settings/MembersSection.tsx +5 -5
  1000. package/src/settings/OAuthAppsSection.tsx +6 -6
  1001. package/src/settings/OrgProfileSection.tsx +3 -3
  1002. package/src/settings/PlatformClientsSection.tsx +7 -7
  1003. package/src/settings/UsageSection.tsx +3 -3
  1004. package/src/sharing/AgentShareList.tsx +62 -56
  1005. package/src/sharing/ShareAgentDialog.tsx +153 -154
  1006. package/src/sharing/SharedAgentChat.tsx +24 -24
  1007. package/src/sharing/__tests__/AgentShareList.test.tsx +4 -11
  1008. package/src/sidebar/SettingsSidebar.tsx +7 -7
  1009. package/src/sidebar/WorkspaceSidebar.tsx +25 -25
  1010. package/src/sidebar/__tests__/SettingsSidebar.test.tsx +3 -7
  1011. package/src/sidebar/__tests__/WorkspaceSidebar.test.tsx +4 -11
  1012. package/src/sidebar/chrome.tsx +16 -16
  1013. package/src/skill/SkillDetailView.tsx +75 -64
  1014. package/src/skill/SkillDiffDialog.tsx +25 -25
  1015. package/src/skill/SkillFileBrowser.tsx +22 -22
  1016. package/src/skill/SkillPicker.tsx +28 -28
  1017. package/src/skill/SkillUploader.tsx +67 -67
  1018. package/src/styles.css +136 -15
  1019. package/src/switch/Switch.tsx +9 -9
  1020. package/src/switch/__tests__/Switch.test.tsx +3 -3
  1021. package/src/tabs/Tabs.tsx +11 -11
  1022. package/src/usage/AgentBreakdownList.tsx +18 -18
  1023. package/src/usage/CreditRunwayIndicator.tsx +4 -4
  1024. package/src/usage/ExportButton.tsx +8 -8
  1025. package/src/usage/HarnessSplitCard.tsx +14 -14
  1026. package/src/usage/OrgUsagePanel.tsx +71 -71
  1027. package/src/user/UserMenu.tsx +13 -13
  1028. package/src/version-history/DiffFileList.tsx +13 -13
  1029. package/src/version-history/DiffSummary.tsx +3 -3
  1030. package/src/version-history/DiffViewer.tsx +14 -14
  1031. package/src/version-history/MultiFileDiffView.tsx +6 -6
  1032. package/src/version-history/UnifiedDiffView.tsx +4 -4
  1033. package/src/version-history/VersionTimeline.tsx +21 -21
  1034. package/src/version-history/VersionTimelineEntry.tsx +48 -39
  1035. package/src/version-history/__tests__/UnifiedDiffView.test.tsx +2 -2
  1036. package/src/workflow/ApprovalFormBuilder.tsx +48 -48
  1037. package/src/workflow/BranchConditionBuilder.tsx +21 -21
  1038. package/src/workflow/CanvasContextMenu.tsx +10 -10
  1039. package/src/workflow/CanvasTransitionEdge.tsx +36 -29
  1040. package/src/workflow/CostByWorkflowChart.tsx +18 -18
  1041. package/src/workflow/ExecutionActiveTaskIndicator.tsx +76 -61
  1042. package/src/workflow/ExecutionSummaryWidget.tsx +29 -29
  1043. package/src/workflow/ExecutionTrendChart.tsx +25 -25
  1044. package/src/workflow/FailedRunsWidget.tsx +14 -14
  1045. package/src/workflow/PendingApprovalsWidget.tsx +19 -19
  1046. package/src/workflow/TaskConfigForm.tsx +32 -32
  1047. package/src/workflow/TaskPickerPopover.tsx +22 -23
  1048. package/src/workflow/ViewYamlDialog.tsx +12 -12
  1049. package/src/workflow/WorkflowAgentCallTranscript.tsx +15 -15
  1050. package/src/workflow/WorkflowApprovalList.tsx +3 -3
  1051. package/src/workflow/WorkflowArchitectDialog.tsx +80 -80
  1052. package/src/workflow/WorkflowArtifactDocument.tsx +17 -17
  1053. package/src/workflow/WorkflowCanvasEditor.tsx +108 -77
  1054. package/src/workflow/WorkflowCanvasInner.tsx +3 -3
  1055. package/src/workflow/WorkflowCodePreviewGraph.tsx +2 -2
  1056. package/src/workflow/WorkflowDashboard.tsx +2 -2
  1057. package/src/workflow/WorkflowDetailView.tsx +50 -50
  1058. package/src/workflow/WorkflowDiffGraph.tsx +5 -5
  1059. package/src/workflow/WorkflowEditorView.tsx +58 -58
  1060. package/src/workflow/WorkflowExecutionGraph.tsx +15 -15
  1061. package/src/workflow/WorkflowExecutionHeader.tsx +14 -14
  1062. package/src/workflow/WorkflowExecutionPhaseBadge.tsx +11 -11
  1063. package/src/workflow/WorkflowExecutionViewer.tsx +39 -39
  1064. package/src/workflow/WorkflowExplainDialog.tsx +30 -30
  1065. package/src/workflow/WorkflowFileReviewList.tsx +3 -3
  1066. package/src/workflow/WorkflowGraphFullscreenDialog.tsx +11 -11
  1067. package/src/workflow/WorkflowNode.tsx +14 -7
  1068. package/src/workflow/WorkflowNodePopover.tsx +15 -15
  1069. package/src/workflow/WorkflowOverviewGraph.tsx +9 -9
  1070. package/src/workflow/WorkflowOverviewSummary.tsx +12 -12
  1071. package/src/workflow/WorkflowRefinePanel.tsx +49 -49
  1072. package/src/workflow/WorkflowRepairCard.tsx +53 -53
  1073. package/src/workflow/WorkflowRunDialog.tsx +20 -20
  1074. package/src/workflow/WorkflowRunForm.tsx +19 -19
  1075. package/src/workflow/WorkflowTaskApprovalCard.tsx +19 -19
  1076. package/src/workflow/WorkflowTaskApprovalSummary.tsx +39 -32
  1077. package/src/workflow/WorkflowTaskList.tsx +13 -13
  1078. package/src/workflow/WorkflowTaskPalette.tsx +23 -23
  1079. package/src/workflow/WorkflowTaskReviewGate.tsx +10 -10
  1080. package/src/workflow/WorkflowVersionBadge.tsx +35 -20
  1081. package/src/workflow/WorkflowVersionDiffViewer.tsx +24 -24
  1082. package/src/workflow/WorkflowVersionTimeline.tsx +39 -38
  1083. package/src/workflow/WorkflowVersionsTab.tsx +7 -7
  1084. package/src/workflow/__tests__/WorkflowAgentCallTranscript.test.tsx +2 -2
  1085. package/src/workflow/__tests__/WorkflowExecutionViewer.reconciliation.test.tsx +6 -6
  1086. package/src/workflow/__tests__/WorkflowTaskApprovalCard.test.tsx +15 -15
  1087. package/src/workflow/__tests__/WorkflowTaskApprovalSummary.test.tsx +4 -2
  1088. package/src/workflow/__tests__/node-shell.test.ts +2 -0
  1089. package/src/workflow/__tests__/structured-data-viewer.test.tsx +5 -2
  1090. package/src/workflow/__tests__/task-type-visual-registry.test.ts +2 -0
  1091. package/src/workflow/diff/DiffSummaryBar.tsx +5 -5
  1092. package/src/workflow/execution-comparison/ComparisonSummaryCards.tsx +11 -11
  1093. package/src/workflow/execution-comparison/ExecutionComparisonPicker.tsx +20 -20
  1094. package/src/workflow/execution-comparison/ExecutionComparisonView.tsx +20 -18
  1095. package/src/workflow/execution-comparison/TaskComparisonTable.tsx +55 -48
  1096. package/src/workflow/execution-history/ExecutionFilterBar.tsx +12 -12
  1097. package/src/workflow/execution-history/ExecutionHistoryTable.tsx +47 -38
  1098. package/src/workflow/execution-history/FailureAnalysisPanel.tsx +18 -18
  1099. package/src/workflow/execution-history/HealthMetricsStrip.tsx +16 -16
  1100. package/src/workflow/execution-history/WorkflowExecutionHistory.tsx +1 -1
  1101. package/src/workflow/facets/WorkflowArtifactsTab.tsx +3 -3
  1102. package/src/workflow/facets/WorkflowChangesTab.tsx +8 -8
  1103. package/src/workflow/facets/WorkflowUsageTab.tsx +24 -24
  1104. package/src/workflow/inspector/EdgeInspector.tsx +14 -14
  1105. package/src/workflow/inspector/InspectorHeader.tsx +36 -27
  1106. package/src/workflow/inspector/InspectorShell.tsx +6 -6
  1107. package/src/workflow/inspector/NestedTaskList.tsx +28 -21
  1108. package/src/workflow/inspector/SentinelInspector.tsx +3 -3
  1109. package/src/workflow/inspector/WorkflowSummaryPanel.tsx +37 -35
  1110. package/src/workflow/inspector/forms/AgentCallForm.tsx +48 -48
  1111. package/src/workflow/inspector/forms/HttpCallForm.tsx +22 -22
  1112. package/src/workflow/inspector/tabs/AdvancedTab.tsx +12 -12
  1113. package/src/workflow/inspector/tabs/BranchesTab.tsx +94 -64
  1114. package/src/workflow/inspector/tabs/CatchTab.tsx +23 -23
  1115. package/src/workflow/inspector/tabs/ConfigureTab.tsx +3 -3
  1116. package/src/workflow/inspector/tabs/DataTab.tsx +6 -6
  1117. package/src/workflow/inspector/tabs/DocsTab.tsx +11 -11
  1118. package/src/workflow/inspector/tabs/IterationTab.tsx +25 -25
  1119. package/src/workflow/inspector/tabs/RuntimeTab.tsx +16 -16
  1120. package/src/workflow/instance/CreateWorkflowInstanceDialog.tsx +35 -35
  1121. package/src/workflow/instance/RunVisibilityControl.tsx +10 -10
  1122. package/src/workflow/instance/WorkflowInstanceDetailPanel.tsx +45 -45
  1123. package/src/workflow/instance/WorkflowInstanceList.tsx +36 -37
  1124. package/src/workflow/instance/__tests__/WorkflowInstanceList.test.tsx +5 -10
  1125. package/src/workflow/node-shell/BranchBadge.tsx +9 -9
  1126. package/src/workflow/node-shell/DiffBadge.tsx +21 -14
  1127. package/src/workflow/node-shell/ExecutionBadge.tsx +79 -52
  1128. package/src/workflow/node-shell/NodeActions.tsx +132 -98
  1129. package/src/workflow/node-shell/NodeContent.tsx +9 -9
  1130. package/src/workflow/node-shell/NodeHandles.tsx +5 -5
  1131. package/src/workflow/node-shell/NodeShell.tsx +27 -27
  1132. package/src/workflow/picker/BranchAddPopover.tsx +16 -16
  1133. package/src/workflow/task-detail/StructuredDataViewer.tsx +37 -35
  1134. package/src/workflow/templates/WorkflowTemplateCard.tsx +32 -32
  1135. package/src/workflow/templates/WorkflowTemplateGallery.tsx +13 -13
  1136. package/src/workflow/templates/WorkflowTemplatePreview.tsx +29 -29
  1137. package/src/workflow/thread/WorkflowTaskThread.tsx +36 -36
  1138. package/src/workspace/EditorTabs.tsx +102 -85
  1139. package/src/workspace/ExplorerTree.tsx +57 -40
  1140. package/src/workspace/FileViewer.tsx +48 -40
  1141. package/src/workspace/PanelChip.tsx +32 -23
  1142. package/src/workspace/WorkspaceContentSearch.tsx +26 -26
  1143. package/src/workspace/WorkspaceEditor.tsx +63 -51
  1144. package/src/workspace/WorkspaceFileSearch.tsx +22 -22
  1145. package/src/workspace/WorkspaceSummary.tsx +25 -16
  1146. package/src/workspace/WorkspaceSurface.tsx +120 -95
  1147. package/src/workspace/__tests__/EditorTabs.test.tsx +5 -2
  1148. package/src/workspace/__tests__/FileViewer.test.tsx +1 -1
  1149. package/src/workspace/__tests__/WorkspaceContentSearch.test.tsx +5 -5
  1150. package/src/workspace/__tests__/WorkspaceFileSearch.test.tsx +3 -3
  1151. package/src/workspace/__tests__/WorkspaceSurface.test.tsx +11 -8
  1152. package/styles.css +1 -1
  1153. package/switch/Switch.js +2 -2
  1154. package/switch/Switch.js.map +1 -1
  1155. package/tabs/Tabs.js +7 -7
  1156. package/tabs/Tabs.js.map +1 -1
  1157. package/usage/AgentBreakdownList.js +4 -4
  1158. package/usage/AgentBreakdownList.js.map +1 -1
  1159. package/usage/CreditRunwayIndicator.js +1 -1
  1160. package/usage/CreditRunwayIndicator.js.map +1 -1
  1161. package/usage/ExportButton.js +2 -2
  1162. package/usage/ExportButton.js.map +1 -1
  1163. package/usage/HarnessSplitCard.js +6 -6
  1164. package/usage/HarnessSplitCard.js.map +1 -1
  1165. package/usage/OrgUsagePanel.js +15 -15
  1166. package/usage/OrgUsagePanel.js.map +1 -1
  1167. package/user/UserMenu.js +3 -3
  1168. package/user/UserMenu.js.map +1 -1
  1169. package/version-history/DiffFileList.js +8 -8
  1170. package/version-history/DiffFileList.js.map +1 -1
  1171. package/version-history/DiffSummary.js +1 -1
  1172. package/version-history/DiffSummary.js.map +1 -1
  1173. package/version-history/DiffViewer.js +11 -11
  1174. package/version-history/DiffViewer.js.map +1 -1
  1175. package/version-history/MultiFileDiffView.js +2 -2
  1176. package/version-history/MultiFileDiffView.js.map +1 -1
  1177. package/version-history/UnifiedDiffView.js +1 -1
  1178. package/version-history/UnifiedDiffView.js.map +1 -1
  1179. package/version-history/VersionTimeline.js +4 -4
  1180. package/version-history/VersionTimeline.js.map +1 -1
  1181. package/version-history/VersionTimelineEntry.d.ts.map +1 -1
  1182. package/version-history/VersionTimelineEntry.js +10 -9
  1183. package/version-history/VersionTimelineEntry.js.map +1 -1
  1184. package/workflow/ApprovalFormBuilder.js +15 -15
  1185. package/workflow/ApprovalFormBuilder.js.map +1 -1
  1186. package/workflow/BranchConditionBuilder.js +8 -8
  1187. package/workflow/BranchConditionBuilder.js.map +1 -1
  1188. package/workflow/CanvasContextMenu.js +6 -6
  1189. package/workflow/CanvasContextMenu.js.map +1 -1
  1190. package/workflow/CanvasTransitionEdge.d.ts.map +1 -1
  1191. package/workflow/CanvasTransitionEdge.js +13 -12
  1192. package/workflow/CanvasTransitionEdge.js.map +1 -1
  1193. package/workflow/CostByWorkflowChart.js +4 -4
  1194. package/workflow/CostByWorkflowChart.js.map +1 -1
  1195. package/workflow/ExecutionActiveTaskIndicator.d.ts.map +1 -1
  1196. package/workflow/ExecutionActiveTaskIndicator.js +12 -11
  1197. package/workflow/ExecutionActiveTaskIndicator.js.map +1 -1
  1198. package/workflow/ExecutionSummaryWidget.js +15 -15
  1199. package/workflow/ExecutionSummaryWidget.js.map +1 -1
  1200. package/workflow/ExecutionTrendChart.js +10 -10
  1201. package/workflow/ExecutionTrendChart.js.map +1 -1
  1202. package/workflow/FailedRunsWidget.js +3 -3
  1203. package/workflow/FailedRunsWidget.js.map +1 -1
  1204. package/workflow/PendingApprovalsWidget.js +3 -3
  1205. package/workflow/PendingApprovalsWidget.js.map +1 -1
  1206. package/workflow/TaskConfigForm.js +12 -12
  1207. package/workflow/TaskConfigForm.js.map +1 -1
  1208. package/workflow/TaskPickerPopover.js +5 -5
  1209. package/workflow/TaskPickerPopover.js.map +1 -1
  1210. package/workflow/ViewYamlDialog.js +2 -2
  1211. package/workflow/ViewYamlDialog.js.map +1 -1
  1212. package/workflow/WorkflowAgentCallTranscript.js +2 -2
  1213. package/workflow/WorkflowAgentCallTranscript.js.map +1 -1
  1214. package/workflow/WorkflowApprovalList.js +2 -2
  1215. package/workflow/WorkflowApprovalList.js.map +1 -1
  1216. package/workflow/WorkflowArchitectDialog.js +9 -9
  1217. package/workflow/WorkflowArchitectDialog.js.map +1 -1
  1218. package/workflow/WorkflowArtifactDocument.js +7 -7
  1219. package/workflow/WorkflowArtifactDocument.js.map +1 -1
  1220. package/workflow/WorkflowCanvasEditor.d.ts.map +1 -1
  1221. package/workflow/WorkflowCanvasEditor.js +13 -6
  1222. package/workflow/WorkflowCanvasEditor.js.map +1 -1
  1223. package/workflow/WorkflowCanvasInner.js +1 -1
  1224. package/workflow/WorkflowCanvasInner.js.map +1 -1
  1225. package/workflow/WorkflowCodePreviewGraph.js +2 -2
  1226. package/workflow/WorkflowCodePreviewGraph.js.map +1 -1
  1227. package/workflow/WorkflowDashboard.js +1 -1
  1228. package/workflow/WorkflowDashboard.js.map +1 -1
  1229. package/workflow/WorkflowDetailView.js +15 -15
  1230. package/workflow/WorkflowDetailView.js.map +1 -1
  1231. package/workflow/WorkflowDiffGraph.js +3 -3
  1232. package/workflow/WorkflowDiffGraph.js.map +1 -1
  1233. package/workflow/WorkflowEditorView.js +13 -13
  1234. package/workflow/WorkflowEditorView.js.map +1 -1
  1235. package/workflow/WorkflowExecutionGraph.js +6 -6
  1236. package/workflow/WorkflowExecutionGraph.js.map +1 -1
  1237. package/workflow/WorkflowExecutionHeader.js +4 -4
  1238. package/workflow/WorkflowExecutionHeader.js.map +1 -1
  1239. package/workflow/WorkflowExecutionPhaseBadge.js +9 -9
  1240. package/workflow/WorkflowExecutionPhaseBadge.js.map +1 -1
  1241. package/workflow/WorkflowExecutionViewer.js +16 -16
  1242. package/workflow/WorkflowExecutionViewer.js.map +1 -1
  1243. package/workflow/WorkflowExplainDialog.js +2 -2
  1244. package/workflow/WorkflowExplainDialog.js.map +1 -1
  1245. package/workflow/WorkflowFileReviewList.js +2 -2
  1246. package/workflow/WorkflowFileReviewList.js.map +1 -1
  1247. package/workflow/WorkflowGraphFullscreenDialog.js +1 -1
  1248. package/workflow/WorkflowGraphFullscreenDialog.js.map +1 -1
  1249. package/workflow/WorkflowNode.d.ts.map +1 -1
  1250. package/workflow/WorkflowNode.js +2 -1
  1251. package/workflow/WorkflowNode.js.map +1 -1
  1252. package/workflow/WorkflowNodePopover.js +2 -2
  1253. package/workflow/WorkflowNodePopover.js.map +1 -1
  1254. package/workflow/WorkflowOverviewGraph.js +4 -4
  1255. package/workflow/WorkflowOverviewGraph.js.map +1 -1
  1256. package/workflow/WorkflowOverviewSummary.js +8 -8
  1257. package/workflow/WorkflowOverviewSummary.js.map +1 -1
  1258. package/workflow/WorkflowRefinePanel.js +5 -5
  1259. package/workflow/WorkflowRefinePanel.js.map +1 -1
  1260. package/workflow/WorkflowRepairCard.js +5 -5
  1261. package/workflow/WorkflowRepairCard.js.map +1 -1
  1262. package/workflow/WorkflowRunDialog.js +2 -2
  1263. package/workflow/WorkflowRunDialog.js.map +1 -1
  1264. package/workflow/WorkflowRunForm.js +10 -10
  1265. package/workflow/WorkflowRunForm.js.map +1 -1
  1266. package/workflow/WorkflowTaskApprovalCard.js +1 -1
  1267. package/workflow/WorkflowTaskApprovalCard.js.map +1 -1
  1268. package/workflow/WorkflowTaskApprovalSummary.d.ts.map +1 -1
  1269. package/workflow/WorkflowTaskApprovalSummary.js +11 -9
  1270. package/workflow/WorkflowTaskApprovalSummary.js.map +1 -1
  1271. package/workflow/WorkflowTaskList.js +5 -5
  1272. package/workflow/WorkflowTaskList.js.map +1 -1
  1273. package/workflow/WorkflowTaskPalette.js +5 -5
  1274. package/workflow/WorkflowTaskPalette.js.map +1 -1
  1275. package/workflow/WorkflowTaskReviewGate.js +3 -3
  1276. package/workflow/WorkflowTaskReviewGate.js.map +1 -1
  1277. package/workflow/WorkflowVersionBadge.d.ts.map +1 -1
  1278. package/workflow/WorkflowVersionBadge.js +2 -1
  1279. package/workflow/WorkflowVersionBadge.js.map +1 -1
  1280. package/workflow/WorkflowVersionDiffViewer.js +12 -12
  1281. package/workflow/WorkflowVersionDiffViewer.js.map +1 -1
  1282. package/workflow/WorkflowVersionTimeline.d.ts.map +1 -1
  1283. package/workflow/WorkflowVersionTimeline.js +8 -7
  1284. package/workflow/WorkflowVersionTimeline.js.map +1 -1
  1285. package/workflow/WorkflowVersionsTab.js +1 -1
  1286. package/workflow/WorkflowVersionsTab.js.map +1 -1
  1287. package/workflow/diff/DiffSummaryBar.js +2 -2
  1288. package/workflow/diff/DiffSummaryBar.js.map +1 -1
  1289. package/workflow/execution-comparison/ComparisonSummaryCards.js +1 -1
  1290. package/workflow/execution-comparison/ComparisonSummaryCards.js.map +1 -1
  1291. package/workflow/execution-comparison/ExecutionComparisonPicker.js +7 -7
  1292. package/workflow/execution-comparison/ExecutionComparisonPicker.js.map +1 -1
  1293. package/workflow/execution-comparison/ExecutionComparisonView.d.ts.map +1 -1
  1294. package/workflow/execution-comparison/ExecutionComparisonView.js +5 -4
  1295. package/workflow/execution-comparison/ExecutionComparisonView.js.map +1 -1
  1296. package/workflow/execution-comparison/TaskComparisonTable.d.ts.map +1 -1
  1297. package/workflow/execution-comparison/TaskComparisonTable.js +23 -22
  1298. package/workflow/execution-comparison/TaskComparisonTable.js.map +1 -1
  1299. package/workflow/execution-history/ExecutionFilterBar.js +5 -5
  1300. package/workflow/execution-history/ExecutionFilterBar.js.map +1 -1
  1301. package/workflow/execution-history/ExecutionHistoryTable.d.ts.map +1 -1
  1302. package/workflow/execution-history/ExecutionHistoryTable.js +15 -13
  1303. package/workflow/execution-history/ExecutionHistoryTable.js.map +1 -1
  1304. package/workflow/execution-history/FailureAnalysisPanel.js +4 -4
  1305. package/workflow/execution-history/FailureAnalysisPanel.js.map +1 -1
  1306. package/workflow/execution-history/HealthMetricsStrip.js +8 -8
  1307. package/workflow/execution-history/HealthMetricsStrip.js.map +1 -1
  1308. package/workflow/execution-history/WorkflowExecutionHistory.js +1 -1
  1309. package/workflow/execution-history/WorkflowExecutionHistory.js.map +1 -1
  1310. package/workflow/facets/WorkflowArtifactsTab.js +2 -2
  1311. package/workflow/facets/WorkflowArtifactsTab.js.map +1 -1
  1312. package/workflow/facets/WorkflowChangesTab.js +5 -5
  1313. package/workflow/facets/WorkflowChangesTab.js.map +1 -1
  1314. package/workflow/facets/WorkflowUsageTab.js +6 -6
  1315. package/workflow/facets/WorkflowUsageTab.js.map +1 -1
  1316. package/workflow/inspector/EdgeInspector.js +1 -1
  1317. package/workflow/inspector/EdgeInspector.js.map +1 -1
  1318. package/workflow/inspector/InspectorHeader.d.ts.map +1 -1
  1319. package/workflow/inspector/InspectorHeader.js +9 -7
  1320. package/workflow/inspector/InspectorHeader.js.map +1 -1
  1321. package/workflow/inspector/InspectorShell.js +2 -2
  1322. package/workflow/inspector/InspectorShell.js.map +1 -1
  1323. package/workflow/inspector/NestedTaskList.d.ts.map +1 -1
  1324. package/workflow/inspector/NestedTaskList.js +3 -2
  1325. package/workflow/inspector/NestedTaskList.js.map +1 -1
  1326. package/workflow/inspector/SentinelInspector.js +1 -1
  1327. package/workflow/inspector/SentinelInspector.js.map +1 -1
  1328. package/workflow/inspector/WorkflowSummaryPanel.d.ts.map +1 -1
  1329. package/workflow/inspector/WorkflowSummaryPanel.js +6 -5
  1330. package/workflow/inspector/WorkflowSummaryPanel.js.map +1 -1
  1331. package/workflow/inspector/forms/AgentCallForm.js +9 -9
  1332. package/workflow/inspector/forms/AgentCallForm.js.map +1 -1
  1333. package/workflow/inspector/forms/HttpCallForm.js +4 -4
  1334. package/workflow/inspector/forms/HttpCallForm.js.map +1 -1
  1335. package/workflow/inspector/tabs/AdvancedTab.js +2 -2
  1336. package/workflow/inspector/tabs/AdvancedTab.js.map +1 -1
  1337. package/workflow/inspector/tabs/BranchesTab.d.ts.map +1 -1
  1338. package/workflow/inspector/tabs/BranchesTab.js +9 -6
  1339. package/workflow/inspector/tabs/BranchesTab.js.map +1 -1
  1340. package/workflow/inspector/tabs/CatchTab.js +2 -2
  1341. package/workflow/inspector/tabs/CatchTab.js.map +1 -1
  1342. package/workflow/inspector/tabs/ConfigureTab.js +3 -3
  1343. package/workflow/inspector/tabs/ConfigureTab.js.map +1 -1
  1344. package/workflow/inspector/tabs/DataTab.js +1 -1
  1345. package/workflow/inspector/tabs/DataTab.js.map +1 -1
  1346. package/workflow/inspector/tabs/DocsTab.js +1 -1
  1347. package/workflow/inspector/tabs/DocsTab.js.map +1 -1
  1348. package/workflow/inspector/tabs/IterationTab.js +3 -3
  1349. package/workflow/inspector/tabs/IterationTab.js.map +1 -1
  1350. package/workflow/inspector/tabs/RuntimeTab.js +9 -9
  1351. package/workflow/inspector/tabs/RuntimeTab.js.map +1 -1
  1352. package/workflow/instance/CreateWorkflowInstanceDialog.js +1 -1
  1353. package/workflow/instance/CreateWorkflowInstanceDialog.js.map +1 -1
  1354. package/workflow/instance/RunVisibilityControl.js +5 -5
  1355. package/workflow/instance/RunVisibilityControl.js.map +1 -1
  1356. package/workflow/instance/WorkflowInstanceDetailPanel.js +2 -2
  1357. package/workflow/instance/WorkflowInstanceDetailPanel.js.map +1 -1
  1358. package/workflow/instance/WorkflowInstanceList.d.ts.map +1 -1
  1359. package/workflow/instance/WorkflowInstanceList.js +5 -4
  1360. package/workflow/instance/WorkflowInstanceList.js.map +1 -1
  1361. package/workflow/node-shell/BranchBadge.js +3 -3
  1362. package/workflow/node-shell/BranchBadge.js.map +1 -1
  1363. package/workflow/node-shell/DiffBadge.d.ts.map +1 -1
  1364. package/workflow/node-shell/DiffBadge.js +6 -5
  1365. package/workflow/node-shell/DiffBadge.js.map +1 -1
  1366. package/workflow/node-shell/ExecutionBadge.d.ts.map +1 -1
  1367. package/workflow/node-shell/ExecutionBadge.js +11 -10
  1368. package/workflow/node-shell/ExecutionBadge.js.map +1 -1
  1369. package/workflow/node-shell/NodeActions.d.ts.map +1 -1
  1370. package/workflow/node-shell/NodeActions.js +14 -13
  1371. package/workflow/node-shell/NodeActions.js.map +1 -1
  1372. package/workflow/node-shell/NodeContent.js +5 -5
  1373. package/workflow/node-shell/NodeContent.js.map +1 -1
  1374. package/workflow/node-shell/NodeHandles.js +5 -5
  1375. package/workflow/node-shell/NodeHandles.js.map +1 -1
  1376. package/workflow/node-shell/NodeShell.js +14 -14
  1377. package/workflow/node-shell/NodeShell.js.map +1 -1
  1378. package/workflow/picker/BranchAddPopover.js +2 -2
  1379. package/workflow/picker/BranchAddPopover.js.map +1 -1
  1380. package/workflow/task-detail/StructuredDataViewer.d.ts.map +1 -1
  1381. package/workflow/task-detail/StructuredDataViewer.js +16 -12
  1382. package/workflow/task-detail/StructuredDataViewer.js.map +1 -1
  1383. package/workflow/templates/WorkflowTemplateCard.js +17 -17
  1384. package/workflow/templates/WorkflowTemplateCard.js.map +1 -1
  1385. package/workflow/templates/WorkflowTemplateGallery.js +5 -5
  1386. package/workflow/templates/WorkflowTemplateGallery.js.map +1 -1
  1387. package/workflow/templates/WorkflowTemplatePreview.js +5 -5
  1388. package/workflow/templates/WorkflowTemplatePreview.js.map +1 -1
  1389. package/workflow/thread/WorkflowTaskThread.js +16 -16
  1390. package/workflow/thread/WorkflowTaskThread.js.map +1 -1
  1391. package/workspace/EditorTabs.d.ts.map +1 -1
  1392. package/workspace/EditorTabs.js +38 -37
  1393. package/workspace/EditorTabs.js.map +1 -1
  1394. package/workspace/ExplorerTree.d.ts.map +1 -1
  1395. package/workspace/ExplorerTree.js +7 -6
  1396. package/workspace/ExplorerTree.js.map +1 -1
  1397. package/workspace/FileViewer.d.ts.map +1 -1
  1398. package/workspace/FileViewer.js +21 -20
  1399. package/workspace/FileViewer.js.map +1 -1
  1400. package/workspace/PanelChip.d.ts.map +1 -1
  1401. package/workspace/PanelChip.js +2 -1
  1402. package/workspace/PanelChip.js.map +1 -1
  1403. package/workspace/WorkspaceContentSearch.js +11 -11
  1404. package/workspace/WorkspaceContentSearch.js.map +1 -1
  1405. package/workspace/WorkspaceEditor.d.ts.map +1 -1
  1406. package/workspace/WorkspaceEditor.js +11 -10
  1407. package/workspace/WorkspaceEditor.js.map +1 -1
  1408. package/workspace/WorkspaceFileSearch.js +9 -9
  1409. package/workspace/WorkspaceFileSearch.js.map +1 -1
  1410. package/workspace/WorkspaceSummary.d.ts.map +1 -1
  1411. package/workspace/WorkspaceSummary.js +8 -3
  1412. package/workspace/WorkspaceSummary.js.map +1 -1
  1413. package/workspace/WorkspaceSurface.d.ts.map +1 -1
  1414. package/workspace/WorkspaceSurface.js +28 -27
  1415. package/workspace/WorkspaceSurface.js.map +1 -1
@@ -19,15 +19,20 @@ import { useUpdateMcpServer } from "./useUpdateMcpServer.js";
19
19
  import { mcpServerToInput } from "./internal/mcpServerToInput.js";
20
20
  import { useMcpServerConnect } from "./useMcpServerConnect.js";
21
21
  import { useMcpServerCredentials } from "./useMcpServerCredentials.js";
22
- import { useMcpServerOAuthConnect } from "./useMcpServerOAuthConnect.js";
22
+ import {
23
+ useMcpServerOAuthConnect,
24
+ getOAuthConnectErrorMessage,
25
+ } from "./useMcpServerOAuthConnect.js";
23
26
  import type { OAuthConnectPhase } from "./useMcpServerOAuthConnect.js";
24
27
  import { StdioSandboxNotice } from "./StdioSandboxNotice.js";
25
28
  import { OAuthRequiredNotice } from "./OAuthRequiredNotice.js";
29
+ import { VendorApprovalBlockedNotice } from "./VendorApprovalBlockedNotice.js";
26
30
  import { useDisconnectOAuth } from "./useDisconnectOAuth.js";
27
31
  import { useOrgOAuthApp } from "./useOrgOAuthApp.js";
28
32
  import { OAuthAppForm } from "./OAuthAppForm.js";
29
33
  import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
30
34
  import { ErrorMessage } from "../error/ErrorMessage.js";
35
+ import { Tooltip, TooltipContent, TooltipTrigger } from "../internal/tooltip.js";
31
36
  import { EnvVarForm } from "../environment/EnvVarForm.js";
32
37
  import type { EnvVarFormVariable } from "../environment/EnvVarForm.js";
33
38
  import { VisibilityBadge } from "../library/VisibilitySelector.js";
@@ -250,23 +255,38 @@ export function McpServerDetailView({
250
255
  credentials.refetch();
251
256
  refetch();
252
257
  } catch {
253
- // error state is managed by the oauth hook
258
+ // Error state is managed by the oauth hook — but refetch anyway:
259
+ // completeOAuthConnect persists the grant BEFORE the chained
260
+ // discovery runs, so a discovery-leg failure still changed server
261
+ // state. Without this, stale isOAuthConnected=false makes the next
262
+ // Connect click relaunch the popup instead of retrying discovery
263
+ // (stigmer/stigmer#229).
264
+ credentials.refetch();
265
+ refetch();
254
266
  }
255
267
  }, [mcpServer, oauth, credentials, refetch]);
256
268
 
269
+ // A failure in the "connecting" phase proves sign-in already succeeded —
270
+ // the grant exists server-side even while the grant-status refetch is
271
+ // still in flight. Retry bare discovery; never relaunch the popup and
272
+ // never demand credentials the flow already has.
273
+ const isDiscoveryRetry =
274
+ credentials.authMode === "oauth" && oauth.failedPhase === "connecting";
275
+
257
276
  const handleConnectClick = useCallback(async () => {
258
277
  if (!mcpServer?.metadata?.id) return;
259
278
 
260
279
  if (
261
280
  credentials.authMode === "oauth" &&
262
281
  !credentials.isOAuthConnected &&
263
- !credentials.manualOverride
282
+ !credentials.manualOverride &&
283
+ !isDiscoveryRetry
264
284
  ) {
265
285
  handleOAuthSignIn();
266
286
  return;
267
287
  }
268
288
 
269
- if (!credentials.isReady) {
289
+ if (!credentials.isReady && !isDiscoveryRetry) {
270
290
  setShowCredentialForm(true);
271
291
  return;
272
292
  }
@@ -274,11 +294,15 @@ export function McpServerDetailView({
274
294
  const envKeys = Object.keys(mcpServer.spec?.env ?? {});
275
295
  try {
276
296
  await connection.connect(mcpServer.metadata.id, activeOrg ?? org, undefined, envKeys);
297
+ // Discovery succeeded — retire the OAuth chain's stale
298
+ // discovery-failure error so the banner doesn't outlive the state
299
+ // it described.
300
+ oauth.clearError();
277
301
  refetch();
278
302
  } catch {
279
303
  // error state is managed by the hook
280
304
  }
281
- }, [mcpServer, credentials.authMode, credentials.isOAuthConnected, credentials.manualOverride, credentials.isReady, connection, refetch, handleOAuthSignIn]);
305
+ }, [mcpServer, credentials.authMode, credentials.isOAuthConnected, credentials.manualOverride, credentials.isReady, isDiscoveryRetry, connection, oauth.clearError, refetch, handleOAuthSignIn, activeOrg, org]);
282
306
 
283
307
  const handleCredentialSubmit = useCallback(
284
308
  async (
@@ -367,6 +391,20 @@ export function McpServerDetailView({
367
391
  const resourceTemplates = capabilities?.resourceTemplates ?? [];
368
392
  const hasDiscoveredTools = tools.length > 0;
369
393
 
394
+ // "Signed in but never discovered" (stigmer/stigmer#229): the OAuth flow
395
+ // persists the grant in completeOAuthConnect BEFORE the chained discovery
396
+ // runs, so a failed/interrupted discovery leg leaves a healthy grant with
397
+ // empty discovered_capabilities. Both inputs are server truth, so this
398
+ // derivation survives reloads and self-heals once discovery lands (even
399
+ // when the workflow outlives the browser's RPC). Token-expired grants are
400
+ // excluded — re-auth, not discovery, is their next step.
401
+ const isOAuthStranded =
402
+ credentials.authMode === "oauth" &&
403
+ credentials.isOAuthConnected &&
404
+ credentials.connectionHealth !==
405
+ OAuthConnectionHealth.OAUTH_CONNECTION_HEALTH_TOKEN_EXPIRED &&
406
+ !hasDiscoveredTools;
407
+
370
408
  const capabilityTabs: TabItem[] = useMemo(() => {
371
409
  const items: TabItem[] = [
372
410
  { id: "tools", label: "Tools", badge: tools.length },
@@ -383,6 +421,14 @@ export function McpServerDetailView({
383
421
  }, [tools.length, totalPolicyCount, resourceTemplates.length]);
384
422
 
385
423
  const combinedError = connection.error ?? oauth.error;
424
+ // OAuth-chain errors compose through the phase-aware helper so a
425
+ // discovery-leg failure reads "signed in, but discovery failed" instead
426
+ // of masquerading as a failed sign-in.
427
+ const combinedErrorMessage = connection.error
428
+ ? getUserMessage(connection.error)
429
+ : oauth.error
430
+ ? getOAuthConnectErrorMessage(oauth.error, oauth.failedPhase)
431
+ : null;
386
432
  const combinedClearError = useCallback(() => {
387
433
  connection.clearError();
388
434
  oauth.clearError();
@@ -444,10 +490,10 @@ export function McpServerDetailView({
444
490
  value={spec?.iconUrl ?? ""}
445
491
  onSave={(v) => saveMcpField("iconUrl", v || undefined)}
446
492
  isSaving={isUpdating}
447
- fallback={<McpServerIcon className="size-6 text-muted-foreground" />}
493
+ fallback={<McpServerIcon className="stg:size-6 stg:text-muted-foreground" />}
448
494
  size="md"
449
495
  />
450
- ) : spec?.iconUrl ? undefined : <McpServerIcon className="size-6 text-muted-foreground" />,
496
+ ) : spec?.iconUrl ? undefined : <McpServerIcon className="stg:size-6 stg:text-muted-foreground" />,
451
497
  iconUrl: editable ? undefined : spec?.iconUrl || undefined,
452
498
  createdAt: specAudit?.createdAt ? timestampDate(specAudit.createdAt) : null,
453
499
  updatedAt: specAudit?.updatedAt ? timestampDate(specAudit.updatedAt) : null,
@@ -499,7 +545,7 @@ export function McpServerDetailView({
499
545
  {(editable || spec?.description) && (
500
546
  <Section title="Description">
501
547
  {editable && saveMcpField ? (
502
- <div className="max-h-20 overflow-y-auto p-3">
548
+ <div className="stg:max-h-20 stg:overflow-y-auto stg:p-3">
503
549
  <InlineEditTextarea
504
550
  value={spec?.description || ""}
505
551
  onSave={(v) => saveMcpField("description", v || undefined)}
@@ -509,8 +555,8 @@ export function McpServerDetailView({
509
555
  />
510
556
  </div>
511
557
  ) : (
512
- <div className="p-3">
513
- <pre className="whitespace-pre-wrap break-words text-sm text-foreground font-sans">
558
+ <div className="stg:p-3">
559
+ <pre className="stg:whitespace-pre-wrap stg:break-words stg:text-sm stg:text-foreground stg:font-sans">
514
560
  {spec?.description}
515
561
  </pre>
516
562
  </div>
@@ -542,15 +588,17 @@ export function McpServerDetailView({
542
588
  {/* scrollTarget: guided tours/demos bring the connect flow into view
543
589
  (see IdentityTransportStep's "mcp-transport" for the convention). */}
544
590
  <Section title="Connection" scrollTarget="mcp-connection">
545
- <StdioSandboxNotice serverType={spec?.serverType} className="mb-3" />
546
- <OAuthRequiredNotice oauthOnly={spec?.auth?.oauthOnly} className="mb-3" />
591
+ <StdioSandboxNotice serverType={spec?.serverType} className="stg:mb-3" />
592
+ <OAuthRequiredNotice oauthOnly={spec?.auth?.oauthOnly} className="stg:mb-3" />
547
593
  <ConnectBar
548
594
  manualEntrySupported={credentials.manualEntrySupported}
549
595
  isConnecting={connection.isConnecting || oauth.isInProgress}
550
596
  connectionError={combinedError}
597
+ connectionErrorMessage={combinedErrorMessage}
551
598
  onConnect={handleConnectClick}
552
599
  onClearConnectionError={combinedClearError}
553
600
  hasDiscoveredTools={hasDiscoveredTools}
601
+ isOAuthStranded={isOAuthStranded}
554
602
  credentialsLoading={credentials.isLoading}
555
603
  oauthPhase={oauth.phase}
556
604
  authMode={credentials.authMode}
@@ -588,7 +636,7 @@ export function McpServerDetailView({
588
636
 
589
637
  {showCredentialForm && credentials.missingVariables.length > 0 && (
590
638
  <div
591
- className="border-b border-border p-4"
639
+ className="stg:border-b stg:border-border stg:p-4"
592
640
  data-cursor-target="credential-form"
593
641
  >
594
642
  <EnvVarForm
@@ -599,7 +647,7 @@ export function McpServerDetailView({
599
647
  onCancel={() => setShowCredentialForm(false)}
600
648
  isSubmitting={credentials.isSaving}
601
649
  poolValues={credentialPoolValues}
602
- className="w-full max-w-md"
650
+ className="stg:w-full stg:max-w-md"
603
651
  />
604
652
  </div>
605
653
  )}
@@ -610,11 +658,11 @@ export function McpServerDetailView({
610
658
  ref={byoaDialogRef}
611
659
  onCancel={handleByoaDialogCancel}
612
660
  className={cn(
613
- "m-auto w-full max-w-md rounded-lg border border-border bg-background p-6 shadow-lg",
614
- "backdrop:bg-black/50",
661
+ "stg:m-auto stg:w-full stg:max-w-md stg:rounded-lg stg:border stg:border-border stg:bg-background stg:p-6 stg:shadow-lg",
662
+ "stg:backdrop:bg-black/50",
615
663
  )}
616
664
  >
617
- <h3 className="mb-4 text-base font-semibold text-foreground">
665
+ <h3 className="stg:mb-4 stg:text-base stg:font-semibold stg:text-foreground">
618
666
  Use your own OAuth app
619
667
  </h3>
620
668
  <OAuthAppForm
@@ -638,7 +686,12 @@ export function McpServerDetailView({
638
686
  aria-label="MCP server capabilities"
639
687
  >
640
688
  {capabilityTab === "tools" && (
641
- <ToolsTabContent tools={tools} />
689
+ <ToolsTabContent
690
+ tools={tools}
691
+ isOAuthStranded={isOAuthStranded}
692
+ onDiscover={handleConnectClick}
693
+ isDiscovering={connection.isConnecting || oauth.isInProgress}
694
+ />
642
695
  )}
643
696
 
644
697
  {capabilityTab === "policies" && (
@@ -646,6 +699,7 @@ export function McpServerDetailView({
646
699
  pinnedPolicies={pinnedPolicies}
647
700
  classifiedPolicies={classifiedPolicies}
648
701
  hasDiscoveredTools={hasDiscoveredTools}
702
+ isOAuthStranded={isOAuthStranded}
649
703
  />
650
704
  )}
651
705
 
@@ -675,34 +729,34 @@ function healthPillProps(
675
729
  ): { pillClass: string; dotClass: string; label: string } {
676
730
  if (isVendorApprovalPending) {
677
731
  return {
678
- pillClass: "bg-amber-500/10 text-amber-600 dark:text-amber-400",
679
- dotClass: "bg-amber-500",
732
+ pillClass: "stg:bg-amber-500/10 stg:text-amber-600 stg:dark:text-amber-400",
733
+ dotClass: "stg:bg-amber-500",
680
734
  label: "Pending approval",
681
735
  };
682
736
  }
683
737
  switch (health) {
684
738
  case OAuthConnectionHealth.OAUTH_CONNECTION_HEALTH_HEALTHY:
685
739
  return {
686
- pillClass: "bg-success/10 text-success",
687
- dotClass: "bg-success",
740
+ pillClass: "stg:bg-success/10 stg:text-success",
741
+ dotClass: "stg:bg-success",
688
742
  label: "Connected",
689
743
  };
690
744
  case OAuthConnectionHealth.OAUTH_CONNECTION_HEALTH_TOKEN_EXPIRED_REFRESHABLE:
691
745
  return {
692
- pillClass: "bg-amber-500/10 text-amber-600 dark:text-amber-400",
693
- dotClass: "bg-amber-500",
746
+ pillClass: "stg:bg-amber-500/10 stg:text-amber-600 stg:dark:text-amber-400",
747
+ dotClass: "stg:bg-amber-500",
694
748
  label: "Token expired",
695
749
  };
696
750
  case OAuthConnectionHealth.OAUTH_CONNECTION_HEALTH_TOKEN_EXPIRED:
697
751
  return {
698
- pillClass: "bg-destructive-subtle text-destructive",
699
- dotClass: "bg-destructive",
752
+ pillClass: "stg:bg-destructive-subtle stg:text-destructive",
753
+ dotClass: "stg:bg-destructive",
700
754
  label: "Re-auth needed",
701
755
  };
702
756
  default:
703
757
  return {
704
- pillClass: "bg-muted text-muted-foreground",
705
- dotClass: "bg-muted-foreground",
758
+ pillClass: "stg:bg-muted stg:text-muted-foreground",
759
+ dotClass: "stg:bg-muted-foreground",
706
760
  label: "Not connected",
707
761
  };
708
762
  }
@@ -740,9 +794,11 @@ type RemoveOrgAppPhase = "idle" | "confirming" | "removing";
740
794
  function ConnectBar({
741
795
  isConnecting,
742
796
  connectionError,
797
+ connectionErrorMessage,
743
798
  onConnect,
744
799
  onClearConnectionError,
745
800
  hasDiscoveredTools,
801
+ isOAuthStranded,
746
802
  credentialsLoading,
747
803
  oauthPhase,
748
804
  authMode,
@@ -774,9 +830,13 @@ function ConnectBar({
774
830
  }: {
775
831
  readonly isConnecting: boolean;
776
832
  readonly connectionError: Error | null;
833
+ /** Display copy for `connectionError`, pre-composed by the parent (phase-aware for OAuth-chain failures). */
834
+ readonly connectionErrorMessage: string | null;
777
835
  readonly onConnect: () => void;
778
836
  readonly onClearConnectionError: () => void;
779
837
  readonly hasDiscoveredTools: boolean;
838
+ /** OAuth grant is healthy but discovery never landed — see the derivation in the parent. */
839
+ readonly isOAuthStranded: boolean;
780
840
  readonly credentialsLoading: boolean;
781
841
  readonly oauthPhase: OAuthConnectPhase;
782
842
  readonly authMode: "manual" | "oauth";
@@ -832,19 +892,23 @@ function ConnectBar({
832
892
  if (isConnecting) return "Connecting...";
833
893
  if (isOrgOAuthApp && showOAuthPrimary) return "Sign in with your app";
834
894
  if (showOAuthPrimary || needsReAuth) return "Sign in to connect";
895
+ if (isOAuthStranded) return "Discover tools";
835
896
  if (hasDiscoveredTools) return "Reconnect";
836
897
  return "Connect";
837
898
  })();
838
899
 
839
900
  const buttonIcon = (() => {
840
901
  if (isOAuthBusy || isConnecting) return <Spinner />;
841
- if (showOAuthPrimary || needsReAuth) return <OAuthIcon className="size-3.5" />;
842
- if (hasDiscoveredTools) return <RefreshIcon className="size-3.5" />;
843
- return <ConnectIcon className="size-3.5" />;
902
+ if (showOAuthPrimary || needsReAuth) return <OAuthIcon className="stg:size-3.5" />;
903
+ if (hasDiscoveredTools) return <RefreshIcon className="stg:size-3.5" />;
904
+ return <ConnectIcon className="stg:size-3.5" />;
844
905
  })();
845
906
 
846
907
  const statusText = (() => {
847
908
  if (authMode === "oauth" && isOAuthConnected) {
909
+ // Stranded takes precedence over token health: "tokens refresh
910
+ // automatically" reads as all-done while the Tools tab is empty.
911
+ if (isOAuthStranded) return "Signed in \u2014 tools not discovered yet";
848
912
  const base = healthStatusText(connectionHealth, accessTokenExpiresAt, tokenLifetimeHint);
849
913
  return isOrgOAuthApp ? `${base} \u00B7 Using your OAuth app` : base;
850
914
  }
@@ -865,14 +929,14 @@ function ConnectBar({
865
929
  // Inline disconnect confirmation replaces the main bar content
866
930
  if (disconnectPhase === "confirming" || disconnectPhase === "disconnecting") {
867
931
  return (
868
- <div className="flex flex-col">
869
- <div className="flex items-center gap-2 px-3 py-2">
870
- <WarningIcon className="size-3.5 shrink-0 text-destructive" />
871
- <p className="flex-1 text-xs text-foreground">
872
- Remove OAuth credentials for <span className="font-medium">{serverName}</span>?
932
+ <div className="stg:flex stg:flex-col">
933
+ <div className="stg:flex stg:items-center stg:gap-2 stg:px-3 stg:py-2">
934
+ <WarningIcon className="stg:size-3.5 stg:shrink-0 stg:text-destructive" />
935
+ <p className="stg:flex-1 stg:text-xs stg:text-foreground">
936
+ Remove OAuth credentials for <span className="stg:font-medium">{serverName}</span>?
873
937
  You can reconnect at any time.
874
938
  </p>
875
- <div className="flex shrink-0 items-center gap-1.5">
939
+ <div className="stg:flex stg:shrink-0 stg:items-center stg:gap-1.5">
876
940
  <button
877
941
  type="button"
878
942
  disabled={isDisconnecting}
@@ -886,9 +950,9 @@ function ConnectBar({
886
950
  }
887
951
  }}
888
952
  className={cn(
889
- "inline-flex items-center gap-1 rounded-md px-2.5 py-1 text-xs font-medium",
890
- "bg-destructive text-destructive-foreground hover:bg-destructive-hover",
891
- "disabled:pointer-events-none disabled:opacity-50",
953
+ "stg:inline-flex stg:items-center stg:gap-1 stg:rounded-md stg:px-2.5 stg:py-1 stg:text-xs stg:font-medium",
954
+ "stg:bg-destructive stg:text-destructive-foreground stg:hover:bg-destructive-hover",
955
+ "stg:disabled:pointer-events-none stg:disabled:opacity-50",
892
956
  )}
893
957
  >
894
958
  {isDisconnecting && <Spinner />}
@@ -902,9 +966,9 @@ function ConnectBar({
902
966
  onClearDisconnectError();
903
967
  }}
904
968
  className={cn(
905
- "inline-flex items-center rounded-md px-2.5 py-1 text-xs font-medium",
906
- "border border-border bg-background text-foreground hover:bg-accent hover:text-accent-foreground",
907
- "disabled:pointer-events-none disabled:opacity-50",
969
+ "stg:inline-flex stg:items-center stg:rounded-md stg:px-2.5 stg:py-1 stg:text-xs stg:font-medium",
970
+ "stg:border stg:border-border stg:bg-background stg:text-foreground stg:hover:bg-accent stg:hover:text-accent-foreground",
971
+ "stg:disabled:pointer-events-none stg:disabled:opacity-50",
908
972
  )}
909
973
  >
910
974
  Cancel
@@ -912,15 +976,15 @@ function ConnectBar({
912
976
  </div>
913
977
  </div>
914
978
  {disconnectError && (
915
- <div className="flex items-start gap-2 border-t border-destructive/20 bg-destructive-subtle px-3 py-2">
916
- <WarningIcon className="mt-0.5 size-3.5 shrink-0 text-destructive" />
917
- <p className="flex-1 text-xs text-destructive">
979
+ <div className="stg:flex stg:items-start stg:gap-2 stg:border-t stg:border-destructive/20 stg:bg-destructive-subtle stg:px-3 stg:py-2">
980
+ <WarningIcon className="stg:mt-0.5 stg:size-3.5 stg:shrink-0 stg:text-destructive" />
981
+ <p className="stg:flex-1 stg:text-xs stg:text-destructive">
918
982
  {getUserMessage(disconnectError)}
919
983
  </p>
920
984
  <button
921
985
  type="button"
922
986
  onClick={onClearDisconnectError}
923
- className="shrink-0 text-xs text-destructive-muted hover:text-destructive"
987
+ className="stg:shrink-0 stg:text-xs stg:text-destructive-muted stg:hover:text-destructive"
924
988
  aria-label="Dismiss error"
925
989
  >
926
990
  Dismiss
@@ -934,15 +998,15 @@ function ConnectBar({
934
998
  // Inline "remove custom app" confirmation
935
999
  if (removeOrgAppPhase === "confirming" || removeOrgAppPhase === "removing") {
936
1000
  return (
937
- <div className="flex flex-col">
938
- <div className="flex items-center gap-2 px-3 py-2">
939
- <WarningIcon className="size-3.5 shrink-0 text-destructive" />
940
- <p className="flex-1 text-xs text-foreground">
1001
+ <div className="stg:flex stg:flex-col">
1002
+ <div className="stg:flex stg:items-center stg:gap-2 stg:px-3 stg:py-2">
1003
+ <WarningIcon className="stg:size-3.5 stg:shrink-0 stg:text-destructive" />
1004
+ <p className="stg:flex-1 stg:text-xs stg:text-foreground">
941
1005
  Remove your custom OAuth app for{" "}
942
- <span className="font-medium">{serverName}</span>? The server
1006
+ <span className="stg:font-medium">{serverName}</span>? The server
943
1007
  will revert to the platform&apos;s OAuth app.
944
1008
  </p>
945
- <div className="flex shrink-0 items-center gap-1.5">
1009
+ <div className="stg:flex stg:shrink-0 stg:items-center stg:gap-1.5">
946
1010
  <button
947
1011
  type="button"
948
1012
  disabled={isRemovingOrgApp}
@@ -956,9 +1020,9 @@ function ConnectBar({
956
1020
  }
957
1021
  }}
958
1022
  className={cn(
959
- "inline-flex items-center gap-1 rounded-md px-2.5 py-1 text-xs font-medium",
960
- "bg-destructive text-destructive-foreground hover:bg-destructive-hover",
961
- "disabled:pointer-events-none disabled:opacity-50",
1023
+ "stg:inline-flex stg:items-center stg:gap-1 stg:rounded-md stg:px-2.5 stg:py-1 stg:text-xs stg:font-medium",
1024
+ "stg:bg-destructive stg:text-destructive-foreground stg:hover:bg-destructive-hover",
1025
+ "stg:disabled:pointer-events-none stg:disabled:opacity-50",
962
1026
  )}
963
1027
  >
964
1028
  {isRemovingOrgApp && <Spinner />}
@@ -972,9 +1036,9 @@ function ConnectBar({
972
1036
  onClearRemoveOrgAppError();
973
1037
  }}
974
1038
  className={cn(
975
- "inline-flex items-center rounded-md px-2.5 py-1 text-xs font-medium",
976
- "border border-border bg-background text-foreground hover:bg-accent hover:text-accent-foreground",
977
- "disabled:pointer-events-none disabled:opacity-50",
1039
+ "stg:inline-flex stg:items-center stg:rounded-md stg:px-2.5 stg:py-1 stg:text-xs stg:font-medium",
1040
+ "stg:border stg:border-border stg:bg-background stg:text-foreground stg:hover:bg-accent stg:hover:text-accent-foreground",
1041
+ "stg:disabled:pointer-events-none stg:disabled:opacity-50",
978
1042
  )}
979
1043
  >
980
1044
  Cancel
@@ -982,15 +1046,15 @@ function ConnectBar({
982
1046
  </div>
983
1047
  </div>
984
1048
  {removeOrgAppError && (
985
- <div className="flex items-start gap-2 border-t border-destructive/20 bg-destructive-subtle px-3 py-2">
986
- <WarningIcon className="mt-0.5 size-3.5 shrink-0 text-destructive" />
987
- <p className="flex-1 text-xs text-destructive">
1049
+ <div className="stg:flex stg:items-start stg:gap-2 stg:border-t stg:border-destructive/20 stg:bg-destructive-subtle stg:px-3 stg:py-2">
1050
+ <WarningIcon className="stg:mt-0.5 stg:size-3.5 stg:shrink-0 stg:text-destructive" />
1051
+ <p className="stg:flex-1 stg:text-xs stg:text-destructive">
988
1052
  {getUserMessage(removeOrgAppError)}
989
1053
  </p>
990
1054
  <button
991
1055
  type="button"
992
1056
  onClick={onClearRemoveOrgAppError}
993
- className="shrink-0 text-xs text-destructive-muted hover:text-destructive"
1057
+ className="stg:shrink-0 stg:text-xs stg:text-destructive-muted stg:hover:text-destructive"
994
1058
  aria-label="Dismiss error"
995
1059
  >
996
1060
  Dismiss
@@ -1002,31 +1066,31 @@ function ConnectBar({
1002
1066
  }
1003
1067
 
1004
1068
  return (
1005
- <div className="flex flex-col">
1006
- <div className="flex items-center justify-between px-3 py-2">
1007
- <div className="flex items-center gap-2">
1069
+ <div className="stg:flex stg:flex-col">
1070
+ <div className="stg:flex stg:items-center stg:justify-between stg:px-3 stg:py-2">
1071
+ <div className="stg:flex stg:items-center stg:gap-2">
1008
1072
  {authMode === "oauth" && !manualOverride && (
1009
1073
  <span
1010
1074
  className={cn(
1011
- "inline-flex items-center gap-1.5 rounded-full px-2 py-0.5 text-[10px] font-medium",
1075
+ "stg:inline-flex stg:items-center stg:gap-1.5 stg:rounded-full stg:px-2 stg:py-0.5 stg:text-[10px] stg:font-medium",
1012
1076
  pill.pillClass,
1013
1077
  )}
1014
1078
  >
1015
1079
  <span
1016
- className={cn("size-1.5 rounded-full", pill.dotClass)}
1080
+ className={cn("stg:size-1.5 stg:rounded-full", pill.dotClass)}
1017
1081
  aria-hidden="true"
1018
1082
  />
1019
1083
  {pill.label}
1020
1084
  </span>
1021
1085
  )}
1022
- <span className="text-xs text-muted-foreground">
1086
+ <span className="stg:text-xs stg:text-muted-foreground">
1023
1087
  {oauthSignInDisabled ? "OAuth sign-in is pending vendor approval" : statusText}
1024
1088
  </span>
1025
1089
  {showDisconnectLink && (
1026
1090
  <button
1027
1091
  type="button"
1028
1092
  onClick={() => setDisconnectPhase("confirming")}
1029
- className="text-[11px] text-muted-foreground underline decoration-muted-foreground/40 underline-offset-2 hover:text-foreground hover:decoration-foreground"
1093
+ className="stg:text-[11px] stg:text-muted-foreground stg:underline stg:decoration-muted-foreground/40 stg:underline-offset-2 stg:hover:text-foreground stg:hover:decoration-foreground"
1030
1094
  >
1031
1095
  Disconnect
1032
1096
  </button>
@@ -1035,7 +1099,7 @@ function ConnectBar({
1035
1099
  <button
1036
1100
  type="button"
1037
1101
  onClick={() => setRemoveOrgAppPhase("confirming")}
1038
- className="text-[11px] text-muted-foreground underline decoration-muted-foreground/40 underline-offset-2 hover:text-foreground hover:decoration-foreground"
1102
+ className="stg:text-[11px] stg:text-muted-foreground stg:underline stg:decoration-muted-foreground/40 stg:underline-offset-2 stg:hover:text-foreground stg:hover:decoration-foreground"
1039
1103
  >
1040
1104
  Remove custom app
1041
1105
  </button>
@@ -1047,11 +1111,11 @@ function ConnectBar({
1047
1111
  disabled={anyBusy || credentialsLoading || oauthSignInDisabled}
1048
1112
  data-cursor-target="connect-button"
1049
1113
  className={cn(
1050
- "inline-flex items-center gap-1.5 rounded-md px-2.5 py-1 text-xs font-medium",
1114
+ "stg:inline-flex stg:items-center stg:gap-1.5 stg:rounded-md stg:px-2.5 stg:py-1 stg:text-xs stg:font-medium",
1051
1115
  showOAuthPrimary || needsReAuth
1052
- ? "bg-primary text-primary-foreground hover:bg-primary-hover"
1053
- : "border border-border bg-background text-foreground hover:bg-accent hover:text-accent-foreground",
1054
- "disabled:pointer-events-none disabled:opacity-50",
1116
+ ? "stg:bg-primary stg:text-primary-foreground stg:hover:bg-primary-hover"
1117
+ : "stg:border stg:border-border stg:bg-background stg:text-foreground stg:hover:bg-accent stg:hover:text-accent-foreground",
1118
+ "stg:disabled:pointer-events-none stg:disabled:opacity-50",
1055
1119
  )}
1056
1120
  >
1057
1121
  {buttonIcon}
@@ -1060,11 +1124,11 @@ function ConnectBar({
1060
1124
  </div>
1061
1125
 
1062
1126
  {oauthPhase === "awaiting-callback" && (
1063
- <div className="flex items-center gap-3 border-t border-border px-3 py-1.5">
1127
+ <div className="stg:flex stg:items-center stg:gap-3 stg:border-t stg:border-border stg:px-3 stg:py-1.5">
1064
1128
  <button
1065
1129
  type="button"
1066
1130
  onClick={onCancelOAuth}
1067
- className="text-[11px] text-muted-foreground underline decoration-muted-foreground/40 underline-offset-2 hover:text-foreground hover:decoration-foreground"
1131
+ className="stg:text-[11px] stg:text-muted-foreground stg:underline stg:decoration-muted-foreground/40 stg:underline-offset-2 stg:hover:text-foreground stg:hover:decoration-foreground"
1068
1132
  >
1069
1133
  Cancel sign-in
1070
1134
  </button>
@@ -1073,38 +1137,15 @@ function ConnectBar({
1073
1137
 
1074
1138
  {/* Vendor approval blocked banner with BYOA CTA */}
1075
1139
  {oauthSignInDisabled && (
1076
- <div className="flex items-start gap-2 border-t border-amber-500/20 bg-amber-500/5 px-3 py-2">
1077
- <WarningIcon className="mt-0.5 size-3.5 shrink-0 text-amber-600 dark:text-amber-400" />
1078
- <div className="flex-1 text-xs text-amber-700 dark:text-amber-300">
1079
- <p>
1080
- The platform&apos;s OAuth app is awaiting vendor approval.
1081
- {canBringOwnApp
1082
- ? " You can use your own OAuth app or enter a token manually."
1083
- : " You can still connect by entering your own token manually."}
1084
- </p>
1085
- {canBringOwnApp && (
1086
- <button
1087
- type="button"
1088
- onClick={onBringOwnApp}
1089
- data-cursor-target="byoa-cta-button"
1090
- className="mt-1.5 inline-flex items-center gap-1 rounded-md bg-amber-600 px-2.5 py-1 text-[11px] font-medium text-white hover:bg-amber-700 dark:bg-amber-500 dark:text-amber-950 dark:hover:bg-amber-400"
1091
- >
1092
- Use your own OAuth app
1093
- </button>
1094
- )}
1095
- {vendorApprovalDocsUrl && !canBringOwnApp && (
1096
- <a
1097
- href={vendorApprovalDocsUrl}
1098
- target="_blank"
1099
- rel="noopener noreferrer"
1100
- className="mt-1 inline-flex items-center gap-1 underline decoration-amber-600/40 underline-offset-2 hover:decoration-amber-600 dark:decoration-amber-400/40 dark:hover:decoration-amber-400"
1101
- >
1102
- Learn how to bring your own token
1103
- <ExternalLinkIcon className="size-3 shrink-0" />
1104
- </a>
1105
- )}
1106
- </div>
1107
- </div>
1140
+ <VendorApprovalBlockedNotice
1141
+ blocked
1142
+ pending={isVendorApprovalPending}
1143
+ manualEntrySupported={manualEntrySupported}
1144
+ canBringOwnApp={canBringOwnApp}
1145
+ docsUrl={vendorApprovalDocsUrl}
1146
+ onBringOwnApp={onBringOwnApp}
1147
+ className="stg:border-t stg:border-amber-500/20"
1148
+ />
1108
1149
  )}
1109
1150
 
1110
1151
  {/* Secondary actions: manual entry, BYOA, back to OAuth. Suppressed
@@ -1112,12 +1153,12 @@ function ConnectBar({
1112
1153
  action bar renders. */}
1113
1154
  {authMode === "oauth" && !isOAuthConnected && !isOAuthBusy && !isConnecting &&
1114
1155
  (manualOverride || manualEntrySupported || canBringOwnApp) && (
1115
- <div className="flex items-center gap-3 border-t border-border px-3 py-1.5">
1156
+ <div className="stg:flex stg:items-center stg:gap-3 stg:border-t stg:border-border stg:px-3 stg:py-1.5">
1116
1157
  {manualOverride ? (
1117
1158
  <button
1118
1159
  type="button"
1119
1160
  onClick={onBackToOAuth}
1120
- className="text-[11px] text-muted-foreground underline decoration-muted-foreground/40 underline-offset-2 hover:text-foreground hover:decoration-foreground"
1161
+ className="stg:text-[11px] stg:text-muted-foreground stg:underline stg:decoration-muted-foreground/40 stg:underline-offset-2 stg:hover:text-foreground stg:hover:decoration-foreground"
1121
1162
  >
1122
1163
  {isVendorApprovalPending ? "Back to OAuth status" : "Sign in with OAuth instead"}
1123
1164
  </button>
@@ -1127,7 +1168,7 @@ function ConnectBar({
1127
1168
  <button
1128
1169
  type="button"
1129
1170
  onClick={onManualOverride}
1130
- className="text-[11px] text-muted-foreground underline decoration-muted-foreground/40 underline-offset-2 hover:text-foreground hover:decoration-foreground"
1171
+ className="stg:text-[11px] stg:text-muted-foreground stg:underline stg:decoration-muted-foreground/40 stg:underline-offset-2 stg:hover:text-foreground stg:hover:decoration-foreground"
1131
1172
  >
1132
1173
  Enter token manually
1133
1174
  </button>
@@ -1136,7 +1177,7 @@ function ConnectBar({
1136
1177
  <button
1137
1178
  type="button"
1138
1179
  onClick={onBringOwnApp}
1139
- className="text-[11px] text-muted-foreground underline decoration-muted-foreground/40 underline-offset-2 hover:text-foreground hover:decoration-foreground"
1180
+ className="stg:text-[11px] stg:text-muted-foreground stg:underline stg:decoration-muted-foreground/40 stg:underline-offset-2 stg:hover:text-foreground stg:hover:decoration-foreground"
1140
1181
  >
1141
1182
  Use your own OAuth app
1142
1183
  </button>
@@ -1148,14 +1189,14 @@ function ConnectBar({
1148
1189
 
1149
1190
  {connectionError && (
1150
1191
  <div
1151
- className="flex items-start gap-2 border-t border-destructive/20 bg-destructive-subtle px-3 py-2"
1192
+ className="stg:flex stg:items-start stg:gap-2 stg:border-t stg:border-destructive/20 stg:bg-destructive-subtle stg:px-3 stg:py-2"
1152
1193
  role="alert"
1153
1194
  >
1154
- <WarningIcon className="mt-0.5 size-3.5 shrink-0 text-destructive" />
1155
- <p className="flex-1 text-xs text-destructive">
1156
- {getUserMessage(connectionError)}
1195
+ <WarningIcon className="stg:mt-0.5 stg:size-3.5 stg:shrink-0 stg:text-destructive" />
1196
+ <p className="stg:flex-1 stg:text-xs stg:text-destructive">
1197
+ {connectionErrorMessage ?? getUserMessage(connectionError)}
1157
1198
  </p>
1158
- <div className="flex shrink-0 items-center gap-2">
1199
+ <div className="stg:flex stg:shrink-0 stg:items-center stg:gap-2">
1159
1200
  {isRetryableError(connectionError) && (
1160
1201
  <button
1161
1202
  type="button"
@@ -1163,7 +1204,7 @@ function ConnectBar({
1163
1204
  onClearConnectionError();
1164
1205
  onConnect();
1165
1206
  }}
1166
- className="text-xs font-medium text-destructive underline underline-offset-2 hover:no-underline"
1207
+ className="stg:text-xs stg:font-medium stg:text-destructive stg:underline stg:underline-offset-2 stg:hover:no-underline"
1167
1208
  >
1168
1209
  Try again
1169
1210
  </button>
@@ -1171,7 +1212,7 @@ function ConnectBar({
1171
1212
  <button
1172
1213
  type="button"
1173
1214
  onClick={onClearConnectionError}
1174
- className="text-xs text-destructive-muted hover:text-destructive"
1215
+ className="stg:text-xs stg:text-destructive-muted stg:hover:text-destructive"
1175
1216
  aria-label="Dismiss error"
1176
1217
  >
1177
1218
  Dismiss
@@ -1220,14 +1261,14 @@ function ValidationBanner({ message }: { readonly message: string }) {
1220
1261
  return (
1221
1262
  <div
1222
1263
  role="alert"
1223
- className="flex items-start gap-2.5 rounded-lg border border-destructive/30 bg-destructive-subtle px-4 py-3"
1264
+ className="stg:flex stg:items-start stg:gap-2.5 stg:rounded-lg stg:border stg:border-destructive/30 stg:bg-destructive-subtle stg:px-4 stg:py-3"
1224
1265
  >
1225
- <WarningIcon className="mt-0.5 size-4 shrink-0 text-destructive" />
1226
- <div className="min-w-0 flex-1">
1227
- <p className="text-sm font-medium text-destructive">
1266
+ <WarningIcon className="stg:mt-0.5 stg:size-4 stg:shrink-0 stg:text-destructive" />
1267
+ <div className="stg:min-w-0 stg:flex-1">
1268
+ <p className="stg:text-sm stg:font-medium stg:text-destructive">
1228
1269
  Invalid Configuration
1229
1270
  </p>
1230
- <p className="mt-0.5 text-xs text-destructive-muted">{message}</p>
1271
+ <p className="stg:mt-0.5 stg:text-xs stg:text-destructive-muted">{message}</p>
1231
1272
  </div>
1232
1273
  </div>
1233
1274
  );
@@ -1244,8 +1285,8 @@ function ValidationStateBadge({
1244
1285
  return (
1245
1286
  <>
1246
1287
  <Dot />
1247
- <span className="inline-flex items-center gap-1 text-emerald-600 dark:text-emerald-400">
1248
- <CheckIcon className="size-3" />
1288
+ <span className="stg:inline-flex stg:items-center stg:gap-1 stg:text-emerald-600 stg:dark:text-emerald-400">
1289
+ <CheckIcon className="stg:size-3" />
1249
1290
  Valid
1250
1291
  </span>
1251
1292
  </>
@@ -1254,7 +1295,7 @@ function ValidationStateBadge({
1254
1295
  return (
1255
1296
  <>
1256
1297
  <Dot />
1257
- <span className="text-destructive">Invalid</span>
1298
+ <span className="stg:text-destructive">Invalid</span>
1258
1299
  </>
1259
1300
  );
1260
1301
  default:
@@ -1352,9 +1393,9 @@ function ServerConfigSection({
1352
1393
 
1353
1394
  return (
1354
1395
  <Section title="Server Configuration">
1355
- <div className="flex flex-col gap-2 p-3">
1356
- <div className="flex items-baseline gap-2">
1357
- <span className="text-xs font-medium text-muted-foreground">
1396
+ <div className="stg:flex stg:flex-col stg:gap-2 stg:p-3">
1397
+ <div className="stg:flex stg:items-baseline stg:gap-2">
1398
+ <span className="stg:text-xs stg:font-medium stg:text-muted-foreground">
1358
1399
  Type
1359
1400
  </span>
1360
1401
  {editable && saveMcpField ? (
@@ -1365,7 +1406,7 @@ function ServerConfigSection({
1365
1406
  isSaving={isSaving}
1366
1407
  />
1367
1408
  ) : (
1368
- <span className="rounded bg-muted px-1.5 py-0.5 font-mono text-xs font-medium text-foreground">
1409
+ <span className="stg:rounded stg:bg-muted stg:px-1.5 stg:py-0.5 stg:font-mono stg:text-xs stg:font-medium stg:text-foreground">
1369
1410
  {serverType?.case ?? "none"}
1370
1411
  </span>
1371
1412
  )}
@@ -1373,8 +1414,8 @@ function ServerConfigSection({
1373
1414
 
1374
1415
  {serverType?.case === "stdio" && (
1375
1416
  <>
1376
- <div className="flex items-baseline gap-2">
1377
- <span className="text-xs font-medium text-muted-foreground">
1417
+ <div className="stg:flex stg:items-baseline stg:gap-2">
1418
+ <span className="stg:text-xs stg:font-medium stg:text-muted-foreground">
1378
1419
  Command
1379
1420
  </span>
1380
1421
  {editable && saveMcpField ? (
@@ -1391,7 +1432,7 @@ function ServerConfigSection({
1391
1432
  placeholder="e.g. npx -y @modelcontextprotocol/server"
1392
1433
  />
1393
1434
  ) : (
1394
- <code className="font-mono text-sm text-foreground">
1435
+ <code className="stg:font-mono stg:text-sm stg:text-foreground">
1395
1436
  {serverType.value.command}
1396
1437
  {serverType.value.args.length > 0 &&
1397
1438
  ` ${serverType.value.args.join(" ")}`}
@@ -1399,8 +1440,8 @@ function ServerConfigSection({
1399
1440
  )}
1400
1441
  </div>
1401
1442
  {(editable || serverType.value.workingDir) && (
1402
- <div className="flex items-baseline gap-2">
1403
- <span className="text-xs font-medium text-muted-foreground">
1443
+ <div className="stg:flex stg:items-baseline stg:gap-2">
1444
+ <span className="stg:text-xs stg:font-medium stg:text-muted-foreground">
1404
1445
  Working Dir
1405
1446
  </span>
1406
1447
  {editable && saveMcpField ? (
@@ -1417,7 +1458,7 @@ function ServerConfigSection({
1417
1458
  placeholder="/path/to/working/dir"
1418
1459
  />
1419
1460
  ) : (
1420
- <code className="font-mono text-xs text-foreground">
1461
+ <code className="stg:font-mono stg:text-xs stg:text-foreground">
1421
1462
  {serverType.value.workingDir}
1422
1463
  </code>
1423
1464
  )}
@@ -1428,8 +1469,8 @@ function ServerConfigSection({
1428
1469
 
1429
1470
  {serverType?.case === "http" && (
1430
1471
  <>
1431
- <div className="flex items-baseline gap-2">
1432
- <span className="text-xs font-medium text-muted-foreground">
1472
+ <div className="stg:flex stg:items-baseline stg:gap-2">
1473
+ <span className="stg:text-xs stg:font-medium stg:text-muted-foreground">
1433
1474
  URL
1434
1475
  </span>
1435
1476
  {editable && saveMcpField ? (
@@ -1442,14 +1483,14 @@ function ServerConfigSection({
1442
1483
  placeholder="https://example.com/mcp"
1443
1484
  />
1444
1485
  ) : (
1445
- <code className="break-all font-mono text-sm text-foreground">
1486
+ <code className="stg:break-all stg:font-mono stg:text-sm stg:text-foreground">
1446
1487
  {serverType.value.url}
1447
1488
  </code>
1448
1489
  )}
1449
1490
  </div>
1450
1491
  {(editable || serverType.value.timeoutSeconds > 0) && (
1451
- <div className="flex items-baseline gap-2">
1452
- <span className="text-xs font-medium text-muted-foreground">
1492
+ <div className="stg:flex stg:items-baseline stg:gap-2">
1493
+ <span className="stg:text-xs stg:font-medium stg:text-muted-foreground">
1453
1494
  Timeout
1454
1495
  </span>
1455
1496
  {editable && saveMcpField ? (
@@ -1469,7 +1510,7 @@ function ServerConfigSection({
1469
1510
  }}
1470
1511
  />
1471
1512
  ) : (
1472
- <span className="text-xs text-foreground">
1513
+ <span className="stg:text-xs stg:text-foreground">
1473
1514
  {serverType.value.timeoutSeconds}s
1474
1515
  </span>
1475
1516
  )}
@@ -1533,12 +1574,12 @@ function HttpKeyValueSubsection({
1533
1574
  readonly keyLabel: string;
1534
1575
  }) {
1535
1576
  return (
1536
- <div className="border-t border-border">
1537
- <div className="flex items-center justify-between px-3 py-2">
1538
- <div className="flex items-center gap-1.5">
1539
- <span className="text-xs font-medium text-muted-foreground">{title}</span>
1577
+ <div className="stg:border-t stg:border-border">
1578
+ <div className="stg:flex stg:items-center stg:justify-between stg:px-3 stg:py-2">
1579
+ <div className="stg:flex stg:items-center stg:gap-1.5">
1580
+ <span className="stg:text-xs stg:font-medium stg:text-muted-foreground">{title}</span>
1540
1581
  {count > 0 && (
1541
- <span className="inline-flex min-w-[1.25rem] items-center justify-center rounded-full bg-muted px-1 py-px text-[10px] font-medium leading-none text-muted-foreground">
1582
+ <span className="stg:inline-flex stg:min-w-[1.25rem] stg:items-center stg:justify-center stg:rounded-full stg:bg-muted stg:px-1 stg:py-px stg:text-[10px] stg:font-medium stg:leading-none stg:text-muted-foreground">
1542
1583
  {count}
1543
1584
  </span>
1544
1585
  )}
@@ -1547,7 +1588,7 @@ function HttpKeyValueSubsection({
1547
1588
  <button
1548
1589
  type="button"
1549
1590
  onClick={() => onEditingChange(!editing)}
1550
- className="text-[11px] text-muted-foreground underline decoration-muted-foreground/40 underline-offset-2 hover:text-foreground hover:decoration-foreground"
1591
+ className="stg:text-[11px] stg:text-muted-foreground stg:underline stg:decoration-muted-foreground/40 stg:underline-offset-2 stg:hover:text-foreground stg:hover:decoration-foreground"
1551
1592
  >
1552
1593
  {editing ? "Done" : "Edit"}
1553
1594
  </button>
@@ -1565,13 +1606,13 @@ function HttpKeyValueSubsection({
1565
1606
  valueLabel="Value"
1566
1607
  />
1567
1608
  ) : (
1568
- <div className="flex flex-col divide-y divide-border">
1609
+ <div className="stg:flex stg:flex-col stg:divide-y stg:divide-border">
1569
1610
  {rows.map((row) => (
1570
- <div key={row.key} className="flex items-start gap-2 px-3 py-1.5">
1571
- <code className="shrink-0 font-mono text-xs font-medium text-foreground">
1611
+ <div key={row.key} className="stg:flex stg:items-start stg:gap-2 stg:px-3 stg:py-1.5">
1612
+ <code className="stg:shrink-0 stg:font-mono stg:text-xs stg:font-medium stg:text-foreground">
1572
1613
  {row.key}
1573
1614
  </code>
1574
- <span className="min-w-0 break-all font-mono text-xs text-muted-foreground">
1615
+ <span className="stg:min-w-0 stg:break-all stg:font-mono stg:text-xs stg:text-muted-foreground">
1575
1616
  {renderHeaderValue(row.value)}
1576
1617
  </span>
1577
1618
  </div>
@@ -1598,13 +1639,18 @@ function renderHeaderValue(value: string): React.ReactNode {
1598
1639
  parts.push(value.slice(lastIndex, match.index));
1599
1640
  }
1600
1641
  parts.push(
1601
- <span
1602
- key={match.index}
1603
- className="inline-flex items-center gap-0.5 rounded bg-primary-subtle px-1 py-px text-[10px] font-medium text-primary"
1604
- title={`Resolved from environment variable: ${match[1]}`}
1605
- >
1606
- {match[0]}
1607
- </span>,
1642
+ <Tooltip key={match.index}>
1643
+ <TooltipTrigger
1644
+ render={
1645
+ <span className="stg:inline-flex stg:items-center stg:gap-0.5 stg:rounded stg:bg-primary-subtle stg:px-1 stg:py-px stg:text-[10px] stg:font-medium stg:text-primary" />
1646
+ }
1647
+ >
1648
+ {match[0]}
1649
+ </TooltipTrigger>
1650
+ <TooltipContent side="top">
1651
+ {`Resolved from environment variable: ${match[1]}`}
1652
+ </TooltipContent>
1653
+ </Tooltip>,
1608
1654
  );
1609
1655
  lastIndex = match.index + match[0].length;
1610
1656
  }
@@ -1623,29 +1669,29 @@ function SourceSection({
1623
1669
  }) {
1624
1670
  return (
1625
1671
  <Section title="Source">
1626
- <div className="flex flex-col gap-2 p-3">
1672
+ <div className="stg:flex stg:flex-col stg:gap-2 stg:p-3">
1627
1673
  {spec.repositoryUrl && (
1628
- <div className="flex items-baseline gap-2">
1629
- <span className="shrink-0 text-xs font-medium text-muted-foreground">
1674
+ <div className="stg:flex stg:items-baseline stg:gap-2">
1675
+ <span className="stg:shrink-0 stg:text-xs stg:font-medium stg:text-muted-foreground">
1630
1676
  Repository
1631
1677
  </span>
1632
1678
  <a
1633
1679
  href={spec.repositoryUrl}
1634
1680
  target="_blank"
1635
1681
  rel="noopener noreferrer"
1636
- className="inline-flex items-center gap-1 break-all font-mono text-xs text-foreground underline decoration-muted-foreground/40 underline-offset-2 hover:decoration-foreground"
1682
+ className="stg:inline-flex stg:items-center stg:gap-1 stg:break-all stg:font-mono stg:text-xs stg:text-foreground stg:underline stg:decoration-muted-foreground/40 stg:underline-offset-2 stg:hover:decoration-foreground"
1637
1683
  >
1638
1684
  {spec.repositoryUrl}
1639
- <ExternalLinkIcon className="size-3 shrink-0" />
1685
+ <ExternalLinkIcon className="stg:size-3 stg:shrink-0" />
1640
1686
  </a>
1641
1687
  </div>
1642
1688
  )}
1643
1689
  {spec.githubStars > 0 && (
1644
- <div className="flex items-baseline gap-2">
1645
- <span className="shrink-0 text-xs font-medium text-muted-foreground">
1690
+ <div className="stg:flex stg:items-baseline stg:gap-2">
1691
+ <span className="stg:shrink-0 stg:text-xs stg:font-medium stg:text-muted-foreground">
1646
1692
  Stars
1647
1693
  </span>
1648
- <span className="text-xs text-foreground">
1694
+ <span className="stg:text-xs stg:text-foreground">
1649
1695
  {spec.githubStars.toLocaleString()}
1650
1696
  </span>
1651
1697
  </div>
@@ -1663,19 +1709,19 @@ function ResourceTemplatesList({
1663
1709
  if (templates.length === 0) return null;
1664
1710
 
1665
1711
  return (
1666
- <div className="flex flex-col divide-y divide-border">
1712
+ <div className="stg:flex stg:flex-col stg:divide-y stg:divide-border">
1667
1713
  {templates.map((tpl) => (
1668
- <div key={tpl.uriTemplate || tpl.name} className="px-3 py-2.5">
1669
- <div className="flex items-baseline gap-2">
1670
- <span className="text-sm font-medium text-foreground">
1714
+ <div key={tpl.uriTemplate || tpl.name} className="stg:px-3 stg:py-2.5">
1715
+ <div className="stg:flex stg:items-baseline stg:gap-2">
1716
+ <span className="stg:text-sm stg:font-medium stg:text-foreground">
1671
1717
  {tpl.name}
1672
1718
  </span>
1673
- <code className="font-mono text-[10px] text-muted-foreground">
1719
+ <code className="stg:font-mono stg:text-[10px] stg:text-muted-foreground">
1674
1720
  {tpl.uriTemplate}
1675
1721
  </code>
1676
1722
  </div>
1677
1723
  {tpl.description && (
1678
- <p className="mt-0.5 text-xs text-muted-foreground">
1724
+ <p className="stg:mt-0.5 stg:text-xs stg:text-muted-foreground">
1679
1725
  {tpl.description}
1680
1726
  </p>
1681
1727
  )}
@@ -1752,29 +1798,29 @@ function EnvSection({
1752
1798
  keyLabel="Variable name"
1753
1799
  />
1754
1800
  ) : (
1755
- <div className="flex flex-col divide-y divide-border">
1801
+ <div className="stg:flex stg:flex-col stg:divide-y stg:divide-border">
1756
1802
  {entries.map(([name, env]) => {
1757
1803
  const isOAuthManaged = name === oauthTargetEnvVar;
1758
1804
  return (
1759
- <div key={name} className="flex items-start gap-3 px-3 py-2">
1760
- <code className="shrink-0 font-mono text-sm font-medium text-foreground">
1805
+ <div key={name} className="stg:flex stg:items-start stg:gap-3 stg:px-3 stg:py-2">
1806
+ <code className="stg:shrink-0 stg:font-mono stg:text-sm stg:font-medium stg:text-foreground">
1761
1807
  {name}
1762
1808
  </code>
1763
- <span className="shrink-0 rounded bg-muted px-1.5 py-0.5 text-[10px] font-medium text-muted-foreground">
1809
+ <span className="stg:shrink-0 stg:rounded stg:bg-muted stg:px-1.5 stg:py-0.5 stg:text-[10px] stg:font-medium stg:text-muted-foreground">
1764
1810
  {env.isSecret ? "secret" : "config"}
1765
1811
  </span>
1766
1812
  {isOAuthManaged && (
1767
- <span className="shrink-0 rounded bg-primary-subtle px-1.5 py-0.5 text-[10px] font-medium text-primary">
1813
+ <span className="stg:shrink-0 stg:rounded stg:bg-primary-subtle stg:px-1.5 stg:py-0.5 stg:text-[10px] stg:font-medium stg:text-primary">
1768
1814
  oauth
1769
1815
  </span>
1770
1816
  )}
1771
1817
  {env.optional && (
1772
- <span className="shrink-0 rounded bg-muted px-1.5 py-0.5 text-[10px] font-medium text-muted-foreground-subtle">
1818
+ <span className="stg:shrink-0 stg:rounded stg:bg-muted stg:px-1.5 stg:py-0.5 stg:text-[10px] stg:font-medium stg:text-muted-foreground-subtle">
1773
1819
  optional
1774
1820
  </span>
1775
1821
  )}
1776
1822
  {env.description && (
1777
- <span className="text-xs text-muted-foreground">
1823
+ <span className="stg:text-xs stg:text-muted-foreground">
1778
1824
  {env.description}
1779
1825
  </span>
1780
1826
  )}
@@ -1820,17 +1866,17 @@ function TagsSection({
1820
1866
 
1821
1867
  return (
1822
1868
  <Section title="Tags" count={tags.length}>
1823
- <div className="flex flex-wrap gap-1.5 p-3">
1869
+ <div className="stg:flex stg:flex-wrap stg:gap-1.5 stg:p-3">
1824
1870
  {tags.map((tag) => (
1825
1871
  <span
1826
1872
  key={tag}
1827
- className="rounded-full bg-muted px-2.5 py-0.5 text-xs font-medium text-muted-foreground"
1873
+ className="stg:rounded-full stg:bg-muted stg:px-2.5 stg:py-0.5 stg:text-xs stg:font-medium stg:text-muted-foreground"
1828
1874
  >
1829
1875
  {tag}
1830
1876
  </span>
1831
1877
  ))}
1832
1878
  {editable && tags.length === 0 && (
1833
- <p className="text-xs text-muted-foreground italic">No tags</p>
1879
+ <p className="stg:text-xs stg:text-muted-foreground stg:italic">No tags</p>
1834
1880
  )}
1835
1881
  </div>
1836
1882
  </Section>
@@ -1843,8 +1889,17 @@ function TagsSection({
1843
1889
 
1844
1890
  function ToolsTabContent({
1845
1891
  tools,
1892
+ isOAuthStranded,
1893
+ onDiscover,
1894
+ isDiscovering,
1846
1895
  }: {
1847
1896
  readonly tools: readonly DiscoveredTool[];
1897
+ /** OAuth grant is healthy but discovery never landed — renders the recovery empty state. */
1898
+ readonly isOAuthStranded: boolean;
1899
+ /** Runs tool discovery (the parent's connect handler). */
1900
+ readonly onDiscover: () => void;
1901
+ /** `true` while a discovery attempt is in flight. */
1902
+ readonly isDiscovering: boolean;
1848
1903
  }) {
1849
1904
  const [search, setSearch] = useState("");
1850
1905
  const [expandedTool, setExpandedTool] = useState<string | null>(null);
@@ -1860,12 +1915,37 @@ function ToolsTabContent({
1860
1915
  }, [tools, search]);
1861
1916
 
1862
1917
  if (tools.length === 0) {
1918
+ // Two distinct empty states: "never connected" (informational) vs
1919
+ // "signed in but discovery never landed" (stigmer/stigmer#229) — the
1920
+ // latter must carry its own recovery action, because the user already
1921
+ // did the thing the informational copy asks for.
1863
1922
  return (
1864
- <div className="px-3 py-8 text-center">
1865
- <ConnectIcon className="mx-auto mb-2 size-6 text-muted-foreground-faint" />
1866
- <p className="text-xs text-muted-foreground">
1867
- Connect to this MCP server to discover its available tools.
1868
- </p>
1923
+ <div className="stg:px-3 stg:py-8 stg:text-center">
1924
+ <ConnectIcon className="stg:mx-auto stg:mb-2 stg:size-6 stg:text-muted-foreground-faint" />
1925
+ {isOAuthStranded ? (
1926
+ <>
1927
+ <p className="stg:text-xs stg:text-muted-foreground">
1928
+ Signed in, but tools haven&apos;t been discovered yet.
1929
+ </p>
1930
+ <button
1931
+ type="button"
1932
+ onClick={onDiscover}
1933
+ disabled={isDiscovering}
1934
+ className={cn(
1935
+ "stg:mt-3 stg:inline-flex stg:items-center stg:gap-1.5 stg:rounded-md stg:px-2.5 stg:py-1 stg:text-xs stg:font-medium",
1936
+ "stg:bg-primary stg:text-primary-foreground stg:hover:bg-primary-hover",
1937
+ "stg:disabled:pointer-events-none stg:disabled:opacity-50",
1938
+ )}
1939
+ >
1940
+ {isDiscovering && <Spinner />}
1941
+ {isDiscovering ? "Discovering tools..." : "Discover tools"}
1942
+ </button>
1943
+ </>
1944
+ ) : (
1945
+ <p className="stg:text-xs stg:text-muted-foreground">
1946
+ Connect to this MCP server to discover its available tools.
1947
+ </p>
1948
+ )}
1869
1949
  </div>
1870
1950
  );
1871
1951
  }
@@ -1873,43 +1953,43 @@ function ToolsTabContent({
1873
1953
  const isFiltered = search.trim().length > 0;
1874
1954
 
1875
1955
  return (
1876
- <div className="flex flex-col">
1877
- <div className="flex items-center gap-2 px-3 pb-2">
1878
- <div className="relative flex-1">
1879
- <SearchIcon className="pointer-events-none absolute left-2 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground" />
1956
+ <div className="stg:flex stg:flex-col">
1957
+ <div className="stg:flex stg:items-center stg:gap-2 stg:px-3 stg:pb-2">
1958
+ <div className="stg:relative stg:flex-1">
1959
+ <SearchIcon className="stg:pointer-events-none stg:absolute stg:left-2 stg:top-1/2 stg:size-3.5 stg:-translate-y-1/2 stg:text-muted-foreground" />
1880
1960
  <input
1881
1961
  type="text"
1882
1962
  value={search}
1883
1963
  onChange={(e) => setSearch(e.target.value)}
1884
1964
  placeholder="Search tools…"
1885
1965
  aria-label="Search tools"
1886
- className="w-full rounded-md border border-border bg-background py-1.5 pl-7 pr-7 text-xs text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring"
1966
+ className="stg:w-full stg:rounded-md stg:border stg:border-border stg:bg-background stg:py-1.5 stg:pl-7 stg:pr-7 stg:text-xs stg:text-foreground stg:placeholder:text-muted-foreground stg:focus:outline-none stg:focus:ring-2 stg:focus:ring-ring"
1887
1967
  />
1888
1968
  {isFiltered && (
1889
1969
  <button
1890
1970
  type="button"
1891
1971
  onClick={() => setSearch("")}
1892
1972
  aria-label="Clear search"
1893
- className="absolute right-2 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground"
1973
+ className="stg:absolute stg:right-2 stg:top-1/2 stg:-translate-y-1/2 stg:text-muted-foreground stg:hover:text-foreground"
1894
1974
  >
1895
- <CloseIcon className="size-3" />
1975
+ <CloseIcon className="stg:size-3" />
1896
1976
  </button>
1897
1977
  )}
1898
1978
  </div>
1899
- <span className="shrink-0 text-[10px] text-muted-foreground">
1979
+ <span className="stg:shrink-0 stg:text-[10px] stg:text-muted-foreground">
1900
1980
  {isFiltered ? `${filtered.length} of ${tools.length}` : tools.length}
1901
1981
  </span>
1902
1982
  </div>
1903
1983
 
1904
1984
  {filtered.length === 0 ? (
1905
- <div className="px-3 py-6 text-center">
1906
- <p className="text-xs text-muted-foreground">
1985
+ <div className="stg:px-3 stg:py-6 stg:text-center">
1986
+ <p className="stg:text-xs stg:text-muted-foreground">
1907
1987
  No tools matching &ldquo;{search}&rdquo;
1908
1988
  </p>
1909
1989
  </div>
1910
1990
  ) : (
1911
- <div className="max-h-96 overflow-y-auto">
1912
- <div className="flex flex-col divide-y divide-border">
1991
+ <div className="stg:max-h-96 stg:overflow-y-auto">
1992
+ <div className="stg:flex stg:flex-col stg:divide-y stg:divide-border">
1913
1993
  {filtered.map((tool) => {
1914
1994
  const isExpanded = expandedTool === tool.name;
1915
1995
  const hasSchema =
@@ -1923,34 +2003,34 @@ function ToolsTabContent({
1923
2003
  onClick={() =>
1924
2004
  setExpandedTool(isExpanded ? null : tool.name)
1925
2005
  }
1926
- className="flex w-full items-start gap-2 px-3 py-2.5 text-left transition-colors hover:bg-muted-faint"
2006
+ className="stg:flex stg:w-full stg:items-start stg:gap-2 stg:px-3 stg:py-2.5 stg:text-left stg:transition-colors stg:hover:bg-muted-faint"
1927
2007
  aria-expanded={isExpanded}
1928
2008
  >
1929
2009
  <ChevronIcon
1930
2010
  className={cn(
1931
- "mt-0.5 size-3 shrink-0 text-muted-foreground transition-transform",
1932
- isExpanded && "rotate-90",
2011
+ "stg:mt-0.5 stg:size-3 stg:shrink-0 stg:text-muted-foreground stg:transition-transform",
2012
+ isExpanded && "stg:rotate-90",
1933
2013
  )}
1934
2014
  />
1935
- <div className="min-w-0 flex-1">
1936
- <code className="font-mono text-sm font-medium text-foreground">
2015
+ <div className="stg:min-w-0 stg:flex-1">
2016
+ <code className="stg:font-mono stg:text-sm stg:font-medium stg:text-foreground">
1937
2017
  {tool.name}
1938
2018
  </code>
1939
2019
  {tool.description && (
1940
- <p className="mt-0.5 text-xs text-muted-foreground">
2020
+ <p className="stg:mt-0.5 stg:text-xs stg:text-muted-foreground">
1941
2021
  {tool.description}
1942
2022
  </p>
1943
2023
  )}
1944
2024
  </div>
1945
2025
  {hasSchema && (
1946
- <span className="mt-0.5 shrink-0 rounded bg-muted px-1.5 py-0.5 text-[10px] font-medium text-muted-foreground">
2026
+ <span className="stg:mt-0.5 stg:shrink-0 stg:rounded stg:bg-muted stg:px-1.5 stg:py-0.5 stg:text-[10px] stg:font-medium stg:text-muted-foreground">
1947
2027
  schema
1948
2028
  </span>
1949
2029
  )}
1950
2030
  </button>
1951
2031
  {isExpanded && hasSchema && (
1952
- <div className="border-t border-border bg-muted-faint px-3 py-2">
1953
- <pre className="max-h-64 overflow-auto whitespace-pre-wrap break-words rounded border border-border bg-background p-2 font-mono text-[11px] text-foreground">
2032
+ <div className="stg:border-t stg:border-border stg:bg-muted-faint stg:px-3 stg:py-2">
2033
+ <pre className="stg:max-h-64 stg:overflow-auto stg:whitespace-pre-wrap stg:break-words stg:rounded stg:border stg:border-border stg:bg-background stg:p-2 stg:font-mono stg:text-[11px] stg:text-foreground">
1954
2034
  {JSON.stringify(tool.inputSchema, null, 2)}
1955
2035
  </pre>
1956
2036
  </div>
@@ -1969,10 +2049,13 @@ function PoliciesTabContent({
1969
2049
  pinnedPolicies,
1970
2050
  classifiedPolicies,
1971
2051
  hasDiscoveredTools,
2052
+ isOAuthStranded,
1972
2053
  }: {
1973
2054
  readonly pinnedPolicies: readonly ToolApprovalPolicy[];
1974
2055
  readonly classifiedPolicies: readonly ToolApprovalPolicy[];
1975
2056
  readonly hasDiscoveredTools: boolean;
2057
+ /** OAuth grant is healthy but discovery never landed — adjusts the empty-state copy. */
2058
+ readonly isOAuthStranded: boolean;
1976
2059
  }) {
1977
2060
  const [search, setSearch] = useState("");
1978
2061
 
@@ -2004,64 +2087,66 @@ function PoliciesTabContent({
2004
2087
 
2005
2088
  if (!hasAnyPolicies) {
2006
2089
  return (
2007
- <div className="px-3 py-8 text-center">
2008
- <ShieldIcon className="mx-auto mb-2 size-6 text-muted-foreground-faint" />
2009
- <p className="text-xs text-muted-foreground">
2090
+ <div className="stg:px-3 stg:py-8 stg:text-center">
2091
+ <ShieldIcon className="stg:mx-auto stg:mb-2 stg:size-6 stg:text-muted-foreground-faint" />
2092
+ <p className="stg:text-xs stg:text-muted-foreground">
2010
2093
  {hasDiscoveredTools
2011
2094
  ? "No approval policies yet. Reconnect to reclassify tools."
2012
- : "Connect to discover tools and auto-classify approval policies."}
2095
+ : isOAuthStranded
2096
+ ? "Signed in \u2014 discover tools to auto-classify approval policies."
2097
+ : "Connect to discover tools and auto-classify approval policies."}
2013
2098
  </p>
2014
2099
  </div>
2015
2100
  );
2016
2101
  }
2017
2102
 
2018
2103
  return (
2019
- <div className="flex flex-col">
2020
- <div className="flex items-center gap-2 px-3 pb-2">
2021
- <div className="relative flex-1">
2022
- <SearchIcon className="pointer-events-none absolute left-2 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground" />
2104
+ <div className="stg:flex stg:flex-col">
2105
+ <div className="stg:flex stg:items-center stg:gap-2 stg:px-3 stg:pb-2">
2106
+ <div className="stg:relative stg:flex-1">
2107
+ <SearchIcon className="stg:pointer-events-none stg:absolute stg:left-2 stg:top-1/2 stg:size-3.5 stg:-translate-y-1/2 stg:text-muted-foreground" />
2023
2108
  <input
2024
2109
  type="text"
2025
2110
  value={search}
2026
2111
  onChange={(e) => setSearch(e.target.value)}
2027
2112
  placeholder="Search policies…"
2028
2113
  aria-label="Search policies"
2029
- className="w-full rounded-md border border-border bg-background py-1.5 pl-7 pr-7 text-xs text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring"
2114
+ className="stg:w-full stg:rounded-md stg:border stg:border-border stg:bg-background stg:py-1.5 stg:pl-7 stg:pr-7 stg:text-xs stg:text-foreground stg:placeholder:text-muted-foreground stg:focus:outline-none stg:focus:ring-2 stg:focus:ring-ring"
2030
2115
  />
2031
2116
  {isFiltered && (
2032
2117
  <button
2033
2118
  type="button"
2034
2119
  onClick={() => setSearch("")}
2035
2120
  aria-label="Clear search"
2036
- className="absolute right-2 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground"
2121
+ className="stg:absolute stg:right-2 stg:top-1/2 stg:-translate-y-1/2 stg:text-muted-foreground stg:hover:text-foreground"
2037
2122
  >
2038
- <CloseIcon className="size-3" />
2123
+ <CloseIcon className="stg:size-3" />
2039
2124
  </button>
2040
2125
  )}
2041
2126
  </div>
2042
- <span className="shrink-0 text-[10px] text-muted-foreground">
2127
+ <span className="stg:shrink-0 stg:text-[10px] stg:text-muted-foreground">
2043
2128
  {isFiltered ? `${filteredTotal} of ${totalCount}` : totalCount}
2044
2129
  </span>
2045
2130
  </div>
2046
2131
 
2047
2132
  {filteredTotal === 0 ? (
2048
- <div className="px-3 py-6 text-center">
2049
- <p className="text-xs text-muted-foreground">
2133
+ <div className="stg:px-3 stg:py-6 stg:text-center">
2134
+ <p className="stg:text-xs stg:text-muted-foreground">
2050
2135
  No policies matching &ldquo;{search}&rdquo;
2051
2136
  </p>
2052
2137
  </div>
2053
2138
  ) : (
2054
- <div className="max-h-96 overflow-y-auto">
2139
+ <div className="stg:max-h-96 stg:overflow-y-auto">
2055
2140
  {filteredPinned.length > 0 && (
2056
2141
  <PolicyGroup
2057
- icon={<PinIcon className="size-3.5" />}
2142
+ icon={<PinIcon className="stg:size-3.5" />}
2058
2143
  label="Pinned"
2059
2144
  policies={filteredPinned}
2060
2145
  />
2061
2146
  )}
2062
2147
  {filteredClassified.length > 0 && (
2063
2148
  <PolicyGroup
2064
- icon={<SparklesIcon className="size-3.5" />}
2149
+ icon={<SparklesIcon className="stg:size-3.5" />}
2065
2150
  label="Auto-classified"
2066
2151
  policies={filteredClassified}
2067
2152
  />
@@ -2082,30 +2167,30 @@ function PolicyGroup({
2082
2167
  readonly policies: readonly ToolApprovalPolicy[];
2083
2168
  }) {
2084
2169
  return (
2085
- <div className="flex flex-col">
2086
- <div className="flex items-center gap-1.5 border-b border-border bg-muted-faint px-3 py-1.5">
2087
- <span className="text-muted-foreground">{icon}</span>
2088
- <span className="text-[10px] font-medium uppercase tracking-wider text-muted-foreground">
2170
+ <div className="stg:flex stg:flex-col">
2171
+ <div className="stg:flex stg:items-center stg:gap-1.5 stg:border-b stg:border-border stg:bg-muted-faint stg:px-3 stg:py-1.5">
2172
+ <span className="stg:text-muted-foreground">{icon}</span>
2173
+ <span className="stg:text-[10px] stg:font-medium stg:uppercase stg:tracking-wider stg:text-muted-foreground">
2089
2174
  {label}
2090
2175
  </span>
2091
- <span className="text-[10px] text-muted-foreground">
2176
+ <span className="stg:text-[10px] stg:text-muted-foreground">
2092
2177
  ({policies.length})
2093
2178
  </span>
2094
2179
  </div>
2095
- <div className="flex flex-col divide-y divide-border">
2180
+ <div className="stg:flex stg:flex-col stg:divide-y stg:divide-border">
2096
2181
  {policies.map((policy) => (
2097
- <div key={policy.toolName} className="px-3 py-2.5">
2098
- <div className="flex items-baseline gap-2">
2099
- <code className="font-mono text-sm font-medium text-foreground">
2182
+ <div key={policy.toolName} className="stg:px-3 stg:py-2.5">
2183
+ <div className="stg:flex stg:items-baseline stg:gap-2">
2184
+ <code className="stg:font-mono stg:text-sm stg:font-medium stg:text-foreground">
2100
2185
  {policy.toolName}
2101
2186
  </code>
2102
- <span className="inline-flex items-center gap-1 rounded bg-amber-500/10 px-1.5 py-0.5 text-[10px] font-medium text-amber-600 dark:text-amber-400">
2103
- <ShieldIcon className="size-2.5" />
2187
+ <span className="stg:inline-flex stg:items-center stg:gap-1 stg:rounded stg:bg-amber-500/10 stg:px-1.5 stg:py-0.5 stg:text-[10px] stg:font-medium stg:text-amber-600 stg:dark:text-amber-400">
2188
+ <ShieldIcon className="stg:size-2.5" />
2104
2189
  requires approval
2105
2190
  </span>
2106
2191
  </div>
2107
2192
  {policy.message && (
2108
- <p className="mt-0.5 text-xs text-muted-foreground">
2193
+ <p className="stg:mt-0.5 stg:text-xs stg:text-muted-foreground">
2109
2194
  {policy.message}
2110
2195
  </p>
2111
2196
  )}
@@ -2123,7 +2208,7 @@ function PolicyGroup({
2123
2208
 
2124
2209
  function Dot() {
2125
2210
  return (
2126
- <span className="shrink-0" aria-hidden="true">
2211
+ <span className="stg:shrink-0" aria-hidden="true">
2127
2212
  {"\u00B7"}
2128
2213
  </span>
2129
2214
  );
@@ -2136,23 +2221,23 @@ function Dot() {
2136
2221
  function LoadingSkeleton({ className }: { readonly className?: string }) {
2137
2222
  return (
2138
2223
  <div
2139
- className={cn("flex flex-col gap-6", className)}
2224
+ className={cn("stg:flex stg:flex-col stg:gap-6", className)}
2140
2225
  aria-busy="true"
2141
2226
  aria-label="Loading MCP server details"
2142
2227
  >
2143
- <div className="flex items-start gap-3">
2144
- <div className="mt-1 size-6 shrink-0 animate-pulse rounded bg-muted" />
2145
- <div className="flex-1 space-y-2">
2146
- <div className="h-5 w-48 animate-pulse rounded bg-muted" />
2147
- <div className="h-3 w-64 animate-pulse rounded bg-muted" />
2148
- <div className="h-4 w-full max-w-md animate-pulse rounded bg-muted" />
2228
+ <div className="stg:flex stg:items-start stg:gap-3">
2229
+ <div className="stg:mt-1 stg:size-6 stg:shrink-0 stg:animate-pulse stg:rounded stg:bg-muted" />
2230
+ <div className="stg:flex-1 stg:space-y-2">
2231
+ <div className="stg:h-5 stg:w-48 stg:animate-pulse stg:rounded stg:bg-muted" />
2232
+ <div className="stg:h-3 stg:w-64 stg:animate-pulse stg:rounded stg:bg-muted" />
2233
+ <div className="stg:h-4 stg:w-full stg:max-w-md stg:animate-pulse stg:rounded stg:bg-muted" />
2149
2234
  </div>
2150
2235
  </div>
2151
2236
  {[24, 48, 16, 12].map((h, i) => (
2152
- <div key={i} className="space-y-2">
2153
- <div className="h-3 w-28 animate-pulse rounded bg-muted" />
2237
+ <div key={i} className="stg:space-y-2">
2238
+ <div className="stg:h-3 stg:w-28 stg:animate-pulse stg:rounded stg:bg-muted" />
2154
2239
  <div
2155
- className="animate-pulse rounded-lg border border-border bg-muted-faint"
2240
+ className="stg:animate-pulse stg:rounded-lg stg:border stg:border-border stg:bg-muted-faint"
2156
2241
  style={{ height: `${h * 4}px` }}
2157
2242
  />
2158
2243
  </div>
@@ -2166,15 +2251,15 @@ function NotFoundState({ className }: { readonly className?: string }) {
2166
2251
  <div
2167
2252
  role="status"
2168
2253
  className={cn(
2169
- "flex flex-col items-center gap-2 py-12 text-center",
2254
+ "stg:flex stg:flex-col stg:items-center stg:gap-2 stg:py-12 stg:text-center",
2170
2255
  className,
2171
2256
  )}
2172
2257
  >
2173
- <McpServerIcon className="size-10 text-muted-foreground-faint" />
2174
- <p className="text-sm font-medium text-muted-foreground">
2258
+ <McpServerIcon className="stg:size-10 stg:text-muted-foreground-faint" />
2259
+ <p className="stg:text-sm stg:font-medium stg:text-muted-foreground">
2175
2260
  MCP Server not found
2176
2261
  </p>
2177
- <p className="text-xs text-muted-foreground-subtle">
2262
+ <p className="stg:text-xs stg:text-muted-foreground-subtle">
2178
2263
  This MCP server doesn&apos;t exist or you don&apos;t have access to it.
2179
2264
  </p>
2180
2265
  </div>
@@ -2448,7 +2533,7 @@ function Spinner() {
2448
2533
  stroke="currentColor"
2449
2534
  strokeWidth="2"
2450
2535
  strokeLinecap="round"
2451
- className="animate-spin"
2536
+ className="stg:animate-spin"
2452
2537
  aria-hidden="true"
2453
2538
  >
2454
2539
  <path d="M8 2a6 6 0 1 0 6 6" />