@stigmer/react 3.12.0 → 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 (738) 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/execution/useCreateAgentExecution.d.ts +3 -2
  166. package/execution/useCreateAgentExecution.d.ts.map +1 -1
  167. package/execution/useCreateAgentExecution.js.map +1 -1
  168. package/iam-policy/GrantAccessForm.d.ts.map +1 -1
  169. package/iam-policy/GrantAccessForm.js +2 -4
  170. package/iam-policy/GrantAccessForm.js.map +1 -1
  171. package/iam-policy/OrgMembersPanel.d.ts.map +1 -1
  172. package/iam-policy/OrgMembersPanel.js +3 -5
  173. package/iam-policy/OrgMembersPanel.js.map +1 -1
  174. package/iam-policy/RoleSelector.d.ts.map +1 -1
  175. package/iam-policy/RoleSelector.js +7 -1
  176. package/iam-policy/RoleSelector.js.map +1 -1
  177. package/identity-provider/CreateIdentityProviderForm.d.ts.map +1 -1
  178. package/identity-provider/CreateIdentityProviderForm.js +6 -9
  179. package/identity-provider/CreateIdentityProviderForm.js.map +1 -1
  180. package/identity-provider/IdentityProviderDetailPanel.d.ts.map +1 -1
  181. package/identity-provider/IdentityProviderDetailPanel.js +17 -26
  182. package/identity-provider/IdentityProviderDetailPanel.js.map +1 -1
  183. package/identity-provider/IdentityProviderListPanel.d.ts.map +1 -1
  184. package/identity-provider/IdentityProviderListPanel.js +2 -4
  185. package/identity-provider/IdentityProviderListPanel.js.map +1 -1
  186. package/identity-provider/IdentityProviderWizard.d.ts.map +1 -1
  187. package/identity-provider/IdentityProviderWizard.js +8 -7
  188. package/identity-provider/IdentityProviderWizard.js.map +1 -1
  189. package/identity-provider/SsoLoginPrompt.js +5 -6
  190. package/identity-provider/SsoLoginPrompt.js.map +1 -1
  191. package/index.d.ts +9 -8
  192. package/index.d.ts.map +1 -1
  193. package/index.js +4 -4
  194. package/index.js.map +1 -1
  195. package/internal/DecisionButton.d.ts.map +1 -1
  196. package/internal/DecisionButton.js +1 -6
  197. package/internal/DecisionButton.js.map +1 -1
  198. package/internal/SpinnerIcon.d.ts +22 -0
  199. package/internal/SpinnerIcon.d.ts.map +1 -0
  200. package/internal/SpinnerIcon.js +23 -0
  201. package/internal/SpinnerIcon.js.map +1 -0
  202. package/internal/isUnimplemented.d.ts +17 -0
  203. package/internal/isUnimplemented.d.ts.map +1 -0
  204. package/internal/isUnimplemented.js +26 -0
  205. package/internal/isUnimplemented.js.map +1 -0
  206. package/internal/select-element-text.d.ts +11 -0
  207. package/internal/select-element-text.d.ts.map +1 -0
  208. package/internal/select-element-text.js +19 -0
  209. package/internal/select-element-text.js.map +1 -0
  210. package/internal/thread-card/ThreadCardShell.d.ts +27 -10
  211. package/internal/thread-card/ThreadCardShell.d.ts.map +1 -1
  212. package/internal/thread-card/ThreadCardShell.js +11 -5
  213. package/internal/thread-card/ThreadCardShell.js.map +1 -1
  214. package/internal/thread-card/glyphs.d.ts +11 -2
  215. package/internal/thread-card/glyphs.d.ts.map +1 -1
  216. package/internal/thread-card/glyphs.js +9 -3
  217. package/internal/thread-card/glyphs.js.map +1 -1
  218. package/internal/thread-card/index.d.ts +1 -1
  219. package/internal/thread-card/index.d.ts.map +1 -1
  220. package/internal/thread-card/index.js.map +1 -1
  221. package/internal/useCopyFeedback.d.ts +28 -0
  222. package/internal/useCopyFeedback.d.ts.map +1 -0
  223. package/internal/useCopyFeedback.js +40 -0
  224. package/internal/useCopyFeedback.js.map +1 -0
  225. package/invitation/InvitationCreatedAlert.d.ts.map +1 -1
  226. package/invitation/InvitationCreatedAlert.js +12 -19
  227. package/invitation/InvitationCreatedAlert.js.map +1 -1
  228. package/invitation/InvitationManager.d.ts.map +1 -1
  229. package/invitation/InvitationManager.js +14 -21
  230. package/invitation/InvitationManager.js.map +1 -1
  231. package/invitation/InvitationRedemption.d.ts.map +1 -1
  232. package/invitation/InvitationRedemption.js +2 -4
  233. package/invitation/InvitationRedemption.js.map +1 -1
  234. package/library/useExportResource.d.ts.map +1 -1
  235. package/library/useExportResource.js +16 -27
  236. package/library/useExportResource.js.map +1 -1
  237. package/manifest/ApplyManifestDialog.js +1 -1
  238. package/manifest/EditResourceYamlDialog.js +1 -1
  239. package/mcp-server/DefinitionDriftNotice.d.ts +42 -0
  240. package/mcp-server/DefinitionDriftNotice.d.ts.map +1 -0
  241. package/mcp-server/DefinitionDriftNotice.js +52 -0
  242. package/mcp-server/DefinitionDriftNotice.js.map +1 -0
  243. package/mcp-server/McpServerConnectDialog.js +8 -4
  244. package/mcp-server/McpServerConnectDialog.js.map +1 -1
  245. package/mcp-server/McpServerDetailView.d.ts.map +1 -1
  246. package/mcp-server/McpServerDetailView.js +47 -14
  247. package/mcp-server/McpServerDetailView.js.map +1 -1
  248. package/mcp-server/OAuthAppForm.d.ts.map +1 -1
  249. package/mcp-server/OAuthAppForm.js +2 -4
  250. package/mcp-server/OAuthAppForm.js.map +1 -1
  251. package/mcp-server/internal/definitionDrift.d.ts +39 -0
  252. package/mcp-server/internal/definitionDrift.d.ts.map +1 -0
  253. package/mcp-server/internal/definitionDrift.js +122 -0
  254. package/mcp-server/internal/definitionDrift.js.map +1 -0
  255. package/mcp-server/internal/mcpServerToInput.d.ts.map +1 -1
  256. package/mcp-server/internal/mcpServerToInput.js +3 -0
  257. package/mcp-server/internal/mcpServerToInput.js.map +1 -1
  258. package/mcp-server/steps/EnvironmentAuthStep.d.ts.map +1 -1
  259. package/mcp-server/steps/EnvironmentAuthStep.js +8 -4
  260. package/mcp-server/steps/EnvironmentAuthStep.js.map +1 -1
  261. package/mcp-server/steps/IdentityTransportStep.d.ts.map +1 -1
  262. package/mcp-server/steps/IdentityTransportStep.js +5 -4
  263. package/mcp-server/steps/IdentityTransportStep.js.map +1 -1
  264. package/mcp-server/useMcpServerConnect.d.ts +1 -1
  265. package/mcp-server/useMcpServerCredentials.d.ts +38 -10
  266. package/mcp-server/useMcpServerCredentials.d.ts.map +1 -1
  267. package/mcp-server/useMcpServerCredentials.js +50 -7
  268. package/mcp-server/useMcpServerCredentials.js.map +1 -1
  269. package/mcp-server/useMcpServerDefinitionDrift.d.ts +44 -0
  270. package/mcp-server/useMcpServerDefinitionDrift.d.ts.map +1 -0
  271. package/mcp-server/useMcpServerDefinitionDrift.js +61 -0
  272. package/mcp-server/useMcpServerDefinitionDrift.js.map +1 -0
  273. package/mcp-server/useOrgOAuthApp.d.ts +22 -0
  274. package/mcp-server/useOrgOAuthApp.d.ts.map +1 -1
  275. package/mcp-server/useOrgOAuthApp.js +39 -7
  276. package/mcp-server/useOrgOAuthApp.js.map +1 -1
  277. package/models/ModelRegistryContext.d.ts +7 -1
  278. package/models/ModelRegistryContext.d.ts.map +1 -1
  279. package/models/ModelRegistryContext.js.map +1 -1
  280. package/models/ModelSelector.js +9 -1
  281. package/models/ModelSelector.js.map +1 -1
  282. package/models/index.d.ts +2 -2
  283. package/models/index.d.ts.map +1 -1
  284. package/models/index.js +1 -1
  285. package/models/index.js.map +1 -1
  286. package/models/registry.d.ts +88 -6
  287. package/models/registry.d.ts.map +1 -1
  288. package/models/registry.js +133 -27
  289. package/models/registry.js.map +1 -1
  290. package/models/useModelRegistry.d.ts +7 -1
  291. package/models/useModelRegistry.d.ts.map +1 -1
  292. package/models/useModelRegistry.js +3 -2
  293. package/models/useModelRegistry.js.map +1 -1
  294. package/oauth-app/CreateOAuthAppForm.d.ts.map +1 -1
  295. package/oauth-app/CreateOAuthAppForm.js +4 -5
  296. package/oauth-app/CreateOAuthAppForm.js.map +1 -1
  297. package/oauth-app/OAuthAppDetailPanel.d.ts.map +1 -1
  298. package/oauth-app/OAuthAppDetailPanel.js +5 -6
  299. package/oauth-app/OAuthAppDetailPanel.js.map +1 -1
  300. package/organization/CreateOrganizationForm.d.ts.map +1 -1
  301. package/organization/CreateOrganizationForm.js +5 -9
  302. package/organization/CreateOrganizationForm.js.map +1 -1
  303. package/organization/OrgProfilePanel.d.ts.map +1 -1
  304. package/organization/OrgProfilePanel.js +7 -16
  305. package/organization/OrgProfilePanel.js.map +1 -1
  306. package/package.json +4 -4
  307. package/platform-client/CreatePlatformClientForm.d.ts.map +1 -1
  308. package/platform-client/CreatePlatformClientForm.js +5 -6
  309. package/platform-client/CreatePlatformClientForm.js.map +1 -1
  310. package/platform-client/PlatformClientDetailPanel.d.ts.map +1 -1
  311. package/platform-client/PlatformClientDetailPanel.js +6 -7
  312. package/platform-client/PlatformClientDetailPanel.js.map +1 -1
  313. package/platform-client/PlatformClientListPanel.d.ts.map +1 -1
  314. package/platform-client/PlatformClientListPanel.js +2 -4
  315. package/platform-client/PlatformClientListPanel.js.map +1 -1
  316. package/platform-client/PlatformClientSecretAlert.d.ts.map +1 -1
  317. package/platform-client/PlatformClientSecretAlert.js +18 -25
  318. package/platform-client/PlatformClientSecretAlert.js.map +1 -1
  319. package/provider.d.ts +34 -1
  320. package/provider.d.ts.map +1 -1
  321. package/provider.js +14 -7
  322. package/provider.js.map +1 -1
  323. package/resource-creation/WizardNav.d.ts.map +1 -1
  324. package/resource-creation/WizardNav.js +2 -4
  325. package/resource-creation/WizardNav.js.map +1 -1
  326. package/resource-detail/ConfirmDialog.js +1 -1
  327. package/resource-detail/useCopyResource.d.ts +4 -3
  328. package/resource-detail/useCopyResource.d.ts.map +1 -1
  329. package/resource-detail/useCopyResource.js +10 -19
  330. package/resource-detail/useCopyResource.js.map +1 -1
  331. package/schedule/ScheduleDetailView.d.ts.map +1 -1
  332. package/schedule/ScheduleDetailView.js +2 -4
  333. package/schedule/ScheduleDetailView.js.map +1 -1
  334. package/schedule/ScheduleForm.d.ts.map +1 -1
  335. package/schedule/ScheduleForm.js +6 -7
  336. package/schedule/ScheduleForm.js.map +1 -1
  337. package/session/NewSessionViewer.d.ts +52 -2
  338. package/session/NewSessionViewer.d.ts.map +1 -1
  339. package/session/NewSessionViewer.js +21 -6
  340. package/session/NewSessionViewer.js.map +1 -1
  341. package/session/SessionViewer.d.ts +63 -2
  342. package/session/SessionViewer.d.ts.map +1 -1
  343. package/session/SessionViewer.js +43 -17
  344. package/session/SessionViewer.js.map +1 -1
  345. package/session/audience.d.ts +17 -0
  346. package/session/audience.d.ts.map +1 -1
  347. package/session/index.d.ts +2 -1
  348. package/session/index.d.ts.map +1 -1
  349. package/session/index.js.map +1 -1
  350. package/session/run-config.d.ts +50 -0
  351. package/session/run-config.d.ts.map +1 -0
  352. package/session/run-config.js +15 -0
  353. package/session/run-config.js.map +1 -0
  354. package/session/useNewSessionFlow.d.ts +11 -0
  355. package/session/useNewSessionFlow.d.ts.map +1 -1
  356. package/session/useNewSessionFlow.js +29 -2
  357. package/session/useNewSessionFlow.js.map +1 -1
  358. package/session/useSessionConversation.d.ts +11 -9
  359. package/session/useSessionConversation.d.ts.map +1 -1
  360. package/session/useSessionConversation.js +2 -0
  361. package/session/useSessionConversation.js.map +1 -1
  362. package/session/useSessionPageFlow.d.ts +18 -4
  363. package/session/useSessionPageFlow.d.ts.map +1 -1
  364. package/session/useSessionPageFlow.js +33 -6
  365. package/session/useSessionPageFlow.js.map +1 -1
  366. package/session/useSessionPanel.d.ts +37 -2
  367. package/session/useSessionPanel.d.ts.map +1 -1
  368. package/session/useSessionPanel.js +44 -10
  369. package/session/useSessionPanel.js.map +1 -1
  370. package/settings/ApiKeysSection.d.ts.map +1 -1
  371. package/settings/ApiKeysSection.js +3 -2
  372. package/settings/ApiKeysSection.js.map +1 -1
  373. package/settings/ChannelAppsSection.d.ts.map +1 -1
  374. package/settings/ChannelAppsSection.js +3 -2
  375. package/settings/ChannelAppsSection.js.map +1 -1
  376. package/settings/EnvironmentsSection.js +5 -3
  377. package/settings/EnvironmentsSection.js.map +1 -1
  378. package/settings/IdentityProvidersSection.d.ts.map +1 -1
  379. package/settings/IdentityProvidersSection.js +3 -2
  380. package/settings/IdentityProvidersSection.js.map +1 -1
  381. package/settings/InvitationsSection.d.ts.map +1 -1
  382. package/settings/InvitationsSection.js +3 -1
  383. package/settings/InvitationsSection.js.map +1 -1
  384. package/settings/MembersSection.d.ts.map +1 -1
  385. package/settings/MembersSection.js +3 -1
  386. package/settings/MembersSection.js.map +1 -1
  387. package/settings/OAuthAppsSection.d.ts.map +1 -1
  388. package/settings/OAuthAppsSection.js +3 -2
  389. package/settings/OAuthAppsSection.js.map +1 -1
  390. package/settings/OrgProfileSection.d.ts.map +1 -1
  391. package/settings/OrgProfileSection.js +3 -2
  392. package/settings/OrgProfileSection.js.map +1 -1
  393. package/settings/PlatformClientsSection.d.ts.map +1 -1
  394. package/settings/PlatformClientsSection.js +3 -2
  395. package/settings/PlatformClientsSection.js.map +1 -1
  396. package/settings/UsageSection.d.ts.map +1 -1
  397. package/settings/UsageSection.js +3 -1
  398. package/settings/UsageSection.js.map +1 -1
  399. package/sharing/ShareAgentDialog.d.ts.map +1 -1
  400. package/sharing/ShareAgentDialog.js +18 -7
  401. package/sharing/ShareAgentDialog.js.map +1 -1
  402. package/sidebar/chrome.d.ts +3 -4
  403. package/sidebar/chrome.d.ts.map +1 -1
  404. package/sidebar/chrome.js +5 -4
  405. package/sidebar/chrome.js.map +1 -1
  406. package/skill/SkillDiffDialog.js +1 -1
  407. package/skill/useSkillVersions.d.ts.map +1 -1
  408. package/skill/useSkillVersions.js +1 -9
  409. package/skill/useSkillVersions.js.map +1 -1
  410. package/src/access/ManageAccessDialog.tsx +10 -4
  411. package/src/activity/format-relative-time.ts +11 -9
  412. package/src/agent/steps/CapabilitiesStep.tsx +6 -3
  413. package/src/agent/steps/IdentityStep.tsx +19 -12
  414. package/src/agent-instance/CreateAgentInstanceDialog.tsx +17 -8
  415. package/src/api-key/ApiKeyCreatedAlert.tsx +10 -19
  416. package/src/api-key/ApiKeyListPanel.tsx +3 -39
  417. package/src/api-key/CreateApiKeyForm.tsx +12 -26
  418. package/src/approval-defaults-context.ts +56 -0
  419. package/src/attachment/__tests__/vision-preflight.test.ts +311 -0
  420. package/src/attachment/index.ts +12 -0
  421. package/src/attachment/vision-preflight.ts +236 -0
  422. package/src/billing/AutoRechargeCard.tsx +5 -4
  423. package/src/billing/BillingSection.tsx +4 -3
  424. package/src/channel/ChannelConversationsDialog.tsx +8 -4
  425. package/src/channel/ChannelCredentialsDialog.tsx +14 -4
  426. package/src/channel/ChannelTemplatesDialog.tsx +8 -4
  427. package/src/channel/ConnectSlackDialog.tsx +14 -4
  428. package/src/channel/ConnectWhatsAppDialog.tsx +14 -4
  429. package/src/channel/useChannelSessions.ts +3 -0
  430. package/src/channel-app/ChannelAppDetailPanel.tsx +15 -12
  431. package/src/channel-app/CreateChannelAppForm.tsx +17 -12
  432. package/src/channel-app/internal.tsx +5 -25
  433. package/src/composer/ComposerToolbar.tsx +1 -1
  434. package/src/composer/SessionComposer.tsx +160 -13
  435. package/src/composer/__tests__/SessionComposer-modelCoherence.test.tsx +220 -0
  436. package/src/composer/__tests__/SessionComposer-visionPreflight.test.tsx +222 -0
  437. package/src/composer/icons.tsx +0 -18
  438. package/src/conversation/ConversationComposer.tsx +1 -1
  439. package/src/conversation/ConversationListPane.tsx +4 -3
  440. package/src/cursor-accounts/MemberCoverageTable.tsx +3 -14
  441. package/src/cursor-accounts/__tests__/CursorAccountsConsole.test.tsx +2 -10
  442. package/src/dashboard/DashboardFailedRuns.tsx +2 -12
  443. package/src/environment/CreateEnvironmentForm.tsx +8 -27
  444. package/src/environment/EnvVarForm.tsx +2 -18
  445. package/src/environment/EnvironmentVariableEditor.tsx +5 -21
  446. package/src/execution/ArtifactApplyButton.tsx +2 -17
  447. package/src/execution/ExecutionErrorNotice.tsx +99 -0
  448. package/src/execution/FilePathLink.tsx +5 -9
  449. package/src/execution/FileReviewCard.tsx +1 -20
  450. package/src/execution/FollowUpInput.tsx +1 -16
  451. package/src/execution/LivenessStatusLine.tsx +59 -0
  452. package/src/execution/MessageEntry.tsx +136 -25
  453. package/src/execution/MessageThread.tsx +84 -83
  454. package/src/execution/SetupProgress.tsx +5 -1
  455. package/src/execution/SubAgentSection.tsx +9 -20
  456. package/src/execution/TerminalSession.tsx +97 -10
  457. package/src/execution/ToolCallDetail.tsx +19 -0
  458. package/src/execution/ToolCallItem.tsx +157 -37
  459. package/src/execution/ToolRunGroup.tsx +30 -32
  460. package/src/execution/WriteBackCard.tsx +5 -24
  461. package/src/execution/__tests__/MessageEntry-copy.test.tsx +125 -0
  462. package/src/execution/__tests__/MessageThread.test.tsx +97 -0
  463. package/src/execution/__tests__/TerminalSession.test.tsx +71 -1
  464. package/src/execution/__tests__/ToolCallDetail.test.tsx +33 -1
  465. package/src/execution/__tests__/ToolCallItem.test.tsx +299 -11
  466. package/src/execution/__tests__/ToolRunGroup.test.tsx +41 -9
  467. package/src/execution/__tests__/message-thread-slots.test.tsx +92 -0
  468. package/src/execution/__tests__/tool-presenter.test.tsx +41 -4
  469. package/src/execution/index.ts +8 -2
  470. package/src/execution/tool-categories.ts +72 -8
  471. package/src/execution/tool-presenter.ts +22 -1
  472. package/src/execution/useArtifactInspection.ts +4 -8
  473. package/src/execution/useCreateAgentExecution.ts +3 -2
  474. package/src/iam-policy/GrantAccessForm.tsx +2 -18
  475. package/src/iam-policy/OrgMembersPanel.tsx +3 -19
  476. package/src/iam-policy/RoleSelector.tsx +8 -1
  477. package/src/identity-provider/CreateIdentityProviderForm.tsx +13 -31
  478. package/src/identity-provider/IdentityProviderDetailPanel.tsx +24 -49
  479. package/src/identity-provider/IdentityProviderListPanel.tsx +2 -18
  480. package/src/identity-provider/IdentityProviderWizard.tsx +15 -32
  481. package/src/identity-provider/SsoLoginPrompt.tsx +6 -21
  482. package/src/index.ts +23 -1
  483. package/src/internal/DecisionButton.tsx +1 -20
  484. package/src/internal/SpinnerIcon.tsx +42 -0
  485. package/src/internal/__tests__/ThreadCardShell.test.tsx +43 -7
  486. package/src/internal/__tests__/useCopyFeedback.test.ts +92 -0
  487. package/src/internal/isUnimplemented.ts +26 -0
  488. package/src/internal/select-element-text.ts +17 -0
  489. package/src/internal/thread-card/ThreadCardShell.tsx +53 -21
  490. package/src/internal/thread-card/glyphs.tsx +24 -3
  491. package/src/internal/thread-card/index.ts +1 -0
  492. package/src/internal/useCopyFeedback.ts +61 -0
  493. package/src/invitation/InvitationCreatedAlert.tsx +10 -18
  494. package/src/invitation/InvitationManager.tsx +23 -34
  495. package/src/invitation/InvitationRedemption.tsx +2 -18
  496. package/src/library/useExportResource.ts +15 -29
  497. package/src/manifest/ApplyManifestDialog.tsx +1 -1
  498. package/src/manifest/EditResourceYamlDialog.tsx +1 -1
  499. package/src/mcp-server/DefinitionDriftNotice.tsx +120 -0
  500. package/src/mcp-server/McpServerConnectDialog.tsx +30 -12
  501. package/src/mcp-server/McpServerDetailView.tsx +58 -26
  502. package/src/mcp-server/OAuthAppForm.tsx +2 -18
  503. package/src/mcp-server/__tests__/DefinitionDriftNotice.test.tsx +57 -0
  504. package/src/mcp-server/__tests__/VendorApprovalBlocked.surfaces.test.tsx +103 -5
  505. package/src/mcp-server/__tests__/byoaEditionDegradation.test.tsx +323 -0
  506. package/src/mcp-server/__tests__/definitionDrift.test.ts +245 -0
  507. package/src/mcp-server/__tests__/mcpServerToInput.test.ts +201 -0
  508. package/src/mcp-server/__tests__/useMcpServerCredentials.test.tsx +306 -0
  509. package/src/mcp-server/__tests__/useMcpServerDefinitionDrift.test.tsx +173 -0
  510. package/src/mcp-server/internal/definitionDrift.ts +158 -0
  511. package/src/mcp-server/internal/mcpServerToInput.ts +3 -0
  512. package/src/mcp-server/steps/EnvironmentAuthStep.tsx +19 -19
  513. package/src/mcp-server/steps/IdentityTransportStep.tsx +24 -23
  514. package/src/mcp-server/useMcpServerConnect.ts +1 -1
  515. package/src/mcp-server/useMcpServerCredentials.ts +87 -19
  516. package/src/mcp-server/useMcpServerDefinitionDrift.ts +95 -0
  517. package/src/mcp-server/useOrgOAuthApp.ts +54 -8
  518. package/src/models/ModelRegistryContext.ts +7 -1
  519. package/src/models/ModelSelector.tsx +37 -0
  520. package/src/models/__tests__/ModelSelector-visionIndicator.test.tsx +129 -0
  521. package/src/models/__tests__/resolveDefaultModel.test.ts +115 -0
  522. package/src/models/__tests__/useModelRegistry.test.tsx +99 -4
  523. package/src/models/index.ts +2 -2
  524. package/src/models/registry.ts +196 -29
  525. package/src/models/useModelRegistry.ts +10 -2
  526. package/src/oauth-app/CreateOAuthAppForm.tsx +16 -31
  527. package/src/oauth-app/OAuthAppDetailPanel.tsx +16 -31
  528. package/src/organization/CreateOrganizationForm.tsx +10 -29
  529. package/src/organization/OrgProfilePanel.tsx +13 -44
  530. package/src/platform-client/CreatePlatformClientForm.tsx +9 -29
  531. package/src/platform-client/PlatformClientDetailPanel.tsx +10 -30
  532. package/src/platform-client/PlatformClientListPanel.tsx +2 -18
  533. package/src/platform-client/PlatformClientSecretAlert.tsx +26 -55
  534. package/src/provider.tsx +76 -33
  535. package/src/resource-creation/WizardNav.tsx +2 -18
  536. package/src/resource-detail/ConfirmDialog.tsx +1 -1
  537. package/src/resource-detail/useCopyResource.ts +17 -23
  538. package/src/schedule/ScheduleDetailView.tsx +2 -18
  539. package/src/schedule/ScheduleForm.tsx +19 -34
  540. package/src/session/NewSessionViewer.tsx +85 -7
  541. package/src/session/SessionViewer.tsx +120 -17
  542. package/src/session/__tests__/audienceWiring.test.tsx +76 -0
  543. package/src/session/__tests__/panelNegotiation.test.tsx +302 -0
  544. package/src/session/__tests__/useNewSessionFlow.test.tsx +134 -5
  545. package/src/session/__tests__/useSessionPageFlow.autoApprove.test.tsx +74 -0
  546. package/src/session/__tests__/useSessionPageFlow.runConfig.test.tsx +157 -0
  547. package/src/session/__tests__/useSessionPanel.test.ts +114 -0
  548. package/src/session/audience.ts +18 -0
  549. package/src/session/index.ts +2 -1
  550. package/src/session/run-config.ts +59 -0
  551. package/src/session/useNewSessionFlow.ts +39 -2
  552. package/src/session/useSessionConversation.ts +14 -10
  553. package/src/session/useSessionPageFlow.ts +51 -10
  554. package/src/session/useSessionPanel.ts +91 -10
  555. package/src/settings/ApiKeysSection.tsx +4 -3
  556. package/src/settings/ChannelAppsSection.tsx +4 -3
  557. package/src/settings/EnvironmentsSection.tsx +8 -5
  558. package/src/settings/IdentityProvidersSection.tsx +4 -3
  559. package/src/settings/InvitationsSection.tsx +4 -2
  560. package/src/settings/MembersSection.tsx +4 -2
  561. package/src/settings/OAuthAppsSection.tsx +4 -3
  562. package/src/settings/OrgProfileSection.tsx +4 -3
  563. package/src/settings/PlatformClientsSection.tsx +4 -3
  564. package/src/settings/UsageSection.tsx +4 -2
  565. package/src/sharing/ShareAgentDialog.tsx +28 -10
  566. package/src/sidebar/__tests__/WorkspaceSidebar.test.tsx +4 -1
  567. package/src/sidebar/chrome.tsx +6 -6
  568. package/src/skill/SkillDiffDialog.tsx +1 -1
  569. package/src/skill/useSkillVersions.ts +1 -11
  570. package/src/styles.css +43 -0
  571. package/src/version-history/VersionTimelineEntry.tsx +1 -21
  572. package/src/workflow/FailedRunsWidget.tsx +2 -9
  573. package/src/workflow/PendingApprovalsWidget.tsx +2 -9
  574. package/src/workflow/ViewYamlDialog.tsx +7 -22
  575. package/src/workflow/WorkflowArchitectDialog.tsx +8 -27
  576. package/src/workflow/WorkflowArtifactDocument.tsx +5 -9
  577. package/src/workflow/WorkflowCanvasEditor.tsx +39 -7
  578. package/src/workflow/WorkflowCanvasInner.tsx +14 -1
  579. package/src/workflow/WorkflowDiffGraph.tsx +7 -1
  580. package/src/workflow/WorkflowExecutionGraph.tsx +26 -1
  581. package/src/workflow/WorkflowExecutionViewer.tsx +115 -24
  582. package/src/workflow/WorkflowExplainDialog.tsx +8 -24
  583. package/src/workflow/WorkflowNode.tsx +5 -2
  584. package/src/workflow/WorkflowOverviewGraph.tsx +9 -1
  585. package/src/workflow/WorkflowRefinePanel.tsx +2 -18
  586. package/src/workflow/WorkflowRepairCard.tsx +2 -18
  587. package/src/workflow/WorkflowRunDialog.tsx +31 -24
  588. package/src/workflow/WorkflowTaskApprovalSummary.tsx +2 -17
  589. package/src/workflow/WorkflowVersionBadge.tsx +4 -13
  590. package/src/workflow/WorkflowVersionTimeline.tsx +1 -25
  591. package/src/workflow/__tests__/WorkflowExecutionViewer.reconciliation.test.tsx +48 -1
  592. package/src/workflow/__tests__/WorkflowNode.test.tsx +93 -0
  593. package/src/workflow/__tests__/WorkflowRunDialog.test.tsx +127 -0
  594. package/src/workflow/__tests__/graph-history.test.ts +103 -0
  595. package/src/workflow/__tests__/overview-graph.test.ts +17 -0
  596. package/src/workflow/__tests__/panelNegotiation.test.tsx +230 -0
  597. package/src/workflow/__tests__/useCanvasKeyboardShortcuts.undo.test.ts +115 -0
  598. package/src/workflow/__tests__/useWorkflowCanvas.dirty.test.tsx +178 -0
  599. package/src/workflow/__tests__/useWorkflowCanvas.drag.test.tsx +224 -0
  600. package/src/workflow/__tests__/useWorkflowCanvas.undo.test.tsx +133 -0
  601. package/src/workflow/__tests__/useWorkflowExecutionPanel.test.ts +100 -0
  602. package/src/workflow/execution-comparison/ExecutionComparisonPicker.tsx +7 -11
  603. package/src/workflow/execution-history/ExecutionHistoryTable.tsx +1 -25
  604. package/src/workflow/index.ts +1 -0
  605. package/src/workflow/instance/CreateWorkflowInstanceDialog.tsx +17 -8
  606. package/src/workflow/instance/WorkflowInstanceDetailPanel.tsx +2 -1
  607. package/src/workflow/instance/useDeleteWorkflowInstance.ts +9 -4
  608. package/src/workflow/layout/registry-dimensions.ts +2 -5
  609. package/src/workflow/node-shell/NodeShell.tsx +4 -0
  610. package/src/workflow/picker/BranchAddPopover.tsx +4 -3
  611. package/src/workflow/task-type-visual-registry.ts +5 -3
  612. package/src/workflow/templates/WorkflowTemplatePreview.tsx +1 -1
  613. package/src/workflow/useApprovalBoundary.ts +1 -1
  614. package/src/workflow/useCanvasKeyboardShortcuts.ts +33 -3
  615. package/src/workflow/useGraphHistory.ts +22 -41
  616. package/src/workflow/useWorkflowCanvas.ts +126 -21
  617. package/src/workflow/useWorkflowExecutionPanel.ts +95 -13
  618. package/src/workflow/useWorkflowSave.ts +2 -15
  619. package/src/workflow/workflow-graph-conversions.ts +25 -3
  620. package/styles.css +1 -1
  621. package/version-history/VersionTimelineEntry.d.ts.map +1 -1
  622. package/version-history/VersionTimelineEntry.js +1 -23
  623. package/version-history/VersionTimelineEntry.js.map +1 -1
  624. package/workflow/CanvasTransitionEdge.d.ts +1 -1
  625. package/workflow/FailedRunsWidget.d.ts.map +1 -1
  626. package/workflow/FailedRunsWidget.js +2 -11
  627. package/workflow/FailedRunsWidget.js.map +1 -1
  628. package/workflow/PendingApprovalsWidget.d.ts.map +1 -1
  629. package/workflow/PendingApprovalsWidget.js +2 -11
  630. package/workflow/PendingApprovalsWidget.js.map +1 -1
  631. package/workflow/ViewYamlDialog.d.ts.map +1 -1
  632. package/workflow/ViewYamlDialog.js +7 -23
  633. package/workflow/ViewYamlDialog.js.map +1 -1
  634. package/workflow/WorkflowArchitectDialog.d.ts.map +1 -1
  635. package/workflow/WorkflowArchitectDialog.js +7 -11
  636. package/workflow/WorkflowArchitectDialog.js.map +1 -1
  637. package/workflow/WorkflowArtifactDocument.d.ts.map +1 -1
  638. package/workflow/WorkflowArtifactDocument.js +5 -8
  639. package/workflow/WorkflowArtifactDocument.js.map +1 -1
  640. package/workflow/WorkflowCanvasEditor.d.ts.map +1 -1
  641. package/workflow/WorkflowCanvasEditor.js +31 -6
  642. package/workflow/WorkflowCanvasEditor.js.map +1 -1
  643. package/workflow/WorkflowCanvasInner.d.ts +4 -2
  644. package/workflow/WorkflowCanvasInner.d.ts.map +1 -1
  645. package/workflow/WorkflowCanvasInner.js +7 -3
  646. package/workflow/WorkflowCanvasInner.js.map +1 -1
  647. package/workflow/WorkflowDiffGraph.js +6 -2
  648. package/workflow/WorkflowDiffGraph.js.map +1 -1
  649. package/workflow/WorkflowExecutionGraph.d.ts.map +1 -1
  650. package/workflow/WorkflowExecutionGraph.js +27 -1
  651. package/workflow/WorkflowExecutionGraph.js.map +1 -1
  652. package/workflow/WorkflowExecutionViewer.d.ts +51 -0
  653. package/workflow/WorkflowExecutionViewer.d.ts.map +1 -1
  654. package/workflow/WorkflowExecutionViewer.js +49 -18
  655. package/workflow/WorkflowExecutionViewer.js.map +1 -1
  656. package/workflow/WorkflowExplainDialog.d.ts.map +1 -1
  657. package/workflow/WorkflowExplainDialog.js +6 -8
  658. package/workflow/WorkflowExplainDialog.js.map +1 -1
  659. package/workflow/WorkflowNode.d.ts.map +1 -1
  660. package/workflow/WorkflowNode.js +2 -2
  661. package/workflow/WorkflowNode.js.map +1 -1
  662. package/workflow/WorkflowOverviewGraph.js +8 -2
  663. package/workflow/WorkflowOverviewGraph.js.map +1 -1
  664. package/workflow/WorkflowRefinePanel.d.ts.map +1 -1
  665. package/workflow/WorkflowRefinePanel.js +2 -4
  666. package/workflow/WorkflowRefinePanel.js.map +1 -1
  667. package/workflow/WorkflowRepairCard.d.ts.map +1 -1
  668. package/workflow/WorkflowRepairCard.js +2 -4
  669. package/workflow/WorkflowRepairCard.js.map +1 -1
  670. package/workflow/WorkflowRunDialog.d.ts +11 -1
  671. package/workflow/WorkflowRunDialog.d.ts.map +1 -1
  672. package/workflow/WorkflowRunDialog.js +18 -9
  673. package/workflow/WorkflowRunDialog.js.map +1 -1
  674. package/workflow/WorkflowTaskApprovalSummary.d.ts.map +1 -1
  675. package/workflow/WorkflowTaskApprovalSummary.js +2 -4
  676. package/workflow/WorkflowTaskApprovalSummary.js.map +1 -1
  677. package/workflow/WorkflowVersionBadge.d.ts.map +1 -1
  678. package/workflow/WorkflowVersionBadge.js +4 -13
  679. package/workflow/WorkflowVersionBadge.js.map +1 -1
  680. package/workflow/WorkflowVersionTimeline.d.ts.map +1 -1
  681. package/workflow/WorkflowVersionTimeline.js +1 -26
  682. package/workflow/WorkflowVersionTimeline.js.map +1 -1
  683. package/workflow/execution-comparison/ExecutionComparisonPicker.d.ts.map +1 -1
  684. package/workflow/execution-comparison/ExecutionComparisonPicker.js +7 -15
  685. package/workflow/execution-comparison/ExecutionComparisonPicker.js.map +1 -1
  686. package/workflow/execution-history/ExecutionHistoryTable.d.ts.map +1 -1
  687. package/workflow/execution-history/ExecutionHistoryTable.js +1 -24
  688. package/workflow/execution-history/ExecutionHistoryTable.js.map +1 -1
  689. package/workflow/index.d.ts +1 -1
  690. package/workflow/index.d.ts.map +1 -1
  691. package/workflow/index.js.map +1 -1
  692. package/workflow/instance/CreateWorkflowInstanceDialog.d.ts.map +1 -1
  693. package/workflow/instance/CreateWorkflowInstanceDialog.js +10 -2
  694. package/workflow/instance/CreateWorkflowInstanceDialog.js.map +1 -1
  695. package/workflow/instance/WorkflowInstanceDetailPanel.d.ts.map +1 -1
  696. package/workflow/instance/WorkflowInstanceDetailPanel.js +1 -1
  697. package/workflow/instance/WorkflowInstanceDetailPanel.js.map +1 -1
  698. package/workflow/instance/useDeleteWorkflowInstance.d.ts +9 -4
  699. package/workflow/instance/useDeleteWorkflowInstance.d.ts.map +1 -1
  700. package/workflow/instance/useDeleteWorkflowInstance.js +4 -2
  701. package/workflow/instance/useDeleteWorkflowInstance.js.map +1 -1
  702. package/workflow/layout/registry-dimensions.d.ts.map +1 -1
  703. package/workflow/layout/registry-dimensions.js +2 -5
  704. package/workflow/layout/registry-dimensions.js.map +1 -1
  705. package/workflow/node-shell/NodeShell.js +1 -1
  706. package/workflow/node-shell/NodeShell.js.map +1 -1
  707. package/workflow/picker/BranchAddPopover.d.ts.map +1 -1
  708. package/workflow/picker/BranchAddPopover.js +3 -2
  709. package/workflow/picker/BranchAddPopover.js.map +1 -1
  710. package/workflow/task-type-visual-registry.d.ts.map +1 -1
  711. package/workflow/task-type-visual-registry.js +5 -3
  712. package/workflow/task-type-visual-registry.js.map +1 -1
  713. package/workflow/templates/WorkflowTemplatePreview.js +1 -1
  714. package/workflow/useApprovalBoundary.d.ts +1 -1
  715. package/workflow/useApprovalBoundary.js +1 -1
  716. package/workflow/useCanvasKeyboardShortcuts.d.ts +15 -4
  717. package/workflow/useCanvasKeyboardShortcuts.d.ts.map +1 -1
  718. package/workflow/useCanvasKeyboardShortcuts.js +25 -4
  719. package/workflow/useCanvasKeyboardShortcuts.js.map +1 -1
  720. package/workflow/useGraphHistory.d.ts +16 -9
  721. package/workflow/useGraphHistory.d.ts.map +1 -1
  722. package/workflow/useGraphHistory.js +19 -33
  723. package/workflow/useGraphHistory.js.map +1 -1
  724. package/workflow/useWorkflowCanvas.d.ts +6 -4
  725. package/workflow/useWorkflowCanvas.d.ts.map +1 -1
  726. package/workflow/useWorkflowCanvas.js +115 -23
  727. package/workflow/useWorkflowCanvas.js.map +1 -1
  728. package/workflow/useWorkflowExecutionPanel.d.ts +38 -2
  729. package/workflow/useWorkflowExecutionPanel.d.ts.map +1 -1
  730. package/workflow/useWorkflowExecutionPanel.js +46 -13
  731. package/workflow/useWorkflowExecutionPanel.js.map +1 -1
  732. package/workflow/useWorkflowSave.d.ts.map +1 -1
  733. package/workflow/useWorkflowSave.js +2 -15
  734. package/workflow/useWorkflowSave.js.map +1 -1
  735. package/workflow/workflow-graph-conversions.d.ts +19 -1
  736. package/workflow/workflow-graph-conversions.d.ts.map +1 -1
  737. package/workflow/workflow-graph-conversions.js +17 -3
  738. package/workflow/workflow-graph-conversions.js.map +1 -1
