@stigmer/react 3.9.0 → 3.11.0

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 (1356) 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.js +4 -4
  24. package/agent-instance/AgentInstanceList.js.map +1 -1
  25. package/agent-instance/CreateAgentInstanceDialog.js +1 -1
  26. package/agent-instance/CreateAgentInstanceDialog.js.map +1 -1
  27. package/api-key/ApiKeyCreatedAlert.js +1 -1
  28. package/api-key/ApiKeyCreatedAlert.js.map +1 -1
  29. package/api-key/ApiKeyListPanel.js +9 -9
  30. package/api-key/ApiKeyListPanel.js.map +1 -1
  31. package/api-key/CreateApiKeyForm.js +5 -5
  32. package/api-key/CreateApiKeyForm.js.map +1 -1
  33. package/attachment/AttachmentChipList.d.ts +16 -4
  34. package/attachment/AttachmentChipList.d.ts.map +1 -1
  35. package/attachment/AttachmentChipList.js +103 -37
  36. package/attachment/AttachmentChipList.js.map +1 -1
  37. package/attachment/AttachmentImageLightbox.d.ts +39 -0
  38. package/attachment/AttachmentImageLightbox.d.ts.map +1 -0
  39. package/attachment/AttachmentImageLightbox.js +57 -0
  40. package/attachment/AttachmentImageLightbox.js.map +1 -0
  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/attachment/useObjectUrl.d.ts +15 -0
  46. package/attachment/useObjectUrl.d.ts.map +1 -0
  47. package/attachment/useObjectUrl.js +25 -0
  48. package/attachment/useObjectUrl.js.map +1 -0
  49. package/billing/AutoRechargeCard.js +2 -2
  50. package/billing/AutoRechargeCard.js.map +1 -1
  51. package/billing/BillingSection.js +6 -6
  52. package/billing/BillingSection.js.map +1 -1
  53. package/billing/CreditBalanceCard.js +4 -4
  54. package/billing/CreditBalanceCard.js.map +1 -1
  55. package/billing/CreditLedgerTable.js +13 -13
  56. package/billing/CreditLedgerTable.js.map +1 -1
  57. package/billing/CreditPackGrid.js +2 -2
  58. package/billing/CreditPackGrid.js.map +1 -1
  59. package/billing/LowBalanceBanner.js +4 -4
  60. package/billing/LowBalanceBanner.js.map +1 -1
  61. package/billing/PaymentMethodCard.js +2 -2
  62. package/billing/PaymentMethodCard.js.map +1 -1
  63. package/button/Button.js +7 -7
  64. package/button/Button.js.map +1 -1
  65. package/channel/AgentChannelsPanel.js +12 -12
  66. package/channel/AgentChannelsPanel.js.map +1 -1
  67. package/channel/ChannelConversationsDialog.js +6 -6
  68. package/channel/ChannelConversationsDialog.js.map +1 -1
  69. package/channel/ChannelCredentialsDialog.js +2 -2
  70. package/channel/ChannelCredentialsDialog.js.map +1 -1
  71. package/channel/ChannelTemplatesDialog.js +13 -13
  72. package/channel/ChannelTemplatesDialog.js.map +1 -1
  73. package/channel/ChannelToolCredentials.js +3 -3
  74. package/channel/ChannelToolCredentials.js.map +1 -1
  75. package/channel/ConnectSlackDialog.js +13 -13
  76. package/channel/ConnectSlackDialog.js.map +1 -1
  77. package/channel/ConnectWhatsAppDialog.js +8 -8
  78. package/channel/ConnectWhatsAppDialog.js.map +1 -1
  79. package/channel/connect/ServingAppSection.js +5 -5
  80. package/channel/connect/ServingAppSection.js.map +1 -1
  81. package/channel/connect/ToolCredentialsSection.js +1 -1
  82. package/channel/connect/ToolCredentialsSection.js.map +1 -1
  83. package/channel/connect/VerbatimRefusal.js +1 -1
  84. package/channel/connect/VerbatimRefusal.js.map +1 -1
  85. package/channel/connect/icons.js +1 -1
  86. package/channel/connect/icons.js.map +1 -1
  87. package/channel-app/ChannelAppDetailPanel.js +3 -3
  88. package/channel-app/ChannelAppDetailPanel.js.map +1 -1
  89. package/channel-app/ChannelAppListPanel.js +5 -5
  90. package/channel-app/ChannelAppListPanel.js.map +1 -1
  91. package/channel-app/CreateChannelAppForm.js +6 -6
  92. package/channel-app/CreateChannelAppForm.js.map +1 -1
  93. package/channel-app/internal.js +7 -7
  94. package/channel-app/internal.js.map +1 -1
  95. package/composer/ComposerToolbar.js +4 -4
  96. package/composer/ComposerToolbar.js.map +1 -1
  97. package/composer/ConfigureMenu.js +4 -4
  98. package/composer/ConfigureMenu.js.map +1 -1
  99. package/composer/ContextChip.js +4 -4
  100. package/composer/ContextChip.js.map +1 -1
  101. package/composer/ContextPopover.js +4 -4
  102. package/composer/ContextPopover.js.map +1 -1
  103. package/composer/InteractionModePicker.js +5 -5
  104. package/composer/InteractionModePicker.js.map +1 -1
  105. package/composer/SessionComposer.js +8 -8
  106. package/composer/SessionComposer.js.map +1 -1
  107. package/composer/icons.js +3 -3
  108. package/composer/icons.js.map +1 -1
  109. package/conversation/ConversationAttentionBanner.js +2 -2
  110. package/conversation/ConversationAttentionBanner.js.map +1 -1
  111. package/conversation/ConversationComposer.js +2 -2
  112. package/conversation/ConversationComposer.js.map +1 -1
  113. package/conversation/ConversationControlBanner.js +5 -5
  114. package/conversation/ConversationControlBanner.js.map +1 -1
  115. package/conversation/ConversationListPane.js +12 -12
  116. package/conversation/ConversationListPane.js.map +1 -1
  117. package/conversation/ConversationMediaAttachment.d.ts +45 -0
  118. package/conversation/ConversationMediaAttachment.d.ts.map +1 -0
  119. package/conversation/ConversationMediaAttachment.js +153 -0
  120. package/conversation/ConversationMediaAttachment.js.map +1 -0
  121. package/conversation/ConversationTimelineView.d.ts +18 -1
  122. package/conversation/ConversationTimelineView.d.ts.map +1 -1
  123. package/conversation/ConversationTimelineView.js +24 -15
  124. package/conversation/ConversationTimelineView.js.map +1 -1
  125. package/conversation/ConversationsWorkbench.d.ts.map +1 -1
  126. package/conversation/ConversationsWorkbench.js +3 -3
  127. package/conversation/ConversationsWorkbench.js.map +1 -1
  128. package/conversation/conversationPresentation.d.ts +10 -3
  129. package/conversation/conversationPresentation.d.ts.map +1 -1
  130. package/conversation/conversationPresentation.js +10 -3
  131. package/conversation/conversationPresentation.js.map +1 -1
  132. package/conversation/index.d.ts +2 -0
  133. package/conversation/index.d.ts.map +1 -1
  134. package/conversation/index.js +1 -0
  135. package/conversation/index.js.map +1 -1
  136. package/conversation/useConversationMediaUrl.d.ts +65 -0
  137. package/conversation/useConversationMediaUrl.d.ts.map +1 -0
  138. package/conversation/useConversationMediaUrl.js +61 -0
  139. package/conversation/useConversationMediaUrl.js.map +1 -0
  140. package/cursor-accounts/CursorAccountEditor.js +1 -1
  141. package/cursor-accounts/CursorAccountEditor.js.map +1 -1
  142. package/cursor-accounts/CursorAccountsAccessNotice.js +1 -1
  143. package/cursor-accounts/CursorAccountsAccessNotice.js.map +1 -1
  144. package/cursor-accounts/CursorAccountsConsole.js +9 -9
  145. package/cursor-accounts/CursorAccountsConsole.js.map +1 -1
  146. package/cursor-accounts/MemberCoverageTable.js +7 -7
  147. package/cursor-accounts/MemberCoverageTable.js.map +1 -1
  148. package/cursor-accounts/MemberKeysPanel.js +3 -3
  149. package/cursor-accounts/MemberKeysPanel.js.map +1 -1
  150. package/cursor-accounts/badges.js +1 -1
  151. package/cursor-accounts/badges.js.map +1 -1
  152. package/dashboard/DashboardFailedRuns.js +4 -4
  153. package/dashboard/DashboardFailedRuns.js.map +1 -1
  154. package/dashboard/DashboardKPICards.js +7 -7
  155. package/dashboard/DashboardKPICards.js.map +1 -1
  156. package/dashboard/OperationalDashboard.js +1 -1
  157. package/dashboard/OperationalDashboard.js.map +1 -1
  158. package/datastore/CollectionRecordsBrowser.js +10 -10
  159. package/datastore/CollectionRecordsBrowser.js.map +1 -1
  160. package/datastore/CollectionSchemaView.js +4 -4
  161. package/datastore/CollectionSchemaView.js.map +1 -1
  162. package/datastore/DatastoreDetailView.js +4 -4
  163. package/datastore/DatastoreDetailView.js.map +1 -1
  164. package/datastore/DatastoreSyncReport.js +1 -1
  165. package/datastore/DatastoreSyncReport.js.map +1 -1
  166. package/datastore/DeleteDatastoreDialog.js +1 -1
  167. package/datastore/DeleteDatastoreDialog.js.map +1 -1
  168. package/datastore/FieldValueControl.js +2 -2
  169. package/datastore/FieldValueControl.js.map +1 -1
  170. package/datastore/RecordFilterBuilder.js +4 -4
  171. package/datastore/RecordFilterBuilder.js.map +1 -1
  172. package/datastore/RecordFormPanel.js +5 -5
  173. package/datastore/RecordFormPanel.js.map +1 -1
  174. package/dependency-graph/DependencyGraph.js +1 -1
  175. package/dependency-graph/DependencyGraph.js.map +1 -1
  176. package/dependency-graph/DependencyTreeNode.js +8 -8
  177. package/dependency-graph/DependencyTreeNode.js.map +1 -1
  178. package/empty-state/EmptyState.js +3 -3
  179. package/empty-state/EmptyState.js.map +1 -1
  180. package/empty-state/useEmptyState.js +1 -1
  181. package/empty-state/useEmptyState.js.map +1 -1
  182. package/environment/CreateEnvironmentForm.js +2 -2
  183. package/environment/CreateEnvironmentForm.js.map +1 -1
  184. package/environment/EnvVarForm.js +4 -4
  185. package/environment/EnvVarForm.js.map +1 -1
  186. package/environment/EnvironmentListPanel.js +9 -9
  187. package/environment/EnvironmentListPanel.js.map +1 -1
  188. package/environment/EnvironmentPicker.js +4 -4
  189. package/environment/EnvironmentPicker.js.map +1 -1
  190. package/environment/EnvironmentVariableEditor.js +17 -17
  191. package/environment/EnvironmentVariableEditor.js.map +1 -1
  192. package/error/ErrorMessage.js +1 -1
  193. package/error/ErrorMessage.js.map +1 -1
  194. package/error/SecretFlowErrorGuide.js +1 -1
  195. package/error/SecretFlowErrorGuide.js.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.js +2 -2
  211. package/execution/ArtifactRowView.js.map +1 -1
  212. package/execution/ArtifactsWidget.js +1 -1
  213. package/execution/ArtifactsWidget.js.map +1 -1
  214. package/execution/ContextGauge.js +9 -9
  215. package/execution/ContextGauge.js.map +1 -1
  216. package/execution/EmptyChangeNotice.js +1 -1
  217. package/execution/EmptyChangeNotice.js.map +1 -1
  218. package/execution/ExecutionPhaseBadge.js +10 -10
  219. package/execution/ExecutionPhaseBadge.js.map +1 -1
  220. package/execution/ExecutionProgress.js +1 -1
  221. package/execution/ExecutionProgress.js.map +1 -1
  222. package/execution/FileChangeProgressBar.js +3 -3
  223. package/execution/FileChangeProgressBar.js.map +1 -1
  224. package/execution/FileChangesView.js +5 -5
  225. package/execution/FileChangesView.js.map +1 -1
  226. package/execution/FilePathLink.js +6 -6
  227. package/execution/FilePathLink.js.map +1 -1
  228. package/execution/FileReviewAtoms.js +7 -7
  229. package/execution/FileReviewAtoms.js.map +1 -1
  230. package/execution/FileReviewCard.js +18 -18
  231. package/execution/FileReviewCard.js.map +1 -1
  232. package/execution/FileReviewDock.js +1 -1
  233. package/execution/FileReviewDock.js.map +1 -1
  234. package/execution/FollowUpInput.js +3 -3
  235. package/execution/FollowUpInput.js.map +1 -1
  236. package/execution/InteractionModeBadge.js +1 -1
  237. package/execution/InteractionModeBadge.js.map +1 -1
  238. package/execution/McpToolDetail.js +12 -12
  239. package/execution/McpToolDetail.js.map +1 -1
  240. package/execution/MessageAttachments.d.ts +52 -0
  241. package/execution/MessageAttachments.d.ts.map +1 -0
  242. package/execution/MessageAttachments.js +142 -0
  243. package/execution/MessageAttachments.js.map +1 -0
  244. package/execution/MessageEntry.d.ts +18 -0
  245. package/execution/MessageEntry.d.ts.map +1 -1
  246. package/execution/MessageEntry.js +12 -11
  247. package/execution/MessageEntry.js.map +1 -1
  248. package/execution/MessageThread.d.ts +15 -2
  249. package/execution/MessageThread.d.ts.map +1 -1
  250. package/execution/MessageThread.js +34 -17
  251. package/execution/MessageThread.js.map +1 -1
  252. package/execution/PlanArtifactCard.js +8 -8
  253. package/execution/PlanArtifactCard.js.map +1 -1
  254. package/execution/PlanCompletionCard.js +2 -2
  255. package/execution/PlanCompletionCard.js.map +1 -1
  256. package/execution/PlanDocumentMessage.js +2 -2
  257. package/execution/PlanDocumentMessage.js.map +1 -1
  258. package/execution/PlanStreamingCard.js +3 -3
  259. package/execution/PlanStreamingCard.js.map +1 -1
  260. package/execution/ResultView.js +17 -17
  261. package/execution/ResultView.js.map +1 -1
  262. package/execution/SessionVariablesInput.js +6 -6
  263. package/execution/SessionVariablesInput.js.map +1 -1
  264. package/execution/SetupProgress.js +2 -2
  265. package/execution/SetupProgress.js.map +1 -1
  266. package/execution/SubAgentSection.js +19 -19
  267. package/execution/SubAgentSection.js.map +1 -1
  268. package/execution/SummarizationBadge.js +3 -3
  269. package/execution/SummarizationBadge.js.map +1 -1
  270. package/execution/SummarizationCard.js +2 -2
  271. package/execution/SummarizationCard.js.map +1 -1
  272. package/execution/TerminalSession.js +2 -2
  273. package/execution/TerminalSession.js.map +1 -1
  274. package/execution/ThreadSkeleton.js +1 -1
  275. package/execution/ThreadSkeleton.js.map +1 -1
  276. package/execution/TodoCard.js +3 -3
  277. package/execution/TodoCard.js.map +1 -1
  278. package/execution/TodoList.js +8 -8
  279. package/execution/TodoList.js.map +1 -1
  280. package/execution/ToolArgsView.js +4 -4
  281. package/execution/ToolArgsView.js.map +1 -1
  282. package/execution/ToolCallDetail.js +4 -4
  283. package/execution/ToolCallDetail.js.map +1 -1
  284. package/execution/ToolCallGroup.js +1 -1
  285. package/execution/ToolCallGroup.js.map +1 -1
  286. package/execution/ToolCallItem.js +16 -16
  287. package/execution/ToolCallItem.js.map +1 -1
  288. package/execution/ToolRunGroup.js +9 -9
  289. package/execution/ToolRunGroup.js.map +1 -1
  290. package/execution/UsageWidget.js +3 -3
  291. package/execution/UsageWidget.js.map +1 -1
  292. package/execution/WriteBackCard.js +16 -16
  293. package/execution/WriteBackCard.js.map +1 -1
  294. package/execution/WriteBacksWidget.js +1 -1
  295. package/execution/WriteBacksWidget.js.map +1 -1
  296. package/execution/index.d.ts +2 -0
  297. package/execution/index.d.ts.map +1 -1
  298. package/execution/index.js +1 -0
  299. package/execution/index.js.map +1 -1
  300. package/execution/tool-rendering-primitives.js +5 -5
  301. package/execution/tool-rendering-primitives.js.map +1 -1
  302. package/feedback/StigmerToaster.d.ts.map +1 -1
  303. package/feedback/StigmerToaster.js +9 -5
  304. package/feedback/StigmerToaster.js.map +1 -1
  305. package/file-reference/FileReferenceChipList.js +3 -3
  306. package/file-reference/FileReferenceChipList.js.map +1 -1
  307. package/github/GitHubRepoPicker.js +26 -26
  308. package/github/GitHubRepoPicker.js.map +1 -1
  309. package/github/decodeGitHubContent.d.ts +10 -5
  310. package/github/decodeGitHubContent.d.ts.map +1 -1
  311. package/github/decodeGitHubContent.js +21 -7
  312. package/github/decodeGitHubContent.js.map +1 -1
  313. package/github/useGitHubFileReader.d.ts.map +1 -1
  314. package/github/useGitHubFileReader.js +5 -5
  315. package/github/useGitHubFileReader.js.map +1 -1
  316. package/iam-policy/GrantAccessForm.js +2 -2
  317. package/iam-policy/GrantAccessForm.js.map +1 -1
  318. package/iam-policy/OrgMembersPanel.js +11 -11
  319. package/iam-policy/OrgMembersPanel.js.map +1 -1
  320. package/iam-policy/PeopleWithAccess.js +4 -4
  321. package/iam-policy/PeopleWithAccess.js.map +1 -1
  322. package/iam-policy/PrincipalPicker.js +6 -6
  323. package/iam-policy/PrincipalPicker.js.map +1 -1
  324. package/iam-policy/ProviderBadge.js +1 -1
  325. package/iam-policy/ProviderBadge.js.map +1 -1
  326. package/iam-policy/RoleSelector.js +4 -4
  327. package/iam-policy/RoleSelector.js.map +1 -1
  328. package/iam-policy/SharePanel.js +1 -1
  329. package/iam-policy/SharePanel.js.map +1 -1
  330. package/identity-provider/CreateIdentityProviderForm.js +6 -6
  331. package/identity-provider/CreateIdentityProviderForm.js.map +1 -1
  332. package/identity-provider/IdentityProviderDetailPanel.js +11 -11
  333. package/identity-provider/IdentityProviderDetailPanel.js.map +1 -1
  334. package/identity-provider/IdentityProviderListPanel.js +8 -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 +4 -4
  343. package/index.d.ts.map +1 -1
  344. package/index.js +3 -3
  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 +15 -0
  391. package/internal/form-primitives.d.ts.map +1 -1
  392. package/internal/form-primitives.js +17 -2
  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/invitation/InvitationCreatedAlert.js +1 -1
  408. package/invitation/InvitationCreatedAlert.js.map +1 -1
  409. package/invitation/InvitationManager.js +23 -23
  410. package/invitation/InvitationManager.js.map +1 -1
  411. package/invitation/InvitationRedemption.js +12 -12
  412. package/invitation/InvitationRedemption.js.map +1 -1
  413. package/library/ResourceCountCard.js +4 -4
  414. package/library/ResourceCountCard.js.map +1 -1
  415. package/library/ScopeToggle.js +4 -4
  416. package/library/ScopeToggle.js.map +1 -1
  417. package/library/VisibilityOptionRow.d.ts +1 -1
  418. package/library/VisibilityOptionRow.d.ts.map +1 -1
  419. package/library/VisibilityOptionRow.js +22 -22
  420. package/library/VisibilityOptionRow.js.map +1 -1
  421. package/library/VisibilitySelector.js +5 -5
  422. package/library/VisibilitySelector.js.map +1 -1
  423. package/manifest/ApplyManifestDialog.js +6 -6
  424. package/manifest/ApplyManifestDialog.js.map +1 -1
  425. package/manifest/EditResourceYamlDialog.js +2 -2
  426. package/manifest/EditResourceYamlDialog.js.map +1 -1
  427. package/manifest/RedactedSecretsNotice.js +1 -1
  428. package/manifest/RedactedSecretsNotice.js.map +1 -1
  429. package/manifest/YamlEditor.js +1 -1
  430. package/manifest/YamlEditor.js.map +1 -1
  431. package/mcp-server/McpServerConfigPanel.js +22 -22
  432. package/mcp-server/McpServerConfigPanel.js.map +1 -1
  433. package/mcp-server/McpServerConnectDialog.js +43 -17
  434. package/mcp-server/McpServerConnectDialog.js.map +1 -1
  435. package/mcp-server/McpServerDetailView.d.ts.map +1 -1
  436. package/mcp-server/McpServerDetailView.js +112 -63
  437. package/mcp-server/McpServerDetailView.js.map +1 -1
  438. package/mcp-server/McpServerPicker.js +16 -16
  439. package/mcp-server/McpServerPicker.js.map +1 -1
  440. package/mcp-server/McpToolSelector.js +4 -4
  441. package/mcp-server/McpToolSelector.js.map +1 -1
  442. package/mcp-server/OAuthAppForm.js +2 -2
  443. package/mcp-server/OAuthAppForm.js.map +1 -1
  444. package/mcp-server/OAuthCallbackHandler.js +4 -4
  445. package/mcp-server/OAuthCallbackHandler.js.map +1 -1
  446. package/mcp-server/OAuthRequiredNotice.js +1 -1
  447. package/mcp-server/OAuthRequiredNotice.js.map +1 -1
  448. package/mcp-server/StdioSandboxNotice.js +1 -1
  449. package/mcp-server/StdioSandboxNotice.js.map +1 -1
  450. package/mcp-server/index.d.ts +1 -1
  451. package/mcp-server/index.d.ts.map +1 -1
  452. package/mcp-server/index.js +1 -1
  453. package/mcp-server/index.js.map +1 -1
  454. package/mcp-server/steps/EnvironmentAuthStep.js +4 -4
  455. package/mcp-server/steps/EnvironmentAuthStep.js.map +1 -1
  456. package/mcp-server/steps/IdentityTransportStep.js +8 -8
  457. package/mcp-server/steps/IdentityTransportStep.js.map +1 -1
  458. package/mcp-server/steps/ReviewStep.js +3 -3
  459. package/mcp-server/steps/ReviewStep.js.map +1 -1
  460. package/mcp-server/useMcpServerOAuthConnect.d.ts +29 -0
  461. package/mcp-server/useMcpServerOAuthConnect.d.ts.map +1 -1
  462. package/mcp-server/useMcpServerOAuthConnect.js +49 -10
  463. package/mcp-server/useMcpServerOAuthConnect.js.map +1 -1
  464. package/models/HarnessSelector.js +8 -8
  465. package/models/HarnessSelector.js.map +1 -1
  466. package/models/ModelSelector.js +11 -11
  467. package/models/ModelSelector.js.map +1 -1
  468. package/oauth-app/CreateOAuthAppForm.js +4 -4
  469. package/oauth-app/CreateOAuthAppForm.js.map +1 -1
  470. package/oauth-app/OAuthAppDetailPanel.js +8 -8
  471. package/oauth-app/OAuthAppDetailPanel.js.map +1 -1
  472. package/oauth-app/OAuthAppListPanel.js +6 -6
  473. package/oauth-app/OAuthAppListPanel.js.map +1 -1
  474. package/organization/CreateOrganizationForm.js +4 -4
  475. package/organization/CreateOrganizationForm.js.map +1 -1
  476. package/organization/OrgProfilePanel.js +10 -10
  477. package/organization/OrgProfilePanel.js.map +1 -1
  478. package/organization/OrgSwitcher.js +5 -5
  479. package/organization/OrgSwitcher.js.map +1 -1
  480. package/package.json +4 -4
  481. package/platform-client/CreatePlatformClientForm.js +5 -5
  482. package/platform-client/CreatePlatformClientForm.js.map +1 -1
  483. package/platform-client/PlatformClientDetailPanel.js +8 -8
  484. package/platform-client/PlatformClientDetailPanel.js.map +1 -1
  485. package/platform-client/PlatformClientListPanel.js +10 -10
  486. package/platform-client/PlatformClientListPanel.js.map +1 -1
  487. package/platform-client/PlatformClientSecretAlert.js +2 -2
  488. package/platform-client/PlatformClientSecretAlert.js.map +1 -1
  489. package/portal-container.d.ts +34 -9
  490. package/portal-container.d.ts.map +1 -1
  491. package/portal-container.js +33 -8
  492. package/portal-container.js.map +1 -1
  493. package/pricing-governance/BaselineEditor.js +5 -5
  494. package/pricing-governance/BaselineEditor.js.map +1 -1
  495. package/pricing-governance/ModelCatalogPanel.js +5 -5
  496. package/pricing-governance/ModelCatalogPanel.js.map +1 -1
  497. package/pricing-governance/ModelGovernanceDetail.js +7 -7
  498. package/pricing-governance/ModelGovernanceDetail.js.map +1 -1
  499. package/pricing-governance/OperatorAccessNotice.js +1 -1
  500. package/pricing-governance/OperatorAccessNotice.js.map +1 -1
  501. package/pricing-governance/PricingGovernanceConsole.js +8 -8
  502. package/pricing-governance/PricingGovernanceConsole.js.map +1 -1
  503. package/pricing-governance/PricingGovernancePanel.js +4 -4
  504. package/pricing-governance/PricingGovernancePanel.js.map +1 -1
  505. package/pricing-governance/RetireConfirm.js +1 -1
  506. package/pricing-governance/RetireConfirm.js.map +1 -1
  507. package/pricing-governance/governance-primitives.js +6 -6
  508. package/pricing-governance/governance-primitives.js.map +1 -1
  509. package/resource-creation/CreationPicker.js +7 -7
  510. package/resource-creation/CreationPicker.js.map +1 -1
  511. package/resource-creation/StepIndicator.js +4 -4
  512. package/resource-creation/StepIndicator.js.map +1 -1
  513. package/resource-creation/TemplateCard.js +15 -15
  514. package/resource-creation/TemplateCard.js.map +1 -1
  515. package/resource-creation/TemplateGallery.js +5 -5
  516. package/resource-creation/TemplateGallery.js.map +1 -1
  517. package/resource-creation/WizardNav.js +2 -2
  518. package/resource-creation/WizardNav.js.map +1 -1
  519. package/resource-creation/WizardShell.js +2 -2
  520. package/resource-creation/WizardShell.js.map +1 -1
  521. package/resource-detail/ConfirmDialog.js +3 -3
  522. package/resource-detail/ConfirmDialog.js.map +1 -1
  523. package/resource-detail/ResourceActionBar.js +2 -2
  524. package/resource-detail/ResourceActionBar.js.map +1 -1
  525. package/resource-detail/ResourceDetailShell.js +3 -3
  526. package/resource-detail/ResourceDetailShell.js.map +1 -1
  527. package/resource-detail/Section.js +1 -1
  528. package/resource-detail/Section.js.map +1 -1
  529. package/resource-workbench/components/BulkActionBar.js +4 -4
  530. package/resource-workbench/components/BulkActionBar.js.map +1 -1
  531. package/resource-workbench/components/ColumnHeader.js +3 -3
  532. package/resource-workbench/components/ColumnHeader.js.map +1 -1
  533. package/resource-workbench/components/FilterBar.js +3 -3
  534. package/resource-workbench/components/FilterBar.js.map +1 -1
  535. package/resource-workbench/components/ResourceAvatar.js +18 -18
  536. package/resource-workbench/components/ResourceAvatar.js.map +1 -1
  537. package/resource-workbench/components/ResourceCards.js +2 -2
  538. package/resource-workbench/components/ResourceCards.js.map +1 -1
  539. package/resource-workbench/components/ResourceInspector.js +1 -1
  540. package/resource-workbench/components/ResourceInspector.js.map +1 -1
  541. package/resource-workbench/components/ResourceList.js +2 -2
  542. package/resource-workbench/components/ResourceList.js.map +1 -1
  543. package/resource-workbench/components/ResourceTable.js +5 -5
  544. package/resource-workbench/components/ResourceTable.js.map +1 -1
  545. package/resource-workbench/components/ResourceWorkbench.js +11 -11
  546. package/resource-workbench/components/ResourceWorkbench.js.map +1 -1
  547. package/resource-workbench/components/SelectionCheckbox.js +1 -1
  548. package/resource-workbench/components/SelectionCheckbox.js.map +1 -1
  549. package/resource-workbench/components/StatusBadge.js +16 -16
  550. package/resource-workbench/components/StatusBadge.js.map +1 -1
  551. package/resource-workbench/components/ViewSwitcher.js +4 -4
  552. package/resource-workbench/components/ViewSwitcher.js.map +1 -1
  553. package/schedule/CadenceField.js +14 -14
  554. package/schedule/CadenceField.js.map +1 -1
  555. package/schedule/ScheduleDetailView.js +39 -39
  556. package/schedule/ScheduleDetailView.js.map +1 -1
  557. package/schedule/ScheduleForm.js +9 -9
  558. package/schedule/ScheduleForm.js.map +1 -1
  559. package/schedule/ScheduleRowActions.js +1 -1
  560. package/schedule/ScheduleRowActions.js.map +1 -1
  561. package/schedule/ScheduleRunsTable.js +17 -17
  562. package/schedule/ScheduleRunsTable.js.map +1 -1
  563. package/schedule/TimeZoneField.js +5 -5
  564. package/schedule/TimeZoneField.js.map +1 -1
  565. package/schedule/scheduleColumns.js +5 -5
  566. package/schedule/scheduleColumns.js.map +1 -1
  567. package/session/NewSessionViewer.js +3 -3
  568. package/session/NewSessionViewer.js.map +1 -1
  569. package/session/PlanEditor.js +9 -9
  570. package/session/PlanEditor.js.map +1 -1
  571. package/session/PlanStreamingDocument.js +2 -2
  572. package/session/PlanStreamingDocument.js.map +1 -1
  573. package/session/SessionViewer.js +21 -21
  574. package/session/SessionViewer.js.map +1 -1
  575. package/session/SessionViewerLayout.d.ts +11 -8
  576. package/session/SessionViewerLayout.d.ts.map +1 -1
  577. package/session/SessionViewerLayout.js +1 -1
  578. package/session/SessionViewerLayout.js.map +1 -1
  579. package/session/facets/ArtifactsTab.js +2 -2
  580. package/session/facets/ArtifactsTab.js.map +1 -1
  581. package/session/facets/ChangesTab.js +3 -3
  582. package/session/facets/ChangesTab.js.map +1 -1
  583. package/session/facets/SetupTab.js +11 -11
  584. package/session/facets/SetupTab.js.map +1 -1
  585. package/session/facets/UsageTab.js +1 -1
  586. package/session/facets/UsageTab.js.map +1 -1
  587. package/session/useSessionConversation.d.ts +8 -0
  588. package/session/useSessionConversation.d.ts.map +1 -1
  589. package/session/useSessionConversation.js +12 -2
  590. package/session/useSessionConversation.js.map +1 -1
  591. package/settings/ApiKeysSection.js +1 -1
  592. package/settings/ApiKeysSection.js.map +1 -1
  593. package/settings/ChannelAppsSection.js +1 -1
  594. package/settings/ChannelAppsSection.js.map +1 -1
  595. package/settings/EnvironmentsSection.js +4 -4
  596. package/settings/EnvironmentsSection.js.map +1 -1
  597. package/settings/IdentityProvidersSection.js +1 -1
  598. package/settings/IdentityProvidersSection.js.map +1 -1
  599. package/settings/InvitationsSection.js +1 -1
  600. package/settings/InvitationsSection.js.map +1 -1
  601. package/settings/MembersSection.js +1 -1
  602. package/settings/MembersSection.js.map +1 -1
  603. package/settings/OAuthAppsSection.js +1 -1
  604. package/settings/OAuthAppsSection.js.map +1 -1
  605. package/settings/OrgProfileSection.js +1 -1
  606. package/settings/OrgProfileSection.js.map +1 -1
  607. package/settings/PlatformClientsSection.js +1 -1
  608. package/settings/PlatformClientsSection.js.map +1 -1
  609. package/settings/UsageSection.js +1 -1
  610. package/settings/UsageSection.js.map +1 -1
  611. package/sharing/AgentShareList.js +5 -5
  612. package/sharing/AgentShareList.js.map +1 -1
  613. package/sharing/ShareAgentDialog.js +30 -30
  614. package/sharing/ShareAgentDialog.js.map +1 -1
  615. package/sharing/SharedAgentChat.js +6 -6
  616. package/sharing/SharedAgentChat.js.map +1 -1
  617. package/sidebar/SettingsSidebar.js +5 -5
  618. package/sidebar/SettingsSidebar.js.map +1 -1
  619. package/sidebar/WorkspaceSidebar.js +13 -13
  620. package/sidebar/WorkspaceSidebar.js.map +1 -1
  621. package/sidebar/chrome.js +5 -5
  622. package/sidebar/chrome.js.map +1 -1
  623. package/skill/SkillDetailView.js +13 -13
  624. package/skill/SkillDetailView.js.map +1 -1
  625. package/skill/SkillDiffDialog.js +2 -2
  626. package/skill/SkillDiffDialog.js.map +1 -1
  627. package/skill/SkillFileBrowser.js +4 -4
  628. package/skill/SkillFileBrowser.js.map +1 -1
  629. package/skill/SkillPicker.js +10 -10
  630. package/skill/SkillPicker.js.map +1 -1
  631. package/skill/SkillUploader.js +8 -8
  632. package/skill/SkillUploader.js.map +1 -1
  633. package/src/__tests__/helpers/compile-sdk-styles.ts +33 -0
  634. package/src/__tests__/portal-container.test.tsx +97 -0
  635. package/src/__tests__/preflight-parity.layout.test.tsx +156 -0
  636. package/src/__tests__/scope-unprefixed.test.ts +86 -0
  637. package/src/__tests__/styles-border-layer-invariant.test.ts +86 -58
  638. package/src/__tests__/styles-dist-isolation.test.ts +195 -0
  639. package/src/__tests__/styles-host-isolation.layout.test.tsx +204 -0
  640. package/src/access/ManageAccessButton.tsx +3 -3
  641. package/src/access/ManageAccessDialog.tsx +19 -19
  642. package/src/action-menu/ActionMenu.tsx +8 -8
  643. package/src/activity/useRecentActivity.ts +6 -1
  644. package/src/agent/AgentDetailView.tsx +112 -112
  645. package/src/agent/AgentPicker.tsx +26 -26
  646. package/src/agent/steps/CapabilitiesStep.tsx +36 -36
  647. package/src/agent/steps/IdentityStep.tsx +45 -45
  648. package/src/agent/steps/ReviewStep.tsx +18 -18
  649. package/src/agent-instance/AgentInstanceDetailPanel.tsx +45 -45
  650. package/src/agent-instance/AgentInstanceList.tsx +36 -36
  651. package/src/agent-instance/CreateAgentInstanceDialog.tsx +35 -35
  652. package/src/agent-instance/__tests__/AgentInstanceList.test.tsx +0 -6
  653. package/src/api-key/ApiKeyCreatedAlert.tsx +15 -15
  654. package/src/api-key/ApiKeyListPanel.tsx +28 -28
  655. package/src/api-key/CreateApiKeyForm.tsx +25 -25
  656. package/src/attachment/AttachmentChipList.tsx +321 -75
  657. package/src/attachment/AttachmentImageLightbox.tsx +154 -0
  658. package/src/attachment/__tests__/AttachmentChipList.test.tsx +240 -17
  659. package/src/attachment/attachment-utils.ts +8 -5
  660. package/src/attachment/useObjectUrl.ts +28 -0
  661. package/src/billing/AutoRechargeCard.tsx +26 -26
  662. package/src/billing/BillingSection.tsx +14 -14
  663. package/src/billing/CreditBalanceCard.tsx +7 -7
  664. package/src/billing/CreditLedgerTable.tsx +27 -27
  665. package/src/billing/CreditPackGrid.tsx +13 -13
  666. package/src/billing/LowBalanceBanner.tsx +6 -6
  667. package/src/billing/PaymentMethodCard.tsx +13 -13
  668. package/src/button/Button.tsx +10 -10
  669. package/src/button/__tests__/Button.test.tsx +9 -9
  670. package/src/channel/AgentChannelsPanel.tsx +33 -33
  671. package/src/channel/ChannelConversationsDialog.tsx +21 -21
  672. package/src/channel/ChannelCredentialsDialog.tsx +13 -13
  673. package/src/channel/ChannelTemplatesDialog.tsx +34 -34
  674. package/src/channel/ChannelToolCredentials.tsx +5 -5
  675. package/src/channel/ConnectSlackDialog.tsx +48 -48
  676. package/src/channel/ConnectWhatsAppDialog.tsx +42 -42
  677. package/src/channel/__tests__/AgentChannelsPanel.test.tsx +4 -9
  678. package/src/channel/connect/ServingAppSection.tsx +14 -14
  679. package/src/channel/connect/ToolCredentialsSection.tsx +5 -5
  680. package/src/channel/connect/VerbatimRefusal.tsx +1 -1
  681. package/src/channel/connect/icons.tsx +1 -1
  682. package/src/channel-app/ChannelAppDetailPanel.tsx +44 -44
  683. package/src/channel-app/ChannelAppListPanel.tsx +15 -15
  684. package/src/channel-app/CreateChannelAppForm.tsx +37 -37
  685. package/src/channel-app/internal.tsx +21 -21
  686. package/src/composer/ComposerToolbar.tsx +15 -15
  687. package/src/composer/ConfigureMenu.tsx +22 -22
  688. package/src/composer/ContextChip.tsx +12 -12
  689. package/src/composer/ContextPopover.tsx +8 -8
  690. package/src/composer/InteractionModePicker.tsx +14 -14
  691. package/src/composer/SessionComposer.tsx +24 -24
  692. package/src/composer/__tests__/SessionComposer-lockAgent.test.tsx +16 -15
  693. package/src/composer/__tests__/SessionComposer-serviceTier.test.tsx +2 -7
  694. package/src/composer/icons.tsx +5 -5
  695. package/src/conversation/ConversationAttentionBanner.tsx +6 -6
  696. package/src/conversation/ConversationComposer.tsx +13 -13
  697. package/src/conversation/ConversationControlBanner.tsx +11 -11
  698. package/src/conversation/ConversationListPane.tsx +38 -38
  699. package/src/conversation/ConversationMediaAttachment.tsx +308 -0
  700. package/src/conversation/ConversationTimelineView.tsx +102 -52
  701. package/src/conversation/ConversationsWorkbench.tsx +12 -10
  702. package/src/conversation/__tests__/ConversationComposer.test.tsx +1 -1
  703. package/src/conversation/__tests__/ConversationTimelineView.test.tsx +233 -6
  704. package/src/conversation/__tests__/a11y/conversation-surfaces.a11y.test.tsx +67 -1
  705. package/src/conversation/__tests__/useConversationMediaUrl.test.tsx +66 -0
  706. package/src/conversation/conversationPresentation.ts +10 -3
  707. package/src/conversation/index.ts +6 -0
  708. package/src/conversation/useConversationMediaUrl.ts +121 -0
  709. package/src/cursor-accounts/CursorAccountEditor.tsx +13 -13
  710. package/src/cursor-accounts/CursorAccountsAccessNotice.tsx +3 -3
  711. package/src/cursor-accounts/CursorAccountsConsole.tsx +35 -35
  712. package/src/cursor-accounts/MemberCoverageTable.tsx +29 -29
  713. package/src/cursor-accounts/MemberKeysPanel.tsx +17 -17
  714. package/src/cursor-accounts/badges.tsx +4 -4
  715. package/src/dashboard/DashboardFailedRuns.tsx +17 -17
  716. package/src/dashboard/DashboardKPICards.tsx +12 -12
  717. package/src/dashboard/OperationalDashboard.tsx +2 -2
  718. package/src/datastore/CollectionRecordsBrowser.tsx +35 -35
  719. package/src/datastore/CollectionSchemaView.tsx +43 -43
  720. package/src/datastore/DatastoreDetailView.tsx +18 -18
  721. package/src/datastore/DatastoreSyncReport.tsx +13 -13
  722. package/src/datastore/DeleteDatastoreDialog.tsx +21 -21
  723. package/src/datastore/FieldValueControl.tsx +7 -7
  724. package/src/datastore/RecordFilterBuilder.tsx +35 -35
  725. package/src/datastore/RecordFormPanel.tsx +35 -35
  726. package/src/dependency-graph/DependencyGraph.tsx +6 -6
  727. package/src/dependency-graph/DependencyTreeNode.tsx +21 -21
  728. package/src/empty-state/EmptyState.tsx +7 -7
  729. package/src/empty-state/useEmptyState.ts +1 -1
  730. package/src/environment/CreateEnvironmentForm.tsx +24 -24
  731. package/src/environment/EnvVarForm.tsx +40 -40
  732. package/src/environment/EnvironmentListPanel.tsx +19 -19
  733. package/src/environment/EnvironmentPicker.tsx +22 -22
  734. package/src/environment/EnvironmentVariableEditor.tsx +53 -53
  735. package/src/error/ErrorMessage.tsx +22 -22
  736. package/src/error/SecretFlowErrorGuide.tsx +19 -19
  737. package/src/execution/ApprovalCard.tsx +19 -19
  738. package/src/execution/ArtifactApplyButton.tsx +7 -7
  739. package/src/execution/ArtifactContentBody.tsx +11 -11
  740. package/src/execution/ArtifactContentRenderer.tsx +29 -29
  741. package/src/execution/ArtifactDocument.tsx +22 -22
  742. package/src/execution/ArtifactFileContent.tsx +6 -6
  743. package/src/execution/ArtifactPreviewModal.tsx +33 -33
  744. package/src/execution/ArtifactRowView.tsx +13 -13
  745. package/src/execution/ArtifactsWidget.tsx +4 -4
  746. package/src/execution/ContextGauge.tsx +24 -24
  747. package/src/execution/EmptyChangeNotice.tsx +1 -1
  748. package/src/execution/ExecutionPhaseBadge.tsx +12 -12
  749. package/src/execution/ExecutionProgress.tsx +2 -2
  750. package/src/execution/FileChangeProgressBar.tsx +9 -9
  751. package/src/execution/FileChangesView.tsx +12 -12
  752. package/src/execution/FilePathLink.tsx +10 -10
  753. package/src/execution/FileReviewAtoms.tsx +9 -9
  754. package/src/execution/FileReviewCard.tsx +37 -37
  755. package/src/execution/FileReviewDock.tsx +2 -2
  756. package/src/execution/FollowUpInput.tsx +9 -9
  757. package/src/execution/InteractionModeBadge.tsx +2 -2
  758. package/src/execution/McpToolDetail.tsx +28 -28
  759. package/src/execution/MessageAttachments.tsx +364 -0
  760. package/src/execution/MessageEntry.tsx +60 -22
  761. package/src/execution/MessageThread.tsx +72 -32
  762. package/src/execution/PlanArtifactCard.tsx +22 -22
  763. package/src/execution/PlanCompletionCard.tsx +10 -10
  764. package/src/execution/PlanDocumentMessage.tsx +6 -6
  765. package/src/execution/PlanStreamingCard.tsx +11 -11
  766. package/src/execution/ResultView.tsx +44 -44
  767. package/src/execution/SessionVariablesInput.tsx +38 -38
  768. package/src/execution/SetupProgress.tsx +5 -5
  769. package/src/execution/SubAgentSection.tsx +42 -42
  770. package/src/execution/SummarizationBadge.tsx +15 -15
  771. package/src/execution/SummarizationCard.tsx +11 -11
  772. package/src/execution/TerminalSession.tsx +7 -7
  773. package/src/execution/ThreadSkeleton.tsx +10 -10
  774. package/src/execution/TodoCard.tsx +11 -11
  775. package/src/execution/TodoList.tsx +13 -13
  776. package/src/execution/ToolArgsView.tsx +8 -8
  777. package/src/execution/ToolCallDetail.tsx +7 -7
  778. package/src/execution/ToolCallGroup.tsx +1 -1
  779. package/src/execution/ToolCallItem.tsx +28 -28
  780. package/src/execution/ToolRunGroup.tsx +16 -16
  781. package/src/execution/UsageWidget.tsx +12 -12
  782. package/src/execution/WriteBackCard.tsx +30 -30
  783. package/src/execution/WriteBacksWidget.tsx +4 -4
  784. package/src/execution/__tests__/ApprovalCard.test.tsx +12 -12
  785. package/src/execution/__tests__/ArtifactContentRenderer.test.tsx +3 -3
  786. package/src/execution/__tests__/FileChangesView.test.tsx +2 -2
  787. package/src/execution/__tests__/FilePathLink.test.tsx +1 -1
  788. package/src/execution/__tests__/FileReviewDock.test.tsx +1 -1
  789. package/src/execution/__tests__/MessageEntry-attachments.test.tsx +228 -0
  790. package/src/execution/__tests__/MessageThread.test.tsx +1 -1
  791. package/src/execution/__tests__/TerminalSession.test.tsx +1 -1
  792. package/src/execution/__tests__/ToolCallDetail.test.tsx +1 -1
  793. package/src/execution/__tests__/ToolCallGroup.test.tsx +4 -4
  794. package/src/execution/__tests__/ToolCallItem.test.tsx +9 -9
  795. package/src/execution/__tests__/ToolRunGroup.test.tsx +6 -6
  796. package/src/execution/__tests__/WriteBackCard.test.tsx +4 -4
  797. package/src/execution/__tests__/buildThreadItems-attachments.test.ts +174 -0
  798. package/src/execution/__tests__/message-entry.test.tsx +8 -8
  799. package/src/execution/__tests__/thread-memoization.test.ts +2 -2
  800. package/src/execution/__tests__/thread-skeleton.test.tsx +1 -1
  801. package/src/execution/__tests__/virtualized-thread.test.tsx +1 -1
  802. package/src/execution/index.ts +6 -0
  803. package/src/execution/tool-rendering-primitives.tsx +12 -12
  804. package/src/feedback/StigmerToaster.tsx +8 -5
  805. package/src/file-reference/FileReferenceChipList.tsx +5 -5
  806. package/src/github/GitHubRepoPicker.tsx +60 -60
  807. package/src/github/__tests__/decodeGitHubContent.test.ts +42 -1
  808. package/src/github/decodeGitHubContent.ts +22 -5
  809. package/src/github/useGitHubFileReader.ts +13 -3
  810. package/src/iam-policy/GrantAccessForm.tsx +11 -11
  811. package/src/iam-policy/OrgMembersPanel.tsx +48 -48
  812. package/src/iam-policy/PeopleWithAccess.tsx +23 -23
  813. package/src/iam-policy/PrincipalPicker.tsx +34 -34
  814. package/src/iam-policy/ProviderBadge.tsx +2 -2
  815. package/src/iam-policy/RoleSelector.tsx +9 -9
  816. package/src/iam-policy/SharePanel.tsx +5 -5
  817. package/src/identity-provider/CreateIdentityProviderForm.tsx +47 -47
  818. package/src/identity-provider/IdentityProviderDetailPanel.tsx +73 -73
  819. package/src/identity-provider/IdentityProviderListPanel.tsx +33 -33
  820. package/src/identity-provider/IdentityProviderWizard.tsx +72 -72
  821. package/src/identity-provider/ProviderPicker.tsx +17 -17
  822. package/src/identity-provider/SsoLoginPrompt.tsx +39 -39
  823. package/src/index.ts +6 -0
  824. package/src/inline-edit/InlineEditImage.tsx +26 -26
  825. package/src/inline-edit/InlineEditKeyValue.tsx +44 -44
  826. package/src/inline-edit/InlineEditResourceList.tsx +48 -48
  827. package/src/inline-edit/InlineEditSelect.tsx +22 -22
  828. package/src/inline-edit/InlineEditText.tsx +29 -29
  829. package/src/inline-edit/InlineEditTextarea.tsx +27 -27
  830. package/src/internal/ApprovalPeekBar.tsx +9 -9
  831. package/src/internal/BoundedContent.tsx +3 -3
  832. package/src/internal/CloudFeatureNotice.tsx +3 -3
  833. package/src/internal/DecisionButton.tsx +10 -10
  834. package/src/internal/InCardDecisionError.tsx +1 -1
  835. package/src/internal/JumpToLatestButton.tsx +9 -9
  836. package/src/internal/MermaidDiagram.tsx +5 -5
  837. package/src/internal/Pagination.tsx +5 -5
  838. package/src/internal/ResizableSplit.tsx +61 -20
  839. package/src/internal/RevealToggle.tsx +5 -5
  840. package/src/internal/ScrollFade.tsx +2 -2
  841. package/src/internal/VirtualizedThread.tsx +6 -6
  842. package/src/internal/__tests__/BoundedContent.test.tsx +1 -1
  843. package/src/internal/__tests__/DecisionButton.test.tsx +14 -14
  844. package/src/internal/__tests__/ResizableSplit.layout.test.tsx +136 -0
  845. package/src/internal/__tests__/ResizableSplit.test.tsx +49 -2
  846. package/src/internal/__tests__/ThreadCardShell.test.tsx +4 -4
  847. package/src/internal/__tests__/markdown-components.test.tsx +2 -2
  848. package/src/internal/__tests__/thread-animation.test.tsx +6 -6
  849. package/src/internal/file-icons/index.tsx +2 -2
  850. package/src/internal/file-tree/FileTreeNode.tsx +9 -9
  851. package/src/internal/file-tree/__tests__/FileTreeNode-explorer.test.tsx +1 -1
  852. package/src/internal/form-primitives.tsx +22 -6
  853. package/src/internal/markdown-components.tsx +24 -24
  854. package/src/internal/menu.tsx +18 -18
  855. package/src/internal/scroll-area.tsx +6 -6
  856. package/src/internal/thread-card/ThreadCardShell.tsx +10 -10
  857. package/src/internal/thread-card/glyphs.tsx +3 -3
  858. package/src/internal/tooltip.tsx +9 -11
  859. package/src/invitation/InvitationCreatedAlert.tsx +15 -15
  860. package/src/invitation/InvitationManager.tsx +79 -79
  861. package/src/invitation/InvitationRedemption.tsx +49 -49
  862. package/src/library/ResourceCountCard.tsx +7 -7
  863. package/src/library/ScopeToggle.tsx +7 -7
  864. package/src/library/VisibilityOptionRow.tsx +30 -30
  865. package/src/library/VisibilitySelector.tsx +19 -19
  866. package/src/library/__tests__/VisibilitySelector.test.tsx +0 -6
  867. package/src/manifest/ApplyManifestDialog.tsx +36 -36
  868. package/src/manifest/EditResourceYamlDialog.tsx +32 -32
  869. package/src/manifest/RedactedSecretsNotice.tsx +2 -2
  870. package/src/manifest/YamlEditor.tsx +1 -1
  871. package/src/mcp-server/McpServerConfigPanel.tsx +70 -70
  872. package/src/mcp-server/McpServerConnectDialog.tsx +80 -53
  873. package/src/mcp-server/McpServerDetailView.tsx +325 -224
  874. package/src/mcp-server/McpServerPicker.tsx +50 -50
  875. package/src/mcp-server/McpToolSelector.tsx +26 -26
  876. package/src/mcp-server/OAuthAppForm.tsx +32 -32
  877. package/src/mcp-server/OAuthCallbackHandler.tsx +11 -11
  878. package/src/mcp-server/OAuthRequiredNotice.tsx +3 -3
  879. package/src/mcp-server/StdioSandboxNotice.tsx +3 -3
  880. package/src/mcp-server/__tests__/McpServerDetailView.test.tsx +162 -7
  881. package/src/mcp-server/__tests__/useMcpServerOAuthConnect.test.tsx +159 -0
  882. package/src/mcp-server/index.ts +4 -1
  883. package/src/mcp-server/steps/EnvironmentAuthStep.tsx +71 -71
  884. package/src/mcp-server/steps/IdentityTransportStep.tsx +94 -94
  885. package/src/mcp-server/steps/ReviewStep.tsx +17 -17
  886. package/src/mcp-server/useMcpServerOAuthConnect.ts +65 -10
  887. package/src/models/HarnessSelector.tsx +8 -8
  888. package/src/models/ModelSelector.tsx +58 -58
  889. package/src/models/__tests__/ModelSelector-serviceTier.test.tsx +2 -7
  890. package/src/oauth-app/CreateOAuthAppForm.tsx +28 -28
  891. package/src/oauth-app/OAuthAppDetailPanel.tsx +51 -51
  892. package/src/oauth-app/OAuthAppListPanel.tsx +14 -14
  893. package/src/organization/CreateOrganizationForm.tsx +37 -37
  894. package/src/organization/OrgProfilePanel.tsx +65 -65
  895. package/src/organization/OrgSwitcher.tsx +33 -33
  896. package/src/platform-client/CreatePlatformClientForm.tsx +59 -59
  897. package/src/platform-client/PlatformClientDetailPanel.tsx +107 -107
  898. package/src/platform-client/PlatformClientListPanel.tsx +38 -38
  899. package/src/platform-client/PlatformClientSecretAlert.tsx +18 -18
  900. package/src/portal-container.ts +36 -9
  901. package/src/pricing-governance/BaselineEditor.tsx +29 -29
  902. package/src/pricing-governance/ModelCatalogPanel.tsx +28 -28
  903. package/src/pricing-governance/ModelGovernanceDetail.tsx +35 -35
  904. package/src/pricing-governance/OperatorAccessNotice.tsx +3 -3
  905. package/src/pricing-governance/PricingGovernanceConsole.tsx +31 -31
  906. package/src/pricing-governance/PricingGovernancePanel.tsx +19 -19
  907. package/src/pricing-governance/RetireConfirm.tsx +7 -7
  908. package/src/pricing-governance/governance-primitives.tsx +12 -12
  909. package/src/resource-creation/CreationPicker.tsx +23 -23
  910. package/src/resource-creation/StepIndicator.tsx +17 -17
  911. package/src/resource-creation/TemplateCard.tsx +23 -23
  912. package/src/resource-creation/TemplateGallery.tsx +13 -13
  913. package/src/resource-creation/WizardNav.tsx +19 -19
  914. package/src/resource-creation/WizardShell.tsx +7 -7
  915. package/src/resource-detail/ConfirmDialog.tsx +16 -16
  916. package/src/resource-detail/ResourceActionBar.tsx +6 -6
  917. package/src/resource-detail/ResourceDetailShell.tsx +14 -14
  918. package/src/resource-detail/Section.tsx +10 -10
  919. package/src/resource-workbench/components/BulkActionBar.tsx +13 -13
  920. package/src/resource-workbench/components/ColumnHeader.tsx +9 -9
  921. package/src/resource-workbench/components/FilterBar.tsx +9 -9
  922. package/src/resource-workbench/components/ResourceAvatar.tsx +19 -19
  923. package/src/resource-workbench/components/ResourceCards.tsx +8 -8
  924. package/src/resource-workbench/components/ResourceInspector.tsx +8 -8
  925. package/src/resource-workbench/components/ResourceList.tsx +7 -7
  926. package/src/resource-workbench/components/ResourceTable.tsx +12 -12
  927. package/src/resource-workbench/components/ResourceWorkbench.tsx +42 -42
  928. package/src/resource-workbench/components/SelectionCheckbox.tsx +2 -2
  929. package/src/resource-workbench/components/StatusBadge.tsx +17 -17
  930. package/src/resource-workbench/components/ViewSwitcher.tsx +7 -7
  931. package/src/schedule/CadenceField.tsx +36 -36
  932. package/src/schedule/ScheduleDetailView.tsx +105 -105
  933. package/src/schedule/ScheduleForm.tsx +49 -49
  934. package/src/schedule/ScheduleRowActions.tsx +4 -4
  935. package/src/schedule/ScheduleRunsTable.tsx +43 -43
  936. package/src/schedule/TimeZoneField.tsx +12 -12
  937. package/src/schedule/__tests__/scheduleCreation.test.tsx +0 -7
  938. package/src/schedule/scheduleColumns.tsx +7 -7
  939. package/src/session/NewSessionViewer.tsx +5 -5
  940. package/src/session/PlanEditor.tsx +37 -37
  941. package/src/session/PlanStreamingDocument.tsx +8 -8
  942. package/src/session/SessionViewer.tsx +49 -48
  943. package/src/session/SessionViewerLayout.tsx +14 -11
  944. package/src/session/__tests__/NewSessionViewer.test.tsx +4 -4
  945. package/src/session/__tests__/PlanEditor.test.tsx +2 -2
  946. package/src/session/__tests__/SessionViewerLayout.test.tsx +20 -8
  947. package/src/session/__tests__/useSessionConversation.test.tsx +62 -0
  948. package/src/session/facets/ArtifactsTab.tsx +3 -3
  949. package/src/session/facets/ChangesTab.tsx +5 -5
  950. package/src/session/facets/SetupTab.tsx +26 -26
  951. package/src/session/facets/UsageTab.tsx +2 -2
  952. package/src/session/useSessionConversation.ts +21 -2
  953. package/src/settings/ApiKeysSection.tsx +6 -6
  954. package/src/settings/ChannelAppsSection.tsx +6 -6
  955. package/src/settings/EnvironmentsSection.tsx +15 -15
  956. package/src/settings/IdentityProvidersSection.tsx +7 -7
  957. package/src/settings/InvitationsSection.tsx +4 -4
  958. package/src/settings/MembersSection.tsx +5 -5
  959. package/src/settings/OAuthAppsSection.tsx +6 -6
  960. package/src/settings/OrgProfileSection.tsx +3 -3
  961. package/src/settings/PlatformClientsSection.tsx +7 -7
  962. package/src/settings/UsageSection.tsx +3 -3
  963. package/src/sharing/AgentShareList.tsx +39 -39
  964. package/src/sharing/ShareAgentDialog.tsx +149 -149
  965. package/src/sharing/SharedAgentChat.tsx +24 -24
  966. package/src/sharing/__tests__/AgentShareList.test.tsx +0 -7
  967. package/src/sidebar/SettingsSidebar.tsx +7 -7
  968. package/src/sidebar/WorkspaceSidebar.tsx +25 -25
  969. package/src/sidebar/__tests__/SettingsSidebar.test.tsx +3 -7
  970. package/src/sidebar/__tests__/WorkspaceSidebar.test.tsx +4 -11
  971. package/src/sidebar/chrome.tsx +16 -16
  972. package/src/skill/SkillDetailView.tsx +54 -54
  973. package/src/skill/SkillDiffDialog.tsx +25 -25
  974. package/src/skill/SkillFileBrowser.tsx +22 -22
  975. package/src/skill/SkillPicker.tsx +28 -28
  976. package/src/skill/SkillUploader.tsx +67 -67
  977. package/src/styles.css +136 -15
  978. package/src/switch/Switch.tsx +9 -9
  979. package/src/switch/__tests__/Switch.test.tsx +3 -3
  980. package/src/tabs/Tabs.tsx +11 -11
  981. package/src/usage/AgentBreakdownList.tsx +18 -18
  982. package/src/usage/CreditRunwayIndicator.tsx +4 -4
  983. package/src/usage/ExportButton.tsx +8 -8
  984. package/src/usage/HarnessSplitCard.tsx +14 -14
  985. package/src/usage/OrgUsagePanel.tsx +71 -71
  986. package/src/user/UserMenu.tsx +13 -13
  987. package/src/version-history/DiffFileList.tsx +13 -13
  988. package/src/version-history/DiffSummary.tsx +3 -3
  989. package/src/version-history/DiffViewer.tsx +14 -14
  990. package/src/version-history/MultiFileDiffView.tsx +6 -6
  991. package/src/version-history/UnifiedDiffView.tsx +4 -4
  992. package/src/version-history/VersionTimeline.tsx +21 -21
  993. package/src/version-history/VersionTimelineEntry.tsx +28 -28
  994. package/src/version-history/__tests__/UnifiedDiffView.test.tsx +2 -2
  995. package/src/workflow/ApprovalFormBuilder.tsx +48 -48
  996. package/src/workflow/BranchConditionBuilder.tsx +21 -21
  997. package/src/workflow/CanvasContextMenu.tsx +10 -10
  998. package/src/workflow/CanvasTransitionEdge.tsx +16 -16
  999. package/src/workflow/CostByWorkflowChart.tsx +18 -18
  1000. package/src/workflow/ExecutionActiveTaskIndicator.tsx +13 -13
  1001. package/src/workflow/ExecutionSummaryWidget.tsx +29 -29
  1002. package/src/workflow/ExecutionTrendChart.tsx +25 -25
  1003. package/src/workflow/FailedRunsWidget.tsx +14 -14
  1004. package/src/workflow/PendingApprovalsWidget.tsx +19 -19
  1005. package/src/workflow/TaskConfigForm.tsx +32 -32
  1006. package/src/workflow/TaskPickerPopover.tsx +22 -22
  1007. package/src/workflow/ViewYamlDialog.tsx +12 -12
  1008. package/src/workflow/WorkflowAgentCallTranscript.tsx +15 -15
  1009. package/src/workflow/WorkflowApprovalList.tsx +3 -3
  1010. package/src/workflow/WorkflowArchitectDialog.tsx +80 -80
  1011. package/src/workflow/WorkflowArtifactDocument.tsx +17 -17
  1012. package/src/workflow/WorkflowCanvasEditor.tsx +22 -22
  1013. package/src/workflow/WorkflowCanvasInner.tsx +3 -3
  1014. package/src/workflow/WorkflowCodePreviewGraph.tsx +2 -2
  1015. package/src/workflow/WorkflowDashboard.tsx +2 -2
  1016. package/src/workflow/WorkflowDetailView.tsx +50 -50
  1017. package/src/workflow/WorkflowDiffGraph.tsx +5 -5
  1018. package/src/workflow/WorkflowEditorView.tsx +58 -58
  1019. package/src/workflow/WorkflowExecutionGraph.tsx +15 -15
  1020. package/src/workflow/WorkflowExecutionHeader.tsx +14 -14
  1021. package/src/workflow/WorkflowExecutionPhaseBadge.tsx +11 -11
  1022. package/src/workflow/WorkflowExecutionViewer.tsx +39 -39
  1023. package/src/workflow/WorkflowExplainDialog.tsx +30 -30
  1024. package/src/workflow/WorkflowFileReviewList.tsx +3 -3
  1025. package/src/workflow/WorkflowGraphFullscreenDialog.tsx +11 -11
  1026. package/src/workflow/WorkflowNode.tsx +2 -2
  1027. package/src/workflow/WorkflowNodePopover.tsx +15 -15
  1028. package/src/workflow/WorkflowOverviewGraph.tsx +9 -9
  1029. package/src/workflow/WorkflowOverviewSummary.tsx +12 -12
  1030. package/src/workflow/WorkflowRefinePanel.tsx +49 -49
  1031. package/src/workflow/WorkflowRepairCard.tsx +53 -53
  1032. package/src/workflow/WorkflowRunDialog.tsx +20 -20
  1033. package/src/workflow/WorkflowRunForm.tsx +19 -19
  1034. package/src/workflow/WorkflowTaskApprovalCard.tsx +19 -19
  1035. package/src/workflow/WorkflowTaskApprovalSummary.tsx +23 -23
  1036. package/src/workflow/WorkflowTaskList.tsx +11 -11
  1037. package/src/workflow/WorkflowTaskPalette.tsx +23 -23
  1038. package/src/workflow/WorkflowTaskReviewGate.tsx +10 -10
  1039. package/src/workflow/WorkflowVersionBadge.tsx +7 -7
  1040. package/src/workflow/WorkflowVersionDiffViewer.tsx +24 -24
  1041. package/src/workflow/WorkflowVersionTimeline.tsx +32 -32
  1042. package/src/workflow/WorkflowVersionsTab.tsx +7 -7
  1043. package/src/workflow/__tests__/WorkflowAgentCallTranscript.test.tsx +2 -2
  1044. package/src/workflow/__tests__/WorkflowExecutionViewer.reconciliation.test.tsx +6 -6
  1045. package/src/workflow/__tests__/WorkflowTaskApprovalCard.test.tsx +15 -15
  1046. package/src/workflow/__tests__/WorkflowTaskApprovalSummary.test.tsx +1 -1
  1047. package/src/workflow/__tests__/node-shell.test.ts +2 -0
  1048. package/src/workflow/__tests__/task-type-visual-registry.test.ts +2 -0
  1049. package/src/workflow/diff/DiffSummaryBar.tsx +5 -5
  1050. package/src/workflow/execution-comparison/ComparisonSummaryCards.tsx +11 -11
  1051. package/src/workflow/execution-comparison/ExecutionComparisonPicker.tsx +20 -20
  1052. package/src/workflow/execution-comparison/ExecutionComparisonView.tsx +16 -16
  1053. package/src/workflow/execution-comparison/TaskComparisonTable.tsx +44 -44
  1054. package/src/workflow/execution-history/ExecutionFilterBar.tsx +12 -12
  1055. package/src/workflow/execution-history/ExecutionHistoryTable.tsx +25 -25
  1056. package/src/workflow/execution-history/FailureAnalysisPanel.tsx +18 -18
  1057. package/src/workflow/execution-history/HealthMetricsStrip.tsx +16 -16
  1058. package/src/workflow/execution-history/WorkflowExecutionHistory.tsx +1 -1
  1059. package/src/workflow/facets/WorkflowArtifactsTab.tsx +3 -3
  1060. package/src/workflow/facets/WorkflowChangesTab.tsx +8 -8
  1061. package/src/workflow/facets/WorkflowUsageTab.tsx +24 -24
  1062. package/src/workflow/inspector/EdgeInspector.tsx +14 -14
  1063. package/src/workflow/inspector/InspectorHeader.tsx +18 -18
  1064. package/src/workflow/inspector/InspectorShell.tsx +6 -6
  1065. package/src/workflow/inspector/NestedTaskList.tsx +11 -11
  1066. package/src/workflow/inspector/SentinelInspector.tsx +3 -3
  1067. package/src/workflow/inspector/WorkflowSummaryPanel.tsx +33 -33
  1068. package/src/workflow/inspector/forms/AgentCallForm.tsx +48 -48
  1069. package/src/workflow/inspector/forms/HttpCallForm.tsx +22 -22
  1070. package/src/workflow/inspector/tabs/AdvancedTab.tsx +12 -12
  1071. package/src/workflow/inspector/tabs/BranchesTab.tsx +36 -36
  1072. package/src/workflow/inspector/tabs/CatchTab.tsx +23 -23
  1073. package/src/workflow/inspector/tabs/ConfigureTab.tsx +3 -3
  1074. package/src/workflow/inspector/tabs/DataTab.tsx +6 -6
  1075. package/src/workflow/inspector/tabs/DocsTab.tsx +11 -11
  1076. package/src/workflow/inspector/tabs/IterationTab.tsx +25 -25
  1077. package/src/workflow/inspector/tabs/RuntimeTab.tsx +16 -16
  1078. package/src/workflow/instance/CreateWorkflowInstanceDialog.tsx +35 -35
  1079. package/src/workflow/instance/RunVisibilityControl.tsx +10 -10
  1080. package/src/workflow/instance/WorkflowInstanceDetailPanel.tsx +45 -45
  1081. package/src/workflow/instance/WorkflowInstanceList.tsx +32 -32
  1082. package/src/workflow/instance/__tests__/WorkflowInstanceList.test.tsx +0 -6
  1083. package/src/workflow/node-shell/BranchBadge.tsx +9 -9
  1084. package/src/workflow/node-shell/DiffBadge.tsx +4 -4
  1085. package/src/workflow/node-shell/ExecutionBadge.tsx +17 -17
  1086. package/src/workflow/node-shell/NodeActions.tsx +15 -15
  1087. package/src/workflow/node-shell/NodeContent.tsx +9 -9
  1088. package/src/workflow/node-shell/NodeHandles.tsx +5 -5
  1089. package/src/workflow/node-shell/NodeShell.tsx +27 -27
  1090. package/src/workflow/picker/BranchAddPopover.tsx +16 -16
  1091. package/src/workflow/task-detail/StructuredDataViewer.tsx +34 -34
  1092. package/src/workflow/templates/WorkflowTemplateCard.tsx +32 -32
  1093. package/src/workflow/templates/WorkflowTemplateGallery.tsx +13 -13
  1094. package/src/workflow/templates/WorkflowTemplatePreview.tsx +29 -29
  1095. package/src/workflow/thread/WorkflowTaskThread.tsx +36 -36
  1096. package/src/workspace/EditorTabs.tsx +8 -8
  1097. package/src/workspace/ExplorerTree.tsx +17 -17
  1098. package/src/workspace/FileViewer.tsx +139 -30
  1099. package/src/workspace/PanelChip.tsx +4 -4
  1100. package/src/workspace/WorkspaceContentSearch.tsx +26 -26
  1101. package/src/workspace/WorkspaceEditor.tsx +44 -44
  1102. package/src/workspace/WorkspaceFileReader.ts +55 -1
  1103. package/src/workspace/WorkspaceFileSearch.tsx +22 -22
  1104. package/src/workspace/WorkspaceSummary.tsx +6 -6
  1105. package/src/workspace/WorkspaceSurface.tsx +42 -42
  1106. package/src/workspace/__tests__/FileViewer.test.tsx +99 -1
  1107. package/src/workspace/__tests__/WorkspaceContentSearch.test.tsx +5 -5
  1108. package/src/workspace/__tests__/WorkspaceFileSearch.test.tsx +3 -3
  1109. package/src/workspace/__tests__/WorkspaceSurface.test.tsx +6 -6
  1110. package/src/workspace/index.ts +2 -0
  1111. package/styles.css +1 -1
  1112. package/switch/Switch.js +2 -2
  1113. package/switch/Switch.js.map +1 -1
  1114. package/tabs/Tabs.js +7 -7
  1115. package/tabs/Tabs.js.map +1 -1
  1116. package/usage/AgentBreakdownList.js +4 -4
  1117. package/usage/AgentBreakdownList.js.map +1 -1
  1118. package/usage/CreditRunwayIndicator.js +1 -1
  1119. package/usage/CreditRunwayIndicator.js.map +1 -1
  1120. package/usage/ExportButton.js +2 -2
  1121. package/usage/ExportButton.js.map +1 -1
  1122. package/usage/HarnessSplitCard.js +6 -6
  1123. package/usage/HarnessSplitCard.js.map +1 -1
  1124. package/usage/OrgUsagePanel.js +15 -15
  1125. package/usage/OrgUsagePanel.js.map +1 -1
  1126. package/user/UserMenu.js +3 -3
  1127. package/user/UserMenu.js.map +1 -1
  1128. package/version-history/DiffFileList.js +8 -8
  1129. package/version-history/DiffFileList.js.map +1 -1
  1130. package/version-history/DiffSummary.js +1 -1
  1131. package/version-history/DiffSummary.js.map +1 -1
  1132. package/version-history/DiffViewer.js +11 -11
  1133. package/version-history/DiffViewer.js.map +1 -1
  1134. package/version-history/MultiFileDiffView.js +2 -2
  1135. package/version-history/MultiFileDiffView.js.map +1 -1
  1136. package/version-history/UnifiedDiffView.js +1 -1
  1137. package/version-history/UnifiedDiffView.js.map +1 -1
  1138. package/version-history/VersionTimeline.js +4 -4
  1139. package/version-history/VersionTimeline.js.map +1 -1
  1140. package/version-history/VersionTimelineEntry.js +9 -9
  1141. package/version-history/VersionTimelineEntry.js.map +1 -1
  1142. package/workflow/ApprovalFormBuilder.js +15 -15
  1143. package/workflow/ApprovalFormBuilder.js.map +1 -1
  1144. package/workflow/BranchConditionBuilder.js +8 -8
  1145. package/workflow/BranchConditionBuilder.js.map +1 -1
  1146. package/workflow/CanvasContextMenu.js +6 -6
  1147. package/workflow/CanvasContextMenu.js.map +1 -1
  1148. package/workflow/CanvasTransitionEdge.js +11 -11
  1149. package/workflow/CanvasTransitionEdge.js.map +1 -1
  1150. package/workflow/CostByWorkflowChart.js +4 -4
  1151. package/workflow/CostByWorkflowChart.js.map +1 -1
  1152. package/workflow/ExecutionActiveTaskIndicator.js +8 -8
  1153. package/workflow/ExecutionActiveTaskIndicator.js.map +1 -1
  1154. package/workflow/ExecutionSummaryWidget.js +15 -15
  1155. package/workflow/ExecutionSummaryWidget.js.map +1 -1
  1156. package/workflow/ExecutionTrendChart.js +10 -10
  1157. package/workflow/ExecutionTrendChart.js.map +1 -1
  1158. package/workflow/FailedRunsWidget.js +3 -3
  1159. package/workflow/FailedRunsWidget.js.map +1 -1
  1160. package/workflow/PendingApprovalsWidget.js +3 -3
  1161. package/workflow/PendingApprovalsWidget.js.map +1 -1
  1162. package/workflow/TaskConfigForm.js +12 -12
  1163. package/workflow/TaskConfigForm.js.map +1 -1
  1164. package/workflow/TaskPickerPopover.js +5 -5
  1165. package/workflow/TaskPickerPopover.js.map +1 -1
  1166. package/workflow/ViewYamlDialog.js +2 -2
  1167. package/workflow/ViewYamlDialog.js.map +1 -1
  1168. package/workflow/WorkflowAgentCallTranscript.js +2 -2
  1169. package/workflow/WorkflowAgentCallTranscript.js.map +1 -1
  1170. package/workflow/WorkflowApprovalList.js +2 -2
  1171. package/workflow/WorkflowApprovalList.js.map +1 -1
  1172. package/workflow/WorkflowArchitectDialog.js +9 -9
  1173. package/workflow/WorkflowArchitectDialog.js.map +1 -1
  1174. package/workflow/WorkflowArtifactDocument.js +7 -7
  1175. package/workflow/WorkflowArtifactDocument.js.map +1 -1
  1176. package/workflow/WorkflowCanvasEditor.js +6 -6
  1177. package/workflow/WorkflowCanvasEditor.js.map +1 -1
  1178. package/workflow/WorkflowCanvasInner.js +1 -1
  1179. package/workflow/WorkflowCanvasInner.js.map +1 -1
  1180. package/workflow/WorkflowCodePreviewGraph.js +2 -2
  1181. package/workflow/WorkflowCodePreviewGraph.js.map +1 -1
  1182. package/workflow/WorkflowDashboard.js +1 -1
  1183. package/workflow/WorkflowDashboard.js.map +1 -1
  1184. package/workflow/WorkflowDetailView.js +15 -15
  1185. package/workflow/WorkflowDetailView.js.map +1 -1
  1186. package/workflow/WorkflowDiffGraph.js +3 -3
  1187. package/workflow/WorkflowDiffGraph.js.map +1 -1
  1188. package/workflow/WorkflowEditorView.js +13 -13
  1189. package/workflow/WorkflowEditorView.js.map +1 -1
  1190. package/workflow/WorkflowExecutionGraph.js +6 -6
  1191. package/workflow/WorkflowExecutionGraph.js.map +1 -1
  1192. package/workflow/WorkflowExecutionHeader.js +4 -4
  1193. package/workflow/WorkflowExecutionHeader.js.map +1 -1
  1194. package/workflow/WorkflowExecutionPhaseBadge.js +9 -9
  1195. package/workflow/WorkflowExecutionPhaseBadge.js.map +1 -1
  1196. package/workflow/WorkflowExecutionViewer.js +16 -16
  1197. package/workflow/WorkflowExecutionViewer.js.map +1 -1
  1198. package/workflow/WorkflowExplainDialog.js +2 -2
  1199. package/workflow/WorkflowExplainDialog.js.map +1 -1
  1200. package/workflow/WorkflowFileReviewList.js +2 -2
  1201. package/workflow/WorkflowFileReviewList.js.map +1 -1
  1202. package/workflow/WorkflowGraphFullscreenDialog.js +1 -1
  1203. package/workflow/WorkflowGraphFullscreenDialog.js.map +1 -1
  1204. package/workflow/WorkflowNode.js +1 -1
  1205. package/workflow/WorkflowNode.js.map +1 -1
  1206. package/workflow/WorkflowNodePopover.js +2 -2
  1207. package/workflow/WorkflowNodePopover.js.map +1 -1
  1208. package/workflow/WorkflowOverviewGraph.js +4 -4
  1209. package/workflow/WorkflowOverviewGraph.js.map +1 -1
  1210. package/workflow/WorkflowOverviewSummary.js +8 -8
  1211. package/workflow/WorkflowOverviewSummary.js.map +1 -1
  1212. package/workflow/WorkflowRefinePanel.js +5 -5
  1213. package/workflow/WorkflowRefinePanel.js.map +1 -1
  1214. package/workflow/WorkflowRepairCard.js +5 -5
  1215. package/workflow/WorkflowRepairCard.js.map +1 -1
  1216. package/workflow/WorkflowRunDialog.js +2 -2
  1217. package/workflow/WorkflowRunDialog.js.map +1 -1
  1218. package/workflow/WorkflowRunForm.js +10 -10
  1219. package/workflow/WorkflowRunForm.js.map +1 -1
  1220. package/workflow/WorkflowTaskApprovalCard.js +1 -1
  1221. package/workflow/WorkflowTaskApprovalCard.js.map +1 -1
  1222. package/workflow/WorkflowTaskApprovalSummary.js +8 -8
  1223. package/workflow/WorkflowTaskApprovalSummary.js.map +1 -1
  1224. package/workflow/WorkflowTaskList.js +4 -4
  1225. package/workflow/WorkflowTaskList.js.map +1 -1
  1226. package/workflow/WorkflowTaskPalette.js +5 -5
  1227. package/workflow/WorkflowTaskPalette.js.map +1 -1
  1228. package/workflow/WorkflowTaskReviewGate.js +3 -3
  1229. package/workflow/WorkflowTaskReviewGate.js.map +1 -1
  1230. package/workflow/WorkflowVersionBadge.js +1 -1
  1231. package/workflow/WorkflowVersionBadge.js.map +1 -1
  1232. package/workflow/WorkflowVersionDiffViewer.js +12 -12
  1233. package/workflow/WorkflowVersionDiffViewer.js.map +1 -1
  1234. package/workflow/WorkflowVersionTimeline.js +7 -7
  1235. package/workflow/WorkflowVersionTimeline.js.map +1 -1
  1236. package/workflow/WorkflowVersionsTab.js +1 -1
  1237. package/workflow/WorkflowVersionsTab.js.map +1 -1
  1238. package/workflow/diff/DiffSummaryBar.js +2 -2
  1239. package/workflow/diff/DiffSummaryBar.js.map +1 -1
  1240. package/workflow/execution-comparison/ComparisonSummaryCards.js +1 -1
  1241. package/workflow/execution-comparison/ComparisonSummaryCards.js.map +1 -1
  1242. package/workflow/execution-comparison/ExecutionComparisonPicker.js +7 -7
  1243. package/workflow/execution-comparison/ExecutionComparisonPicker.js.map +1 -1
  1244. package/workflow/execution-comparison/ExecutionComparisonView.js +4 -4
  1245. package/workflow/execution-comparison/ExecutionComparisonView.js.map +1 -1
  1246. package/workflow/execution-comparison/TaskComparisonTable.js +22 -22
  1247. package/workflow/execution-comparison/TaskComparisonTable.js.map +1 -1
  1248. package/workflow/execution-history/ExecutionFilterBar.js +5 -5
  1249. package/workflow/execution-history/ExecutionFilterBar.js.map +1 -1
  1250. package/workflow/execution-history/ExecutionHistoryTable.js +11 -11
  1251. package/workflow/execution-history/ExecutionHistoryTable.js.map +1 -1
  1252. package/workflow/execution-history/FailureAnalysisPanel.js +4 -4
  1253. package/workflow/execution-history/FailureAnalysisPanel.js.map +1 -1
  1254. package/workflow/execution-history/HealthMetricsStrip.js +8 -8
  1255. package/workflow/execution-history/HealthMetricsStrip.js.map +1 -1
  1256. package/workflow/execution-history/WorkflowExecutionHistory.js +1 -1
  1257. package/workflow/execution-history/WorkflowExecutionHistory.js.map +1 -1
  1258. package/workflow/facets/WorkflowArtifactsTab.js +2 -2
  1259. package/workflow/facets/WorkflowArtifactsTab.js.map +1 -1
  1260. package/workflow/facets/WorkflowChangesTab.js +5 -5
  1261. package/workflow/facets/WorkflowChangesTab.js.map +1 -1
  1262. package/workflow/facets/WorkflowUsageTab.js +6 -6
  1263. package/workflow/facets/WorkflowUsageTab.js.map +1 -1
  1264. package/workflow/inspector/EdgeInspector.js +1 -1
  1265. package/workflow/inspector/EdgeInspector.js.map +1 -1
  1266. package/workflow/inspector/InspectorHeader.js +7 -7
  1267. package/workflow/inspector/InspectorHeader.js.map +1 -1
  1268. package/workflow/inspector/InspectorShell.js +2 -2
  1269. package/workflow/inspector/InspectorShell.js.map +1 -1
  1270. package/workflow/inspector/NestedTaskList.js +2 -2
  1271. package/workflow/inspector/NestedTaskList.js.map +1 -1
  1272. package/workflow/inspector/SentinelInspector.js +1 -1
  1273. package/workflow/inspector/SentinelInspector.js.map +1 -1
  1274. package/workflow/inspector/WorkflowSummaryPanel.js +5 -5
  1275. package/workflow/inspector/WorkflowSummaryPanel.js.map +1 -1
  1276. package/workflow/inspector/forms/AgentCallForm.js +9 -9
  1277. package/workflow/inspector/forms/AgentCallForm.js.map +1 -1
  1278. package/workflow/inspector/forms/HttpCallForm.js +4 -4
  1279. package/workflow/inspector/forms/HttpCallForm.js.map +1 -1
  1280. package/workflow/inspector/tabs/AdvancedTab.js +2 -2
  1281. package/workflow/inspector/tabs/AdvancedTab.js.map +1 -1
  1282. package/workflow/inspector/tabs/BranchesTab.js +6 -6
  1283. package/workflow/inspector/tabs/BranchesTab.js.map +1 -1
  1284. package/workflow/inspector/tabs/CatchTab.js +2 -2
  1285. package/workflow/inspector/tabs/CatchTab.js.map +1 -1
  1286. package/workflow/inspector/tabs/ConfigureTab.js +3 -3
  1287. package/workflow/inspector/tabs/ConfigureTab.js.map +1 -1
  1288. package/workflow/inspector/tabs/DataTab.js +1 -1
  1289. package/workflow/inspector/tabs/DataTab.js.map +1 -1
  1290. package/workflow/inspector/tabs/DocsTab.js +1 -1
  1291. package/workflow/inspector/tabs/DocsTab.js.map +1 -1
  1292. package/workflow/inspector/tabs/IterationTab.js +3 -3
  1293. package/workflow/inspector/tabs/IterationTab.js.map +1 -1
  1294. package/workflow/inspector/tabs/RuntimeTab.js +9 -9
  1295. package/workflow/inspector/tabs/RuntimeTab.js.map +1 -1
  1296. package/workflow/instance/CreateWorkflowInstanceDialog.js +1 -1
  1297. package/workflow/instance/CreateWorkflowInstanceDialog.js.map +1 -1
  1298. package/workflow/instance/RunVisibilityControl.js +5 -5
  1299. package/workflow/instance/RunVisibilityControl.js.map +1 -1
  1300. package/workflow/instance/WorkflowInstanceDetailPanel.js +2 -2
  1301. package/workflow/instance/WorkflowInstanceDetailPanel.js.map +1 -1
  1302. package/workflow/instance/WorkflowInstanceList.js +4 -4
  1303. package/workflow/instance/WorkflowInstanceList.js.map +1 -1
  1304. package/workflow/node-shell/BranchBadge.js +3 -3
  1305. package/workflow/node-shell/BranchBadge.js.map +1 -1
  1306. package/workflow/node-shell/DiffBadge.js +4 -4
  1307. package/workflow/node-shell/DiffBadge.js.map +1 -1
  1308. package/workflow/node-shell/ExecutionBadge.js +10 -10
  1309. package/workflow/node-shell/ExecutionBadge.js.map +1 -1
  1310. package/workflow/node-shell/NodeActions.js +3 -3
  1311. package/workflow/node-shell/NodeActions.js.map +1 -1
  1312. package/workflow/node-shell/NodeContent.js +5 -5
  1313. package/workflow/node-shell/NodeContent.js.map +1 -1
  1314. package/workflow/node-shell/NodeHandles.js +5 -5
  1315. package/workflow/node-shell/NodeHandles.js.map +1 -1
  1316. package/workflow/node-shell/NodeShell.js +14 -14
  1317. package/workflow/node-shell/NodeShell.js.map +1 -1
  1318. package/workflow/picker/BranchAddPopover.js +2 -2
  1319. package/workflow/picker/BranchAddPopover.js.map +1 -1
  1320. package/workflow/task-detail/StructuredDataViewer.js +12 -12
  1321. package/workflow/task-detail/StructuredDataViewer.js.map +1 -1
  1322. package/workflow/templates/WorkflowTemplateCard.js +17 -17
  1323. package/workflow/templates/WorkflowTemplateCard.js.map +1 -1
  1324. package/workflow/templates/WorkflowTemplateGallery.js +5 -5
  1325. package/workflow/templates/WorkflowTemplateGallery.js.map +1 -1
  1326. package/workflow/templates/WorkflowTemplatePreview.js +5 -5
  1327. package/workflow/templates/WorkflowTemplatePreview.js.map +1 -1
  1328. package/workflow/thread/WorkflowTaskThread.js +16 -16
  1329. package/workflow/thread/WorkflowTaskThread.js.map +1 -1
  1330. package/workspace/EditorTabs.js +5 -5
  1331. package/workspace/EditorTabs.js.map +1 -1
  1332. package/workspace/ExplorerTree.js +6 -6
  1333. package/workspace/ExplorerTree.js.map +1 -1
  1334. package/workspace/FileViewer.d.ts.map +1 -1
  1335. package/workspace/FileViewer.js +55 -17
  1336. package/workspace/FileViewer.js.map +1 -1
  1337. package/workspace/PanelChip.js +1 -1
  1338. package/workspace/PanelChip.js.map +1 -1
  1339. package/workspace/WorkspaceContentSearch.js +11 -11
  1340. package/workspace/WorkspaceContentSearch.js.map +1 -1
  1341. package/workspace/WorkspaceEditor.js +10 -10
  1342. package/workspace/WorkspaceEditor.js.map +1 -1
  1343. package/workspace/WorkspaceFileReader.d.ts +29 -1
  1344. package/workspace/WorkspaceFileReader.d.ts.map +1 -1
  1345. package/workspace/WorkspaceFileReader.js +42 -0
  1346. package/workspace/WorkspaceFileReader.js.map +1 -1
  1347. package/workspace/WorkspaceFileSearch.js +9 -9
  1348. package/workspace/WorkspaceFileSearch.js.map +1 -1
  1349. package/workspace/WorkspaceSummary.js +3 -3
  1350. package/workspace/WorkspaceSummary.js.map +1 -1
  1351. package/workspace/WorkspaceSurface.js +22 -22
  1352. package/workspace/WorkspaceSurface.js.map +1 -1
  1353. package/workspace/index.d.ts +1 -1
  1354. package/workspace/index.d.ts.map +1 -1
  1355. package/workspace/index.js +1 -1
  1356. package/workspace/index.js.map +1 -1
