@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
@@ -11,14 +11,16 @@ import { useUpdateMcpServer } from "./useUpdateMcpServer.js";
11
11
  import { mcpServerToInput } from "./internal/mcpServerToInput.js";
12
12
  import { useMcpServerConnect } from "./useMcpServerConnect.js";
13
13
  import { useMcpServerCredentials } from "./useMcpServerCredentials.js";
14
- import { useMcpServerOAuthConnect } from "./useMcpServerOAuthConnect.js";
14
+ import { useMcpServerOAuthConnect, getOAuthConnectErrorMessage, } from "./useMcpServerOAuthConnect.js";
15
15
  import { StdioSandboxNotice } from "./StdioSandboxNotice.js";
16
16
  import { OAuthRequiredNotice } from "./OAuthRequiredNotice.js";
17
+ import { VendorApprovalBlockedNotice } from "./VendorApprovalBlockedNotice.js";
17
18
  import { useDisconnectOAuth } from "./useDisconnectOAuth.js";
18
19
  import { useOrgOAuthApp } from "./useOrgOAuthApp.js";
19
20
  import { OAuthAppForm } from "./OAuthAppForm.js";
20
21
  import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
21
22
  import { ErrorMessage } from "../error/ErrorMessage.js";
23
+ import { Tooltip, TooltipContent, TooltipTrigger } from "../internal/tooltip.js";
22
24
  import { EnvVarForm } from "../environment/EnvVarForm.js";
23
25
  import { VisibilityBadge } from "../library/VisibilitySelector.js";
24
26
  import { useManageAccess } from "../access/useManageAccess.js";
@@ -114,31 +116,48 @@ export function McpServerDetailView({ org, slug, mcpServerState, onResourceLoad,
114
116
  refetch();
115
117
  }
116
118
  catch {
117
- // error state is managed by the oauth hook
119
+ // Error state is managed by the oauth hook — but refetch anyway:
120
+ // completeOAuthConnect persists the grant BEFORE the chained
121
+ // discovery runs, so a discovery-leg failure still changed server
122
+ // state. Without this, stale isOAuthConnected=false makes the next
123
+ // Connect click relaunch the popup instead of retrying discovery
124
+ // (stigmer/stigmer#229).
125
+ credentials.refetch();
126
+ refetch();
118
127
  }
119
128
  }, [mcpServer, oauth, credentials, refetch]);