@@ -58,6 +58,37 @@ export interface UseSessionPanelOptions {
58
58
  * @default "files"
59
59
  */
60
60
  readonly defaultView?: string;
61
+ /**
62
+ * Controlled open state. When provided, the host owns whether the panel is
63
+ * expanded: internal open intents (the chip toggle, a file/artifact/plan
64
+ * open, plan auto-open) no longer flip state themselves — they surface
65
+ * through {@link UseSessionPanelOptions.onOpenChange} and the panel follows
66
+ * this value. Leave `undefined` for the self-managing default.
67
+ */
68
+ readonly open?: boolean;
69
+ /**
70
+ * Initial open state in uncontrolled mode. Ignored when
71
+ * {@link UseSessionPanelOptions.open} is provided.
72
+ *
73
+ * @default false
74
+ */
75
+ readonly defaultOpen?: boolean;
76
+ /**
77
+ * Called on every effective open/close transition — in BOTH modes, unlike
78
+ * `useDetailTabs`'s DD-T05A-001 convention of swallowing the callback when
79
+ * uncontrolled. The difference is principled, not stylistic: tabs change
80
+ * only through user clicks, so an uncontrolled host loses nothing by not
81
+ * hearing about them — but this panel opens ITSELF (`openFile`,
82
+ * `openArtifact`, `openPlanDocument`, and the plan-key auto-open all expand
83
+ * a collapsed panel), and an embedding host that must react to those
84
+ * moments (widen a dock, make room for a streaming plan) has no other seam.
85
+ * Passing only this callback observes the panel without controlling it.
86
+ *
87
+ * In controlled mode this fires once per open/close REQUEST (the host may
88
+ * decline by not updating `open` — a later identical request re-fires); in
89
+ * uncontrolled mode it fires once per actual transition.
90
+ */
91
+ readonly onOpenChange?: (open: boolean) => void;
61
92
  }