@@ -9,9 +9,11 @@
9
9
  // states including the filtered one — each in light + dark against the
10
10
  // shipped stylesheet.
11
11
 
12
- import { describe, it, afterEach, vi } from "vitest";
12
+ import { describe, it, afterEach, expect, vi } from "vitest";
13
+ import { waitFor } from "@testing-library/react";
13
14
  import { create } from "@bufbuild/protobuf";
14
15
  import { timestampFromDate } from "@bufbuild/protobuf/wkt";
16
+ import type { Stigmer } from "@stigmer/sdk";
15
17
  import { AgentChannelSchema } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/api_pb";
16
18
  import {
17
19
  ChannelConversationListFilter,
@@ -23,6 +25,7 @@ import {
23
25
  } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/conversation_io_pb";
24
26
  import { ChannelDeliveryStatus } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/delivery_pb";
25
27
  import { ChannelReceiptState } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/outbound_pb";
28
+ import { StigmerContext } from "../../../context.js";
26
29
  import { ConversationComposer } from "../../ConversationComposer.js";
27
30
  import { ConversationListPane } from "../../ConversationListPane.js";
28
31
  import { ConversationTimelineView } from "../../ConversationTimelineView.js";
@@ -125,6 +128,49 @@ const timelineItems = [
125
128
  }),
