@stigmer/react 3.12.1 → 3.12.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (658) hide show
  1. package/access/ManageAccessDialog.d.ts.map +1 -1
  2. package/access/ManageAccessDialog.js +7 -2
  3. package/access/ManageAccessDialog.js.map +1 -1
  4. package/activity/format-relative-time.d.ts +11 -9
  5. package/activity/format-relative-time.d.ts.map +1 -1
  6. package/activity/format-relative-time.js +11 -9
  7. package/activity/format-relative-time.js.map +1 -1
  8. package/agent/steps/CapabilitiesStep.js +5 -2
  9. package/agent/steps/CapabilitiesStep.js.map +1 -1
  10. package/agent/steps/IdentityStep.d.ts.map +1 -1
  11. package/agent/steps/IdentityStep.js +6 -5
  12. package/agent/steps/IdentityStep.js.map +1 -1
  13. package/agent-instance/CreateAgentInstanceDialog.d.ts.map +1 -1
  14. package/agent-instance/CreateAgentInstanceDialog.js +10 -2
  15. package/agent-instance/CreateAgentInstanceDialog.js.map +1 -1
  16. package/api-key/ApiKeyCreatedAlert.d.ts.map +1 -1
  17. package/api-key/ApiKeyCreatedAlert.js +12 -20
  18. package/api-key/ApiKeyCreatedAlert.js.map +1 -1
  19. package/api-key/ApiKeyListPanel.d.ts.map +1 -1
  20. package/api-key/ApiKeyListPanel.js +3 -23
  21. package/api-key/ApiKeyListPanel.js.map +1 -1
  22. package/api-key/CreateApiKeyForm.d.ts.map +1 -1
  23. package/api-key/CreateApiKeyForm.js +6 -10
  24. package/api-key/CreateApiKeyForm.js.map +1 -1
  25. package/approval-defaults-context.d.ts +47 -0
  26. package/approval-defaults-context.d.ts.map +1 -0
  27. package/approval-defaults-context.js +27 -0
  28. package/approval-defaults-context.js.map +1 -0
  29. package/attachment/index.d.ts +2 -0
  30. package/attachment/index.d.ts.map +1 -1
  31. package/attachment/index.js +1 -0
  32. package/attachment/index.js.map +1 -1
  33. package/attachment/vision-preflight.d.ts +113 -0
  34. package/attachment/vision-preflight.d.ts.map +1 -0
  35. package/attachment/vision-preflight.js +143 -0
  36. package/attachment/vision-preflight.js.map +1 -0
  37. package/billing/AutoRechargeCard.d.ts.map +1 -1
  38. package/billing/AutoRechargeCard.js +3 -2
  39. package/billing/AutoRechargeCard.js.map +1 -1
  40. package/billing/BillingSection.d.ts.map +1 -1
  41. package/billing/BillingSection.js +3 -2
  42. package/billing/BillingSection.js.map +1 -1
  43. package/channel/ChannelConversationsDialog.d.ts.map +1 -1
  44. package/channel/ChannelConversationsDialog.js +5 -4
  45. package/channel/ChannelConversationsDialog.js.map +1 -1
  46. package/channel/ChannelCredentialsDialog.d.ts.map +1 -1
  47. package/channel/ChannelCredentialsDialog.js +9 -4
  48. package/channel/ChannelCredentialsDialog.js.map +1 -1
  49. package/channel/ChannelTemplatesDialog.d.ts.map +1 -1
  50. package/channel/ChannelTemplatesDialog.js +5 -4
  51. package/channel/ChannelTemplatesDialog.js.map +1 -1
  52. package/channel/ConnectSlackDialog.d.ts.map +1 -1
  53. package/channel/ConnectSlackDialog.js +9 -4
  54. package/channel/ConnectSlackDialog.js.map +1 -1
  55. package/channel/ConnectWhatsAppDialog.d.ts.map +1 -1
  56. package/channel/ConnectWhatsAppDialog.js +9 -4
  57. package/channel/ConnectWhatsAppDialog.js.map +1 -1
  58. package/channel/useChannelSessions.d.ts.map +1 -1
  59. package/channel/useChannelSessions.js.map +1 -1
  60. package/channel-app/ChannelAppDetailPanel.d.ts.map +1 -1
  61. package/channel-app/ChannelAppDetailPanel.js +8 -5
  62. package/channel-app/ChannelAppDetailPanel.js.map +1 -1
  63. package/channel-app/CreateChannelAppForm.d.ts.map +1 -1
  64. package/channel-app/CreateChannelAppForm.js +12 -7
  65. package/channel-app/CreateChannelAppForm.js.map +1 -1
  66. package/channel-app/internal.d.ts +0 -1
  67. package/channel-app/internal.d.ts.map +1 -1
  68. package/channel-app/internal.js +5 -10
  69. package/channel-app/internal.js.map +1 -1
  70. package/composer/ComposerToolbar.js +2 -1
  71. package/composer/ComposerToolbar.js.map +1 -1
  72. package/composer/SessionComposer.d.ts +1 -1
  73. package/composer/SessionComposer.d.ts.map +1 -1
  74. package/composer/SessionComposer.js +120 -13
  75. package/composer/SessionComposer.js.map +1 -1
  76. package/composer/icons.d.ts +0 -1
  77. package/composer/icons.d.ts.map +1 -1
  78. package/composer/icons.js +0 -3
  79. package/composer/icons.js.map +1 -1
  80. package/conversation/ConversationComposer.js +1 -1
  81. package/conversation/ConversationComposer.js.map +1 -1
  82. package/conversation/ConversationListPane.d.ts.map +1 -1
  83. package/conversation/ConversationListPane.js +3 -2
  84. package/conversation/ConversationListPane.js.map +1 -1
  85. package/cursor-accounts/MemberCoverageTable.js +3 -14
  86. package/cursor-accounts/MemberCoverageTable.js.map +1 -1
  87. package/dashboard/DashboardFailedRuns.d.ts.map +1 -1
  88. package/dashboard/DashboardFailedRuns.js +2 -14
  89. package/dashboard/DashboardFailedRuns.js.map +1 -1
  90. package/environment/CreateEnvironmentForm.d.ts.map +1 -1
  91. package/environment/CreateEnvironmentForm.js +4 -8
  92. package/environment/CreateEnvironmentForm.js.map +1 -1
  93. package/environment/EnvVarForm.d.ts.map +1 -1
  94. package/environment/EnvVarForm.js +2 -4
  95. package/environment/EnvVarForm.js.map +1 -1
  96. package/environment/EnvironmentVariableEditor.d.ts.map +1 -1
  97. package/environment/EnvironmentVariableEditor.js +5 -7
  98. package/environment/EnvironmentVariableEditor.js.map +1 -1
  99. package/execution/ArtifactApplyButton.d.ts.map +1 -1
  100. package/execution/ArtifactApplyButton.js +2 -4
  101. package/execution/ArtifactApplyButton.js.map +1 -1
  102. package/execution/ExecutionErrorNotice.d.ts +36 -0
  103. package/execution/ExecutionErrorNotice.d.ts.map +1 -0
  104. package/execution/ExecutionErrorNotice.js +39 -0
  105. package/execution/ExecutionErrorNotice.js.map +1 -0
  106. package/execution/FilePathLink.d.ts.map +1 -1
  107. package/execution/FilePathLink.js +5 -8
  108. package/execution/FilePathLink.js.map +1 -1
  109. package/execution/FileReviewCard.d.ts.map +1 -1
  110. package/execution/FileReviewCard.js +1 -6
  111. package/execution/FileReviewCard.js.map +1 -1
  112. package/execution/FollowUpInput.d.ts.map +1 -1
  113. package/execution/FollowUpInput.js +1 -3
  114. package/execution/FollowUpInput.js.map +1 -1
  115. package/execution/LivenessStatusLine.d.ts +40 -0
  116. package/execution/LivenessStatusLine.d.ts.map +1 -0
  117. package/execution/LivenessStatusLine.js +34 -0
  118. package/execution/LivenessStatusLine.js.map +1 -0
  119. package/execution/MessageEntry.d.ts.map +1 -1
  120. package/execution/MessageEntry.js +31 -3
  121. package/execution/MessageEntry.js.map +1 -1
  122. package/execution/MessageThread.d.ts +25 -0
  123. package/execution/MessageThread.d.ts.map +1 -1
  124. package/execution/MessageThread.js +51 -36
  125. package/execution/MessageThread.js.map +1 -1
  126. package/execution/SetupProgress.d.ts.map +1 -1
  127. package/execution/SetupProgress.js +1 -1
  128. package/execution/SetupProgress.js.map +1 -1
  129. package/execution/SubAgentSection.d.ts.map +1 -1
  130. package/execution/SubAgentSection.js +9 -7
  131. package/execution/SubAgentSection.js.map +1 -1
  132. package/execution/TerminalSession.d.ts +30 -0
  133. package/execution/TerminalSession.d.ts.map +1 -1
  134. package/execution/TerminalSession.js +37 -1
  135. package/execution/TerminalSession.js.map +1 -1
  136. package/execution/ToolCallDetail.d.ts +9 -0
  137. package/execution/ToolCallDetail.d.ts.map +1 -1
  138. package/execution/ToolCallDetail.js +16 -0
  139. package/execution/ToolCallDetail.js.map +1 -1
  140. package/execution/ToolCallItem.d.ts +20 -6
  141. package/execution/ToolCallItem.d.ts.map +1 -1
  142. package/execution/ToolCallItem.js +102 -29
  143. package/execution/ToolCallItem.js.map +1 -1
  144. package/execution/ToolRunGroup.d.ts.map +1 -1
  145. package/execution/ToolRunGroup.js +11 -11
  146. package/execution/ToolRunGroup.js.map +1 -1
  147. package/execution/WriteBackCard.d.ts.map +1 -1
  148. package/execution/WriteBackCard.js +5 -20
  149. package/execution/WriteBackCard.js.map +1 -1
  150. package/execution/index.d.ts +6 -2
  151. package/execution/index.d.ts.map +1 -1
  152. package/execution/index.js +3 -1
  153. package/execution/index.js.map +1 -1
  154. package/execution/tool-categories.d.ts +42 -7
  155. package/execution/tool-categories.d.ts.map +1 -1
  156. package/execution/tool-categories.js +38 -4
  157. package/execution/tool-categories.js.map +1 -1
  158. package/execution/tool-presenter.d.ts +17 -1
  159. package/execution/tool-presenter.d.ts.map +1 -1
  160. package/execution/tool-presenter.js +4 -1
  161. package/execution/tool-presenter.js.map +1 -1
  162. package/execution/useArtifactInspection.d.ts.map +1 -1
  163. package/execution/useArtifactInspection.js +4 -7
  164. package/execution/useArtifactInspection.js.map +1 -1
  165. package/iam-policy/GrantAccessForm.d.ts.map +1 -1
  166. package/iam-policy/GrantAccessForm.js +2 -4
  167. package/iam-policy/GrantAccessForm.js.map +1 -1
  168. package/iam-policy/OrgMembersPanel.d.ts.map +1 -1
  169. package/iam-policy/OrgMembersPanel.js +3 -5
  170. package/iam-policy/OrgMembersPanel.js.map +1 -1
  171. package/iam-policy/RoleSelector.d.ts.map +1 -1
  172. package/iam-policy/RoleSelector.js +7 -1
  173. package/iam-policy/RoleSelector.js.map +1 -1
  174. package/identity-provider/CreateIdentityProviderForm.d.ts.map +1 -1
  175. package/identity-provider/CreateIdentityProviderForm.js +6 -9
  176. package/identity-provider/CreateIdentityProviderForm.js.map +1 -1
  177. package/identity-provider/IdentityProviderDetailPanel.d.ts.map +1 -1
  178. package/identity-provider/IdentityProviderDetailPanel.js +17 -26
  179. package/identity-provider/IdentityProviderDetailPanel.js.map +1 -1
  180. package/identity-provider/IdentityProviderListPanel.d.ts.map +1 -1
  181. package/identity-provider/IdentityProviderListPanel.js +2 -4
  182. package/identity-provider/IdentityProviderListPanel.js.map +1 -1
  183. package/identity-provider/IdentityProviderWizard.d.ts.map +1 -1
  184. package/identity-provider/IdentityProviderWizard.js +8 -7
  185. package/identity-provider/IdentityProviderWizard.js.map +1 -1
  186. package/identity-provider/SsoLoginPrompt.js +5 -6
  187. package/identity-provider/SsoLoginPrompt.js.map +1 -1
  188. package/index.d.ts +9 -8
  189. package/index.d.ts.map +1 -1
  190. package/index.js +4 -4
  191. package/index.js.map +1 -1
  192. package/internal/DecisionButton.d.ts.map +1 -1
  193. package/internal/DecisionButton.js +1 -6
  194. package/internal/DecisionButton.js.map +1 -1
  195. package/internal/SpinnerIcon.d.ts +22 -0
  196. package/internal/SpinnerIcon.d.ts.map +1 -0
  197. package/internal/SpinnerIcon.js +23 -0
  198. package/internal/SpinnerIcon.js.map +1 -0
  199. package/internal/select-element-text.d.ts +11 -0
  200. package/internal/select-element-text.d.ts.map +1 -0
  201. package/internal/select-element-text.js +19 -0
  202. package/internal/select-element-text.js.map +1 -0
  203. package/internal/thread-card/ThreadCardShell.d.ts +27 -10
  204. package/internal/thread-card/ThreadCardShell.d.ts.map +1 -1
  205. package/internal/thread-card/ThreadCardShell.js +11 -5
  206. package/internal/thread-card/ThreadCardShell.js.map +1 -1
  207. package/internal/thread-card/glyphs.d.ts +11 -2
  208. package/internal/thread-card/glyphs.d.ts.map +1 -1
  209. package/internal/thread-card/glyphs.js +9 -3
  210. package/internal/thread-card/glyphs.js.map +1 -1
  211. package/internal/thread-card/index.d.ts +1 -1
  212. package/internal/thread-card/index.d.ts.map +1 -1
  213. package/internal/thread-card/index.js.map +1 -1
  214. package/internal/useCopyFeedback.d.ts +28 -0
  215. package/internal/useCopyFeedback.d.ts.map +1 -0
  216. package/internal/useCopyFeedback.js +40 -0
  217. package/internal/useCopyFeedback.js.map +1 -0
  218. package/invitation/InvitationCreatedAlert.d.ts.map +1 -1
  219. package/invitation/InvitationCreatedAlert.js +12 -19
  220. package/invitation/InvitationCreatedAlert.js.map +1 -1
  221. package/invitation/InvitationManager.d.ts.map +1 -1
  222. package/invitation/InvitationManager.js +14 -21
  223. package/invitation/InvitationManager.js.map +1 -1
  224. package/invitation/InvitationRedemption.d.ts.map +1 -1
  225. package/invitation/InvitationRedemption.js +2 -4
  226. package/invitation/InvitationRedemption.js.map +1 -1
  227. package/library/useExportResource.d.ts.map +1 -1
  228. package/library/useExportResource.js +16 -27
  229. package/library/useExportResource.js.map +1 -1
  230. package/manifest/ApplyManifestDialog.js +1 -1
  231. package/manifest/EditResourceYamlDialog.js +1 -1
  232. package/mcp-server/DefinitionDriftNotice.d.ts +42 -0
  233. package/mcp-server/DefinitionDriftNotice.d.ts.map +1 -0
  234. package/mcp-server/DefinitionDriftNotice.js +52 -0
  235. package/mcp-server/DefinitionDriftNotice.js.map +1 -0
  236. package/mcp-server/McpServerConnectDialog.js +1 -1
  237. package/mcp-server/McpServerDetailView.d.ts.map +1 -1
  238. package/mcp-server/McpServerDetailView.js +47 -14
  239. package/mcp-server/McpServerDetailView.js.map +1 -1
  240. package/mcp-server/OAuthAppForm.d.ts.map +1 -1
  241. package/mcp-server/OAuthAppForm.js +2 -4
  242. package/mcp-server/OAuthAppForm.js.map +1 -1
  243. package/mcp-server/internal/definitionDrift.d.ts +39 -0
  244. package/mcp-server/internal/definitionDrift.d.ts.map +1 -0
  245. package/mcp-server/internal/definitionDrift.js +122 -0
  246. package/mcp-server/internal/definitionDrift.js.map +1 -0
  247. package/mcp-server/internal/mcpServerToInput.d.ts.map +1 -1
  248. package/mcp-server/internal/mcpServerToInput.js +3 -0
  249. package/mcp-server/internal/mcpServerToInput.js.map +1 -1
  250. package/mcp-server/steps/EnvironmentAuthStep.d.ts.map +1 -1
  251. package/mcp-server/steps/EnvironmentAuthStep.js +8 -4
  252. package/mcp-server/steps/EnvironmentAuthStep.js.map +1 -1
  253. package/mcp-server/steps/IdentityTransportStep.d.ts.map +1 -1
  254. package/mcp-server/steps/IdentityTransportStep.js +5 -4
  255. package/mcp-server/steps/IdentityTransportStep.js.map +1 -1
  256. package/mcp-server/useMcpServerConnect.d.ts +1 -1
  257. package/mcp-server/useMcpServerDefinitionDrift.d.ts +44 -0
  258. package/mcp-server/useMcpServerDefinitionDrift.d.ts.map +1 -0
  259. package/mcp-server/useMcpServerDefinitionDrift.js +61 -0
  260. package/mcp-server/useMcpServerDefinitionDrift.js.map +1 -0
  261. package/models/ModelRegistryContext.d.ts +7 -1
  262. package/models/ModelRegistryContext.d.ts.map +1 -1
  263. package/models/ModelRegistryContext.js.map +1 -1
  264. package/models/ModelSelector.js +9 -1
  265. package/models/ModelSelector.js.map +1 -1
  266. package/models/index.d.ts +2 -2
  267. package/models/index.d.ts.map +1 -1
  268. package/models/index.js +1 -1
  269. package/models/index.js.map +1 -1
  270. package/models/registry.d.ts +88 -6
  271. package/models/registry.d.ts.map +1 -1
  272. package/models/registry.js +133 -27
  273. package/models/registry.js.map +1 -1
  274. package/models/useModelRegistry.d.ts +7 -1
  275. package/models/useModelRegistry.d.ts.map +1 -1
  276. package/models/useModelRegistry.js +3 -2
  277. package/models/useModelRegistry.js.map +1 -1
  278. package/oauth-app/CreateOAuthAppForm.d.ts.map +1 -1
  279. package/oauth-app/CreateOAuthAppForm.js +4 -5
  280. package/oauth-app/CreateOAuthAppForm.js.map +1 -1
  281. package/oauth-app/OAuthAppDetailPanel.d.ts.map +1 -1
  282. package/oauth-app/OAuthAppDetailPanel.js +5 -6
  283. package/oauth-app/OAuthAppDetailPanel.js.map +1 -1
  284. package/organization/CreateOrganizationForm.d.ts.map +1 -1
  285. package/organization/CreateOrganizationForm.js +5 -9
  286. package/organization/CreateOrganizationForm.js.map +1 -1
  287. package/organization/OrgProfilePanel.d.ts.map +1 -1
  288. package/organization/OrgProfilePanel.js +7 -16
  289. package/organization/OrgProfilePanel.js.map +1 -1
  290. package/package.json +4 -4
  291. package/platform-client/CreatePlatformClientForm.d.ts.map +1 -1
  292. package/platform-client/CreatePlatformClientForm.js +5 -6
  293. package/platform-client/CreatePlatformClientForm.js.map +1 -1
  294. package/platform-client/PlatformClientDetailPanel.d.ts.map +1 -1
  295. package/platform-client/PlatformClientDetailPanel.js +6 -7
  296. package/platform-client/PlatformClientDetailPanel.js.map +1 -1
  297. package/platform-client/PlatformClientListPanel.d.ts.map +1 -1
  298. package/platform-client/PlatformClientListPanel.js +2 -4
  299. package/platform-client/PlatformClientListPanel.js.map +1 -1
  300. package/platform-client/PlatformClientSecretAlert.d.ts.map +1 -1
  301. package/platform-client/PlatformClientSecretAlert.js +18 -25
  302. package/platform-client/PlatformClientSecretAlert.js.map +1 -1
  303. package/provider.d.ts +34 -1
  304. package/provider.d.ts.map +1 -1
  305. package/provider.js +14 -7
  306. package/provider.js.map +1 -1
  307. package/resource-creation/WizardNav.d.ts.map +1 -1
  308. package/resource-creation/WizardNav.js +2 -4
  309. package/resource-creation/WizardNav.js.map +1 -1
  310. package/resource-detail/ConfirmDialog.js +1 -1
  311. package/resource-detail/useCopyResource.d.ts +4 -3
  312. package/resource-detail/useCopyResource.d.ts.map +1 -1
  313. package/resource-detail/useCopyResource.js +10 -19
  314. package/resource-detail/useCopyResource.js.map +1 -1
  315. package/schedule/ScheduleDetailView.d.ts.map +1 -1
  316. package/schedule/ScheduleDetailView.js +2 -4
  317. package/schedule/ScheduleDetailView.js.map +1 -1
  318. package/schedule/ScheduleForm.d.ts.map +1 -1
  319. package/schedule/ScheduleForm.js +6 -7
  320. package/schedule/ScheduleForm.js.map +1 -1
  321. package/session/NewSessionViewer.d.ts +52 -2
  322. package/session/NewSessionViewer.d.ts.map +1 -1
  323. package/session/NewSessionViewer.js +21 -6
  324. package/session/NewSessionViewer.js.map +1 -1
  325. package/session/SessionViewer.d.ts +63 -2
  326. package/session/SessionViewer.d.ts.map +1 -1
  327. package/session/SessionViewer.js +43 -17
  328. package/session/SessionViewer.js.map +1 -1
  329. package/session/audience.d.ts +17 -0
  330. package/session/audience.d.ts.map +1 -1
  331. package/session/index.d.ts +2 -1
  332. package/session/index.d.ts.map +1 -1
  333. package/session/index.js.map +1 -1
  334. package/session/run-config.d.ts +50 -0
  335. package/session/run-config.d.ts.map +1 -0
  336. package/session/run-config.js +15 -0
  337. package/session/run-config.js.map +1 -0
  338. package/session/useNewSessionFlow.d.ts +11 -0
  339. package/session/useNewSessionFlow.d.ts.map +1 -1
  340. package/session/useNewSessionFlow.js +29 -2
  341. package/session/useNewSessionFlow.js.map +1 -1
  342. package/session/useSessionConversation.d.ts +7 -7
  343. package/session/useSessionConversation.d.ts.map +1 -1
  344. package/session/useSessionConversation.js +2 -0
  345. package/session/useSessionConversation.js.map +1 -1
  346. package/session/useSessionPageFlow.d.ts +18 -4
  347. package/session/useSessionPageFlow.d.ts.map +1 -1
  348. package/session/useSessionPageFlow.js +33 -6
  349. package/session/useSessionPageFlow.js.map +1 -1
  350. package/session/useSessionPanel.d.ts +37 -2
  351. package/session/useSessionPanel.d.ts.map +1 -1
  352. package/session/useSessionPanel.js +44 -10
  353. package/session/useSessionPanel.js.map +1 -1
  354. package/settings/ApiKeysSection.d.ts.map +1 -1
  355. package/settings/ApiKeysSection.js +3 -2
  356. package/settings/ApiKeysSection.js.map +1 -1
  357. package/settings/ChannelAppsSection.d.ts.map +1 -1
  358. package/settings/ChannelAppsSection.js +3 -2
  359. package/settings/ChannelAppsSection.js.map +1 -1
  360. package/settings/EnvironmentsSection.js +5 -3
  361. package/settings/EnvironmentsSection.js.map +1 -1
  362. package/settings/IdentityProvidersSection.d.ts.map +1 -1
  363. package/settings/IdentityProvidersSection.js +3 -2
  364. package/settings/IdentityProvidersSection.js.map +1 -1
  365. package/settings/InvitationsSection.d.ts.map +1 -1
  366. package/settings/InvitationsSection.js +3 -1
  367. package/settings/InvitationsSection.js.map +1 -1
  368. package/settings/MembersSection.d.ts.map +1 -1
  369. package/settings/MembersSection.js +3 -1
  370. package/settings/MembersSection.js.map +1 -1
  371. package/settings/OAuthAppsSection.d.ts.map +1 -1
  372. package/settings/OAuthAppsSection.js +3 -2
  373. package/settings/OAuthAppsSection.js.map +1 -1
  374. package/settings/OrgProfileSection.d.ts.map +1 -1
  375. package/settings/OrgProfileSection.js +3 -2
  376. package/settings/OrgProfileSection.js.map +1 -1
  377. package/settings/PlatformClientsSection.d.ts.map +1 -1
  378. package/settings/PlatformClientsSection.js +3 -2
  379. package/settings/PlatformClientsSection.js.map +1 -1
  380. package/settings/UsageSection.d.ts.map +1 -1
  381. package/settings/UsageSection.js +3 -1
  382. package/settings/UsageSection.js.map +1 -1
  383. package/sharing/ShareAgentDialog.d.ts.map +1 -1
  384. package/sharing/ShareAgentDialog.js +18 -7
  385. package/sharing/ShareAgentDialog.js.map +1 -1
  386. package/sidebar/chrome.d.ts +3 -4
  387. package/sidebar/chrome.d.ts.map +1 -1
  388. package/sidebar/chrome.js +5 -4
  389. package/sidebar/chrome.js.map +1 -1
  390. package/skill/SkillDiffDialog.js +1 -1
  391. package/src/access/ManageAccessDialog.tsx +10 -4
  392. package/src/activity/format-relative-time.ts +11 -9
  393. package/src/agent/steps/CapabilitiesStep.tsx +6 -3
  394. package/src/agent/steps/IdentityStep.tsx +19 -12
  395. package/src/agent-instance/CreateAgentInstanceDialog.tsx +17 -8
  396. package/src/api-key/ApiKeyCreatedAlert.tsx +10 -19
  397. package/src/api-key/ApiKeyListPanel.tsx +3 -39
  398. package/src/api-key/CreateApiKeyForm.tsx +12 -26
  399. package/src/approval-defaults-context.ts +56 -0
  400. package/src/attachment/__tests__/vision-preflight.test.ts +311 -0
  401. package/src/attachment/index.ts +12 -0
  402. package/src/attachment/vision-preflight.ts +236 -0
  403. package/src/billing/AutoRechargeCard.tsx +5 -4
  404. package/src/billing/BillingSection.tsx +4 -3
  405. package/src/channel/ChannelConversationsDialog.tsx +8 -4
  406. package/src/channel/ChannelCredentialsDialog.tsx +14 -4
  407. package/src/channel/ChannelTemplatesDialog.tsx +8 -4
  408. package/src/channel/ConnectSlackDialog.tsx +14 -4
  409. package/src/channel/ConnectWhatsAppDialog.tsx +14 -4
  410. package/src/channel/useChannelSessions.ts +3 -0
  411. package/src/channel-app/ChannelAppDetailPanel.tsx +15 -12
  412. package/src/channel-app/CreateChannelAppForm.tsx +17 -12
  413. package/src/channel-app/internal.tsx +5 -25
  414. package/src/composer/ComposerToolbar.tsx +1 -1
  415. package/src/composer/SessionComposer.tsx +160 -13
  416. package/src/composer/__tests__/SessionComposer-modelCoherence.test.tsx +220 -0
  417. package/src/composer/__tests__/SessionComposer-visionPreflight.test.tsx +222 -0
  418. package/src/composer/icons.tsx +0 -18
  419. package/src/conversation/ConversationComposer.tsx +1 -1
  420. package/src/conversation/ConversationListPane.tsx +4 -3
  421. package/src/cursor-accounts/MemberCoverageTable.tsx +3 -14
  422. package/src/cursor-accounts/__tests__/CursorAccountsConsole.test.tsx +2 -10
  423. package/src/dashboard/DashboardFailedRuns.tsx +2 -12
  424. package/src/environment/CreateEnvironmentForm.tsx +8 -27
  425. package/src/environment/EnvVarForm.tsx +2 -18
  426. package/src/environment/EnvironmentVariableEditor.tsx +5 -21
  427. package/src/execution/ArtifactApplyButton.tsx +2 -17
  428. package/src/execution/ExecutionErrorNotice.tsx +99 -0
  429. package/src/execution/FilePathLink.tsx +5 -9
  430. package/src/execution/FileReviewCard.tsx +1 -20
  431. package/src/execution/FollowUpInput.tsx +1 -16
  432. package/src/execution/LivenessStatusLine.tsx +59 -0
  433. package/src/execution/MessageEntry.tsx +136 -25
  434. package/src/execution/MessageThread.tsx +84 -83
  435. package/src/execution/SetupProgress.tsx +5 -1
  436. package/src/execution/SubAgentSection.tsx +9 -20
  437. package/src/execution/TerminalSession.tsx +97 -10
  438. package/src/execution/ToolCallDetail.tsx +19 -0
  439. package/src/execution/ToolCallItem.tsx +157 -37
  440. package/src/execution/ToolRunGroup.tsx +30 -32
  441. package/src/execution/WriteBackCard.tsx +5 -24
  442. package/src/execution/__tests__/MessageEntry-copy.test.tsx +125 -0
  443. package/src/execution/__tests__/MessageThread.test.tsx +97 -0
  444. package/src/execution/__tests__/TerminalSession.test.tsx +71 -1
  445. package/src/execution/__tests__/ToolCallDetail.test.tsx +33 -1
  446. package/src/execution/__tests__/ToolCallItem.test.tsx +299 -11
  447. package/src/execution/__tests__/ToolRunGroup.test.tsx +41 -9
  448. package/src/execution/__tests__/message-thread-slots.test.tsx +92 -0
  449. package/src/execution/__tests__/tool-presenter.test.tsx +41 -4
  450. package/src/execution/index.ts +8 -2
  451. package/src/execution/tool-categories.ts +72 -8
  452. package/src/execution/tool-presenter.ts +22 -1
  453. package/src/execution/useArtifactInspection.ts +4 -8
  454. package/src/iam-policy/GrantAccessForm.tsx +2 -18
  455. package/src/iam-policy/OrgMembersPanel.tsx +3 -19
  456. package/src/iam-policy/RoleSelector.tsx +8 -1
  457. package/src/identity-provider/CreateIdentityProviderForm.tsx +13 -31
  458. package/src/identity-provider/IdentityProviderDetailPanel.tsx +24 -49
  459. package/src/identity-provider/IdentityProviderListPanel.tsx +2 -18
  460. package/src/identity-provider/IdentityProviderWizard.tsx +15 -32
  461. package/src/identity-provider/SsoLoginPrompt.tsx +6 -21
  462. package/src/index.ts +23 -1
  463. package/src/internal/DecisionButton.tsx +1 -20
  464. package/src/internal/SpinnerIcon.tsx +42 -0
  465. package/src/internal/__tests__/ThreadCardShell.test.tsx +43 -7
  466. package/src/internal/__tests__/useCopyFeedback.test.ts +92 -0
  467. package/src/internal/select-element-text.ts +17 -0
  468. package/src/internal/thread-card/ThreadCardShell.tsx +53 -21
  469. package/src/internal/thread-card/glyphs.tsx +24 -3
  470. package/src/internal/thread-card/index.ts +1 -0
  471. package/src/internal/useCopyFeedback.ts +61 -0
  472. package/src/invitation/InvitationCreatedAlert.tsx +10 -18
  473. package/src/invitation/InvitationManager.tsx +23 -34
  474. package/src/invitation/InvitationRedemption.tsx +2 -18
  475. package/src/library/useExportResource.ts +15 -29
  476. package/src/manifest/ApplyManifestDialog.tsx +1 -1
  477. package/src/manifest/EditResourceYamlDialog.tsx +1 -1
  478. package/src/mcp-server/DefinitionDriftNotice.tsx +120 -0
  479. package/src/mcp-server/McpServerConnectDialog.tsx +1 -1
  480. package/src/mcp-server/McpServerDetailView.tsx +58 -26
  481. package/src/mcp-server/OAuthAppForm.tsx +2 -18
  482. package/src/mcp-server/__tests__/DefinitionDriftNotice.test.tsx +57 -0
  483. package/src/mcp-server/__tests__/definitionDrift.test.ts +245 -0
  484. package/src/mcp-server/__tests__/mcpServerToInput.test.ts +201 -0
  485. package/src/mcp-server/__tests__/useMcpServerDefinitionDrift.test.tsx +173 -0
  486. package/src/mcp-server/internal/definitionDrift.ts +158 -0
  487. package/src/mcp-server/internal/mcpServerToInput.ts +3 -0
  488. package/src/mcp-server/steps/EnvironmentAuthStep.tsx +19 -19
  489. package/src/mcp-server/steps/IdentityTransportStep.tsx +24 -23
  490. package/src/mcp-server/useMcpServerConnect.ts +1 -1
  491. package/src/mcp-server/useMcpServerDefinitionDrift.ts +95 -0
  492. package/src/models/ModelRegistryContext.ts +7 -1
  493. package/src/models/ModelSelector.tsx +37 -0
  494. package/src/models/__tests__/ModelSelector-visionIndicator.test.tsx +129 -0
  495. package/src/models/__tests__/resolveDefaultModel.test.ts +115 -0
  496. package/src/models/__tests__/useModelRegistry.test.tsx +99 -4
  497. package/src/models/index.ts +2 -2
  498. package/src/models/registry.ts +196 -29
  499. package/src/models/useModelRegistry.ts +10 -2
  500. package/src/oauth-app/CreateOAuthAppForm.tsx +16 -31
  501. package/src/oauth-app/OAuthAppDetailPanel.tsx +16 -31
  502. package/src/organization/CreateOrganizationForm.tsx +10 -29
  503. package/src/organization/OrgProfilePanel.tsx +13 -44
  504. package/src/platform-client/CreatePlatformClientForm.tsx +9 -29
  505. package/src/platform-client/PlatformClientDetailPanel.tsx +10 -30
  506. package/src/platform-client/PlatformClientListPanel.tsx +2 -18
  507. package/src/platform-client/PlatformClientSecretAlert.tsx +26 -55
  508. package/src/provider.tsx +76 -33
  509. package/src/resource-creation/WizardNav.tsx +2 -18
  510. package/src/resource-detail/ConfirmDialog.tsx +1 -1
  511. package/src/resource-detail/useCopyResource.ts +17 -23
  512. package/src/schedule/ScheduleDetailView.tsx +2 -18
  513. package/src/schedule/ScheduleForm.tsx +19 -34
  514. package/src/session/NewSessionViewer.tsx +85 -7
  515. package/src/session/SessionViewer.tsx +120 -17
  516. package/src/session/__tests__/audienceWiring.test.tsx +76 -0
  517. package/src/session/__tests__/panelNegotiation.test.tsx +302 -0
  518. package/src/session/__tests__/useNewSessionFlow.test.tsx +134 -5
  519. package/src/session/__tests__/useSessionPageFlow.autoApprove.test.tsx +74 -0
  520. package/src/session/__tests__/useSessionPageFlow.runConfig.test.tsx +157 -0
  521. package/src/session/__tests__/useSessionPanel.test.ts +114 -0
  522. package/src/session/audience.ts +18 -0
  523. package/src/session/index.ts +2 -1
  524. package/src/session/run-config.ts +59 -0
  525. package/src/session/useNewSessionFlow.ts +39 -2
  526. package/src/session/useSessionConversation.ts +10 -8
  527. package/src/session/useSessionPageFlow.ts +51 -10
  528. package/src/session/useSessionPanel.ts +91 -10
  529. package/src/settings/ApiKeysSection.tsx +4 -3
  530. package/src/settings/ChannelAppsSection.tsx +4 -3
  531. package/src/settings/EnvironmentsSection.tsx +8 -5
  532. package/src/settings/IdentityProvidersSection.tsx +4 -3
  533. package/src/settings/InvitationsSection.tsx +4 -2
  534. package/src/settings/MembersSection.tsx +4 -2
  535. package/src/settings/OAuthAppsSection.tsx +4 -3
  536. package/src/settings/OrgProfileSection.tsx +4 -3
  537. package/src/settings/PlatformClientsSection.tsx +4 -3
  538. package/src/settings/UsageSection.tsx +4 -2
  539. package/src/sharing/ShareAgentDialog.tsx +28 -10
  540. package/src/sidebar/__tests__/WorkspaceSidebar.test.tsx +4 -1
  541. package/src/sidebar/chrome.tsx +6 -6
  542. package/src/skill/SkillDiffDialog.tsx +1 -1
  543. package/src/styles.css +43 -0
  544. package/src/version-history/VersionTimelineEntry.tsx +1 -21
  545. package/src/workflow/FailedRunsWidget.tsx +2 -9
  546. package/src/workflow/PendingApprovalsWidget.tsx +2 -9
  547. package/src/workflow/ViewYamlDialog.tsx +7 -22
  548. package/src/workflow/WorkflowArchitectDialog.tsx +8 -27
  549. package/src/workflow/WorkflowArtifactDocument.tsx +5 -9
  550. package/src/workflow/WorkflowCanvasEditor.tsx +2 -0
  551. package/src/workflow/WorkflowCanvasInner.tsx +14 -1
  552. package/src/workflow/WorkflowDiffGraph.tsx +7 -1
  553. package/src/workflow/WorkflowExecutionViewer.tsx +88 -11
  554. package/src/workflow/WorkflowExplainDialog.tsx +8 -24
  555. package/src/workflow/WorkflowOverviewGraph.tsx +9 -1
  556. package/src/workflow/WorkflowRefinePanel.tsx +2 -18
  557. package/src/workflow/WorkflowRepairCard.tsx +2 -18
  558. package/src/workflow/WorkflowRunDialog.tsx +3 -23
  559. package/src/workflow/WorkflowTaskApprovalSummary.tsx +2 -17
  560. package/src/workflow/WorkflowVersionBadge.tsx +4 -13
  561. package/src/workflow/WorkflowVersionTimeline.tsx +1 -25
  562. package/src/workflow/__tests__/panelNegotiation.test.tsx +230 -0
  563. package/src/workflow/__tests__/useWorkflowCanvas.dirty.test.tsx +178 -0
  564. package/src/workflow/__tests__/useWorkflowCanvas.drag.test.tsx +224 -0
  565. package/src/workflow/__tests__/useWorkflowExecutionPanel.test.ts +100 -0
  566. package/src/workflow/execution-comparison/ExecutionComparisonPicker.tsx +7 -11
  567. package/src/workflow/execution-history/ExecutionHistoryTable.tsx +1 -25
  568. package/src/workflow/index.ts +1 -0
  569. package/src/workflow/instance/CreateWorkflowInstanceDialog.tsx +1 -1
  570. package/src/workflow/instance/WorkflowInstanceDetailPanel.tsx +2 -1
  571. package/src/workflow/picker/BranchAddPopover.tsx +4 -3
  572. package/src/workflow/templates/WorkflowTemplatePreview.tsx +1 -1
  573. package/src/workflow/useApprovalBoundary.ts +1 -1
  574. package/src/workflow/useWorkflowCanvas.ts +114 -11
  575. package/src/workflow/useWorkflowExecutionPanel.ts +95 -13
  576. package/styles.css +1 -1
  577. package/version-history/VersionTimelineEntry.d.ts.map +1 -1
  578. package/version-history/VersionTimelineEntry.js +1 -23
  579. package/version-history/VersionTimelineEntry.js.map +1 -1
  580. package/workflow/CanvasTransitionEdge.d.ts +1 -1
  581. package/workflow/FailedRunsWidget.d.ts.map +1 -1
  582. package/workflow/FailedRunsWidget.js +2 -11
  583. package/workflow/FailedRunsWidget.js.map +1 -1
  584. package/workflow/PendingApprovalsWidget.d.ts.map +1 -1
  585. package/workflow/PendingApprovalsWidget.js +2 -11
  586. package/workflow/PendingApprovalsWidget.js.map +1 -1
  587. package/workflow/ViewYamlDialog.d.ts.map +1 -1
  588. package/workflow/ViewYamlDialog.js +7 -23
  589. package/workflow/ViewYamlDialog.js.map +1 -1
  590. package/workflow/WorkflowArchitectDialog.d.ts.map +1 -1
  591. package/workflow/WorkflowArchitectDialog.js +7 -11
  592. package/workflow/WorkflowArchitectDialog.js.map +1 -1
  593. package/workflow/WorkflowArtifactDocument.d.ts.map +1 -1
  594. package/workflow/WorkflowArtifactDocument.js +5 -8
  595. package/workflow/WorkflowArtifactDocument.js.map +1 -1
  596. package/workflow/WorkflowCanvasEditor.d.ts.map +1 -1
  597. package/workflow/WorkflowCanvasEditor.js +1 -1
  598. package/workflow/WorkflowCanvasEditor.js.map +1 -1
  599. package/workflow/WorkflowCanvasInner.d.ts +4 -2
  600. package/workflow/WorkflowCanvasInner.d.ts.map +1 -1
  601. package/workflow/WorkflowCanvasInner.js +7 -3
  602. package/workflow/WorkflowCanvasInner.js.map +1 -1
  603. package/workflow/WorkflowDiffGraph.js +6 -2
  604. package/workflow/WorkflowDiffGraph.js.map +1 -1
  605. package/workflow/WorkflowExecutionViewer.d.ts +51 -0
  606. package/workflow/WorkflowExecutionViewer.d.ts.map +1 -1
  607. package/workflow/WorkflowExecutionViewer.js +23 -6
  608. package/workflow/WorkflowExecutionViewer.js.map +1 -1
  609. package/workflow/WorkflowExplainDialog.d.ts.map +1 -1
  610. package/workflow/WorkflowExplainDialog.js +6 -8
  611. package/workflow/WorkflowExplainDialog.js.map +1 -1
  612. package/workflow/WorkflowOverviewGraph.js +8 -2
  613. package/workflow/WorkflowOverviewGraph.js.map +1 -1
  614. package/workflow/WorkflowRefinePanel.d.ts.map +1 -1
  615. package/workflow/WorkflowRefinePanel.js +2 -4
  616. package/workflow/WorkflowRefinePanel.js.map +1 -1
  617. package/workflow/WorkflowRepairCard.d.ts.map +1 -1
  618. package/workflow/WorkflowRepairCard.js +2 -4
  619. package/workflow/WorkflowRepairCard.js.map +1 -1
  620. package/workflow/WorkflowRunDialog.d.ts.map +1 -1
  621. package/workflow/WorkflowRunDialog.js +2 -7
  622. package/workflow/WorkflowRunDialog.js.map +1 -1
  623. package/workflow/WorkflowTaskApprovalSummary.d.ts.map +1 -1
  624. package/workflow/WorkflowTaskApprovalSummary.js +2 -4
  625. package/workflow/WorkflowTaskApprovalSummary.js.map +1 -1
  626. package/workflow/WorkflowVersionBadge.d.ts.map +1 -1
  627. package/workflow/WorkflowVersionBadge.js +4 -13
  628. package/workflow/WorkflowVersionBadge.js.map +1 -1
  629. package/workflow/WorkflowVersionTimeline.d.ts.map +1 -1
  630. package/workflow/WorkflowVersionTimeline.js +1 -26
  631. package/workflow/WorkflowVersionTimeline.js.map +1 -1
  632. package/workflow/execution-comparison/ExecutionComparisonPicker.d.ts.map +1 -1
  633. package/workflow/execution-comparison/ExecutionComparisonPicker.js +7 -15
  634. package/workflow/execution-comparison/ExecutionComparisonPicker.js.map +1 -1
  635. package/workflow/execution-history/ExecutionHistoryTable.d.ts.map +1 -1
  636. package/workflow/execution-history/ExecutionHistoryTable.js +1 -24
  637. package/workflow/execution-history/ExecutionHistoryTable.js.map +1 -1
  638. package/workflow/index.d.ts +1 -1
  639. package/workflow/index.d.ts.map +1 -1
  640. package/workflow/index.js.map +1 -1
  641. package/workflow/instance/CreateWorkflowInstanceDialog.js +1 -1
  642. package/workflow/instance/WorkflowInstanceDetailPanel.d.ts.map +1 -1
  643. package/workflow/instance/WorkflowInstanceDetailPanel.js +1 -1
  644. package/workflow/instance/WorkflowInstanceDetailPanel.js.map +1 -1
  645. package/workflow/picker/BranchAddPopover.d.ts.map +1 -1
  646. package/workflow/picker/BranchAddPopover.js +3 -2
  647. package/workflow/picker/BranchAddPopover.js.map +1 -1
  648. package/workflow/templates/WorkflowTemplatePreview.js +1 -1
  649. package/workflow/useApprovalBoundary.d.ts +1 -1
  650. package/workflow/useApprovalBoundary.js +1 -1
  651. package/workflow/useWorkflowCanvas.d.ts +5 -1
  652. package/workflow/useWorkflowCanvas.d.ts.map +1 -1
  653. package/workflow/useWorkflowCanvas.js +99 -13
  654. package/workflow/useWorkflowCanvas.js.map +1 -1
  655. package/workflow/useWorkflowExecutionPanel.d.ts +38 -2
  656. package/workflow/useWorkflowExecutionPanel.d.ts.map +1 -1
  657. package/workflow/useWorkflowExecutionPanel.js +46 -13
  658. package/workflow/useWorkflowExecutionPanel.js.map +1 -1
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
 