62
93
 
63
94
  /**
@@ -81,7 +112,11 @@ export interface UseSessionPanelOptions {
81
112
  export interface SessionPanelController {
82
113
  /** The open-editor group store; subscribe with `useWorkspaceEditors`. */
83
114
  readonly editorsStore: WorkspaceEditorsStore;
84
- /** Whether the panel is expanded (chat narrow) or collapsed to the chip. */
115
+ /**
116
+ * Whether the panel is expanded (chat narrow) or collapsed to the chip.
117
+ * In controlled mode ({@link UseSessionPanelOptions.open}) this mirrors
118
+ * the host's value.
119
+ */
85
120
  readonly isOpen: boolean;
86
121
  /** The active rail view id (`"files"`, `"search"`, or an injected facet). */
87
122
  readonly view: string;
@@ -149,9 +184,49 @@ export function useSessionPanel({
149
184
  hasChanges,
150
185
  planKey = null,
151
186
  defaultView = "files",
187
+ open,
188
+ defaultOpen = false,
189
+ onOpenChange,
152
190
  }: UseSessionPanelOptions): SessionPanelController {
153
191
  const editorsStore = useWorkspaceEditorsStoreRef();
154
- const [isOpen, setIsOpen] = useState(false);
192
+
193
+ // Uncontrolled-by-default / controlled-when-`open`-is-provided (React's own
194
+ // value/defaultValue convention — presence of the value prop decides, so an
195
+ // observe-only host can pass just `onOpenChange`). Everything below reads
196
+ // the EFFECTIVE value: the render-adjust triggers (first write-back) and
197
+ // the returned controller must agree with the host's state, never a stale
198
+ // internal one.
199
+ const isControlled = open !== undefined;
200
+ const [internalIsOpen, setInternalIsOpen] = useState(defaultOpen);
201
+ const isOpen = isControlled ? open : internalIsOpen;
202
+
203
+ // Latest-ref idiom (see YamlEditor's onChangeRef): the host's callback and
204
+ // the mode/value mirrors live in refs so `requestOpenChange` — and every
205
+ // action callback built on it — stays referentially stable regardless of
206
+ // how the host authored `onOpenChange` (DD-010: an inline lambda must not
207
+ // churn the memoized controller and re-render the panel subtree).
208
+ const onOpenChangeRef = useRef(onOpenChange);
209
+ onOpenChangeRef.current = onOpenChange;
210
+ const isControlledRef = useRef(isControlled);
211
+ isControlledRef.current = isControlled;
212
+ const isOpenRef = useRef(isOpen);
213
+ isOpenRef.current = isOpen;
214
+
215
+ // The single seam every open/close intent routes through — the chip
216
+ // toggle, file/artifact/plan opens, the surface's collapse affordance, and
217
+ // the plan-key auto-open. Uncontrolled: apply + notify (the ref is updated
218
+ // eagerly so two same-tick intents produce one notification). Controlled:
219
+ // notify only — the host owns the state, and the panel follows the `open`
220
+ // prop; the ref is NOT updated, so a declined request stays re-fireable.
221
+ const requestOpenChange = useCallback((next: boolean) => {
222
+ if (isOpenRef.current === next) return;
223
+ if (!isControlledRef.current) {
224
+ isOpenRef.current = next;
225
+ setInternalIsOpen(next);
226
+ }
227
+ onOpenChangeRef.current?.(next);
228
+ }, []);
229
+
155
230
  const [view, setViewState] = useState(defaultView);
156
231
 
157
232
  // Sticky explicit pick (rail click) — auto-switching yields to it until a
@@ -184,8 +259,8 @@ export function useSessionPanel({
184
259
 
185
260
  const openPlanDocument = useCallback(() => {
186
261
  editorsStore.openPinned(PLAN_DOCUMENT_ENTRY_ID, PLAN_DOCUMENT_PATH);
187
- setIsOpen(true);
188
- }, [editorsStore]);
262
+ requestOpenChange(true);
263
+ }, [editorsStore, requestOpenChange]);
189
264
 
190
265
  // A new plan arrived (first plan, or a refinement superseding it) → open the
191
266
  // plan document tab, expanding a collapsed panel (see the planKey option doc
@@ -204,9 +279,15 @@ export function useSessionPanel({
204
279
  }
205
280
  }, [planKey, openPlanDocument]);