129
+ // A failure in the "connecting" phase proves sign-in already succeeded —
130
+ // the grant exists server-side even while the grant-status refetch is
131
+ // still in flight. Retry bare discovery; never relaunch the popup and
132
+ // never demand credentials the flow already has.
133
+ const isDiscoveryRetry = credentials.authMode === "oauth" && oauth.failedPhase === "connecting";
120
134
  const handleConnectClick = useCallback(async () => {
121
135
  if (!mcpServer?.metadata?.id)
122
136
  return;
123
137
  if (credentials.authMode === "oauth" &&
124
138
  !credentials.isOAuthConnected &&
125
- !credentials.manualOverride) {
139
+ !credentials.manualOverride &&
140
+ !isDiscoveryRetry) {
126
141
  handleOAuthSignIn();
127
142
  return;
128
143
  }
129
- if (!credentials.isReady) {
144
+ if (!credentials.isReady && !isDiscoveryRetry) {
130
145
  setShowCredentialForm(true);
131
146
  return;
132
147
  }
133
148
  const envKeys = Object.keys(mcpServer.spec?.env ?? {});
134
149
  try {
135
150
  await connection.connect(mcpServer.metadata.id, activeOrg ?? org, undefined, envKeys);
151
+ // Discovery succeeded — retire the OAuth chain's stale
152
+ // discovery-failure error so the banner doesn't outlive the state
153
+ // it described.
154
+ oauth.clearError();
136
155
  refetch();
137
156
  }
138
157
  catch {
139
158
  // error state is managed by the hook
140
159
  }
141
- }, [mcpServer, credentials.authMode, credentials.isOAuthConnected, credentials.manualOverride, credentials.isReady, connection, refetch, handleOAuthSignIn]);
160
+ }, [mcpServer, credentials.authMode, credentials.isOAuthConnected, credentials.manualOverride, credentials.isReady, isDiscoveryRetry, connection, oauth.clearError, refetch, handleOAuthSignIn, activeOrg, org]);
142
161
  const handleCredentialSubmit = useCallback(async (values, options) => {
143
162
  try {
144
163
  if (options.saveForFuture) {
@@ -210,6 +229,18 @@ export function McpServerDetailView({ org, slug, mcpServerState, onResourceLoad,
210
229
  const tools = capabilities?.tools ?? [];
211
230
  const resourceTemplates = capabilities?.resourceTemplates ?? [];
212
231
  const hasDiscoveredTools = tools.length > 0;
232
+ // "Signed in but never discovered" (stigmer/stigmer#229): the OAuth flow
233
+ // persists the grant in completeOAuthConnect BEFORE the chained discovery
234
+ // runs, so a failed/interrupted discovery leg leaves a healthy grant with
235
+ // empty discovered_capabilities. Both inputs are server truth, so this
236
+ // derivation survives reloads and self-heals once discovery lands (even
237
+ // when the workflow outlives the browser's RPC). Token-expired grants are
238
+ // excluded — re-auth, not discovery, is their next step.
239
+ const isOAuthStranded = credentials.authMode === "oauth" &&
240
+ credentials.isOAuthConnected &&
241
+ credentials.connectionHealth !==
242
+ OAuthConnectionHealth.OAUTH_CONNECTION_HEALTH_TOKEN_EXPIRED &&
243
+ !hasDiscoveredTools;
213
244
  const capabilityTabs = useMemo(() => {
214
245
  const items = [
215
246
  { id: "tools", label: "Tools", badge: tools.length },
@@ -225,6 +256,14 @@ export function McpServerDetailView({ org, slug, mcpServerState, onResourceLoad,
225
256
  return items;
226
257
  }, [tools.length, totalPolicyCount, resourceTemplates.length]);
227
258
  const combinedError = connection.error ?? oauth.error;
259
+ // OAuth-chain errors compose through the phase-aware helper so a
260
+ // discovery-leg failure reads "signed in, but discovery failed" instead
261
+ // of masquerading as a failed sign-in.
262
+ const combinedErrorMessage = connection.error
263
+ ? getUserMessage(connection.error)
264
+ : oauth.error
265
+ ? getOAuthConnectErrorMessage(oauth.error, oauth.failedPhase)
266
+ : null;
228
267
  const combinedClearError = useCallback(() => {
229
268
  connection.clearError();
230
269
  oauth.clearError();
@@ -270,7 +309,7 @@ export function McpServerDetailView({ org, slug, mcpServerState, onResourceLoad,
270
309
  qualifiedSlug: meta?.slug
271
310
  ? (meta.org ? `${meta.org}/${meta.slug}` : meta.slug)
272
311
  : undefined,
273
- icon: editable && saveMcpField ? (_jsx(InlineEditImage, { value: spec?.iconUrl ?? "", onSave: (v) => saveMcpField("iconUrl", v || undefined), isSaving: isUpdating, fallback: _jsx(McpServerIcon, { className: "size-6 text-muted-foreground" }), size: "md" })) : spec?.iconUrl ? undefined : _jsx(McpServerIcon, { className: "size-6 text-muted-foreground" }),
312
+ icon: editable && saveMcpField ? (_jsx(InlineEditImage, { value: spec?.iconUrl ?? "", onSave: (v) => saveMcpField("iconUrl", v || undefined), isSaving: isUpdating, fallback: _jsx(McpServerIcon, { className: "stg:size-6 stg:text-muted-foreground" }), size: "md" })) : spec?.iconUrl ? undefined : _jsx(McpServerIcon, { className: "stg:size-6 stg:text-muted-foreground" }),
274
313
  iconUrl: editable ? undefined : spec?.iconUrl || undefined,
275
314
  createdAt: specAudit?.createdAt ? timestampDate(specAudit.createdAt) : null,
276
315
  updatedAt: specAudit?.updatedAt ? timestampDate(specAudit.updatedAt) : null,
@@ -285,16 +324,16 @@ export function McpServerDetailView({ org, slug, mcpServerState, onResourceLoad,
285
324
  const headerMetaExtra = (_jsxs(_Fragment, { children: [status && _jsx(ValidationStateBadge, { state: status.validationState }), lastDiscoveredAt && (_jsxs(_Fragment, { children: [_jsx(Dot, {}), _jsxs("span", { children: ["Discovered ", formatDate(lastDiscoveredAt)] })] }))] }));
286
325
  const headerBanner = status?.validationState === ValidationState.invalid &&
287
326
  status.validationMessage ? (_jsx(ValidationBanner, { message: status.validationMessage })) : undefined;
288
- return (_jsxs(_Fragment, { children: [_jsxs(ResourceDetailShell, { header: headerMeta, visibilityControl: visibilityControl, headerMetaExtra: headerMetaExtra, headerBanner: headerBanner, primaryAction: primaryAction, actions: mergedActions, className: className, children: [(editable || spec?.description) && (_jsx(Section, { title: "Description", children: editable && saveMcpField ? (_jsx("div", { className: "max-h-20 overflow-y-auto p-3", children: _jsx(InlineEditTextarea, { value: spec?.description || "", onSave: (v) => saveMcpField("description", v || undefined), isSaving: isUpdating, placeholder: "Add a description", minRows: 2 }) })) : (_jsx("div", { className: "p-3", children: _jsx("pre", { className: "whitespace-pre-wrap break-words text-sm text-foreground font-sans", children: spec?.description }) })) })), hasSource && _jsx(SourceSection, { spec: spec }), (editable || spec?.serverType.case) && (_jsx(ServerConfigSection, { serverType: spec?.serverType, editable: editable, isSaving: isUpdating, saveMcpField: saveMcpField })), (editable || (spec?.env && Object.keys(spec.env).length > 0)) && (_jsx(EnvSection, { data: spec?.env ?? {}, oauthTargetEnvVar: credentials.oauthTargetEnvVar, editable: editable, isSaving: isUpdating, saveMcpField: saveMcpField })), _jsxs(Section, { title: "Connection", scrollTarget: "mcp-connection", children: [_jsx(StdioSandboxNotice, { serverType: spec?.serverType, className: "mb-3" }), _jsx(OAuthRequiredNotice, { oauthOnly: spec?.auth?.oauthOnly, className: "mb-3" }), _jsx(ConnectBar, { manualEntrySupported: credentials.manualEntrySupported, isConnecting: connection.isConnecting || oauth.isInProgress, connectionError: combinedError, onConnect: handleConnectClick, onClearConnectionError: combinedClearError, hasDiscoveredTools: hasDiscoveredTools, credentialsLoading: credentials.isLoading, oauthPhase: oauth.phase, authMode: credentials.authMode, isOAuthConnected: credentials.isOAuthConnected, connectionHealth: credentials.connectionHealth, canDisconnect: credentials.canDisconnect, onDisconnect: handleDisconnect, isDisconnecting: disconnectOAuth.isDisconnecting, disconnectError: disconnectOAuth.error, onClearDisconnectError: disconnectOAuth.clearError, serverName: mcpServer?.metadata?.name ?? slug, accessTokenExpiresAt: credentials.accessTokenExpiresAt, tokenLifetimeHint: credentials.tokenLifetimeHint, isVendorApprovalPending: credentials.isVendorApprovalPending, isVendorApprovalBlocked: credentials.isVendorApprovalBlocked, vendorApprovalDocsUrl: credentials.vendorApprovalDocsUrl, canBringOwnApp: credentials.canBringOwnApp, isOrgOAuthApp: credentials.isOrgOAuthApp, onBringOwnApp: () => setShowByoaForm(true), onRemoveOrgApp: handleRemoveOrgApp, isRemovingOrgApp: orgOAuthApp.isDeleting, removeOrgAppError: orgOAuthApp.deleteError, onClearRemoveOrgAppError: orgOAuthApp.clearErrors, manualOverride: credentials.manualOverride, onManualOverride: () => {
327
+ return (_jsxs(_Fragment, { children: [_jsxs(ResourceDetailShell, { header: headerMeta, visibilityControl: visibilityControl, headerMetaExtra: headerMetaExtra, headerBanner: headerBanner, primaryAction: primaryAction, actions: mergedActions, className: className, children: [(editable || spec?.description) && (_jsx(Section, { title: "Description", children: editable && saveMcpField ? (_jsx("div", { className: "stg:max-h-20 stg:overflow-y-auto stg:p-3", children: _jsx(InlineEditTextarea, { value: spec?.description || "", onSave: (v) => saveMcpField("description", v || undefined), isSaving: isUpdating, placeholder: "Add a description", minRows: 2 }) })) : (_jsx("div", { className: "stg:p-3", children: _jsx("pre", { className: "stg:whitespace-pre-wrap stg:break-words stg:text-sm stg:text-foreground stg:font-sans", children: spec?.description }) })) })), hasSource && _jsx(SourceSection, { spec: spec }), (editable || spec?.serverType.case) && (_jsx(ServerConfigSection, { serverType: spec?.serverType, editable: editable, isSaving: isUpdating, saveMcpField: saveMcpField })), (editable || (spec?.env && Object.keys(spec.env).length > 0)) && (_jsx(EnvSection, { data: spec?.env ?? {}, oauthTargetEnvVar: credentials.oauthTargetEnvVar, editable: editable, isSaving: isUpdating, saveMcpField: saveMcpField })), _jsxs(Section, { title: "Connection", scrollTarget: "mcp-connection", children: [_jsx(StdioSandboxNotice, { serverType: spec?.serverType, className: "stg:mb-3" }), _jsx(OAuthRequiredNotice, { oauthOnly: spec?.auth?.oauthOnly, className: "stg:mb-3" }), _jsx(ConnectBar, { manualEntrySupported: credentials.manualEntrySupported, isConnecting: connection.isConnecting || oauth.isInProgress, connectionError: combinedError, connectionErrorMessage: combinedErrorMessage, onConnect: handleConnectClick, onClearConnectionError: combinedClearError, hasDiscoveredTools: hasDiscoveredTools, isOAuthStranded: isOAuthStranded, credentialsLoading: credentials.isLoading, oauthPhase: oauth.phase, authMode: credentials.authMode, isOAuthConnected: credentials.isOAuthConnected, connectionHealth: credentials.connectionHealth, canDisconnect: credentials.canDisconnect, onDisconnect: handleDisconnect, isDisconnecting: disconnectOAuth.isDisconnecting, disconnectError: disconnectOAuth.error, onClearDisconnectError: disconnectOAuth.clearError, serverName: mcpServer?.metadata?.name ?? slug, accessTokenExpiresAt: credentials.accessTokenExpiresAt, tokenLifetimeHint: credentials.tokenLifetimeHint, isVendorApprovalPending: credentials.isVendorApprovalPending, isVendorApprovalBlocked: credentials.isVendorApprovalBlocked, vendorApprovalDocsUrl: credentials.vendorApprovalDocsUrl, canBringOwnApp: credentials.canBringOwnApp, isOrgOAuthApp: credentials.isOrgOAuthApp, onBringOwnApp: () => setShowByoaForm(true), onRemoveOrgApp: handleRemoveOrgApp, isRemovingOrgApp: orgOAuthApp.isDeleting, removeOrgAppError: orgOAuthApp.deleteError, onClearRemoveOrgAppError: orgOAuthApp.clearErrors, manualOverride: credentials.manualOverride, onManualOverride: () => {
289
328
  credentials.setManualOverride(true);
290
329
  setShowCredentialForm(true);
291
330
  }, onBackToOAuth: () => {
292
331
  credentials.setManualOverride(false);
293
332
  setShowCredentialForm(false);
294
- }, onCancelOAuth: oauth.clearError }), showCredentialForm && credentials.missingVariables.length > 0 && (_jsx("div", { className: "border-b border-border p-4", "data-cursor-target": "credential-form", children: _jsx(EnvVarForm, { title: "Credentials Required", description: "Enter the credentials needed to connect to this MCP server. Toggle \"Save for future runs\" to persist them in your personal environment, or leave it off for one-time use.", variables: credentials.missingVariables, onSubmit: (values, options) => handleCredentialSubmit(values, options), onCancel: () => setShowCredentialForm(false), isSubmitting: credentials.isSaving, poolValues: credentialPoolValues, className: "w-full max-w-md" }) }))] }), _jsxs("dialog", { ref: byoaDialogRef, onCancel: handleByoaDialogCancel, className: cn("m-auto w-full max-w-md rounded-lg border border-border bg-background p-6 shadow-lg", "backdrop:bg-black/50"), children: [_jsx("h3", { className: "mb-4 text-base font-semibold text-foreground", children: "Use your own OAuth app" }), _jsx(OAuthAppForm, { providerName: mcpServer?.metadata?.name ?? slug, vendorDocsUrl: credentials.vendorApprovalDocsUrl, onSubmit: handleByoaSubmit, onCancel: () => {
333
+ }, onCancelOAuth: oauth.clearError }), showCredentialForm && credentials.missingVariables.length > 0 && (_jsx("div", { className: "stg:border-b stg:border-border stg:p-4", "data-cursor-target": "credential-form", children: _jsx(EnvVarForm, { title: "Credentials Required", description: "Enter the credentials needed to connect to this MCP server. Toggle \"Save for future runs\" to persist them in your personal environment, or leave it off for one-time use.", variables: credentials.missingVariables, onSubmit: (values, options) => handleCredentialSubmit(values, options), onCancel: () => setShowCredentialForm(false), isSubmitting: credentials.isSaving, poolValues: credentialPoolValues, className: "stg:w-full stg:max-w-md" }) }))] }), _jsxs("dialog", { ref: byoaDialogRef, onCancel: handleByoaDialogCancel, className: cn("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", "stg:backdrop:bg-black/50"), children: [_jsx("h3", { className: "stg:mb-4 stg:text-base stg:font-semibold stg:text-foreground", children: "Use your own OAuth app" }), _jsx(OAuthAppForm, { providerName: mcpServer?.metadata?.name ?? slug, vendorDocsUrl: credentials.vendorApprovalDocsUrl, onSubmit: handleByoaSubmit, onCancel: () => {
295
334
  setShowByoaForm(false);
296
335
  orgOAuthApp.clearErrors();
297
- }, isSubmitting: orgOAuthApp.isSetting, error: orgOAuthApp.setError })] }), _jsx(Section, { title: "Capabilities", scrollTarget: "mcp-capabilities", children: _jsxs(Tabs, { tabs: capabilityTabs, activeTab: capabilityTab, onTabChange: (id) => setCapabilityTab(id), "aria-label": "MCP server capabilities", children: [capabilityTab === "tools" && (_jsx(ToolsTabContent, { tools: tools })), capabilityTab === "policies" && (_jsx(PoliciesTabContent, { pinnedPolicies: pinnedPolicies, classifiedPolicies: classifiedPolicies, hasDiscoveredTools: hasDiscoveredTools })), capabilityTab === "resources" && (_jsx(ResourceTemplatesList, { templates: resourceTemplates }))] }) }), (editable || (spec && spec.tags.length > 0)) && (_jsx(TagsSection, { tags: spec?.tags ?? [], editable: editable, isSaving: isUpdating, saveMcpField: saveMcpField }))] }), access.dialog] }));
336
+ }, isSubmitting: orgOAuthApp.isSetting, error: orgOAuthApp.setError })] }), _jsx(Section, { title: "Capabilities", scrollTarget: "mcp-capabilities", children: _jsxs(Tabs, { tabs: capabilityTabs, activeTab: capabilityTab, onTabChange: (id) => setCapabilityTab(id), "aria-label": "MCP server capabilities", children: [capabilityTab === "tools" && (_jsx(ToolsTabContent, { tools: tools, isOAuthStranded: isOAuthStranded, onDiscover: handleConnectClick, isDiscovering: connection.isConnecting || oauth.isInProgress })), capabilityTab === "policies" && (_jsx(PoliciesTabContent, { pinnedPolicies: pinnedPolicies, classifiedPolicies: classifiedPolicies, hasDiscoveredTools: hasDiscoveredTools, isOAuthStranded: isOAuthStranded })), capabilityTab === "resources" && (_jsx(ResourceTemplatesList, { templates: resourceTemplates }))] }) }), (editable || (spec && spec.tags.length > 0)) && (_jsx(TagsSection, { tags: spec?.tags ?? [], editable: editable, isSaving: isUpdating, saveMcpField: saveMcpField }))] }), access.dialog] }));
298
337
  }
299
338
  // ---------------------------------------------------------------------------
300
339
  // ConnectBar — single entry point for capability discovery
@@ -303,34 +342,34 @@ export function McpServerDetailView({ org, slug, mcpServerState, onResourceLoad,
303
342
  function healthPillProps(health, isVendorApprovalPending) {
304
343
  if (isVendorApprovalPending) {
305
344
  return {
306
- pillClass: "bg-amber-500/10 text-amber-600 dark:text-amber-400",
307
- dotClass: "bg-amber-500",
345
+ pillClass: "stg:bg-amber-500/10 stg:text-amber-600 stg:dark:text-amber-400",
346
+ dotClass: "stg:bg-amber-500",
308
347
  label: "Pending approval",
309
348
  };
310
349
  }
311
350
  switch (health) {
312
351
  case OAuthConnectionHealth.OAUTH_CONNECTION_HEALTH_HEALTHY:
313
352
  return {
314
- pillClass: "bg-success/10 text-success",
315
- dotClass: "bg-success",
353
+ pillClass: "stg:bg-success/10 stg:text-success",
354
+ dotClass: "stg:bg-success",
316
355
  label: "Connected",
317
356
  };
318
357
  case OAuthConnectionHealth.OAUTH_CONNECTION_HEALTH_TOKEN_EXPIRED_REFRESHABLE:
319
358
  return {
320
- pillClass: "bg-amber-500/10 text-amber-600 dark:text-amber-400",
321
- dotClass: "bg-amber-500",
359
+ pillClass: "stg:bg-amber-500/10 stg:text-amber-600 stg:dark:text-amber-400",
360
+ dotClass: "stg:bg-amber-500",
322
361
  label: "Token expired",
323
362
  };
324
363
  case OAuthConnectionHealth.OAUTH_CONNECTION_HEALTH_TOKEN_EXPIRED:
325
364
  return {
326
- pillClass: "bg-destructive-subtle text-destructive",
327
- dotClass: "bg-destructive",
365
+ pillClass: "stg:bg-destructive-subtle stg:text-destructive",
366
+ dotClass: "stg:bg-destructive",
328
367
  label: "Re-auth needed",
329
368
  };
330
369
  default:
331
370
  return {
332
- pillClass: "bg-muted text-muted-foreground",
333
- dotClass: "bg-muted-foreground",
371
+ pillClass: "stg:bg-muted stg:text-muted-foreground",
372
+ dotClass: "stg:bg-muted-foreground",
334
373
  label: "Not connected",
335
374
  };
336
375
  }
@@ -355,7 +394,7 @@ function healthStatusText(health, accessTokenExpiresAt, tokenLifetimeHint) {
355
394
  return "Not connected yet";
356
395
  }
357
396
  }
358
- function ConnectBar({ isConnecting, connectionError, onConnect, onClearConnectionError, hasDiscoveredTools, credentialsLoading, oauthPhase, authMode, isOAuthConnected, connectionHealth, canDisconnect, onDisconnect, isDisconnecting, disconnectError, onClearDisconnectError, serverName, accessTokenExpiresAt, tokenLifetimeHint, isVendorApprovalPending, isVendorApprovalBlocked, vendorApprovalDocsUrl, canBringOwnApp, isOrgOAuthApp, onBringOwnApp, onRemoveOrgApp, isRemovingOrgApp, removeOrgAppError, onClearRemoveOrgAppError, manualEntrySupported, manualOverride, onManualOverride, onBackToOAuth, onCancelOAuth, }) {
397
+ function ConnectBar({ isConnecting, connectionError, connectionErrorMessage, onConnect, onClearConnectionError, hasDiscoveredTools, isOAuthStranded, credentialsLoading, oauthPhase, authMode, isOAuthConnected, connectionHealth, canDisconnect, onDisconnect, isDisconnecting, disconnectError, onClearDisconnectError, serverName, accessTokenExpiresAt, tokenLifetimeHint, isVendorApprovalPending, isVendorApprovalBlocked, vendorApprovalDocsUrl, canBringOwnApp, isOrgOAuthApp, onBringOwnApp, onRemoveOrgApp, isRemovingOrgApp, removeOrgAppError, onClearRemoveOrgAppError, manualEntrySupported, manualOverride, onManualOverride, onBackToOAuth, onCancelOAuth, }) {
359
398
  const [disconnectPhase, setDisconnectPhase] = useState("idle");
360
399
  const [removeOrgAppPhase, setRemoveOrgAppPhase] = useState("idle");
361
400
  const isOAuthBusy = oauthPhase === "initiating" ||
@@ -375,6 +414,8 @@ function ConnectBar({ isConnecting, connectionError, onConnect, onClearConnectio
375
414
  return "Sign in with your app";
376
415
  if (showOAuthPrimary || needsReAuth)
377
416
  return "Sign in to connect";
417
+ if (isOAuthStranded)
418
+ return "Discover tools";
378
419
  if (hasDiscoveredTools)
379
420
  return "Reconnect";
380
421
  return "Connect";
@@ -383,13 +424,17 @@ function ConnectBar({ isConnecting, connectionError, onConnect, onClearConnectio
383
424
  if (isOAuthBusy || isConnecting)
384
425
  return _jsx(Spinner, {});
385
426
  if (showOAuthPrimary || needsReAuth)
386
- return _jsx(OAuthIcon, { className: "size-3.5" });
427
+ return _jsx(OAuthIcon, { className: "stg:size-3.5" });
387
428
  if (hasDiscoveredTools)
388
- return _jsx(RefreshIcon, { className: "size-3.5" });
389
- return _jsx(ConnectIcon, { className: "size-3.5" });
429
+ return _jsx(RefreshIcon, { className: "stg:size-3.5" });
430
+ return _jsx(ConnectIcon, { className: "stg:size-3.5" });
390
431
  })();
391
432
  const statusText = (() => {
392
433
  if (authMode === "oauth" && isOAuthConnected) {
434
+ // Stranded takes precedence over token health: "tokens refresh
435
+ // automatically" reads as all-done while the Tools tab is empty.
436
+ if (isOAuthStranded)
437
+ return "Signed in \u2014 tools not discovered yet";
393
438
  const base = healthStatusText(connectionHealth, accessTokenExpiresAt, tokenLifetimeHint);
394
439
  return isOrgOAuthApp ? `${base} \u00B7 Using your OAuth app` : base;
395
440
  }
@@ -406,7 +451,7 @@ function ConnectBar({ isConnecting, connectionError, onConnect, onClearConnectio
406
451
  const showRemoveOrgAppLink = isOrgOAuthApp && !anyBusy && removeOrgAppPhase === "idle";
407
452
  // Inline disconnect confirmation replaces the main bar content
408
453
  if (disconnectPhase === "confirming" || disconnectPhase === "disconnecting") {
409
- return (_jsxs("div", { className: "flex flex-col", children: [_jsxs("div", { className: "flex items-center gap-2 px-3 py-2", children: [_jsx(WarningIcon, { className: "size-3.5 shrink-0 text-destructive" }), _jsxs("p", { className: "flex-1 text-xs text-foreground", children: ["Remove OAuth credentials for ", _jsx("span", { className: "font-medium", children: serverName }), "? You can reconnect at any time."] }), _jsxs("div", { className: "flex shrink-0 items-center gap-1.5", children: [_jsxs("button", { type: "button", disabled: isDisconnecting, onClick: async () => {
454
+ return (_jsxs("div", { className: "stg:flex stg:flex-col", children: [_jsxs("div", { className: "stg:flex stg:items-center stg:gap-2 stg:px-3 stg:py-2", children: [_jsx(WarningIcon, { className: "stg:size-3.5 stg:shrink-0 stg:text-destructive" }), _jsxs("p", { className: "stg:flex-1 stg:text-xs stg:text-foreground", children: ["Remove OAuth credentials for ", _jsx("span", { className: "stg:font-medium", children: serverName }), "? You can reconnect at any time."] }), _jsxs("div", { className: "stg:flex stg:shrink-0 stg:items-center stg:gap-1.5", children: [_jsxs("button", { type: "button", disabled: isDisconnecting, onClick: async () => {
410
455
  setDisconnectPhase("disconnecting");
411
456
  try {
412
457
  await onDisconnect();
@@ -415,14 +460,14 @@ function ConnectBar({ isConnecting, connectionError, onConnect, onClearConnectio
415
460
  catch {
416
461
  setDisconnectPhase("confirming");
417
462
  }
418
- }, className: cn("inline-flex items-center gap-1 rounded-md px-2.5 py-1 text-xs font-medium", "bg-destructive text-destructive-foreground hover:bg-destructive-hover", "disabled:pointer-events-none disabled:opacity-50"), children: [isDisconnecting && _jsx(Spinner, {}), "Disconnect"] }), _jsx("button", { type: "button", disabled: isDisconnecting, onClick: () => {
463
+ }, className: cn("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", "stg:bg-destructive stg:text-destructive-foreground stg:hover:bg-destructive-hover", "stg:disabled:pointer-events-none stg:disabled:opacity-50"), children: [isDisconnecting && _jsx(Spinner, {}), "Disconnect"] }), _jsx("button", { type: "button", disabled: isDisconnecting, onClick: () => {
419
464
  setDisconnectPhase("idle");
420
465
  onClearDisconnectError();
421
- }, className: cn("inline-flex items-center rounded-md px-2.5 py-1 text-xs font-medium", "border border-border bg-background text-foreground hover:bg-accent hover:text-accent-foreground", "disabled:pointer-events-none disabled:opacity-50"), children: "Cancel" })] })] }), disconnectError && (_jsxs("div", { className: "flex items-start gap-2 border-t border-destructive/20 bg-destructive-subtle px-3 py-2", children: [_jsx(WarningIcon, { className: "mt-0.5 size-3.5 shrink-0 text-destructive" }), _jsx("p", { className: "flex-1 text-xs text-destructive", children: getUserMessage(disconnectError) }), _jsx("button", { type: "button", onClick: onClearDisconnectError, className: "shrink-0 text-xs text-destructive-muted hover:text-destructive", "aria-label": "Dismiss error", children: "Dismiss" })] }))] }));
466
+ }, className: cn("stg:inline-flex stg:items-center stg:rounded-md stg:px-2.5 stg:py-1 stg:text-xs stg:font-medium", "stg:border stg:border-border stg:bg-background stg:text-foreground stg:hover:bg-accent stg:hover:text-accent-foreground", "stg:disabled:pointer-events-none stg:disabled:opacity-50"), children: "Cancel" })] })] }), disconnectError && (_jsxs("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", children: [_jsx(WarningIcon, { className: "stg:mt-0.5 stg:size-3.5 stg:shrink-0 stg:text-destructive" }), _jsx("p", { className: "stg:flex-1 stg:text-xs stg:text-destructive", children: getUserMessage(disconnectError) }), _jsx("button", { type: "button", onClick: onClearDisconnectError, className: "stg:shrink-0 stg:text-xs stg:text-destructive-muted stg:hover:text-destructive", "aria-label": "Dismiss error", children: "Dismiss" })] }))] }));
422
467
  }
423
468
  // Inline "remove custom app" confirmation
424
469
  if (removeOrgAppPhase === "confirming" || removeOrgAppPhase === "removing") {
425
- return (_jsxs("div", { className: "flex flex-col", children: [_jsxs("div", { className: "flex items-center gap-2 px-3 py-2", children: [_jsx(WarningIcon, { className: "size-3.5 shrink-0 text-destructive" }), _jsxs("p", { className: "flex-1 text-xs text-foreground", children: ["Remove your custom OAuth app for", " ", _jsx("span", { className: "font-medium", children: serverName }), "? The server will revert to the platform's OAuth app."] }), _jsxs("div", { className: "flex shrink-0 items-center gap-1.5", children: [_jsxs("button", { type: "button", disabled: isRemovingOrgApp, onClick: async () => {
470
+ return (_jsxs("div", { className: "stg:flex stg:flex-col", children: [_jsxs("div", { className: "stg:flex stg:items-center stg:gap-2 stg:px-3 stg:py-2", children: [_jsx(WarningIcon, { className: "stg:size-3.5 stg:shrink-0 stg:text-destructive" }), _jsxs("p", { className: "stg:flex-1 stg:text-xs stg:text-foreground", children: ["Remove your custom OAuth app for", " ", _jsx("span", { className: "stg:font-medium", children: serverName }), "? The server will revert to the platform's OAuth app."] }), _jsxs("div", { className: "stg:flex stg:shrink-0 stg:items-center stg:gap-1.5", children: [_jsxs("button", { type: "button", disabled: isRemovingOrgApp, onClick: async () => {
426
471
  setRemoveOrgAppPhase("removing");
427
472
  try {
428
473
  await onRemoveOrgApp();
@@ -431,20 +476,18 @@ function ConnectBar({ isConnecting, connectionError, onConnect, onClearConnectio
431
476
  catch {
432
477
  setRemoveOrgAppPhase("confirming");
433
478
  }
434
- }, className: cn("inline-flex items-center gap-1 rounded-md px-2.5 py-1 text-xs font-medium", "bg-destructive text-destructive-foreground hover:bg-destructive-hover", "disabled:pointer-events-none disabled:opacity-50"), children: [isRemovingOrgApp && _jsx(Spinner, {}), "Remove"] }), _jsx("button", { type: "button", disabled: isRemovingOrgApp, onClick: () => {
479
+ }, className: cn("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", "stg:bg-destructive stg:text-destructive-foreground stg:hover:bg-destructive-hover", "stg:disabled:pointer-events-none stg:disabled:opacity-50"), children: [isRemovingOrgApp && _jsx(Spinner, {}), "Remove"] }), _jsx("button", { type: "button", disabled: isRemovingOrgApp, onClick: () => {
435
480
  setRemoveOrgAppPhase("idle");
436
481
  onClearRemoveOrgAppError();
437
- }, className: cn("inline-flex items-center rounded-md px-2.5 py-1 text-xs font-medium", "border border-border bg-background text-foreground hover:bg-accent hover:text-accent-foreground", "disabled:pointer-events-none disabled:opacity-50"), children: "Cancel" })] })] }), removeOrgAppError && (_jsxs("div", { className: "flex items-start gap-2 border-t border-destructive/20 bg-destructive-subtle px-3 py-2", children: [_jsx(WarningIcon, { className: "mt-0.5 size-3.5 shrink-0 text-destructive" }), _jsx("p", { className: "flex-1 text-xs text-destructive", children: getUserMessage(removeOrgAppError) }), _jsx("button", { type: "button", onClick: onClearRemoveOrgAppError, className: "shrink-0 text-xs text-destructive-muted hover:text-destructive", "aria-label": "Dismiss error", children: "Dismiss" })] }))] }));
482
+ }, className: cn("stg:inline-flex stg:items-center stg:rounded-md stg:px-2.5 stg:py-1 stg:text-xs stg:font-medium", "stg:border stg:border-border stg:bg-background stg:text-foreground stg:hover:bg-accent stg:hover:text-accent-foreground", "stg:disabled:pointer-events-none stg:disabled:opacity-50"), children: "Cancel" })] })] }), removeOrgAppError && (_jsxs("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", children: [_jsx(WarningIcon, { className: "stg:mt-0.5 stg:size-3.5 stg:shrink-0 stg:text-destructive" }), _jsx("p", { className: "stg:flex-1 stg:text-xs stg:text-destructive", children: getUserMessage(removeOrgAppError) }), _jsx("button", { type: "button", onClick: onClearRemoveOrgAppError, className: "stg:shrink-0 stg:text-xs stg:text-destructive-muted stg:hover:text-destructive", "aria-label": "Dismiss error", children: "Dismiss" })] }))] }));
438
483
  }
439
- return (_jsxs("div", { className: "flex flex-col", children: [_jsxs("div", { className: "flex items-center justify-between px-3 py-2", children: [_jsxs("div", { className: "flex items-center gap-2", children: [authMode === "oauth" && !manualOverride && (_jsxs("span", { className: cn("inline-flex items-center gap-1.5 rounded-full px-2 py-0.5 text-[10px] font-medium", pill.pillClass), children: [_jsx("span", { className: cn("size-1.5 rounded-full", pill.dotClass), "aria-hidden": "true" }), pill.label] })), _jsx("span", { className: "text-xs text-muted-foreground", children: oauthSignInDisabled ? "OAuth sign-in is pending vendor approval" : statusText }), showDisconnectLink && (_jsx("button", { type: "button", onClick: () => setDisconnectPhase("confirming"), className: "text-[11px] text-muted-foreground underline decoration-muted-foreground/40 underline-offset-2 hover:text-foreground hover:decoration-foreground", children: "Disconnect" })), showRemoveOrgAppLink && (_jsx("button", { type: "button", onClick: () => setRemoveOrgAppPhase("confirming"), className: "text-[11px] text-muted-foreground underline decoration-muted-foreground/40 underline-offset-2 hover:text-foreground hover:decoration-foreground", children: "Remove custom app" }))] }), _jsxs("button", { type: "button", onClick: onConnect, disabled: anyBusy || credentialsLoading || oauthSignInDisabled, "data-cursor-target": "connect-button", className: cn("inline-flex items-center gap-1.5 rounded-md px-2.5 py-1 text-xs font-medium", showOAuthPrimary || needsReAuth
440
- ? "bg-primary text-primary-foreground hover:bg-primary-hover"
441
- : "border border-border bg-background text-foreground hover:bg-accent hover:text-accent-foreground", "disabled:pointer-events-none disabled:opacity-50"), children: [buttonIcon, buttonLabel] })] }), oauthPhase === "awaiting-callback" && (_jsx("div", { className: "flex items-center gap-3 border-t border-border px-3 py-1.5", children: _jsx("button", { type: "button", onClick: onCancelOAuth, className: "text-[11px] text-muted-foreground underline decoration-muted-foreground/40 underline-offset-2 hover:text-foreground hover:decoration-foreground", children: "Cancel sign-in" }) })), oauthSignInDisabled && (_jsxs("div", { className: "flex items-start gap-2 border-t border-amber-500/20 bg-amber-500/5 px-3 py-2", children: [_jsx(WarningIcon, { className: "mt-0.5 size-3.5 shrink-0 text-amber-600 dark:text-amber-400" }), _jsxs("div", { className: "flex-1 text-xs text-amber-700 dark:text-amber-300", children: [_jsxs("p", { children: ["The platform's OAuth app is awaiting vendor approval.", canBringOwnApp
442
- ? " You can use your own OAuth app or enter a token manually."
443
- : " You can still connect by entering your own token manually."] }), canBringOwnApp && (_jsx("button", { type: "button", onClick: onBringOwnApp, "data-cursor-target": "byoa-cta-button", 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", children: "Use your own OAuth app" })), vendorApprovalDocsUrl && !canBringOwnApp && (_jsxs("a", { href: vendorApprovalDocsUrl, target: "_blank", rel: "noopener noreferrer", 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", children: ["Learn how to bring your own token", _jsx(ExternalLinkIcon, { className: "size-3 shrink-0" })] }))] })] })), authMode === "oauth" && !isOAuthConnected && !isOAuthBusy && !isConnecting &&
444
- (manualOverride || manualEntrySupported || canBringOwnApp) && (_jsx("div", { className: "flex items-center gap-3 border-t border-border px-3 py-1.5", children: manualOverride ? (_jsx("button", { type: "button", onClick: onBackToOAuth, className: "text-[11px] text-muted-foreground underline decoration-muted-foreground/40 underline-offset-2 hover:text-foreground hover:decoration-foreground", children: isVendorApprovalPending ? "Back to OAuth status" : "Sign in with OAuth instead" })) : (_jsxs(_Fragment, { children: [manualEntrySupported && (_jsx("button", { type: "button", onClick: onManualOverride, className: "text-[11px] text-muted-foreground underline decoration-muted-foreground/40 underline-offset-2 hover:text-foreground hover:decoration-foreground", children: "Enter token manually" })), canBringOwnApp && !isVendorApprovalBlocked && (_jsx("button", { type: "button", onClick: onBringOwnApp, className: "text-[11px] text-muted-foreground underline decoration-muted-foreground/40 underline-offset-2 hover:text-foreground hover:decoration-foreground", children: "Use your own OAuth app" }))] })) })), connectionError && (_jsxs("div", { className: "flex items-start gap-2 border-t border-destructive/20 bg-destructive-subtle px-3 py-2", role: "alert", children: [_jsx(WarningIcon, { className: "mt-0.5 size-3.5 shrink-0 text-destructive" }), _jsx("p", { className: "flex-1 text-xs text-destructive", children: getUserMessage(connectionError) }), _jsxs("div", { className: "flex shrink-0 items-center gap-2", children: [isRetryableError(connectionError) && (_jsx("button", { type: "button", onClick: () => {
484
+ return (_jsxs("div", { className: "stg:flex stg:flex-col", children: [_jsxs("div", { className: "stg:flex stg:items-center stg:justify-between stg:px-3 stg:py-2", children: [_jsxs("div", { className: "stg:flex stg:items-center stg:gap-2", children: [authMode === "oauth" && !manualOverride && (_jsxs("span", { className: cn("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", pill.pillClass), children: [_jsx("span", { className: cn("stg:size-1.5 stg:rounded-full", pill.dotClass), "aria-hidden": "true" }), pill.label] })), _jsx("span", { className: "stg:text-xs stg:text-muted-foreground", children: oauthSignInDisabled ? "OAuth sign-in is pending vendor approval" : statusText }), showDisconnectLink && (_jsx("button", { type: "button", onClick: () => setDisconnectPhase("confirming"), 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", children: "Disconnect" })), showRemoveOrgAppLink && (_jsx("button", { type: "button", onClick: () => setRemoveOrgAppPhase("confirming"), 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", children: "Remove custom app" }))] }), _jsxs("button", { type: "button", onClick: onConnect, disabled: anyBusy || credentialsLoading || oauthSignInDisabled, "data-cursor-target": "connect-button", className: cn("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", showOAuthPrimary || needsReAuth
485
+ ? "stg:bg-primary stg:text-primary-foreground stg:hover:bg-primary-hover"
486
+ : "stg:border stg:border-border stg:bg-background stg:text-foreground stg:hover:bg-accent stg:hover:text-accent-foreground", "stg:disabled:pointer-events-none stg:disabled:opacity-50"), children: [buttonIcon, buttonLabel] })] }), oauthPhase === "awaiting-callback" && (_jsx("div", { className: "stg:flex stg:items-center stg:gap-3 stg:border-t stg:border-border stg:px-3 stg:py-1.5", children: _jsx("button", { type: "button", onClick: onCancelOAuth, 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", children: "Cancel sign-in" }) })), oauthSignInDisabled && (_jsx(VendorApprovalBlockedNotice, { blocked: true, pending: isVendorApprovalPending, manualEntrySupported: manualEntrySupported, canBringOwnApp: canBringOwnApp, docsUrl: vendorApprovalDocsUrl, onBringOwnApp: onBringOwnApp, className: "stg:border-t stg:border-amber-500/20" })), authMode === "oauth" && !isOAuthConnected && !isOAuthBusy && !isConnecting &&
487
+ (manualOverride || manualEntrySupported || canBringOwnApp) && (_jsx("div", { className: "stg:flex stg:items-center stg:gap-3 stg:border-t stg:border-border stg:px-3 stg:py-1.5", children: manualOverride ? (_jsx("button", { type: "button", onClick: onBackToOAuth, 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", children: isVendorApprovalPending ? "Back to OAuth status" : "Sign in with OAuth instead" })) : (_jsxs(_Fragment, { children: [manualEntrySupported && (_jsx("button", { type: "button", onClick: onManualOverride, 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", children: "Enter token manually" })), canBringOwnApp && !isVendorApprovalBlocked && (_jsx("button", { type: "button", onClick: onBringOwnApp, 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", children: "Use your own OAuth app" }))] })) })), connectionError && (_jsxs("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", role: "alert", children: [_jsx(WarningIcon, { className: "stg:mt-0.5 stg:size-3.5 stg:shrink-0 stg:text-destructive" }), _jsx("p", { className: "stg:flex-1 stg:text-xs stg:text-destructive", children: connectionErrorMessage ?? getUserMessage(connectionError) }), _jsxs("div", { className: "stg:flex stg:shrink-0 stg:items-center stg:gap-2", children: [isRetryableError(connectionError) && (_jsx("button", { type: "button", onClick: () => {
445
488
  onClearConnectionError();
446
489
  onConnect();
447
- }, className: "text-xs font-medium text-destructive underline underline-offset-2 hover:no-underline", children: "Try again" })), _jsx("button", { type: "button", onClick: onClearConnectionError, className: "text-xs text-destructive-muted hover:text-destructive", "aria-label": "Dismiss error", children: "Dismiss" })] })] }))] }));
490
+ }, className: "stg:text-xs stg:font-medium stg:text-destructive stg:underline stg:underline-offset-2 stg:hover:no-underline", children: "Try again" })), _jsx("button", { type: "button", onClick: onClearConnectionError, className: "stg:text-xs stg:text-destructive-muted stg:hover:text-destructive", "aria-label": "Dismiss error", children: "Dismiss" })] })] }))] }));
448
491
  }
449
492
  function oauthPhaseLabel(phase) {
450
493
  switch (phase) {
@@ -482,14 +525,14 @@ function formatTokenExpiry(expiresAtSeconds) {
482
525
  // Internal section components
483
526
  // ---------------------------------------------------------------------------
484
527
  function ValidationBanner({ message }) {
485
- return (_jsxs("div", { role: "alert", className: "flex items-start gap-2.5 rounded-lg border border-destructive/30 bg-destructive-subtle px-4 py-3", children: [_jsx(WarningIcon, { className: "mt-0.5 size-4 shrink-0 text-destructive" }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("p", { className: "text-sm font-medium text-destructive", children: "Invalid Configuration" }), _jsx("p", { className: "mt-0.5 text-xs text-destructive-muted", children: message })] })] }));
528
+ return (_jsxs("div", { role: "alert", 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", children: [_jsx(WarningIcon, { className: "stg:mt-0.5 stg:size-4 stg:shrink-0 stg:text-destructive" }), _jsxs("div", { className: "stg:min-w-0 stg:flex-1", children: [_jsx("p", { className: "stg:text-sm stg:font-medium stg:text-destructive", children: "Invalid Configuration" }), _jsx("p", { className: "stg:mt-0.5 stg:text-xs stg:text-destructive-muted", children: message })] })] }));
486
529
  }
487
530
  function ValidationStateBadge({ state, }) {
488
531
  switch (state) {
489
532
  case ValidationState.valid:
490
- return (_jsxs(_Fragment, { children: [_jsx(Dot, {}), _jsxs("span", { className: "inline-flex items-center gap-1 text-emerald-600 dark:text-emerald-400", children: [_jsx(CheckIcon, { className: "size-3" }), "Valid"] })] }));
533
+ return (_jsxs(_Fragment, { children: [_jsx(Dot, {}), _jsxs("span", { className: "stg:inline-flex stg:items-center stg:gap-1 stg:text-emerald-600 stg:dark:text-emerald-400", children: [_jsx(CheckIcon, { className: "stg:size-3" }), "Valid"] })] }));
491
534
  case ValidationState.invalid:
492
- return (_jsxs(_Fragment, { children: [_jsx(Dot, {}), _jsx("span", { className: "text-destructive", children: "Invalid" })] }));
535
+ return (_jsxs(_Fragment, { children: [_jsx(Dot, {}), _jsx("span", { className: "stg:text-destructive", children: "Invalid" })] }));
493
536
  default:
494
537
  return null;
495
538
  }
@@ -562,29 +605,29 @@ function ServerConfigSection({ serverType, editable, isSaving, saveMcpField, })
562
605
  queryParams: Object.keys(queryParams).length > 0 ? queryParams : undefined,
563
606
  });
564
607
  }, [saveMcpField, currentHttpConfig]);
565
- return (_jsxs(Section, { title: "Server Configuration", children: [_jsxs("div", { className: "flex flex-col gap-2 p-3", children: [_jsxs("div", { className: "flex items-baseline gap-2", children: [_jsx("span", { className: "text-xs font-medium text-muted-foreground", children: "Type" }), editable && saveMcpField ? (_jsx(InlineEditSelect, { value: serverType?.case ?? "http", options: TRANSPORT_OPTIONS, onSave: handleTransportChange, isSaving: isSaving })) : (_jsx("span", { className: "rounded bg-muted px-1.5 py-0.5 font-mono text-xs font-medium text-foreground", children: serverType?.case ?? "none" }))] }), serverType?.case === "stdio" && (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex items-baseline gap-2", children: [_jsx("span", { className: "text-xs font-medium text-muted-foreground", children: "Command" }), editable && saveMcpField ? (_jsx(InlineEditText, { value: `${serverType.value.command}${serverType.value.args.length > 0 ? ` ${serverType.value.args.join(" ")}` : ""}`, onSave: async (v) => {
608
+ return (_jsxs(Section, { title: "Server Configuration", children: [_jsxs("div", { className: "stg:flex stg:flex-col stg:gap-2 stg:p-3", children: [_jsxs("div", { className: "stg:flex stg:items-baseline stg:gap-2", children: [_jsx("span", { className: "stg:text-xs stg:font-medium stg:text-muted-foreground", children: "Type" }), editable && saveMcpField ? (_jsx(InlineEditSelect, { value: serverType?.case ?? "http", options: TRANSPORT_OPTIONS, onSave: handleTransportChange, isSaving: isSaving })) : (_jsx("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", children: serverType?.case ?? "none" }))] }), serverType?.case === "stdio" && (_jsxs(_Fragment, { children: [_jsxs("div", { className: "stg:flex stg:items-baseline stg:gap-2", children: [_jsx("span", { className: "stg:text-xs stg:font-medium stg:text-muted-foreground", children: "Command" }), editable && saveMcpField ? (_jsx(InlineEditText, { value: `${serverType.value.command}${serverType.value.args.length > 0 ? ` ${serverType.value.args.join(" ")}` : ""}`, onSave: async (v) => {
566
609
  const parts = v.trim().split(/\s+/);
567
610
  return saveMcpField("stdio", {
568
611
  command: parts[0] || "",
569
612
  args: parts.slice(1),
570
613
  });
571
- }, isSaving: isSaving, placeholder: "e.g. npx -y @modelcontextprotocol/server" })) : (_jsxs("code", { className: "font-mono text-sm text-foreground", children: [serverType.value.command, serverType.value.args.length > 0 &&
572
- ` ${serverType.value.args.join(" ")}`] }))] }), (editable || serverType.value.workingDir) && (_jsxs("div", { className: "flex items-baseline gap-2", children: [_jsx("span", { className: "text-xs font-medium text-muted-foreground", children: "Working Dir" }), editable && saveMcpField ? (_jsx(InlineEditText, { value: serverType.value.workingDir ?? "", onSave: async (v) => saveMcpField("stdio", {
614
+ }, isSaving: isSaving, placeholder: "e.g. npx -y @modelcontextprotocol/server" })) : (_jsxs("code", { className: "stg:font-mono stg:text-sm stg:text-foreground", children: [serverType.value.command, serverType.value.args.length > 0 &&
615
+ ` ${serverType.value.args.join(" ")}`] }))] }), (editable || serverType.value.workingDir) && (_jsxs("div", { className: "stg:flex stg:items-baseline stg:gap-2", children: [_jsx("span", { className: "stg:text-xs stg:font-medium stg:text-muted-foreground", children: "Working Dir" }), editable && saveMcpField ? (_jsx(InlineEditText, { value: serverType.value.workingDir ?? "", onSave: async (v) => saveMcpField("stdio", {
573
616
  command: serverType.value.command,
574
617
  args: [...serverType.value.args],
575
618
  workingDir: v || undefined,
576
- }), isSaving: isSaving, placeholder: "/path/to/working/dir" })) : (_jsx("code", { className: "font-mono text-xs text-foreground", children: serverType.value.workingDir }))] }))] })), serverType?.case === "http" && (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex items-baseline gap-2", children: [_jsx("span", { className: "text-xs font-medium text-muted-foreground", children: "URL" }), editable && saveMcpField ? (_jsx(InlineEditText, { value: serverType.value.url, onSave: async (v) => saveMcpField("http", { ...currentHttpConfig, url: v }), isSaving: isSaving, placeholder: "https://example.com/mcp" })) : (_jsx("code", { className: "break-all font-mono text-sm text-foreground", children: serverType.value.url }))] }), (editable || serverType.value.timeoutSeconds > 0) && (_jsxs("div", { className: "flex items-baseline gap-2", children: [_jsx("span", { className: "text-xs font-medium text-muted-foreground", children: "Timeout" }), editable && saveMcpField ? (_jsx(InlineEditText, { value: serverType.value.timeoutSeconds > 0 ? String(serverType.value.timeoutSeconds) : "", onSave: async (v) => saveMcpField("http", {
619
+ }), isSaving: isSaving, placeholder: "/path/to/working/dir" })) : (_jsx("code", { className: "stg:font-mono stg:text-xs stg:text-foreground", children: serverType.value.workingDir }))] }))] })), serverType?.case === "http" && (_jsxs(_Fragment, { children: [_jsxs("div", { className: "stg:flex stg:items-baseline stg:gap-2", children: [_jsx("span", { className: "stg:text-xs stg:font-medium stg:text-muted-foreground", children: "URL" }), editable && saveMcpField ? (_jsx(InlineEditText, { value: serverType.value.url, onSave: async (v) => saveMcpField("http", { ...currentHttpConfig, url: v }), isSaving: isSaving, placeholder: "https://example.com/mcp" })) : (_jsx("code", { className: "stg:break-all stg:font-mono stg:text-sm stg:text-foreground", children: serverType.value.url }))] }), (editable || serverType.value.timeoutSeconds > 0) && (_jsxs("div", { className: "stg:flex stg:items-baseline stg:gap-2", children: [_jsx("span", { className: "stg:text-xs stg:font-medium stg:text-muted-foreground", children: "Timeout" }), editable && saveMcpField ? (_jsx(InlineEditText, { value: serverType.value.timeoutSeconds > 0 ? String(serverType.value.timeoutSeconds) : "", onSave: async (v) => saveMcpField("http", {
577
620
  ...currentHttpConfig,
578
621
  timeoutSeconds: v ? Number(v) : undefined,
579
622
  }), isSaving: isSaving, placeholder: "30", validate: (v) => {
580
623
  if (v && (isNaN(Number(v)) || Number(v) < 0))
581
624
  return "Must be a positive number";
582
625
  return null;
583
- } })) : (_jsxs("span", { className: "text-xs text-foreground", children: [serverType.value.timeoutSeconds, "s"] }))] }))] }))] }), serverType?.case === "http" && (editable || headerRows.length > 0) && (_jsx(HttpKeyValueSubsection, { title: "Headers", count: headerRows.length, rows: headerRows, editable: editable, isSaving: isSaving, editing: headersEditing, onEditingChange: setHeadersEditing, onSave: handleHeadersSave, keyLabel: "Header name" })), serverType?.case === "http" && (editable || queryParamRows.length > 0) && (_jsx(HttpKeyValueSubsection, { title: "Query Parameters", count: queryParamRows.length, rows: queryParamRows, editable: editable, isSaving: isSaving, editing: queryParamsEditing, onEditingChange: setQueryParamsEditing, onSave: handleQueryParamsSave, keyLabel: "Parameter name" }))] }));
626
+ } })) : (_jsxs("span", { className: "stg:text-xs stg:text-foreground", children: [serverType.value.timeoutSeconds, "s"] }))] }))] }))] }), serverType?.case === "http" && (editable || headerRows.length > 0) && (_jsx(HttpKeyValueSubsection, { title: "Headers", count: headerRows.length, rows: headerRows, editable: editable, isSaving: isSaving, editing: headersEditing, onEditingChange: setHeadersEditing, onSave: handleHeadersSave, keyLabel: "Header name" })), serverType?.case === "http" && (editable || queryParamRows.length > 0) && (_jsx(HttpKeyValueSubsection, { title: "Query Parameters", count: queryParamRows.length, rows: queryParamRows, editable: editable, isSaving: isSaving, editing: queryParamsEditing, onEditingChange: setQueryParamsEditing, onSave: handleQueryParamsSave, keyLabel: "Parameter name" }))] }));
584
627
  }
585
628
  /** Renders a key-value subsection (headers or query params) within ServerConfigSection. */
586
629
  function HttpKeyValueSubsection({ title, count, rows, editable, isSaving, editing, onEditingChange, onSave, keyLabel, }) {
587
- return (_jsxs("div", { className: "border-t border-border", children: [_jsxs("div", { className: "flex items-center justify-between px-3 py-2", children: [_jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx("span", { className: "text-xs font-medium text-muted-foreground", children: title }), count > 0 && (_jsx("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", children: count }))] }), editable && (_jsx("button", { type: "button", onClick: () => onEditingChange(!editing), className: "text-[11px] text-muted-foreground underline decoration-muted-foreground/40 underline-offset-2 hover:text-foreground hover:decoration-foreground", children: editing ? "Done" : "Edit" }))] }), editable && editing ? (_jsx(InlineEditKeyValue, { value: [...rows], onSave: onSave, isSaving: isSaving, editing: editing, onEditingChange: onEditingChange, keyLabel: keyLabel, showValue: true, valueLabel: "Value" })) : (_jsx("div", { className: "flex flex-col divide-y divide-border", children: rows.map((row) => (_jsxs("div", { className: "flex items-start gap-2 px-3 py-1.5", children: [_jsx("code", { className: "shrink-0 font-mono text-xs font-medium text-foreground", children: row.key }), _jsx("span", { className: "min-w-0 break-all font-mono text-xs text-muted-foreground", children: renderHeaderValue(row.value) })] }, row.key))) }))] }));
630
+ return (_jsxs("div", { className: "stg:border-t stg:border-border", children: [_jsxs("div", { className: "stg:flex stg:items-center stg:justify-between stg:px-3 stg:py-2", children: [_jsxs("div", { className: "stg:flex stg:items-center stg:gap-1.5", children: [_jsx("span", { className: "stg:text-xs stg:font-medium stg:text-muted-foreground", children: title }), count > 0 && (_jsx("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", children: count }))] }), editable && (_jsx("button", { type: "button", onClick: () => onEditingChange(!editing), 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", children: editing ? "Done" : "Edit" }))] }), editable && editing ? (_jsx(InlineEditKeyValue, { value: [...rows], onSave: onSave, isSaving: isSaving, editing: editing, onEditingChange: onEditingChange, keyLabel: keyLabel, showValue: true, valueLabel: "Value" })) : (_jsx("div", { className: "stg:flex stg:flex-col stg:divide-y stg:divide-border", children: rows.map((row) => (_jsxs("div", { className: "stg:flex stg:items-start stg:gap-2 stg:px-3 stg:py-1.5", children: [_jsx("code", { className: "stg:shrink-0 stg:font-mono stg:text-xs stg:font-medium stg:text-foreground", children: row.key }), _jsx("span", { className: "stg:min-w-0 stg:break-all stg:font-mono stg:text-xs stg:text-muted-foreground", children: renderHeaderValue(row.value) })] }, row.key))) }))] }));
588
631
  }
589
632
  const ENV_VAR_PLACEHOLDER = /\$\{([^}]+)\}/g;
590
633
  /** Renders a header value, highlighting ${VAR} placeholders with a variable badge. */
@@ -599,7 +642,7 @@ function renderHeaderValue(value) {
599
642
  if (match.index > lastIndex) {
600
643
  parts.push(value.slice(lastIndex, match.index));
601
644
  }
602
- parts.push(_jsx("span", { className: "inline-flex items-center gap-0.5 rounded bg-primary-subtle px-1 py-px text-[10px] font-medium text-primary", title: `Resolved from environment variable: ${match[1]}`, children: match[0] }, match.index));
645
+ parts.push(_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { render: _jsx("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" }), children: match[0] }), _jsx(TooltipContent, { side: "top", children: `Resolved from environment variable: ${match[1]}` })] }, match.index));
603
646
  lastIndex = match.index + match[0].length;
604
647
  }
605
648
  if (lastIndex < value.length) {
@@ -608,12 +651,12 @@ function renderHeaderValue(value) {
608
651
  return _jsx(_Fragment, { children: parts });
609
652
  }
610
653
  function SourceSection({ spec, }) {
611
- return (_jsx(Section, { title: "Source", children: _jsxs("div", { className: "flex flex-col gap-2 p-3", children: [spec.repositoryUrl && (_jsxs("div", { className: "flex items-baseline gap-2", children: [_jsx("span", { className: "shrink-0 text-xs font-medium text-muted-foreground", children: "Repository" }), _jsxs("a", { href: spec.repositoryUrl, target: "_blank", rel: "noopener noreferrer", 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", children: [spec.repositoryUrl, _jsx(ExternalLinkIcon, { className: "size-3 shrink-0" })] })] })), spec.githubStars > 0 && (_jsxs("div", { className: "flex items-baseline gap-2", children: [_jsx("span", { className: "shrink-0 text-xs font-medium text-muted-foreground", children: "Stars" }), _jsx("span", { className: "text-xs text-foreground", children: spec.githubStars.toLocaleString() })] }))] }) }));
654
+ return (_jsx(Section, { title: "Source", children: _jsxs("div", { className: "stg:flex stg:flex-col stg:gap-2 stg:p-3", children: [spec.repositoryUrl && (_jsxs("div", { className: "stg:flex stg:items-baseline stg:gap-2", children: [_jsx("span", { className: "stg:shrink-0 stg:text-xs stg:font-medium stg:text-muted-foreground", children: "Repository" }), _jsxs("a", { href: spec.repositoryUrl, target: "_blank", rel: "noopener noreferrer", 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", children: [spec.repositoryUrl, _jsx(ExternalLinkIcon, { className: "stg:size-3 stg:shrink-0" })] })] })), spec.githubStars > 0 && (_jsxs("div", { className: "stg:flex stg:items-baseline stg:gap-2", children: [_jsx("span", { className: "stg:shrink-0 stg:text-xs stg:font-medium stg:text-muted-foreground", children: "Stars" }), _jsx("span", { className: "stg:text-xs stg:text-foreground", children: spec.githubStars.toLocaleString() })] }))] }) }));
612
655
  }
613
656
  function ResourceTemplatesList({ templates, }) {
614
657
  if (templates.length === 0)
615
658
  return null;
616
- return (_jsx("div", { className: "flex flex-col divide-y divide-border", children: templates.map((tpl) => (_jsxs("div", { className: "px-3 py-2.5", children: [_jsxs("div", { className: "flex items-baseline gap-2", children: [_jsx("span", { className: "text-sm font-medium text-foreground", children: tpl.name }), _jsx("code", { className: "font-mono text-[10px] text-muted-foreground", children: tpl.uriTemplate })] }), tpl.description && (_jsx("p", { className: "mt-0.5 text-xs text-muted-foreground", children: tpl.description }))] }, tpl.uriTemplate || tpl.name))) }));
659
+ return (_jsx("div", { className: "stg:flex stg:flex-col stg:divide-y stg:divide-border", children: templates.map((tpl) => (_jsxs("div", { className: "stg:px-3 stg:py-2.5", children: [_jsxs("div", { className: "stg:flex stg:items-baseline stg:gap-2", children: [_jsx("span", { className: "stg:text-sm stg:font-medium stg:text-foreground", children: tpl.name }), _jsx("code", { className: "stg:font-mono stg:text-[10px] stg:text-muted-foreground", children: tpl.uriTemplate })] }), tpl.description && (_jsx("p", { className: "stg:mt-0.5 stg:text-xs stg:text-muted-foreground", children: tpl.description }))] }, tpl.uriTemplate || tpl.name))) }));
617
660
  }
618
661
  function EnvSection({ data, oauthTargetEnvVar, editable, isSaving, saveMcpField, }) {
619
662
  const entries = Object.entries(data).sort(([a], [b]) => a.localeCompare(b));
@@ -640,9 +683,9 @@ function EnvSection({ data, oauthTargetEnvVar, editable, isSaving, saveMcpField,
640
683
  return saveMcpField("env", Object.keys(env).length > 0 ? env : undefined);
641
684
  }, [saveMcpField]);
642
685
  const [envEditing, setEnvEditing] = useState(false);
643
- return (_jsx(Section, { title: "Environment Variables", count: entries.length, onEdit: editable ? () => setEnvEditing((v) => !v) : undefined, children: editable ? (_jsx(InlineEditKeyValue, { value: envRows, onSave: handleEnvSave, isSaving: isSaving, editing: envEditing, onEditingChange: setEnvEditing, showSecretToggle: true, showOptionalToggle: true, showDescription: true, keyLabel: "Variable name" })) : (_jsx("div", { className: "flex flex-col divide-y divide-border", children: entries.map(([name, env]) => {
686
+ return (_jsx(Section, { title: "Environment Variables", count: entries.length, onEdit: editable ? () => setEnvEditing((v) => !v) : undefined, children: editable ? (_jsx(InlineEditKeyValue, { value: envRows, onSave: handleEnvSave, isSaving: isSaving, editing: envEditing, onEditingChange: setEnvEditing, showSecretToggle: true, showOptionalToggle: true, showDescription: true, keyLabel: "Variable name" })) : (_jsx("div", { className: "stg:flex stg:flex-col stg:divide-y stg:divide-border", children: entries.map(([name, env]) => {
644
687
  const isOAuthManaged = name === oauthTargetEnvVar;
645
- return (_jsxs("div", { className: "flex items-start gap-3 px-3 py-2", children: [_jsx("code", { className: "shrink-0 font-mono text-sm font-medium text-foreground", children: name }), _jsx("span", { className: "shrink-0 rounded bg-muted px-1.5 py-0.5 text-[10px] font-medium text-muted-foreground", children: env.isSecret ? "secret" : "config" }), isOAuthManaged && (_jsx("span", { className: "shrink-0 rounded bg-primary-subtle px-1.5 py-0.5 text-[10px] font-medium text-primary", children: "oauth" })), env.optional && (_jsx("span", { className: "shrink-0 rounded bg-muted px-1.5 py-0.5 text-[10px] font-medium text-muted-foreground-subtle", children: "optional" })), env.description && (_jsx("span", { className: "text-xs text-muted-foreground", children: env.description }))] }, name));
688
+ return (_jsxs("div", { className: "stg:flex stg:items-start stg:gap-3 stg:px-3 stg:py-2", children: [_jsx("code", { className: "stg:shrink-0 stg:font-mono stg:text-sm stg:font-medium stg:text-foreground", children: name }), _jsx("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", children: env.isSecret ? "secret" : "config" }), isOAuthManaged && (_jsx("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", children: "oauth" })), env.optional && (_jsx("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", children: "optional" })), env.description && (_jsx("span", { className: "stg:text-xs stg:text-muted-foreground", children: env.description }))] }, name));
646
689
  }) })) }));
647
690
  }
648
691
  function TagsSection({ tags, editable, isSaving, saveMcpField, }) {
@@ -656,12 +699,12 @@ function TagsSection({ tags, editable, isSaving, saveMcpField, }) {
656
699
  // a higher level if needed. For now, show read-only in edit mode.
657
700
  return false;
658
701
  }, [saveMcpField]);
659
- return (_jsx(Section, { title: "Tags", count: tags.length, children: _jsxs("div", { className: "flex flex-wrap gap-1.5 p-3", children: [tags.map((tag) => (_jsx("span", { className: "rounded-full bg-muted px-2.5 py-0.5 text-xs font-medium text-muted-foreground", children: tag }, tag))), editable && tags.length === 0 && (_jsx("p", { className: "text-xs text-muted-foreground italic", children: "No tags" }))] }) }));
702
+ return (_jsx(Section, { title: "Tags", count: tags.length, children: _jsxs("div", { className: "stg:flex stg:flex-wrap stg:gap-1.5 stg:p-3", children: [tags.map((tag) => (_jsx("span", { 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", children: tag }, tag))), editable && tags.length === 0 && (_jsx("p", { className: "stg:text-xs stg:text-muted-foreground stg:italic", children: "No tags" }))] }) }));
660
703
  }
661
704
  // ---------------------------------------------------------------------------
662
705
  // Capability tab contents (read-only)
663
706
  // ---------------------------------------------------------------------------
664
- function ToolsTabContent({ tools, }) {
707
+ function ToolsTabContent({ tools, isOAuthStranded, onDiscover, isDiscovering, }) {
665
708
  const [search, setSearch] = useState("");
666
709
  const [expandedTool, setExpandedTool] = useState(null);
667
710
  const filtered = useMemo(() => {
@@ -672,17 +715,21 @@ function ToolsTabContent({ tools, }) {
672
715
  t.description?.toLowerCase().includes(q));
673
716
  }, [tools, search]);
674
717
  if (tools.length === 0) {
675
- return (_jsxs("div", { className: "px-3 py-8 text-center", children: [_jsx(ConnectIcon, { className: "mx-auto mb-2 size-6 text-muted-foreground-faint" }), _jsx("p", { className: "text-xs text-muted-foreground", children: "Connect to this MCP server to discover its available tools." })] }));
718
+ // Two distinct empty states: "never connected" (informational) vs
719
+ // "signed in but discovery never landed" (stigmer/stigmer#229) — the
720
+ // latter must carry its own recovery action, because the user already
721
+ // did the thing the informational copy asks for.
722
+ return (_jsxs("div", { className: "stg:px-3 stg:py-8 stg:text-center", children: [_jsx(ConnectIcon, { className: "stg:mx-auto stg:mb-2 stg:size-6 stg:text-muted-foreground-faint" }), isOAuthStranded ? (_jsxs(_Fragment, { children: [_jsx("p", { className: "stg:text-xs stg:text-muted-foreground", children: "Signed in, but tools haven't been discovered yet." }), _jsxs("button", { type: "button", onClick: onDiscover, disabled: isDiscovering, className: cn("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", "stg:bg-primary stg:text-primary-foreground stg:hover:bg-primary-hover", "stg:disabled:pointer-events-none stg:disabled:opacity-50"), children: [isDiscovering && _jsx(Spinner, {}), isDiscovering ? "Discovering tools..." : "Discover tools"] })] })) : (_jsx("p", { className: "stg:text-xs stg:text-muted-foreground", children: "Connect to this MCP server to discover its available tools." }))] }));
676
723
  }
677
724
  const isFiltered = search.trim().length > 0;
678
- return (_jsxs("div", { className: "flex flex-col", children: [_jsxs("div", { className: "flex items-center gap-2 px-3 pb-2", children: [_jsxs("div", { className: "relative flex-1", children: [_jsx(SearchIcon, { className: "pointer-events-none absolute left-2 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground" }), _jsx("input", { type: "text", value: search, onChange: (e) => setSearch(e.target.value), placeholder: "Search tools\u2026", "aria-label": "Search tools", 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" }), isFiltered && (_jsx("button", { type: "button", onClick: () => setSearch(""), "aria-label": "Clear search", className: "absolute right-2 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground", children: _jsx(CloseIcon, { className: "size-3" }) }))] }), _jsx("span", { className: "shrink-0 text-[10px] text-muted-foreground", children: isFiltered ? `${filtered.length} of ${tools.length}` : tools.length })] }), filtered.length === 0 ? (_jsx("div", { className: "px-3 py-6 text-center", children: _jsxs("p", { className: "text-xs text-muted-foreground", children: ["No tools matching \u201C", search, "\u201D"] }) })) : (_jsx("div", { className: "max-h-96 overflow-y-auto", children: _jsx("div", { className: "flex flex-col divide-y divide-border", children: filtered.map((tool) => {
725
+ return (_jsxs("div", { className: "stg:flex stg:flex-col", children: [_jsxs("div", { className: "stg:flex stg:items-center stg:gap-2 stg:px-3 stg:pb-2", children: [_jsxs("div", { className: "stg:relative stg:flex-1", children: [_jsx(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" }), _jsx("input", { type: "text", value: search, onChange: (e) => setSearch(e.target.value), placeholder: "Search tools\u2026", "aria-label": "Search tools", 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" }), isFiltered && (_jsx("button", { type: "button", onClick: () => setSearch(""), "aria-label": "Clear search", className: "stg:absolute stg:right-2 stg:top-1/2 stg:-translate-y-1/2 stg:text-muted-foreground stg:hover:text-foreground", children: _jsx(CloseIcon, { className: "stg:size-3" }) }))] }), _jsx("span", { className: "stg:shrink-0 stg:text-[10px] stg:text-muted-foreground", children: isFiltered ? `${filtered.length} of ${tools.length}` : tools.length })] }), filtered.length === 0 ? (_jsx("div", { className: "stg:px-3 stg:py-6 stg:text-center", children: _jsxs("p", { className: "stg:text-xs stg:text-muted-foreground", children: ["No tools matching \u201C", search, "\u201D"] }) })) : (_jsx("div", { className: "stg:max-h-96 stg:overflow-y-auto", children: _jsx("div", { className: "stg:flex stg:flex-col stg:divide-y stg:divide-border", children: filtered.map((tool) => {
679
726
  const isExpanded = expandedTool === tool.name;
680
727
  const hasSchema = tool.inputSchema != null &&
681
728
  Object.keys(tool.inputSchema).length > 0;
682
- return (_jsxs("div", { children: [_jsxs("button", { type: "button", onClick: () => setExpandedTool(isExpanded ? null : tool.name), className: "flex w-full items-start gap-2 px-3 py-2.5 text-left transition-colors hover:bg-muted-faint", "aria-expanded": isExpanded, children: [_jsx(ChevronIcon, { className: cn("mt-0.5 size-3 shrink-0 text-muted-foreground transition-transform", isExpanded && "rotate-90") }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("code", { className: "font-mono text-sm font-medium text-foreground", children: tool.name }), tool.description && (_jsx("p", { className: "mt-0.5 text-xs text-muted-foreground", children: tool.description }))] }), hasSchema && (_jsx("span", { className: "mt-0.5 shrink-0 rounded bg-muted px-1.5 py-0.5 text-[10px] font-medium text-muted-foreground", children: "schema" }))] }), isExpanded && hasSchema && (_jsx("div", { className: "border-t border-border bg-muted-faint px-3 py-2", children: _jsx("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", children: JSON.stringify(tool.inputSchema, null, 2) }) }))] }, tool.name));
729
+ return (_jsxs("div", { children: [_jsxs("button", { type: "button", onClick: () => setExpandedTool(isExpanded ? null : tool.name), 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", "aria-expanded": isExpanded, children: [_jsx(ChevronIcon, { className: cn("stg:mt-0.5 stg:size-3 stg:shrink-0 stg:text-muted-foreground stg:transition-transform", isExpanded && "stg:rotate-90") }), _jsxs("div", { className: "stg:min-w-0 stg:flex-1", children: [_jsx("code", { className: "stg:font-mono stg:text-sm stg:font-medium stg:text-foreground", children: tool.name }), tool.description && (_jsx("p", { className: "stg:mt-0.5 stg:text-xs stg:text-muted-foreground", children: tool.description }))] }), hasSchema && (_jsx("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", children: "schema" }))] }), isExpanded && hasSchema && (_jsx("div", { className: "stg:border-t stg:border-border stg:bg-muted-faint stg:px-3 stg:py-2", children: _jsx("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", children: JSON.stringify(tool.inputSchema, null, 2) }) }))] }, tool.name));
683
730
  }) }) }))] }));
684
731
  }
685
- function PoliciesTabContent({ pinnedPolicies, classifiedPolicies, hasDiscoveredTools, }) {
732
+ function PoliciesTabContent({ pinnedPolicies, classifiedPolicies, hasDiscoveredTools, isOAuthStranded, }) {
686
733
  const [search, setSearch] = useState("");
687
734
  const totalCount = pinnedPolicies.length + classifiedPolicies.length;
688
735
  const hasAnyPolicies = totalCount > 0;
@@ -703,29 +750,31 @@ function PoliciesTabContent({ pinnedPolicies, classifiedPolicies, hasDiscoveredT
703
750
  const filteredTotal = filteredPinned.length + filteredClassified.length;
704
751
  const isFiltered = search.trim().length > 0;
705
752
  if (!hasAnyPolicies) {
706
- return (_jsxs("div", { className: "px-3 py-8 text-center", children: [_jsx(ShieldIcon, { className: "mx-auto mb-2 size-6 text-muted-foreground-faint" }), _jsx("p", { className: "text-xs text-muted-foreground", children: hasDiscoveredTools
753
+ return (_jsxs("div", { className: "stg:px-3 stg:py-8 stg:text-center", children: [_jsx(ShieldIcon, { className: "stg:mx-auto stg:mb-2 stg:size-6 stg:text-muted-foreground-faint" }), _jsx("p", { className: "stg:text-xs stg:text-muted-foreground", children: hasDiscoveredTools
707
754
  ? "No approval policies yet. Reconnect to reclassify tools."
708
- : "Connect to discover tools and auto-classify approval policies." })] }));
755
+ : isOAuthStranded
756
+ ? "Signed in \u2014 discover tools to auto-classify approval policies."
757
+ : "Connect to discover tools and auto-classify approval policies." })] }));
709
758
  }
710
- return (_jsxs("div", { className: "flex flex-col", children: [_jsxs("div", { className: "flex items-center gap-2 px-3 pb-2", children: [_jsxs("div", { className: "relative flex-1", children: [_jsx(SearchIcon, { className: "pointer-events-none absolute left-2 top-1/2 size-3.5 -translate-y-1/2 text-muted-foreground" }), _jsx("input", { type: "text", value: search, onChange: (e) => setSearch(e.target.value), placeholder: "Search policies\u2026", "aria-label": "Search policies", 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" }), isFiltered && (_jsx("button", { type: "button", onClick: () => setSearch(""), "aria-label": "Clear search", className: "absolute right-2 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground", children: _jsx(CloseIcon, { className: "size-3" }) }))] }), _jsx("span", { className: "shrink-0 text-[10px] text-muted-foreground", children: isFiltered ? `${filteredTotal} of ${totalCount}` : totalCount })] }), filteredTotal === 0 ? (_jsx("div", { className: "px-3 py-6 text-center", children: _jsxs("p", { className: "text-xs text-muted-foreground", children: ["No policies matching \u201C", search, "\u201D"] }) })) : (_jsxs("div", { className: "max-h-96 overflow-y-auto", children: [filteredPinned.length > 0 && (_jsx(PolicyGroup, { icon: _jsx(PinIcon, { className: "size-3.5" }), label: "Pinned", policies: filteredPinned })), filteredClassified.length > 0 && (_jsx(PolicyGroup, { icon: _jsx(SparklesIcon, { className: "size-3.5" }), label: "Auto-classified", policies: filteredClassified }))] }))] }));
759
+ return (_jsxs("div", { className: "stg:flex stg:flex-col", children: [_jsxs("div", { className: "stg:flex stg:items-center stg:gap-2 stg:px-3 stg:pb-2", children: [_jsxs("div", { className: "stg:relative stg:flex-1", children: [_jsx(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" }), _jsx("input", { type: "text", value: search, onChange: (e) => setSearch(e.target.value), placeholder: "Search policies\u2026", "aria-label": "Search policies", 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" }), isFiltered && (_jsx("button", { type: "button", onClick: () => setSearch(""), "aria-label": "Clear search", className: "stg:absolute stg:right-2 stg:top-1/2 stg:-translate-y-1/2 stg:text-muted-foreground stg:hover:text-foreground", children: _jsx(CloseIcon, { className: "stg:size-3" }) }))] }), _jsx("span", { className: "stg:shrink-0 stg:text-[10px] stg:text-muted-foreground", children: isFiltered ? `${filteredTotal} of ${totalCount}` : totalCount })] }), filteredTotal === 0 ? (_jsx("div", { className: "stg:px-3 stg:py-6 stg:text-center", children: _jsxs("p", { className: "stg:text-xs stg:text-muted-foreground", children: ["No policies matching \u201C", search, "\u201D"] }) })) : (_jsxs("div", { className: "stg:max-h-96 stg:overflow-y-auto", children: [filteredPinned.length > 0 && (_jsx(PolicyGroup, { icon: _jsx(PinIcon, { className: "stg:size-3.5" }), label: "Pinned", policies: filteredPinned })), filteredClassified.length > 0 && (_jsx(PolicyGroup, { icon: _jsx(SparklesIcon, { className: "stg:size-3.5" }), label: "Auto-classified", policies: filteredClassified }))] }))] }));
711
760
  }
712
761
  function PolicyGroup({ icon, label, policies, }) {
713
- return (_jsxs("div", { className: "flex flex-col", children: [_jsxs("div", { className: "flex items-center gap-1.5 border-b border-border bg-muted-faint px-3 py-1.5", children: [_jsx("span", { className: "text-muted-foreground", children: icon }), _jsx("span", { className: "text-[10px] font-medium uppercase tracking-wider text-muted-foreground", children: label }), _jsxs("span", { className: "text-[10px] text-muted-foreground", children: ["(", policies.length, ")"] })] }), _jsx("div", { className: "flex flex-col divide-y divide-border", children: policies.map((policy) => (_jsxs("div", { className: "px-3 py-2.5", children: [_jsxs("div", { className: "flex items-baseline gap-2", children: [_jsx("code", { className: "font-mono text-sm font-medium text-foreground", children: policy.toolName }), _jsxs("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", children: [_jsx(ShieldIcon, { className: "size-2.5" }), "requires approval"] })] }), policy.message && (_jsx("p", { className: "mt-0.5 text-xs text-muted-foreground", children: policy.message }))] }, policy.toolName))) })] }));
762
+ return (_jsxs("div", { className: "stg:flex stg:flex-col", children: [_jsxs("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", children: [_jsx("span", { className: "stg:text-muted-foreground", children: icon }), _jsx("span", { className: "stg:text-[10px] stg:font-medium stg:uppercase stg:tracking-wider stg:text-muted-foreground", children: label }), _jsxs("span", { className: "stg:text-[10px] stg:text-muted-foreground", children: ["(", policies.length, ")"] })] }), _jsx("div", { className: "stg:flex stg:flex-col stg:divide-y stg:divide-border", children: policies.map((policy) => (_jsxs("div", { className: "stg:px-3 stg:py-2.5", children: [_jsxs("div", { className: "stg:flex stg:items-baseline stg:gap-2", children: [_jsx("code", { className: "stg:font-mono stg:text-sm stg:font-medium stg:text-foreground", children: policy.toolName }), _jsxs("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", children: [_jsx(ShieldIcon, { className: "stg:size-2.5" }), "requires approval"] })] }), policy.message && (_jsx("p", { className: "stg:mt-0.5 stg:text-xs stg:text-muted-foreground", children: policy.message }))] }, policy.toolName))) })] }));
714
763
  }
715
764
  // ---------------------------------------------------------------------------
716
765
  // Shared layout primitives
717
766
  // ---------------------------------------------------------------------------
718
767
  function Dot() {
719
- return (_jsx("span", { className: "shrink-0", "aria-hidden": "true", children: "\u00B7" }));
768
+ return (_jsx("span", { className: "stg:shrink-0", "aria-hidden": "true", children: "\u00B7" }));
720
769
  }
721
770
  // ---------------------------------------------------------------------------
722
771
  // Non-happy states
723
772
  // ---------------------------------------------------------------------------
724
773
  function LoadingSkeleton({ className }) {
725
- return (_jsxs("div", { className: cn("flex flex-col gap-6", className), "aria-busy": "true", "aria-label": "Loading MCP server details", children: [_jsxs("div", { className: "flex items-start gap-3", children: [_jsx("div", { className: "mt-1 size-6 shrink-0 animate-pulse rounded bg-muted" }), _jsxs("div", { className: "flex-1 space-y-2", children: [_jsx("div", { className: "h-5 w-48 animate-pulse rounded bg-muted" }), _jsx("div", { className: "h-3 w-64 animate-pulse rounded bg-muted" }), _jsx("div", { className: "h-4 w-full max-w-md animate-pulse rounded bg-muted" })] })] }), [24, 48, 16, 12].map((h, i) => (_jsxs("div", { className: "space-y-2", children: [_jsx("div", { className: "h-3 w-28 animate-pulse rounded bg-muted" }), _jsx("div", { className: "animate-pulse rounded-lg border border-border bg-muted-faint", style: { height: `${h * 4}px` } })] }, i)))] }));
774
+ return (_jsxs("div", { className: cn("stg:flex stg:flex-col stg:gap-6", className), "aria-busy": "true", "aria-label": "Loading MCP server details", children: [_jsxs("div", { className: "stg:flex stg:items-start stg:gap-3", children: [_jsx("div", { className: "stg:mt-1 stg:size-6 stg:shrink-0 stg:animate-pulse stg:rounded stg:bg-muted" }), _jsxs("div", { className: "stg:flex-1 stg:space-y-2", children: [_jsx("div", { className: "stg:h-5 stg:w-48 stg:animate-pulse stg:rounded stg:bg-muted" }), _jsx("div", { className: "stg:h-3 stg:w-64 stg:animate-pulse stg:rounded stg:bg-muted" }), _jsx("div", { className: "stg:h-4 stg:w-full stg:max-w-md stg:animate-pulse stg:rounded stg:bg-muted" })] })] }), [24, 48, 16, 12].map((h, i) => (_jsxs("div", { className: "stg:space-y-2", children: [_jsx("div", { className: "stg:h-3 stg:w-28 stg:animate-pulse stg:rounded stg:bg-muted" }), _jsx("div", { className: "stg:animate-pulse stg:rounded-lg stg:border stg:border-border stg:bg-muted-faint", style: { height: `${h * 4}px` } })] }, i)))] }));
726
775
  }
727
776
  function NotFoundState({ className }) {
728
- return (_jsxs("div", { role: "status", className: cn("flex flex-col items-center gap-2 py-12 text-center", className), children: [_jsx(McpServerIcon, { className: "size-10 text-muted-foreground-faint" }), _jsx("p", { className: "text-sm font-medium text-muted-foreground", children: "MCP Server not found" }), _jsx("p", { className: "text-xs text-muted-foreground-subtle", children: "This MCP server doesn't exist or you don't have access to it." })] }));
777
+ return (_jsxs("div", { role: "status", className: cn("stg:flex stg:flex-col stg:items-center stg:gap-2 stg:py-12 stg:text-center", className), children: [_jsx(McpServerIcon, { className: "stg:size-10 stg:text-muted-foreground-faint" }), _jsx("p", { className: "stg:text-sm stg:font-medium stg:text-muted-foreground", children: "MCP Server not found" }), _jsx("p", { className: "stg:text-xs stg:text-muted-foreground-subtle", children: "This MCP server doesn't exist or you don't have access to it." })] }));
729
778
  }
730
779
  // ---------------------------------------------------------------------------
731
780
  // Utilities
@@ -780,6 +829,6 @@ function ChevronIcon({ className }) {
780
829
  return (_jsx("svg", { className: className, viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: _jsx("path", { d: "m6 4 4 4-4 4" }) }));
781
830
  }
782
831
  function Spinner() {
783
- return (_jsx("svg", { width: "14", height: "14", viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", className: "animate-spin", "aria-hidden": "true", children: _jsx("path", { d: "M8 2a6 6 0 1 0 6 6" }) }));
832
+ return (_jsx("svg", { width: "14", height: "14", viewBox: "0 0 16 16", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", className: "stg:animate-spin", "aria-hidden": "true", children: _jsx("path", { d: "M8 2a6 6 0 1 0 6 6" }) }));
784
833
  }
785
834
  //# sourceMappingURL=McpServerDetailView.js.map