126
129
  ];
127
130
 
131
+ // Inbound-media fixtures (stigmer/stigmer#367): a captioned photo and a
132
+ // document. Media rendering needs the conversation address AND a client
133
+ // that answers getMediaDownloadUrl — the inner provider below overrides
134
+ // the harness stub with one minting a data-URI image, so the audit sees
135
+ // the loaded thumbnail, not just the pulse placeholder.
136
+ const mediaTimelineItems = [
137
+ create(ConversationTimelineItemSchema, {
138
+ itemId: "wa:7",
139
+ lane: ConversationLane.lane_public,
140
+ author: ConversationItemAuthor.author_customer,
141
+ providerMessageType: "image",
142
+ text: "here's the leak under the sink",
143
+ media: {
144
+ filename: "kitchen-leak.jpg",
145
+ contentType: "image/jpeg",
146
+ sizeBytes: BigInt(204800),
147
+ },
148
+ at: timestampFromDate(new Date("2026-08-07T09:04:00Z")),
149
+ }),
150
+ create(ConversationTimelineItemSchema, {
151
+ itemId: "wa:8",
152
+ lane: ConversationLane.lane_public,
153
+ author: ConversationItemAuthor.author_customer,
154
+ providerMessageType: "document",
155
+ media: {
156
+ filename: "lease-agreement.pdf",
157
+ contentType: "application/pdf",
158
+ sizeBytes: BigInt(1048576),
159
+ },
160
+ at: timestampFromDate(new Date("2026-08-07T09:05:00Z")),
161
+ }),
162
+ ];
163
+
164
+ // A 1×1 transparent PNG — enough for a real <img> load in the browser.
165
+ const ONE_PX_PNG =
166
+ "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNkYPhfDwAChwGA60e6kgAAAABJRU5ErkJggg==";
167
+
168
+ const mediaClient = {
169
+ agentChannel: {
170
+ getMediaDownloadUrl: () => Promise.resolve({ url: ONE_PX_PNG }),
171
+ },
172
+ } as unknown as Stigmer;
173
+
128
174
  const listBaseProps = {
129
175
  isLoading: false,
130
176
  error: null,
@@ -207,6 +253,26 @@ describe("Conversation surfaces a11y", () => {
207
253
  await auditA11y(container, `conversation timeline · ${mode}`);
208
254
  });
209
255
 
256
+ it.each(COLOR_MODES)("timeline with inbound media: thumbnail and document chip (%s)", async (mode) => {
257
+ const container = renderAudited(
258
+ <StigmerContext.Provider value={mediaClient}>
259
+ <ConversationTimelineView
260
+ {...timelineBaseProps}
261
+ agentChannelId="ach_wa"
262
+ conversationKey="15550001111"
263
+ items={mediaTimelineItems}
264
+ hasOlder={false}
265
+ provider="whatsapp"
266
+ />
267
+ </StigmerContext.Provider>,
268
+ mode,
269
+ );
270
+ // Audit the LOADED thumbnail (the interactive state operators use),
271
+ // not just the pulse placeholder the first frame shows.
272
+ await waitFor(() => expect(container.querySelector("img")).toBeTruthy());
273
+ await auditA11y(container, `conversation timeline media · ${mode}`);
274
+ });
275
+
210
276
  it.each(COLOR_MODES)("composer with the closed-window advisory (%s)", async (mode) => {
211
277
  const container = renderAudited(
212
278
  <ConversationComposer
@@ -0,0 +1,66 @@
1
+ import { describe, it, expect, vi } from "vitest";
2
+ import { renderHook, waitFor } from "@testing-library/react";
3
+ import type { ReactNode } from "react";
4
+ import type { Stigmer } from "@stigmer/sdk";
5
+ import { StigmerContext } from "../../context";
6
+ import { useConversationMediaUrl } from "../useConversationMediaUrl";
7
+
8
+ function wrapperFor(stigmer: Stigmer) {
9
+ return ({ children }: { children: ReactNode }) => (
10
+ <StigmerContext.Provider value={stigmer}>{children}</StigmerContext.Provider>
11
+ );
12
+ }
13
+
14
+ function makeStigmer(getMediaDownloadUrl = vi.fn()) {
15
+ return { agentChannel: { getMediaDownloadUrl } } as unknown as Stigmer;
16
+ }
17
+
18
+ describe("useConversationMediaUrl", () => {
19
+ it("mints a fresh URL from the item's conversation address", async () => {
20
+ const fn = vi.fn().mockResolvedValue({ url: "https://fresh/1" });
21
+ const { result } = renderHook(
22
+ () => useConversationMediaUrl("ach-1", "15551234567", "wa:abc"),
23
+ { wrapper: wrapperFor(makeStigmer(fn)) },
24
+ );
25
+
26
+ await waitFor(() => expect(result.current.url).toBe("https://fresh/1"));
27
+ expect(fn).toHaveBeenCalledTimes(1);
28
+ const req = fn.mock.calls[0][0];
29
+ expect(req.agentChannelId).toBe("ach-1");
30
+ expect(req.conversationKey).toBe("15551234567");
31
+ expect(req.itemId).toBe("wa:abc");
32
+ });
33
+
34
+ it("stays idle when disabled", () => {
35
+ const fn = vi.fn();
36
+ const { result } = renderHook(
37
+ () => useConversationMediaUrl("ach-1", "15551234567", "wa:abc", { enabled: false }),
38
+ { wrapper: wrapperFor(makeStigmer(fn)) },
39
+ );
40
+ expect(result.current.url).toBeNull();
41
+ expect(fn).not.toHaveBeenCalled();
42
+ });
43
+
44
+ it("skips fetching while any address part is empty", () => {
45
+ const fn = vi.fn();
46
+ const { result } = renderHook(
47
+ () => useConversationMediaUrl("ach-1", "", "wa:abc"),
48
+ { wrapper: wrapperFor(makeStigmer(fn)) },
49
+ );
50
+ expect(result.current.url).toBeNull();
51
+ expect(fn).not.toHaveBeenCalled();
52
+ });
53
+
54
+ it("reports a failed mint as an error, never a broken URL", async () => {
55
+ const fn = vi
56
+ .fn()
57
+ .mockRejectedValue(new Error("no downloadable media at this timeline item"));
58
+ const { result } = renderHook(
59
+ () => useConversationMediaUrl("ach-1", "15551234567", "wa:abc"),
60
+ { wrapper: wrapperFor(makeStigmer(fn)) },
61
+ );
62
+
63
+ await waitFor(() => expect(result.current.error).not.toBeNull());
64
+ expect(result.current.url).toBeNull();
65
+ });
66
+ });
@@ -108,9 +108,16 @@ export function receiptOf(item: ConversationTimelineItem): ReceiptKind | null {
108
108
 
109
109
  /**
110
110
  * Placeholder copy for inbound items whose body the platform cannot
111
- * render (`text` empty, `provider_message_type` names the kind). Media
112
- * retrieval is a named non-goal of this surface the placeholder tells
113
- * staff something arrived and what shape it was.
111
+ * render (`text` empty, `provider_message_type` names the kind) — the
112
+ * placeholder tells staff something arrived and what shape it was.
113
+ *
114
+ * Since stigmer/stigmer#367 this is the FALLBACK arm of the media
115
+ * treatment, not the whole of it: items carrying ingested `media`
116
+ * render the real thing (thumbnail or document chip) when the timeline
117
+ * view holds the conversation address. The placeholder still covers
118
+ * media the platform declined to ingest (disallowed type, over the size
119
+ * cap — `media` unset by design) and renders without an address, where
120
+ * the bytes are unreachable.
114
121
  *
115
122
  * Returns `null` when the item needs no placeholder (it has text, or it
116
123
  * is not a provider-typed inbound item — e.g. an attention-clear event,
@@ -40,6 +40,12 @@ export type {
40
40
  UseConversationTimelineReturn,
41
41
  } from "./useConversationTimeline.js";
42
42
 
43
+ export { useConversationMediaUrl } from "./useConversationMediaUrl.js";
44
+ export type {
45
+ UseConversationMediaUrlOptions,
46
+ UseConversationMediaUrlReturn,
47
+ } from "./useConversationMediaUrl.js";
48
+
43
49
  export { useConversationParticipation } from "./useConversationParticipation.js";
44
50
  export type {
45
51
  ConversationCommand,
@@ -0,0 +1,121 @@
1
+ "use client";
2
+
3
+ import { useMemo } from "react";
4
+ import { create } from "@bufbuild/protobuf";
5
+ import { GetConversationMediaDownloadUrlInputSchema } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/conversation_io_pb";
6
+ import { useStigmer } from "../hooks.js";
7
+ import { useFetch } from "../internal/useFetch.js";
8
+
9
+ /** Return value of {@link useConversationMediaUrl}. */
10
+ export interface UseConversationMediaUrlReturn {
11
+ /**
12
+ * A freshly minted presigned download URL for the timeline item's media,
13
+ * or `null` when:
14
+ * - Fetching is skipped (`enabled` is `false`, or any address part is empty)
15
+ * - The request is in-flight
16
+ * - The request failed (including the server's uniform NOT_FOUND for
17
+ * items without ingested media)
18
+ */
19
+ readonly url: string | null;
20
+
21
+ /** `true` while the URL request is in-flight (first load). */
22
+ readonly isLoading: boolean;
23
+
24
+ /** `true` while a background refetch is in flight. */
25
+ readonly isRefetching: boolean;
26
+
27
+ /** Error from the last failed attempt, or `null` when healthy. */
28
+ readonly error: Error | null;
29
+
30
+ /** Re-fetch the URL (e.g. to mint a fresh one after the previous expired). */
31
+ readonly refetch: () => void;
32
+ }
33
+
34
+ interface UrlData {
35
+ readonly url: string | null;
36
+ }
37
+
38
+ const EMPTY: UrlData = { url: null };
39
+
40
+ /** Options for {@link useConversationMediaUrl}. */
41
+ export interface UseConversationMediaUrlOptions {
42
+ /**
43
+ * Gate the request. When `false`, the hook stays idle and returns `null` —
44
+ * use this to defer minting a URL until it is actually needed.
45
+ * Defaults to `true`.
46
+ */
47
+ readonly enabled?: boolean;
48
+ }
49
+
50
+ /**
51
+ * Data hook that resolves a **fresh** presigned download URL for one
52
+ * timeline item's ingested media (an image or document the customer sent)
53
+ * via `stigmer.agentChannel.getMediaDownloadUrl()`.
54
+ *
55
+ * Addressed by `(channel, conversation, item_id)` — never a storage key:
56
+ * the server resolves the blob from its own row, so the read path stays
57
+ * conversation-viewer-scoped by construction and blob capabilities never
58
+ * ride the wire (whatsapp-media DD-001 D4). The URL expires (about an
59
+ * hour); minting at view time keeps it always valid, the
60
+ * `useArtifactDownloadUrl` rationale.
61
+ *
62
+ * The URL is cached cross-mount by the item's full address (DD-014), so
63
+ * the 5s timeline poll's re-renders and a lightbox opened from a
64
+ * thumbnail reuse the minted URL instead of re-hitting the API.
65
+ *
66
+ * Pass empty strings (or `enabled: false`) to skip fetching — the
67
+ * conversation surface's established skip convention.
68
+ *
69
+ * @param agentChannelId - AgentChannel the conversation belongs to, or `""` to skip.
70
+ * @param conversationKey - Conversation key within the channel, or `""` to skip.
71
+ * @param itemId - The timeline item whose media to fetch (e.g. `"wa:<wamid>"`), or `""` to skip.
72
+ * @param options - Optional gating (`enabled`).
73
+ *
74
+ * @example
75
+ * ```tsx
76
+ * // Render an inbound photo with an always-fresh URL.
77
+ * const { url, isLoading } = useConversationMediaUrl(channelId, key, item.itemId);
78
+ * if (isLoading) return <Skeleton />;
79
+ * return url ? <img src={url} alt={item.media?.filename} /> : null;
80
+ * ```
81
+ *
82
+ * @see useArtifactDownloadUrl — the execution-artifact counterpart this mirrors
83
+ */
84
+ export function useConversationMediaUrl(
85
+ agentChannelId: string,
86
+ conversationKey: string,
87
+ itemId: string,
88
+ options?: UseConversationMediaUrlOptions,
89
+ ): UseConversationMediaUrlReturn {
90
+ const stigmer = useStigmer();
91
+ const enabled = options?.enabled ?? true;
92
+ const active =
93
+ enabled && agentChannelId !== "" && conversationKey !== "" && itemId !== "";
94
+
95
+ const { data, isLoading, isRefetching, error, refetch } = useFetch(
96
+ active
97
+ ? () =>
98
+ stigmer.agentChannel
99
+ .getMediaDownloadUrl(
100
+ create(GetConversationMediaDownloadUrlInputSchema, {
101
+ agentChannelId,
102
+ conversationKey,
103
+ itemId,
104
+ }),
105
+ )
106
+ .then((result): UrlData => ({ url: result.url || null }))
107
+ : null,
108
+ [agentChannelId, conversationKey, itemId, active, stigmer],
109
+ EMPTY,
110
+ {
111
+ cacheKey: active
112
+ ? `conversation-media-url:${agentChannelId}:${conversationKey}:${itemId}`
113
+ : undefined,
114
+ },
115
+ );
116
+
117
+ return useMemo(
118
+ () => ({ url: data.url, isLoading, isRefetching, error, refetch }),
119
+ [data.url, isLoading, isRefetching, error, refetch],
120
+ );
121
+ }
@@ -102,8 +102,8 @@ export function CursorAccountEditor({
102
102
  };
103
103
 
104
104
  return (
105
- <form className={cn("max-w-xl space-y-3", className)} onSubmit={handleSubmit}>
106
- <h3 className="text-sm font-semibold text-foreground">
105
+ <form className={cn("stg:max-w-xl stg:space-y-3", className)} onSubmit={handleSubmit}>
106
+ <h3 className="stg:text-sm stg:font-semibold stg:text-foreground">
107
107
  {isCreate ? "Add Cursor account" : `Edit ${initial.displayName}`}
108
108
  </h3>
109
109
 
@@ -129,7 +129,7 @@ export function CursorAccountEditor({
129
129
  />
130
130
  </Field>
131
131
  {!isCreate && (
132
- <p className="text-[11px] text-muted-foreground">
132
+ <p className="stg:text-[11px] stg:text-muted-foreground">
133
133
  Leave the masked value untouched to keep the stored key; typing a
134
134
  new key rotates it (validated against Cursor before saving).
135
135
  </p>
@@ -147,7 +147,7 @@ export function CursorAccountEditor({
147
147
  spellCheck={false}
148
148
  />
149
149
  </Field>
150
- <p className="text-[11px] text-muted-foreground">
150
+ <p className="stg:text-[11px] stg:text-muted-foreground">
151
151
  Optional. Powers one-click &quot;Copy invite&quot; on coverage rows
152
152
  whose key owner is not on the team. The link is long-lived and
153
153
  joinable by anyone holding it (each join consumes a paid seat) —
@@ -157,14 +157,14 @@ export function CursorAccountEditor({
157
157
 
158
158
  <Field label="Dedicated organization ids">
159
159
  <textarea
160
- className={cn(INPUT_CLASSES, "min-h-16 font-mono")}
160
+ className={cn(INPUT_CLASSES, "stg:min-h-16 stg:font-mono")}
161
161
  value={orgIdsText}
162
162
  onChange={(e) => setOrgIdsText(e.target.value)}
163
163
  placeholder={"one org id per line\n(leave empty for a shared-pool account)"}
164
164
  disabled={isSubmitting}
165
165
  />
166
166
  </Field>
167
- <p className="text-[11px] text-muted-foreground">
167
+ <p className="stg:text-[11px] stg:text-muted-foreground">
168
168
  Listing org ids DEDICATES this account to them: their sessions use
169
169
  only this account&apos;s keys and fail with a clear message when it
170
170
  runs dry. Leaving this empty makes the account part of the shared
@@ -173,9 +173,9 @@ export function CursorAccountEditor({
173
173
  one account.
174
174
  </p>
175
175
 
176
- <div className="space-y-2">
176
+ <div className="stg:space-y-2">
177
177
  <div>
178
- <label className="flex items-center gap-1.5 text-xs text-foreground">
178
+ <label className="stg:flex stg:items-center stg:gap-1.5 stg:text-xs stg:text-foreground">
179
179
  <input
180
180
  type="checkbox"
181
181
  checked={enabled}
@@ -184,14 +184,14 @@ export function CursorAccountEditor({
184
184
  />
185
185
  Enabled for key selection
186
186
  </label>
187
- <p className="mt-0.5 pl-[1.375rem] text-[11px] text-muted-foreground">
187
+ <p className="stg:mt-0.5 stg:pl-[1.375rem] stg:text-[11px] stg:text-muted-foreground">
188
188
  Leave checked for accounts that should serve traffic. Unchecking
189
189
  drains the account: new sessions stop routing here immediately,
190
190
  but sessions already pinned to one of its keys keep working.
191
191
  </p>
192
192
  </div>
193
193
  <div>
194
- <label className="flex items-center gap-1.5 text-xs text-foreground">
194
+ <label className="stg:flex stg:items-center stg:gap-1.5 stg:text-xs stg:text-foreground">
195
195
  <input
196
196
  type="checkbox"
197
197
  checked={onDemandEnabled}
@@ -200,7 +200,7 @@ export function CursorAccountEditor({
200
200
  />
201
201
  On-demand usage enabled (as configured in the Cursor dashboard)
202
202
  </label>
203
- <p className="mt-0.5 pl-[1.375rem] text-[11px] text-muted-foreground">
203
+ <p className="stg:mt-0.5 stg:pl-[1.375rem] stg:text-[11px] stg:text-muted-foreground">
204
204
  Declared here because Cursor&apos;s Admin API cannot report the
205
205
  team&apos;s on-demand setting. Uncheck only when the dashboard has
206
206
  on-demand usage OFF: new sessions then avoid member keys whose
@@ -211,12 +211,12 @@ export function CursorAccountEditor({
211
211
  </div>
212
212
 
213
213
  {submitError && (
214
- <p className="text-destructive text-xs" role="alert">
214
+ <p className="stg:text-destructive stg:text-xs" role="alert">
215
215
  {getUserMessage(submitError)}
216
216
  </p>
217
217
  )}
218
218
 
219
- <div className="flex gap-2">
219
+ <div className="stg:flex stg:gap-2">
220
220
  <Button type="submit" size="sm" disabled={!canSubmit}>
221
221
  {isSubmitting ? "Saving…" : isCreate ? "Create account" : "Save changes"}
222
222
  </Button>
@@ -17,15 +17,15 @@ export function CursorAccountsAccessNotice({
17
17
  return (
18
18
  <div
19
19
  className={cn(
20
- "rounded-lg border border-border bg-card px-4 py-6 text-center",
20
+ "stg:rounded-lg stg:border stg:border-border stg:bg-card stg:px-4 stg:py-6 stg:text-center",
21
21
  className,
22
22
  )}
23
23
  role="status"
24
24
  >
25
- <p className="text-xs font-semibold text-foreground">
25
+ <p className="stg:text-xs stg:font-semibold stg:text-foreground">
26
26
  Platform operator access required
27
27
  </p>
28
- <p className="mx-auto mt-1 max-w-md text-xs text-muted-foreground">
28
+ <p className="stg:mx-auto stg:mt-1 stg:max-w-md stg:text-xs stg:text-muted-foreground">
29
29
  Cursor account management is a Stigmer-internal surface holding
30
30
  provider credentials and team spend. It needs the platform operator
31
31
  role — organization roles do not grant it. If you believe you should
@@ -63,10 +63,10 @@ export function CursorAccountsConsole({ className }: CursorAccountsConsoleProps)
63
63
 
64
64
  if (list.isLoading) {
65
65
  return (
66
- <div className={cn("space-y-2", className)} aria-busy="true">
67
- <div className="h-4 w-40 animate-pulse rounded bg-muted-subtle" />
66
+ <div className={cn("stg:space-y-2", className)} aria-busy="true">
67
+ <div className="stg:h-4 stg:w-40 stg:animate-pulse stg:rounded stg:bg-muted-subtle" />
68
68
  {Array.from({ length: 3 }, (_, i) => (
69
- <div key={i} className="h-10 animate-pulse rounded-lg bg-muted-subtle" />
69
+ <div key={i} className="stg:h-10 stg:animate-pulse stg:rounded-lg stg:bg-muted-subtle" />
70
70
  ))}
71
71
  </div>
72
72
  );
@@ -79,7 +79,7 @@ export function CursorAccountsConsole({ className }: CursorAccountsConsoleProps)
79
79
  return <CursorAccountsAccessNotice className={className} />;
80
80
  }
81
81
  return (
82
- <p className={cn("text-destructive text-xs", className)} role="alert">
82
+ <p className={cn("stg:text-destructive stg:text-xs", className)} role="alert">
83
83
  {getUserMessage(list.error)}
84
84
  </p>
85
85
  );
@@ -120,32 +120,32 @@ export function CursorAccountsConsole({ className }: CursorAccountsConsoleProps)
120
120
  const accounts = list.accounts?.accounts ?? [];
121
121
 
122
122
  return (
123
- <div className={cn("space-y-3", className)}>
124
- <div className="flex items-center justify-between gap-3">
125
- <h3 className="text-sm font-semibold text-foreground">Cursor accounts</h3>
123
+ <div className={cn("stg:space-y-3", className)}>
124
+ <div className="stg:flex stg:items-center stg:justify-between stg:gap-3">
125
+ <h3 className="stg:text-sm stg:font-semibold stg:text-foreground">Cursor accounts</h3>
126
126
  <Button size="sm" onClick={() => setFlow({ phase: "create" })}>
127
127
  Add account
128
128
  </Button>
129
129
  </div>
130
130
 
131
- <div className="rounded-lg border border-border bg-card">
131
+ <div className="stg:rounded-lg stg:border stg:border-border stg:bg-card">
132
132
  <div
133
133
  aria-hidden="true"
134
- className="grid grid-cols-[2fr_1fr_1fr_1fr_1fr] gap-2 border-b border-border px-3 py-2 text-[11px] font-medium text-muted-foreground"
134
+ className="stg:grid stg:grid-cols-[2fr_1fr_1fr_1fr_1fr] stg:gap-2 stg:border-b stg:border-border stg:px-3 stg:py-2 stg:text-[11px] stg:font-medium stg:text-muted-foreground"
135
135
  >
136
136
  <span>Account</span>
137
137
  <span>Orgs</span>
138
138
  <span>Status</span>
139
139
  <span>Execution keys</span>
140
- <span className="text-right">Last synced</span>
140
+ <span className="stg:text-right">Last synced</span>
141
141
  </div>
142
142
  {accounts.length === 0 ? (
143
- <p className="px-3 py-2 text-xs text-muted-foreground">
143
+ <p className="stg:px-3 stg:py-2 stg:text-xs stg:text-muted-foreground">
144
144
  No Cursor accounts yet. Add one with its team Admin API key, then
145
145
  add member execution keys to make it routable.
146
146
  </p>
147
147
  ) : (
148
- <ul role="list" aria-label="Cursor accounts" className="m-0 list-none p-0">
148
+ <ul role="list" aria-label="Cursor accounts" className="stg:m-0 stg:list-none stg:p-0">
149
149
  {accounts.map((summary) => (
150
150
  <AccountRow
151
151
  key={summary.account?.accountId}
@@ -181,29 +181,29 @@ function AccountRow({
181
181
  if (!account) return null;
182
182
 
183
183
  return (
184
- <li className="border-b border-border last:border-b-0">
184
+ <li className="stg:border-b stg:border-border stg:last:border-b-0">
185
185
  <button
186
186
  type="button"
187
187
  onClick={onOpen}
188
188
  className={cn(
189
- "grid w-full grid-cols-[2fr_1fr_1fr_1fr_1fr] items-center gap-2 px-3 py-2 text-left text-xs",
190
- "transition-colors hover:bg-accent",
191
- "focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
189
+ "stg:grid stg:w-full stg:grid-cols-[2fr_1fr_1fr_1fr_1fr] stg:items-center stg:gap-2 stg:px-3 stg:py-2 stg:text-left stg:text-xs",
190
+ "stg:transition-colors stg:hover:bg-accent",
191
+ "stg:focus-visible:outline-none stg:focus-visible:ring-1 stg:focus-visible:ring-ring",
192
192
  )}
193
193
  >
194
- <span className="min-w-0">
195
- <span className="block truncate font-medium text-foreground">
194
+ <span className="stg:min-w-0">
195
+ <span className="stg:block stg:truncate stg:font-medium stg:text-foreground">
196
196
  {account.displayName}
197
197
  </span>
198
198
  {/* Account class is DERIVED from org_ids (DD-008): no org
199
199
  assignment means the account belongs to the shared pool. */}
200
200
  {account.orgIds.length === 0 && (
201
- <span className="block text-[11px] text-muted-foreground">
201
+ <span className="stg:block stg:text-[11px] stg:text-muted-foreground">
202
202
  shared pool
203
203
  </span>
204
204
  )}
205
205
  </span>
206
- <span className="text-muted-foreground">
206
+ <span className="stg:text-muted-foreground">
207
207
  {account.orgIds.length > 0 ? account.orgIds.length : "—"}
208
208
  </span>
209
209
  <span>
@@ -214,12 +214,12 @@ function AccountRow({
214
214
  </span>
215
215
  <span>
216
216
  {summary.enabledKeyCount > 0 ? (
217
- <span className="text-muted-foreground">{summary.enabledKeyCount}</span>
217
+ <span className="stg:text-muted-foreground">{summary.enabledKeyCount}</span>
218
218
  ) : (
219
219
  <StateBadge tone="warn" label="Not routable" />
220
220
  )}
221
221
  </span>
222
- <span className="text-right text-muted-foreground">
222
+ <span className="stg:text-right stg:text-muted-foreground">
223
223
  {formatSyncTime(summary.lastSyncedAt)}
224
224
  </span>
225
225
  </button>
@@ -303,17 +303,17 @@ function AccountDetail({
303
303
 
304
304
  if (detail.isLoading) {
305
305
  return (
306
- <div className={cn("space-y-2", className)} aria-busy="true">
307
- <div className="h-4 w-40 animate-pulse rounded bg-muted-subtle" />
308
- <div className="h-24 animate-pulse rounded-lg bg-muted-subtle" />
306
+ <div className={cn("stg:space-y-2", className)} aria-busy="true">
307
+ <div className="stg:h-4 stg:w-40 stg:animate-pulse stg:rounded stg:bg-muted-subtle" />
308
+ <div className="stg:h-24 stg:animate-pulse stg:rounded-lg stg:bg-muted-subtle" />
309
309
  </div>
310
310
  );
311
311
  }
312
312
 
313
313
  if (detail.error || !detail.view?.account) {
314
314
  return (
315
- <div className={cn("space-y-2", className)}>
316
- <p className="text-destructive text-xs" role="alert">
315
+ <div className={cn("stg:space-y-2", className)}>
316
+ <p className="stg:text-destructive stg:text-xs" role="alert">
317
317
  {detail.error ? getUserMessage(detail.error) : "Account not found."}
318
318
  </p>
319
319
  <Button size="sm" variant="outline" onClick={onBack}>
@@ -364,13 +364,13 @@ function AccountDetail({
364
364
  }
365
365
 
366
366
  return (
367
- <div className={cn("space-y-4", className)}>
368
- <div className="flex flex-wrap items-center justify-between gap-2">
367
+ <div className={cn("stg:space-y-4", className)}>
368
+ <div className="stg:flex stg:flex-wrap stg:items-center stg:justify-between stg:gap-2">
369
369
  <div>
370
- <h3 className="text-sm font-semibold text-foreground">
370
+ <h3 className="stg:text-sm stg:font-semibold stg:text-foreground">
371
371
  {account.displayName}
372
372
  </h3>
373
- <p className="text-[11px] text-muted-foreground">
373
+ <p className="stg:text-[11px] stg:text-muted-foreground">
374
374
  {account.orgIds.length > 0
375
375
  ? `Dedicated to ${account.orgIds.length} org(s): ${account.orgIds.join(", ")}`
376
376
  : "Shared pool — serves every org with no dedicated account"}
@@ -389,7 +389,7 @@ function AccountDetail({
389
389
  : ""}
390
390
  </p>
391
391
  </div>
392
- <div className="flex gap-2">
392
+ <div className="stg:flex stg:gap-2">
393
393
  <Button size="sm" variant="outline" onClick={onBack}>
394
394
  Back
395
395
  </Button>
@@ -425,17 +425,17 @@ function AccountDetail({
425
425
  </div>
426
426
 
427
427
  {syncError && (
428
- <p className="text-destructive text-xs" role="alert">
428
+ <p className="stg:text-destructive stg:text-xs" role="alert">
429
429
  {getUserMessage(syncError)}
430
430
  </p>
431
431
  )}
432
432
  {deleteError && (
433
- <p className="text-destructive text-xs" role="alert">
433
+ <p className="stg:text-destructive stg:text-xs" role="alert">
434
434
  {getUserMessage(deleteError)}
435
435
  </p>
436
436
  )}
437
437
  {view.snapshot?.syncError && (
438
- <p className="text-xs text-muted-foreground" role="status">
438
+ <p className="stg:text-xs stg:text-muted-foreground" role="status">
439
439
  Last sync was partial: {view.snapshot.syncError}
440
440
  </p>
441
441
  )}