206
281
 
207
- const openPanel = useCallback(() => setIsOpen(true), []);
282
+ const openPanel = useCallback(
283
+ () => requestOpenChange(true),
284
+ [requestOpenChange],
285
+ );
208
286
 
209
- const closePanel = useCallback(() => setIsOpen(false), []);
287
+ const closePanel = useCallback(
288
+ () => requestOpenChange(false),
289
+ [requestOpenChange],
290
+ );
210
291
 
211
292
  const setView = useCallback((viewId: string) => {
212
293
  userPickedViewRef.current = true;
@@ -216,17 +297,17 @@ export function useSessionPanel({
216
297
  const openFile = useCallback(
217
298
  (entryId: string, path: string, options?: OpenFileOptions) => {
218
299
  editorsStore.openPreview(entryId, path, options);
219
- setIsOpen(true);
300
+ requestOpenChange(true);
220
301
  },
221
- [editorsStore],
302
+ [editorsStore, requestOpenChange],
222
303
  );
223
304
 
224
305
  const openArtifact = useCallback(
225
306
  (artifact: ExecutionArtifact) => {
226
307
  editorsStore.openPreview(ARTIFACT_DOCUMENT_ENTRY_ID, artifactKey(artifact));
227
- setIsOpen(true);
308
+ requestOpenChange(true);
228
309
  },
229
- [editorsStore],
310
+ [editorsStore, requestOpenChange],
230
311
  );
231
312
 
232
313
  const pinArtifact = useCallback(
@@ -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 type { ApiKey } from "@stigmer/protos/ai/stigmer/iam/apikey/v1/api_pb";
5
5
  import { ApiKeyListPanel } from "../api-key/ApiKeyListPanel.js";
6
6
  import { CreateApiKeyForm } from "../api-key/CreateApiKeyForm.js";
@@ -16,6 +16,7 @@ type FlowState =
16
16
 
17
17
  /** Settings section for listing and creating organization API keys. */
18
18
  export function ApiKeysSection() {
19
+ const headingId = useId();
19
20
  const org = useActiveOrgSlug();
20
21
  const apiKeysAvailable = useResourceAvailable(ApiResourceKind.api_key);
21
22
  const [flow, setFlow] = useState<FlowState>({ phase: "idle" });
@@ -37,10 +38,10 @@ export function ApiKeysSection() {
37
38
  }, []);
38
39
 
39
40
  return (
40
- <section aria-labelledby="api-keys-heading">
41
+ <section aria-labelledby={headingId}>
41
42
  <div className="stg:mb-3 stg:flex stg:items-center stg:justify-between">
42
43
  <h2
43
- id="api-keys-heading"
44
+ id={headingId}
44
45
  className="stg:text-foreground stg:text-sm stg:font-semibold"
45
46
  >
46
47
  API Keys
@@ -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 type { ChannelApp } from "@stigmer/protos/ai/stigmer/agentic/channelapp/v1/api_pb";
5
5
  import { ChannelAppListPanel } from "../channel-app/ChannelAppListPanel.js";
6
6
  import {
@@ -38,6 +38,7 @@ type FlowState =
38
38
  * Channels tab offers it as the serving app.
39
39
  */
40
40
  export function ChannelAppsSection() {
41
+ const headingId = useId();
41
42
  const org = useActiveOrgSlug();
42
43
  // Channel installs (the consumer of these credentials) are cloud-only;
43
44
  // gate the whole section the way the Channels tab gates connects.
@@ -72,10 +73,10 @@ export function ChannelAppsSection() {
72
73
  }, []);
73
74
 
74
75
  return (
75
- <section aria-labelledby="channel-apps-heading">
76
+ <section aria-labelledby={headingId}>
76
77
  <div className="stg:mb-3 stg:flex stg:items-center stg:justify-between">
77
78
  <h2
78
- id="channel-apps-heading"
79
+ id={headingId}
79
80
  className="stg:text-foreground stg:text-sm stg:font-semibold"
80
81
  >
81
82
  Channel Apps
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
 
3
- import { useCallback, useEffect, useRef, useState } from "react";
3
+ import { useCallback, useEffect, useId, useRef, useState } from "react";
4
4
  import { getUserMessage } from "@stigmer/sdk";
5
5
  import { usePersonalEnvironment } from "../environment/usePersonalEnvironment.js";
6
6
  import { EnvironmentVariableEditor } from "../environment/EnvironmentVariableEditor.js";
@@ -47,12 +47,13 @@ function PersonalEnvironmentCard({ org }: { org: string }) {
47
47
  }, [org, isLoading, environment, getOrCreate]);
48
48
 
49
49
  const environmentId = environment?.metadata?.id;
50
+ const headingId = useId();
50
51
 
51
52
  return (
52
- <section aria-labelledby="personal-env-heading">
53
+ <section aria-labelledby={headingId}>
53
54
  <div className="stg:mb-3 stg:flex stg:items-baseline stg:gap-2">
54
55
  <h2
55
- id="personal-env-heading"
56
+ id={headingId}
56
57
  className="stg:text-foreground stg:text-sm stg:font-semibold"
57
58
  >
58
59
  Personal Environment
@@ -97,11 +98,13 @@ function EnvironmentsCard({ org }: { org: string }) {
97
98
  listRefetchRef.current?.();
98
99
  }, []);
99
100
 
101
+ const headingId = useId();
102
+
100
103
  return (
101
- <section aria-labelledby="org-env-heading">
104
+ <section aria-labelledby={headingId}>
102
105
  <div className="stg:mb-3 stg:flex stg:items-center stg:justify-between">
103
106
  <h2
104
- id="org-env-heading"
107
+ id={headingId}
105
108
  className="stg:text-foreground stg:text-sm stg:font-semibold"
106
109
  >
107
110
  Environments
@@ -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 type { IdentityProvider } from "@stigmer/protos/ai/stigmer/iam/identityprovider/v1/api_pb";
5
5
  import { IdentityProviderListPanel } from "../identity-provider/IdentityProviderListPanel.js";
6
6
  import { IdentityProviderWizard } from "../identity-provider/IdentityProviderWizard.js";
@@ -28,6 +28,7 @@ type FlowState =
28
28
  export function IdentityProvidersSection({
29
29
  ssoLoginBaseUrl,
30
30
  }: IdentityProvidersSectionProps = {}) {
31
+ const headingId = useId();
31
32
  const { activeOrg } = useOrg();
32
33
  const idpAvailable = useResourceAvailable(ApiResourceKind.identity_provider);
33
34
  const orgSlug = activeOrg?.metadata?.slug ?? "";
@@ -54,10 +55,10 @@ export function IdentityProvidersSection({
54
55
  (typeof window !== "undefined" ? window.location.origin : "");
55
56
 
56
57
  return (
57
- <section aria-labelledby="identity-providers-heading">
58
+ <section aria-labelledby={headingId}>
58
59
  <div className="stg:mb-3 stg:flex stg:items-center stg:justify-between">
59
60
  <h2
60
- id="identity-providers-heading"
61
+ id={headingId}
61
62
  className="stg:text-foreground stg:text-sm stg:font-semibold"
62
63
  >
63
64
  Identity Providers
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
 
3
+ import { useId } from "react";
3
4
  import { InvitationManager } from "../invitation/InvitationManager.js";
4
5
  import { useResourceAvailable, ApiResourceKind } from "../deployment-mode.js";
5
6
  import { CloudFeatureNotice } from "../internal/CloudFeatureNotice.js";
@@ -7,14 +8,15 @@ import { useActiveOrgSlug } from "../organization/OrgProvider.js";
7
8
 
8
9
  /** Settings section for creating and managing organization invitations. */
9
10
  export function InvitationsSection() {
11
+ const headingId = useId();
10
12
  const org = useActiveOrgSlug();
11
13
  const invitationsAvailable = useResourceAvailable(ApiResourceKind.invitation);
12
14
 
13
15
  return (
14
- <section aria-labelledby="invitations-heading">
16
+ <section aria-labelledby={headingId}>
15
17
  <div className="stg:mb-3">
16
18
  <h2
17
- id="invitations-heading"
19
+ id={headingId}
18
20
  className="stg:text-foreground stg:text-sm stg:font-semibold"
19
21
  >
20
22
  Invitations
@@ -1,5 +1,6 @@
1
1
  "use client";
2
2
 
3
+ import { useId } from "react";
3
4
  import { OrgMembersPanel } from "../iam-policy/OrgMembersPanel.js";
4
5
  import { useResourceAvailable, ApiResourceKind } from "../deployment-mode.js";
5
6
  import { CloudFeatureNotice } from "../internal/CloudFeatureNotice.js";
@@ -8,6 +9,7 @@ import { useIdentityProviderList } from "../identity-provider/useIdentityProvide
8
9
 
9
10
  /** Settings section for organization membership and role management. */
10
11
  export function MembersSection() {
12
+ const headingId = useId();
11
13
  const { activeOrg } = useOrg();
12
14
  const membersAvailable = useResourceAvailable(ApiResourceKind.iam_policy);
13
15
  const idpAvailable = useResourceAvailable(ApiResourceKind.identity_provider);
@@ -23,9 +25,9 @@ export function MembersSection() {
23
25
  );
24
26
 
25
27
  return (
26
- <section aria-labelledby="members-heading">
28
+ <section aria-labelledby={headingId}>
27
29
  <h2
28
- id="members-heading"
30
+ id={headingId}
29
31
  className="stg:text-foreground stg:mb-1 stg:text-sm stg:font-semibold"
30
32
  >
31
33
  Members
@@ -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 type { OAuthApp } from "@stigmer/protos/ai/stigmer/iam/oauthapp/v1/api_pb";
5
5
  import { OAuthAppListPanel } from "../oauth-app/OAuthAppListPanel.js";
6
6
  import { CreateOAuthAppForm } from "../oauth-app/CreateOAuthAppForm.js";
@@ -16,6 +16,7 @@ type FlowState =
16
16
 
17
17
  /** Settings section for organization OAuth app credentials. */
18
18
  export function OAuthAppsSection() {
19
+ const headingId = useId();
19
20
  const org = useActiveOrgSlug();
20
21
  const oauthAppsAvailable = useResourceAvailable(ApiResourceKind.oauth_app);
21
22
 
@@ -42,10 +43,10 @@ export function OAuthAppsSection() {
42
43
  }, []);
43
44
 
44
45
  return (
45
- <section aria-labelledby="oauth-apps-heading">
46
+ <section aria-labelledby={headingId}>
46
47
  <div className="stg:mb-3 stg:flex stg:items-center stg:justify-between">
47
48
  <h2
48
- id="oauth-apps-heading"
49
+ id={headingId}
49
50
  className="stg:text-foreground stg:text-sm stg:font-semibold"
50
51
  >
51
52
  OAuth Apps
@@ -1,12 +1,13 @@
1
1
  "use client";
2
2
 
3
- import { useCallback } from "react";
3
+ import { useCallback, useId } from "react";
4
4
  import type { Organization } from "@stigmer/protos/ai/stigmer/tenancy/organization/v1/api_pb";
5
5
  import { OrgProfilePanel } from "../organization/OrgProfilePanel.js";
6
6
  import { useOrg } from "../organization/OrgProvider.js";
7
7
 
8
8
  /** Settings section for editing the active organization profile. */
9
9
  export function OrgProfileSection() {
10
+ const headingId = useId();
10
11
  const { activeOrg, refresh } = useOrg();
11
12
  const orgId = activeOrg?.metadata?.id ?? "";
12
13
 
@@ -18,9 +19,9 @@ export function OrgProfileSection() {
18
19
  );
19
20
 
20
21
  return (
21
- <section aria-labelledby="org-profile-heading">
22
+ <section aria-labelledby={headingId}>
22
23
  <h2
23
- id="org-profile-heading"
24
+ id={headingId}
24
25
  className="stg:text-foreground stg:mb-1 stg:text-sm stg:font-semibold"
25
26
  >
26
27
  Organization Profile
@@ -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 type { PlatformClient } from "@stigmer/protos/ai/stigmer/iam/platformclient/v1/api_pb";
5
5
  import type { PlatformClientCreateResponse } from "@stigmer/protos/ai/stigmer/iam/platformclient/v1/io_pb";
6
6
  import { PlatformClientListPanel } from "../platform-client/PlatformClientListPanel.js";
@@ -24,6 +24,7 @@ type FlowState =
24
24
 
25
25
  /** Settings section for creating and maintaining platform clients. */
26
26
  export function PlatformClientsSection() {
27
+ const headingId = useId();
27
28
  const org = useActiveOrgSlug();
28
29
  const pcAvailable = useResourceAvailable(ApiResourceKind.platform_client);
29
30
 
@@ -71,10 +72,10 @@ export function PlatformClientsSection() {
71
72
  }, []);
72
73
 
73
74
  return (
74
- <section aria-labelledby="platform-clients-heading">
75
+ <section aria-labelledby={headingId}>
75
76
  <div className="stg:mb-3 stg:flex stg:items-center stg:justify-between">
76
77
  <h2
77
- id="platform-clients-heading"
78
+ id={headingId}
78
79
  className="stg:text-foreground stg:text-sm stg:font-semibold"
79
80
  >
80
81
  Platform Clients
@@ -1,17 +1,19 @@
1
1
  "use client";
2
2
 
3
+ import { useId } from "react";
3
4
  import { OrgUsagePanel } from "../usage/OrgUsagePanel.js";
4
5
  import { useOrg } from "../organization/OrgProvider.js";
5
6
 
6
7
  /** Settings section for organization usage and cost reporting. */
7
8
  export function UsageSection() {
9
+ const headingId = useId();
8
10
  const { activeOrg } = useOrg();
9
11
  const orgId = activeOrg?.metadata?.id ?? "";
10
12
 
11
13
  return (
12
- <section aria-labelledby="usage-heading">
14
+ <section aria-labelledby={headingId}>
13
15
  <h2
14
- id="usage-heading"
16
+ id={headingId}
15
17
  className="stg:text-foreground stg:mb-1 stg:text-sm stg:font-semibold"
16
18
  >
17
19
  Usage
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
 
3
- import { useCallback, useMemo, useRef, useState, type FormEvent } from "react";
3
+ import { useCallback, useId, useMemo, useRef, useState, type FormEvent } from "react";
4
4
  import { cn } from "@stigmer/theme";
5
5
  import {
6
6
  MAX_ALLOWED_ORIGINS,
@@ -139,6 +139,12 @@ export function ShareAgentDialog({
139
139
  }: ShareAgentDialogProps) {
140
140
  const dialogRef = useRef<HTMLDialogElement>(null);
141
141
 
142
+ // Instance-scoped title id (oss#593): a reusable component must not
143
+ // hardcode DOM ids — hosts legitimately mount this dialog more than once
144
+ // per page (e.g. zone-cached detail pages), and duplicate ids break the
145
+ // aria-labelledby association for every copy after the first.
146
+ const titleId = useId();
147
+
142
148
  const handleClose = useCallback(() => {
143
149
  dialogRef.current?.close();
144
150
  onOpenChange(false);
@@ -168,9 +174,9 @@ export function ShareAgentDialog({
168
174
  onClose={handleClose}
169
175
  className={cn(
170
176
  "stg:w-full stg:max-w-lg stg:rounded-xl stg:border stg:border-border stg:bg-popover stg:p-0 stg:shadow-xl",
171
- modal ? "stg:fixed stg:inset-0 stg:m-auto stg:backdrop:bg-black/50" : "stg:relative",
177
+ modal ? "stg:fixed stg:inset-0 stg:m-auto stg:backdrop:bg-backdrop" : "stg:relative",
172
178
  )}
173
- aria-labelledby="share-agent-title"
179
+ aria-labelledby={titleId}
174
180
  >
175
181
  {/* Body mounts only while open so its draft state resets per
176
182
  session — reopening the dialog never shows a stale draft. */}
@@ -182,6 +188,7 @@ export function ShareAgentDialog({
182
188
  buildShareUrl={buildShareUrl}
183
189
  onSharingChanged={onSharingChanged}
184
190
  onClose={handleClose}
191
+ titleId={titleId}
185
192
  />
186
193
  )}
187
194
  </dialog>
@@ -207,6 +214,7 @@ function ShareAgentDialogBody({
207
214
  buildShareUrl,
208
215
  onSharingChanged,
209
216
  onClose,
217
+ titleId,
210
218
  }: {
211
219
  readonly agent: Agent;
212
220
  readonly share: AgentShare | null;
@@ -214,6 +222,8 @@ function ShareAgentDialogBody({
214
222
  readonly buildShareUrl?: (org: string, slug: string) => string;
215
223
  readonly onSharingChanged?: () => void;
216
224
  readonly onClose: () => void;
225
+ /** Heading id minted by the outer dialog for its aria-labelledby. */
226
+ readonly titleId: string;
217
227
  }) {
218
228
  const [created, setCreated] = useState<AgentShare | null>(null);
219
229
  const activeShare = share ?? created;
@@ -229,7 +239,7 @@ function ShareAgentDialogBody({
229
239
  <div className="stg:flex stg:items-start stg:justify-between stg:border-b stg:border-border stg:px-6 stg:py-4">
230
240
  <div className="stg:min-w-0">
231
241
  <h2
232
- id="share-agent-title"
242
+ id={titleId}
233
243
  className="stg:text-base stg:font-semibold stg:text-foreground"
234
244
  >
235
245
  {isCreating ? "Create share" : "Share"}
@@ -322,6 +332,11 @@ function CreateShareForm({
322
332
  const agentName = agent.metadata?.name || (agent.metadata?.slug ?? "");
323
333
  const isCrossOrg = shareOrg !== (agent.metadata?.org ?? "");
324
334
 
335
+ // Instance-scoped field ids (oss#593) — see the outer dialog's titleId.
336
+ const baseId = useId();
337
+ const nameId = `${baseId}-name`;
338
+ const slugId = `${baseId}-slug`;
339
+
325
340
  const [name, setName] = useState(agentName);
326
341
  const [slug, setSlug] = useState(agent.metadata?.slug ?? "");
327
342
  // Once the user manually edits the slug field, stop auto-deriving.
@@ -421,13 +436,13 @@ function CreateShareForm({
421
436
  {/* ---- Name ---- */}
422
437
  <div className="stg:space-y-1">
423
438
  <label
424
- htmlFor="stgm-new-share-name"
439
+ htmlFor={nameId}
425
440
  className="stg:text-xs stg:font-medium stg:text-foreground"
426
441
  >
427
442
  Name
428
443
  </label>
429
444
  <input
430
- id="stgm-new-share-name"
445
+ id={nameId}
431
446
  type="text"
432
447
  value={name}
433
448
  onChange={(e) => handleNameChange(e.target.value)}
@@ -457,13 +472,13 @@ function CreateShareForm({
457
472
  {/* ---- Slug ---- */}
458
473
  <div className="stg:space-y-1">
459
474
  <label
460
- htmlFor="stgm-new-share-slug"
475
+ htmlFor={slugId}
461
476
  className="stg:text-xs stg:font-medium stg:text-foreground"
462
477
  >
463
478
  Slug
464
479
  </label>
465
480
  <input
466
- id="stgm-new-share-slug"
481
+ id={slugId}
467
482
  type="text"
468
483
  value={slug}
469
484
  onChange={(e) => handleSlugChange(e.target.value)}
@@ -533,6 +548,9 @@ function ShareAgentForm({
533
548
  }) {
534
549
  const agentName = agent.metadata?.name || (agent.metadata?.slug ?? "");
535
550
 
551
+ // Instance-scoped label id (oss#593) — see the outer dialog's titleId.
552
+ const enabledLabelId = useId();
553
+
536
554
  // The latest server share is the single baseline: the draft, the link
537
555
  // token, and the share id for rotation all derive from it.
538
556
  const [share, setShare] = useState<AgentShare>(initialShare);
@@ -644,7 +662,7 @@ function ShareAgentForm({
644
662
  <div className="stg:flex stg:items-start stg:justify-between stg:gap-4">
645
663
  <div className="stg:min-w-0">
646
664
  <span
647
- id="share-enabled-label"
665
+ id={enabledLabelId}
648
666
  className="stg:text-sm stg:font-medium stg:text-foreground"
649
667
  >
650
668
  {isOrgAudience
@@ -657,7 +675,7 @@ function ShareAgentForm({
657
675
  checked={draft.enabled}
658
676
  onCheckedChange={handleToggle}
659
677
  disabled={isPending}
660
- aria-labelledby="share-enabled-label"
678
+ aria-labelledby={enabledLabelId}
661
679
  />
662
680
  </div>
663
681
  {!isCrossOrg && (
@@ -274,7 +274,10 @@ describe("WorkspaceSidebar — chrome", () => {
274
274
  expect(screen.getByTestId("footer-slot")).toBeTruthy();
275
275
  const toggle = screen.getByLabelText("Collapse sidebar");
276
276
  expect(toggle.getAttribute("aria-expanded")).toBe("false");
277
- expect(toggle.getAttribute("aria-controls")).toBe("sidebar");
277
+ // The nav id is minted per mount; assert the association, not the value.
278
+ const controlsId = toggle.getAttribute("aria-controls");
279
+ expect(controlsId).toBeTruthy();
280
+ expect(document.getElementById(controlsId!)?.tagName).toBe("NAV");
278
281
  });
279
282
 
280
283
  it("resolves the org switcher from the mocked transport", async () => {
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
 
3
- import type { ReactNode } from "react";
3
+ import { useId, type ReactNode } from "react";
4
4
  import { PanelLeft } from "lucide-react";
5
5
  import { cn } from "@stigmer/theme";
6
6
  import type { Organization } from "@stigmer/protos/ai/stigmer/tenancy/organization/v1/api_pb";
@@ -46,9 +46,8 @@ export interface SidebarChromeProps {
46
46
  /**
47
47
  * Outer sidebar frame: `<nav>` container, top row, content, footer band.
48
48
  *
49
- * The `id="sidebar"` / `aria-controls` pairing matches the console's DOM
50
- * contract (the app shell's floating "Open sidebar" button targets it);
51
- * only one sidebar renders at a time, so the id cannot collide.
49
+ * The nav id exists solely for the collapse toggle's `aria-controls`
50
+ * association; it is minted per mount like every SDK DOM id.
52
51
  */
53
52
  export function SidebarChrome({
54
53
  ariaLabel,
@@ -58,9 +57,10 @@ export function SidebarChrome({
58
57
  footer,
59
58
  children,
60
59
  }: SidebarChromeProps) {
60
+ const navId = useId();
61
61
  return (
62
62
  <nav
63
- id="sidebar"
63
+ id={navId}
64
64
  aria-label={ariaLabel}
65
65
  className="stg:bg-sidebar stg:text-sidebar-foreground stg:flex stg:h-full stg:flex-col"
66
66
  >
@@ -70,7 +70,7 @@ export function SidebarChrome({
70
70
  type="button"
71
71
  onClick={onCollapse}
72
72
  aria-expanded={isOpen}
73
- aria-controls="sidebar"
73
+ aria-controls={navId}
74
74
  aria-label="Collapse sidebar"
75
75
  className={cn(
76
76
  "stg:inline-flex stg:size-7 stg:shrink-0 stg:items-center stg:justify-center stg:rounded-md",
@@ -100,7 +100,7 @@ export function SkillDiffDialog({ state, onClose }: SkillDiffDialogProps) {
100
100
  onClick={handleBackdropClick}
101
101
  className={cn(
102
102
  "stg:fixed stg:inset-0 stg:z-50 stg:m-auto stg:h-[85vh] stg:w-full stg:max-w-4xl stg:rounded-lg stg:border stg:border-border stg:bg-popover stg:p-0 stg:text-popover-foreground stg:shadow-lg",
103
- "stg:backdrop:bg-black/50",
103
+ "stg:backdrop:bg-backdrop",
104
104
  "stg:open:animate-in stg:open:fade-in-0 stg:open:zoom-in-95",
105
105
  )}
106
106
  >