3
- import { useCallback, useRef, useState } from "react";
3
+ import { useCallback, useId, useRef, useState } from "react";
4
4
  import { cn } from "@stigmer/theme";
5
5
  import { getUserMessage, type ResourceRef } from "@stigmer/sdk";
6
6
  import type { Agent } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/api_pb";
@@ -53,6 +53,12 @@ export function ChannelCredentialsDialog({
53
53
  }: ChannelCredentialsDialogProps) {
54
54
  const dialogRef = useRef<HTMLDialogElement>(null);
55
55
 
56
+ // Instance-scoped title id (oss#593): a reusable component must not
57
+ // hardcode DOM ids — hosts legitimately mount this dialog more than once
58
+ // per page (e.g. zone-cached detail pages), and duplicate ids break the
59
+ // aria-labelledby association for every copy after the first.
60
+ const titleId = useId();
61
+
56
62
  const handleClose = useCallback(() => {
57
63
  dialogRef.current?.close();
58
64
  onOpenChange(false);
@@ -80,9 +86,9 @@ export function ChannelCredentialsDialog({
80
86
  onClose={handleClose}
81
87
  className={cn(
82
88
  "stg:w-full stg:max-w-md stg:rounded-xl stg:border stg:border-border stg:bg-popover stg:p-0 stg:shadow-xl",
83
- modal ? "stg:fixed stg:inset-0 stg:m-auto stg:backdrop:bg-black/50" : "stg:relative",
89
+ modal ? "stg:fixed stg:inset-0 stg:m-auto stg:backdrop:bg-backdrop" : "stg:relative",
84
90
  )}
85
- aria-labelledby="channel-credentials-title"
91
+ aria-labelledby={titleId}
86
92
  >
87
93
  {/* Body mounts only while open so its draft resets per session —
88
94
  reopening never resumes stale, unsaved edits. */}
@@ -92,6 +98,7 @@ export function ChannelCredentialsDialog({
92
98
  channel={channel}
93
99
  onSaved={onSaved}
94
100
  onClose={handleClose}
101
+ titleId={titleId}
95
102
  />
96
103
  )}
97
104
  </dialog>
@@ -103,11 +110,14 @@ function ChannelCredentialsDialogBody({
103
110
  channel,
104
111
  onSaved,
105
112
  onClose,
113
+ titleId,
106
114
  }: {
107
115
  readonly agent: Agent;
108
116
  readonly channel: AgentChannel;
109
117
  readonly onSaved?: () => void;
110
118
  readonly onClose: () => void;
119
+ /** Heading id minted by the outer dialog for its aria-labelledby. */
120
+ readonly titleId: string;
111
121
  }) {
112
122
  const channelName =
113
123
  channel.metadata?.name || channel.metadata?.slug || "this channel";
@@ -142,7 +152,7 @@ function ChannelCredentialsDialogBody({
142
152
  <div className="stg:flex stg:items-start stg:justify-between stg:gap-3 stg:border-b stg:border-border stg:px-5 stg:py-4">
143
153
  <div className="stg:min-w-0">
144
154
  <h2
145
- id="channel-credentials-title"
155
+ id={titleId}
146
156
  className="stg:text-sm stg:font-semibold stg:text-foreground"
147
157
  >
148
158
  Tool credentials
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
 
3
- import { useCallback, useRef, type ReactNode } from "react";
3
+ import { useCallback, useId, useRef, type ReactNode } from "react";
4
4
  import { ExternalLink, LayoutTemplate, X } from "lucide-react";
5
5
  import { cn } from "@stigmer/theme";
6
6
  import { getUserMessage } from "@stigmer/sdk";
@@ -90,6 +90,7 @@ export function ChannelTemplatesDialog({
90
90
  modal = true,
91
91
  }: ChannelTemplatesDialogProps) {
92
92
  const dialogRef = useRef<HTMLDialogElement>(null);
93
+ const titleId = useId();
93
94
 
94
95
  const handleClose = useCallback(() => {
95
96
  dialogRef.current?.close();
@@ -120,14 +121,15 @@ export function ChannelTemplatesDialog({
120
121
  // Wider than the conversations dialog on purpose: template
121
122
  // bodies are the content, and a narrow column shreds them.
122
123
  "stg:w-full stg:max-w-2xl stg:rounded-xl stg:border stg:border-border stg:bg-popover stg:p-0 stg:shadow-xl",
123
- modal ? "stg:fixed stg:inset-0 stg:m-auto stg:backdrop:bg-black/50" : "stg:relative",
124
+ modal ? "stg:fixed stg:inset-0 stg:m-auto stg:backdrop:bg-backdrop" : "stg:relative",
124
125
  )}
125
- aria-labelledby="channel-templates-title"
126
+ aria-labelledby={titleId}
126
127
  >
127
128
  {/* Body mounts only while open so each opening fetches fresh —
128
129
  approval statuses change on the provider's side at any time. */}
129
130
  {open && (
130
131
  <ChannelTemplatesDialogBody
132
+ titleId={titleId}
131
133
  channel={channel}
132
134
  onEditYaml={onEditYaml}
133
135
  onClose={handleClose}
@@ -138,10 +140,12 @@ export function ChannelTemplatesDialog({
138
140
  }
139
141
 
140
142
  function ChannelTemplatesDialogBody({
143
+ titleId,
141
144
  channel,
142
145
  onEditYaml,
143
146
  onClose,
144
147
  }: {
148
+ readonly titleId: string;
145
149
  readonly channel: AgentChannel;
146
150
  readonly onEditYaml?: () => void;
147
151
  readonly onClose: () => void;
@@ -154,7 +158,7 @@ function ChannelTemplatesDialogBody({
154
158
  <div className="stg:flex stg:items-start stg:justify-between stg:gap-3 stg:border-b stg:border-border stg:px-5 stg:py-4">
155
159
  <div className="stg:min-w-0">
156
160
  <h2
157
- id="channel-templates-title"
161
+ id={titleId}
158
162
  className="stg:text-sm stg:font-semibold stg:text-popover-foreground"
159
163
  >
160
164
  Templates
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
 
3
- import { useCallback, useMemo, useRef, useState } from "react";
3
+ import { useCallback, useId, useMemo, useRef, useState } from "react";
4
4
  import { cn } from "@stigmer/theme";
5
5
  import { getErrorReason, type ResourceRef } from "@stigmer/sdk";
6
6
  import type { Agent } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/api_pb";
@@ -91,6 +91,12 @@ export function ConnectSlackDialog({
91
91
  }: ConnectSlackDialogProps) {
92
92
  const dialogRef = useRef<HTMLDialogElement>(null);
93
93
 
94
+ // Instance-scoped title id (oss#593): a reusable component must not
95
+ // hardcode DOM ids — hosts legitimately mount this dialog more than once
96
+ // per page (e.g. zone-cached detail pages), and duplicate ids break the
97
+ // aria-labelledby association for every copy after the first.
98
+ const titleId = useId();
99
+
94
100
  const handleClose = useCallback(() => {
95
101
  dialogRef.current?.close();
96
102
  onOpenChange(false);
@@ -120,9 +126,9 @@ export function ConnectSlackDialog({
120
126
  onClose={handleClose}
121
127
  className={cn(
122
128
  "stg:w-full stg:max-w-md stg:rounded-xl stg:border stg:border-border stg:bg-popover stg:p-0 stg:shadow-xl",
123
- modal ? "stg:fixed stg:inset-0 stg:m-auto stg:backdrop:bg-black/50" : "stg:relative",
129
+ modal ? "stg:fixed stg:inset-0 stg:m-auto stg:backdrop:bg-backdrop" : "stg:relative",
124
130
  )}
125
- aria-labelledby="connect-slack-title"
131
+ aria-labelledby={titleId}
126
132
  >
127
133
  {/* Body mounts only while open so its flow state resets per
128
134
  session — reopening the dialog never resumes a stale flow. */}
@@ -132,6 +138,7 @@ export function ConnectSlackDialog({
132
138
  channel={channel ?? null}
133
139
  onChannelsChanged={onChannelsChanged}
134
140
  onClose={handleClose}
141
+ titleId={titleId}
135
142
  channelAppsHref={channelAppsHref}
136
143
  />
137
144
  )}
@@ -149,6 +156,8 @@ interface ConnectSlackDialogBodyProps {
149
156
  readonly onChannelsChanged?: () => void;
150
157
  readonly onClose: () => void;
151
158
  readonly channelAppsHref?: string;
159
+ /** Heading id minted by the outer dialog for its aria-labelledby. */
160
+ readonly titleId: string;
152
161
  }
153
162
 
154
163
  function ConnectSlackDialogBody({
@@ -157,6 +166,7 @@ function ConnectSlackDialogBody({
157
166
  onChannelsChanged,
158
167
  onClose,
159
168
  channelAppsHref,
169
+ titleId,
160
170
  }: ConnectSlackDialogBodyProps) {
161
171
  const deploymentMode = useDeploymentMode();
162
172
  const agentName = agent.metadata?.name || agent.metadata?.slug || "this agent";
@@ -276,7 +286,7 @@ function ConnectSlackDialogBody({
276
286
  <div className="stg:flex stg:items-start stg:justify-between stg:gap-3 stg:border-b stg:border-border stg:px-5 stg:py-4">
277
287
  <div className="stg:flex stg:items-center stg:gap-2.5">
278
288
  <SlackMarkIcon className="stg:size-5 stg:text-foreground" />
279
- <h2 id="connect-slack-title" className="stg:text-sm stg:font-semibold stg:text-foreground">
289
+ <h2 id={titleId} className="stg:text-sm stg:font-semibold stg:text-foreground">
280
290
  {channel ? "Reconnect to Slack" : "Connect to Slack"}
281
291
  </h2>
282
292
  </div>
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
 
3
- import { useCallback, useMemo, useRef, useState } from "react";
3
+ import { useCallback, useId, useMemo, useRef, useState } from "react";
4
4
  import { cn } from "@stigmer/theme";
5
5
  import { getErrorReason, type ResourceRef } from "@stigmer/sdk";
6
6
  import type { Agent } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/api_pb";
@@ -102,6 +102,12 @@ export function ConnectWhatsAppDialog({
102
102
  }: ConnectWhatsAppDialogProps) {
103
103
  const dialogRef = useRef<HTMLDialogElement>(null);
104
104
 
105
+ // Instance-scoped title id (oss#593): a reusable component must not
106
+ // hardcode DOM ids — hosts legitimately mount this dialog more than once
107
+ // per page (e.g. zone-cached detail pages), and duplicate ids break the
108
+ // aria-labelledby association for every copy after the first.
109
+ const titleId = useId();
110
+
105
111
  const handleClose = useCallback(() => {
106
112
  dialogRef.current?.close();
107
113
  onOpenChange(false);
@@ -131,9 +137,9 @@ export function ConnectWhatsAppDialog({
131
137
  onClose={handleClose}
132
138
  className={cn(
133
139
  "stg:w-full stg:max-w-md stg:rounded-xl stg:border stg:border-border stg:bg-popover stg:p-0 stg:shadow-xl",
134
- modal ? "stg:fixed stg:inset-0 stg:m-auto stg:backdrop:bg-black/50" : "stg:relative",
140
+ modal ? "stg:fixed stg:inset-0 stg:m-auto stg:backdrop:bg-backdrop" : "stg:relative",
135
141
  )}
136
- aria-labelledby="connect-whatsapp-title"
142
+ aria-labelledby={titleId}
137
143
  >
138
144
  {/* Body mounts only while open so its flow state resets per
139
145
  session — reopening the dialog never resumes a stale flow. */}
@@ -144,6 +150,7 @@ export function ConnectWhatsAppDialog({
144
150
  onChannelsChanged={onChannelsChanged}
145
151
  onClose={handleClose}
146
152
  channelAppsHref={channelAppsHref}
153
+ titleId={titleId}
147
154
  />
148
155
  )}
149
156
  </dialog>
@@ -160,6 +167,8 @@ interface ConnectWhatsAppDialogBodyProps {
160
167
  readonly onChannelsChanged?: () => void;
161
168
  readonly onClose: () => void;
162
169
  readonly channelAppsHref?: string;
170
+ /** Heading id minted by the outer dialog for its aria-labelledby. */
171
+ readonly titleId: string;
163
172
  }
164
173
 
165
174
  function ConnectWhatsAppDialogBody({
@@ -168,6 +177,7 @@ function ConnectWhatsAppDialogBody({
168
177
  onChannelsChanged,
169
178
  onClose,
170
179
  channelAppsHref,
180
+ titleId,
171
181
  }: ConnectWhatsAppDialogBodyProps) {
172
182
  const stigmer = useStigmer();
173
183
  const deploymentMode = useDeploymentMode();
@@ -314,7 +324,7 @@ function ConnectWhatsAppDialogBody({
314
324
  <div className="stg:flex stg:items-start stg:justify-between stg:gap-3 stg:border-b stg:border-border stg:px-5 stg:py-4">
315
325
  <div className="stg:flex stg:items-center stg:gap-2.5">
316
326
  <WhatsAppMarkIcon className="stg:size-5 stg:text-foreground" />
317
- <h2 id="connect-whatsapp-title" className="stg:text-sm stg:font-semibold stg:text-foreground">
327
+ <h2 id={titleId} className="stg:text-sm stg:font-semibold stg:text-foreground">
318
328
  {channel ? "Reconnect to WhatsApp" : "Connect to WhatsApp"}
319
329
  </h2>
320
330
  </div>
@@ -1,6 +1,9 @@
1
1
  "use client";
2
2
 
3
3
  import { create } from "@bufbuild/protobuf";
4
+ // AgentChannel is type-only here so the doc link below resolves (the sibling
5
+ // channel hooks import it for real use); the strict tsdoc gate guards it.
6
+ import type { AgentChannel } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/api_pb";
4
7
  import type { Session } from "@stigmer/protos/ai/stigmer/agentic/session/v1/api_pb";
5
8
  import { ListSessionsByChannelRequestSchema } from "@stigmer/protos/ai/stigmer/agentic/session/v1/io_pb";
6
9
  import { useStigmer } from "../hooks.js";
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
 
3
- import { useCallback, useMemo, useState, type FormEvent } from "react";
3
+ import { type FormEvent, useCallback, useId, useMemo, useState } from "react";
4
4
  import { cn } from "@stigmer/theme";
5
5
  import { getUserMessage } from "@stigmer/sdk";
6
6
  import type { ChannelApp } from "@stigmer/protos/ai/stigmer/agentic/channelapp/v1/api_pb";
@@ -17,7 +17,8 @@ import {
17
17
  WHATSAPP_CHANNEL_APP_WEBHOOK_FIELDS,
18
18
  whatsappChannelAppWebhookUrl,
19
19
  } from "./whatsappAppSetup.js";
20
- import { CopyBlock, CopyRow, FormField, SpinnerIcon } from "./internal.js";
20
+ import { CopyBlock, CopyRow, FormField } from "./internal.js";
21
+ import { SpinnerIcon } from "../internal/SpinnerIcon.js";
21
22
 
22
23
  // ---------------------------------------------------------------------------
23
24
  // Public API
@@ -148,7 +149,7 @@ export function ChannelAppDetailPanel({
148
149
  "stg:disabled:pointer-events-none stg:disabled:opacity-40",
149
150
  )}
150
151
  >
151
- {isDeleting && <SpinnerIcon />}
152
+ {isDeleting && <SpinnerIcon size={12} />}
152
153
  Delete
153
154
  </button>
154
155
  <button
@@ -187,6 +188,7 @@ function SlackAppDetail({
187
188
  readonly consoleOrigin?: string;
188
189
  readonly onUpdated?: (app: ChannelApp) => void;
189
190
  }) {
191
+ const baseId = useId();
190
192
  const stigmer = useStigmer();
191
193
  const { update, isUpdating, error: updateError, clearError } = useUpdateChannelApp();
192
194
 
@@ -277,7 +279,7 @@ function SlackAppDetail({
277
279
  </p>
278
280
 
279
281
  <FormField
280
- id="stgm-chapp-edit-client-id"
282
+ id={`${baseId}-client-id`}
281
283
  label="Client ID"
282
284
  value={clientId}
283
285
  onChange={setClientId}
@@ -286,7 +288,7 @@ function SlackAppDetail({
286
288
  required
287
289
  />
288
290
  <FormField
289
- id="stgm-chapp-edit-client-secret"
291
+ id={`${baseId}-client-secret`}
290
292
  label="Client secret"
291
293
  value={clientSecret}
292
294
  onChange={setClientSecret}
@@ -296,7 +298,7 @@ function SlackAppDetail({
296
298
  required
297
299
  />
298
300
  <FormField
299
- id="stgm-chapp-edit-signing-secret"
301
+ id={`${baseId}-signing-secret`}
300
302
  label="Signing secret"
301
303
  value={signingSecret}
302
304
  onChange={setSigningSecret}
@@ -321,7 +323,7 @@ function SlackAppDetail({
321
323
  "stg:disabled:pointer-events-none stg:disabled:opacity-40",
322
324
  )}
323
325
  >
324
- {isUpdating && <SpinnerIcon />}
326
+ {isUpdating && <SpinnerIcon size={12} />}
325
327
  Save credentials
326
328
  </button>
327
329
  </form>
@@ -342,6 +344,7 @@ function WhatsAppAppDetail({
342
344
  readonly createHandoff?: ChannelAppCreateHandoff;
343
345
  readonly onUpdated?: (app: ChannelApp) => void;
344
346
  }) {
347
+ const baseId = useId();
345
348
  const stigmer = useStigmer();
346
349
  const { update, isUpdating, error: updateError, clearError } = useUpdateChannelApp();
347
350
 
@@ -446,7 +449,7 @@ function WhatsAppAppDetail({
446
449
  </p>
447
450
 
448
451
  <FormField
449
- id="stgm-chapp-edit-app-id"
452
+ id={`${baseId}-app-id`}
450
453
  label="App ID"
451
454
  value={metaAppId}
452
455
  onChange={setMetaAppId}
@@ -455,7 +458,7 @@ function WhatsAppAppDetail({
455
458
  required
456
459
  />
457
460
  <FormField
458
- id="stgm-chapp-edit-app-secret"
461
+ id={`${baseId}-app-secret`}
459
462
  label="App secret"
460
463
  value={appSecret}
461
464
  onChange={setAppSecret}
@@ -465,7 +468,7 @@ function WhatsAppAppDetail({
465
468
  required
466
469
  />
467
470
  <FormField
468
- id="stgm-chapp-edit-access-token"
471
+ id={`${baseId}-access-token`}
469
472
  label="Access token"
470
473
  value={accessToken}
471
474
  onChange={setAccessToken}
@@ -475,7 +478,7 @@ function WhatsAppAppDetail({
475
478
  required
476
479
  />
477
480
  <FormField
478
- id="stgm-chapp-edit-verify-token"
481
+ id={`${baseId}-verify-token`}
479
482
  label="Verify token"
480
483
  value={verifyToken}
481
484
  onChange={setVerifyToken}
@@ -501,7 +504,7 @@ function WhatsAppAppDetail({
501
504
  "stg:disabled:pointer-events-none stg:disabled:opacity-40",
502
505
  )}
503
506
  >
504
- {isUpdating && <SpinnerIcon />}
507
+ {isUpdating && <SpinnerIcon size={12} />}
505
508
  Save credentials
506
509
  </button>
507
510
  </form>
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
 
3
- import { useCallback, useMemo, useState, type FormEvent } from "react";
3
+ import { type FormEvent, useCallback, useId, useMemo, useState } from "react";
4
4
  import { cn } from "@stigmer/theme";
5
5
  import { getUserMessage } from "@stigmer/sdk";
6
6
  import type { ChannelApp } from "@stigmer/protos/ai/stigmer/agentic/channelapp/v1/api_pb";
@@ -14,7 +14,8 @@ import {
14
14
  slackChannelAppRedirectUrl,
15
15
  } from "./slackAppSetup.js";
16
16
  import { generateWhatsAppVerifyToken } from "./whatsappAppSetup.js";
17
- import { CopyBlock, FormField, SpinnerIcon } from "./internal.js";
17
+ import { CopyBlock, FormField } from "./internal.js";
18
+ import { SpinnerIcon } from "../internal/SpinnerIcon.js";
18
19
 
19
20
  // ---------------------------------------------------------------------------
20
21
  // Public API
@@ -80,6 +81,7 @@ export function CreateChannelAppForm({
80
81
  onCancel,
81
82
  className,
82
83
  }: CreateChannelAppFormProps) {
84
+ const baseId = useId();
83
85
  const { create, isCreating, error, clearError } = useCreateChannelApp();
84
86
 
85
87
  const [provider, setProvider] = useState<ChannelProviderId>("slack");
@@ -185,7 +187,7 @@ export function CreateChannelAppForm({
185
187
  />
186
188
 
187
189
  <FormField
188
- id="stgm-chapp-name"
190
+ id={`${baseId}-name`}
189
191
  label="Name"
190
192
  value={name}
191
193
  onChange={setName}
@@ -241,7 +243,7 @@ export function CreateChannelAppForm({
241
243
  "stg:disabled:pointer-events-none stg:disabled:opacity-40",
242
244
  )}
243
245
  >
244
- {isCreating && <SpinnerIcon />}
246
+ {isCreating && <SpinnerIcon size={12} />}
245
247
  Register channel app
246
248
  </button>
247
249
 
@@ -282,6 +284,7 @@ function ProviderPicker({
282
284
  readonly onChange: (id: ChannelProviderId) => void;
283
285
  readonly disabled: boolean;
284
286
  }) {
287
+ const groupName = useId();
285
288
  return (
286
289
  <fieldset>
287
290
  <legend className="stg:mb-1.5 stg:block stg:text-xs stg:font-medium stg:text-foreground">
@@ -303,7 +306,7 @@ function ProviderPicker({
303
306
  <input
304
307
  id={`stgm-chapp-provider-${p.id}`}
305
308
  type="radio"
306
- name="stgm-chapp-provider"
309
+ name={`${groupName}-provider`}
307
310
  checked={checked}
308
311
  onChange={() => onChange(p.id)}
309
312
  disabled={disabled}
@@ -342,6 +345,7 @@ function SlackCreateSection({
342
345
  readonly onSigningSecretChange: (v: string) => void;
343
346
  readonly disabled: boolean;
344
347
  }) {
348
+ const baseId = useId();
345
349
  return (
346
350
  <>
347
351
  <div className="stg:space-y-1.5">
@@ -380,7 +384,7 @@ function SlackCreateSection({
380
384
  </p>
381
385
 
382
386
  <FormField
383
- id="stgm-chapp-client-id"
387
+ id={`${baseId}-client-id`}
384
388
  label="Client ID"
385
389
  value={clientId}
386
390
  onChange={onClientIdChange}
@@ -390,7 +394,7 @@ function SlackCreateSection({
390
394
  />
391
395
 
392
396
  <FormField
393
- id="stgm-chapp-client-secret"
397
+ id={`${baseId}-client-secret`}
394
398
  label="Client secret"
395
399
  value={clientSecret}
396
400
  onChange={onClientSecretChange}
@@ -401,7 +405,7 @@ function SlackCreateSection({
401
405
  />
402
406
 
403
407
  <FormField
404
- id="stgm-chapp-signing-secret"
408
+ id={`${baseId}-signing-secret`}
405
409
  label="Signing secret"
406
410
  value={signingSecret}
407
411
  onChange={onSigningSecretChange}
@@ -441,6 +445,7 @@ function WhatsAppCreateSection({
441
445
  readonly onVerifyTokenChange: (v: string) => void;
442
446
  readonly disabled: boolean;
443
447
  }) {
448
+ const baseId = useId();
444
449
  return (
445
450
  <>
446
451
  <div className="stg:space-y-1.5">
@@ -476,7 +481,7 @@ function WhatsAppCreateSection({
476
481
  </p>
477
482
 
478
483
  <FormField
479
- id="stgm-chapp-app-id"
484
+ id={`${baseId}-app-id`}
480
485
  label="App ID"
481
486
  value={appId}
482
487
  onChange={onAppIdChange}
@@ -486,7 +491,7 @@ function WhatsAppCreateSection({
486
491
  />
487
492
 
488
493
  <FormField
489
- id="stgm-chapp-app-secret"
494
+ id={`${baseId}-app-secret`}
490
495
  label="App secret"
491
496
  value={appSecret}
492
497
  onChange={onAppSecretChange}
@@ -498,7 +503,7 @@ function WhatsAppCreateSection({
498
503
  />
499
504
 
500
505
  <FormField
501
- id="stgm-chapp-access-token"
506
+ id={`${baseId}-access-token`}
502
507
  label="Access token"
503
508
  value={accessToken}
504
509
  onChange={onAccessTokenChange}
@@ -510,7 +515,7 @@ function WhatsAppCreateSection({
510
515
  />
511
516
 
512
517
  <FormField
513
- id="stgm-chapp-verify-token"
518
+ id={`${baseId}-verify-token`}
514
519
  label="Verify token"
515
520
  value={verifyToken}
516
521
  onChange={onVerifyTokenChange}
@@ -1,8 +1,9 @@
1
1
  "use client";
2
2
 
3
- import { useCallback, useState } from "react";
3
+ import { useCallback } from "react";
4
4
  import { cn } from "@stigmer/theme";
5
5
  import { TruncatedText } from "../internal/truncated-text.js";
6
+ import { useCopyFeedback } from "../internal/useCopyFeedback.js";
6
7
 
7
8
  /**
8
9
  * Internal building blocks shared by the channel-app forms and panels.
@@ -148,32 +149,11 @@ function CopyButton({
148
149
  }
149
150
 
150
151
  function useCopy(value: string) {
151
- const [copied, setCopied] = useState(false);
152
+ const { copy: copyText, copied } = useCopyFeedback();
152
153
 
153
154
  const copy = useCallback(() => {
154
- void navigator.clipboard.writeText(value).then(() => {
155
- setCopied(true);
156
- window.setTimeout(() => setCopied(false), 1500);
157
- });
158
- }, [value]);
155
+ void copyText(value);
156
+ }, [copyText, value]);
159
157
 
160
158
  return { copied, copy };
161
159
  }
162
-
163
- export function SpinnerIcon() {
164
- return (
165
- <svg
166
- width="12"
167
- height="12"
168
- viewBox="0 0 16 16"
169
- fill="none"
170
- stroke="currentColor"
171
- strokeWidth="2"
172
- strokeLinecap="round"
173
- className="stg:animate-spin"
174
- aria-hidden="true"
175
- >
176
- <path d="M8 2a6 6 0 1 0 6 6" />
177
- </svg>
178
- );
179
- }
@@ -18,9 +18,9 @@ import {
18
18
  PaperclipIcon,
19
19
  WorkspaceIcon,
20
20
  ArrowUpIcon,
21
- SpinnerIcon,
22
21
  StopIcon,
23
22
  } from "./icons.js";
23
+ import { SpinnerIcon } from "../internal/SpinnerIcon.js";
24
24
 
25
25
  export interface ComposerToolbarProps {
26
26
  readonly disabled: boolean;