@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
@@ -1,7 +1,9 @@
1
1
  "use client";
2
2
 
3
- import { useCallback, useState } from "react";
3
+ import { useCallback, useRef } from "react";
4
4
  import { cn } from "@stigmer/theme";
5
+ import { selectElementText } from "../internal/select-element-text.js";
6
+ import { useCopyFeedback } from "../internal/useCopyFeedback.js";
5
7
 
6
8
  /** Props for {@link PlatformClientSecretAlert}. */
7
9
  export interface PlatformClientSecretAlertProps {
@@ -17,8 +19,6 @@ export interface PlatformClientSecretAlertProps {
17
19
  readonly className?: string;
18
20
  }
19
21
 
20
- const COPIED_FEEDBACK_MS = 2000;
21
-
22
22
  /**
23
23
  * One-time reveal component displayed after a platform client is
24
24
  * created or its secret is rotated.
@@ -50,34 +50,6 @@ export function PlatformClientSecretAlert({
50
50
  onDismiss,
51
51
  className,
52
52
  }: PlatformClientSecretAlertProps) {
53
- const [copiedField, setCopiedField] = useState<
54
- "id" | "secret" | null
55
- >(null);
56
-
57
- const handleCopy = useCallback(
58
- async (value: string, field: "id" | "secret") => {
59
- try {
60
- await navigator.clipboard.writeText(value);
61
- setCopiedField(field);
62
- setTimeout(() => setCopiedField(null), COPIED_FEEDBACK_MS);
63
- } catch {
64
- const el = document.getElementById(
65
- field === "secret"
66
- ? "stgm-pc-secret-reveal"
67
- : "stgm-pc-client-id-reveal",
68
- );
69
- if (el) {
70
- const selection = window.getSelection();
71
- const range = document.createRange();
72
- range.selectNodeContents(el);
73
- selection?.removeAllRanges();
74
- selection?.addRange(range);
75
- }
76
- }
77
- },
78
- [],
79
- );
80
-
81
53
  const title =
82
54
  context === "created"
83
55
  ? "Platform client created"
@@ -114,30 +86,14 @@ export function PlatformClientSecretAlert({
114
86
 
115
87
  <div className="stg:space-y-2">
116
88
  <CopyableField
117
- id="stgm-pc-client-id-reveal"
118
89
  label="Client ID"
119
90
  value={clientId}
120
- copied={copiedField === "id"}
121
- onCopy={() => handleCopy(clientId, "id")}
122
91
  />
123
92
  <CopyableField
124
- id="stgm-pc-secret-reveal"
125
93
  label="Client secret"
126
94
  value={clientSecret}
127
- copied={copiedField === "secret"}
128
- onCopy={() => handleCopy(clientSecret, "secret")}
129
95
  />
130
96
  </div>
131
-
132
- <div
133
- role="status"
134
- aria-live="polite"
135
- aria-atomic="true"
136
- className="stg:sr-only"
137
- >
138
- {copiedField === "id" && "Client ID copied to clipboard"}
139
- {copiedField === "secret" && "Client secret copied to clipboard"}
140
- </div>
141
97
  </div>
142
98
  );
143
99
  }
@@ -147,18 +103,24 @@ export function PlatformClientSecretAlert({
147
103
  // ---------------------------------------------------------------------------
148
104
 
149
105
  function CopyableField({
150
- id,
151
106
  label,
152
107
  value,
153
- copied,
154
- onCopy,
155
108
  }: {
156
- id: string;
157
109
  label: string;
158
110
  value: string;
159
- copied: boolean;
160
- onCopy: () => void;
161
111
  }) {
112
+ // Each field owns its feedback: the copied flag and the select-text
113
+ // fallback belong to the markup they describe, so two fields never
114
+ // share (and race on) one parent-level "which field copied" state.
115
+ const { copy, copied } = useCopyFeedback();
116
+ const revealRef = useRef<HTMLElement>(null);
117
+
118
+ const handleCopy = useCallback(async () => {
119
+ if (await copy(value)) return;
120
+ // Rejected write: select the revealed value so the user can copy manually.
121
+ if (revealRef.current) selectElementText(revealRef.current);
122
+ }, [copy, value]);
123
+
162
124
  return (
163
125
  <div>
164
126
  <span className="stg:text-[0.65rem] stg:font-medium stg:text-muted-foreground">
@@ -166,7 +128,7 @@ function CopyableField({
166
128
  </span>
167
129
  <div className="stg:mt-0.5 stg:flex stg:items-center stg:gap-2">
168
130
  <code
169
- id={id}
131
+ ref={revealRef}
170
132
  className={cn(
171
133
  "stg:min-w-0 stg:flex-1 stg:select-all stg:truncate stg:rounded-md",
172
134
  "stg:border stg:border-input stg:bg-background stg:px-2.5 stg:py-1.5",
@@ -177,7 +139,7 @@ function CopyableField({
177
139
  </code>
178
140
  <button
179
141
  type="button"
180
- onClick={onCopy}
142
+ onClick={() => void handleCopy()}
181
143
  aria-label={`Copy ${label}`}
182
144
  className={cn(
183
145
  "stg:inline-flex stg:shrink-0 stg:items-center stg:gap-1.5 stg:rounded-md stg:px-3 stg:py-1.5 stg:text-xs stg:font-medium",
@@ -189,6 +151,15 @@ function CopyableField({
189
151
  {copied ? "Copied" : "Copy"}
190
152
  </button>
191
153
  </div>
154
+
155
+ <div
156
+ role="status"
157
+ aria-live="polite"
158
+ aria-atomic="true"
159
+ className="stg:sr-only"
160
+ >
161
+ {copied && `${label} copied to clipboard`}
162
+ </div>
192
163
  </div>
193
164
  );
194
165
  }
package/src/provider.tsx CHANGED
@@ -14,6 +14,8 @@ import type { ThemePresetId } from "@stigmer/theme";
14
14
  import { StigmerContext } from "./context.js";
15
15
  import { DeploymentModeContext } from "./deployment-mode.js";
16
16
  import { ExecutionTargetContext } from "./execution-target-context.js";
17
+ import { ApprovalDefaultsContext } from "./approval-defaults-context.js";
18
+ import type { ApprovalDefaults } from "./approval-defaults-context.js";
17
19
  import type { ExecutionTargetOption } from "./session/execution-target.js";
18
20
  import type { RunnerAdapter } from "./runner-adapter.js";
19
21
  import { RunnerAdapterContext } from "./runner-adapter.js";
@@ -22,7 +24,7 @@ import { ColorModeContext, useSystemColorMode } from "./color-mode.js";
22
24
  import { PortalContainerContext } from "./portal-container.js";
23
25
  import { ModelRegistryContext } from "./models/ModelRegistryContext.js";
24
26
  import type { ModelRegistryState } from "./models/ModelRegistryContext.js";
25
- import { fetchModelRegistry } from "./models/registry.js";
27
+ import { fetchModelRegistryDocument } from "./models/registry.js";
26
28
  import { TaskKindRegistryContext } from "./workflow/TaskKindRegistryContext.js";
27
29
  import type { TaskKindRegistryState } from "./workflow/TaskKindRegistryContext.js";
28
30
  import type { TaskKindDescriptor } from "./workflow/types.js";
@@ -84,6 +86,38 @@ export interface StigmerProviderProps {
84
86
  * ```
85
87
  */
86
88
  readonly runnerAdapter?: RunnerAdapter;
89
+ /**
90
+ * Approval defaults for all interactive sessions in this provider scope.
91
+ *
92
+ * This is an app-level trust judgment, not a per-session choice (the
93
+ * `executionTarget` precedent): a host embedding sessions over a surface
94
+ * it has already judged trusted — e.g. a desktop app operating on the
95
+ * user's own local folder — can arm `autoApproveAll` so users are not
96
+ * re-asked at every fresh conversation's first mutating tool call. The
97
+ * user keeps the last word: the "Auto-approving tool calls" notice shows
98
+ * from the first render with its "Turn off" affordance.
99
+ *
100
+ * Consumed by the interactive-session surface only (`useNewSessionFlow`,
101
+ * `useSessionPageFlow` and the organisms composing them). Specialized
102
+ * flows (workflow architect/explain/diagnose) and headless creation are
103
+ * deliberately unaffected — those callers pass `autoApproveAll`
104
+ * explicitly when they mean it.
105
+ *
106
+ * Omit on shared or sensitive surfaces — everything stays fail-closed
107
+ * exactly as today. Pass a referentially stable object (module constant
108
+ * or `useMemo`).
109
+ *
110
+ * @example
111
+ * ```tsx
112
+ * // A desktop host whose sessions operate on the user's own machine
113
+ * const APPROVAL_DEFAULTS = { autoApproveAll: true };
114
+ *
115
+ * <StigmerProvider client={client} approvalDefaults={APPROVAL_DEFAULTS}>
116
+ * <App />
117
+ * </StigmerProvider>
118
+ * ```
119
+ */
120
+ readonly approvalDefaults?: ApprovalDefaults;
87
121
  /**
88
122
  * Built-in theme preset to apply.
89
123
  *
@@ -238,6 +272,7 @@ export function StigmerProvider({
238
272
  deploymentMode = "cloud",
239
273
  executionTarget,
240
274
  runnerAdapter,
275
+ approvalDefaults,
241
276
  preset,
242
277
  className,
243
278
  colorMode = "light",
@@ -258,34 +293,36 @@ export function StigmerProvider({
258
293
  <StigmerContext.Provider value={client}>
259
294
  <DeploymentModeContext.Provider value={deploymentMode}>
260
295
  <ExecutionTargetContext.Provider value={executionTarget}>
261
- <RunnerAdapterContext.Provider value={runnerAdapter ?? null}>
262
- <ColorModeContext.Provider value={resolvedMode}>
263
- <ModelRegistryContext.Provider value={registryState}>
264
- <TaskKindRegistryContext.Provider value={taskKindRegistryState}>
265
- <ReviewRendererContext.Provider value={reviewRenderers ?? EMPTY_REVIEW_RENDERERS}>
266
- <PortalContainerContext.Provider value={portalContainer}>
267
- {/*
268
- The in-tree scoping container. `data-stgm-root` is a
269
- stable public selector the documented seam for hosts
270
- to style THIS element only (e.g. the fixed-height
271
- embedding recipe, #260). It must never be mirrored
272
- onto the portal container, whose own `data-stgm-portal`
273
- marker keeps host in-tree-only CSS away from the
274
- off-tree element.
275
- */}
276
- <div
277
- className={scope.className}
278
- data-stgm-root=""
279
- data-stgm-color-mode={scope.colorMode}
280
- >
281
- {children}
282
- </div>
283
- </PortalContainerContext.Provider>
284
- </ReviewRendererContext.Provider>
285
- </TaskKindRegistryContext.Provider>
286
- </ModelRegistryContext.Provider>
287
- </ColorModeContext.Provider>
288
- </RunnerAdapterContext.Provider>
296
+ <ApprovalDefaultsContext.Provider value={approvalDefaults}>
297
+ <RunnerAdapterContext.Provider value={runnerAdapter ?? null}>
298
+ <ColorModeContext.Provider value={resolvedMode}>
299
+ <ModelRegistryContext.Provider value={registryState}>
300
+ <TaskKindRegistryContext.Provider value={taskKindRegistryState}>
301
+ <ReviewRendererContext.Provider value={reviewRenderers ?? EMPTY_REVIEW_RENDERERS}>
302
+ <PortalContainerContext.Provider value={portalContainer}>
303
+ {/*
304
+ The in-tree scoping container. `data-stgm-root` is a
305
+ stable public selector the documented seam for hosts
306
+ to style THIS element only (e.g. the fixed-height
307
+ embedding recipe, #260). It must never be mirrored
308
+ onto the portal container, whose own `data-stgm-portal`
309
+ marker keeps host in-tree-only CSS away from the
310
+ off-tree element.
311
+ */}
312
+ <div
313
+ className={scope.className}
314
+ data-stgm-root=""
315
+ data-stgm-color-mode={scope.colorMode}
316
+ >
317
+ {children}
318
+ </div>
319
+ </PortalContainerContext.Provider>
320
+ </ReviewRendererContext.Provider>
321
+ </TaskKindRegistryContext.Provider>
322
+ </ModelRegistryContext.Provider>
323
+ </ColorModeContext.Provider>
324
+ </RunnerAdapterContext.Provider>
325
+ </ApprovalDefaultsContext.Provider>
289
326
  </ExecutionTargetContext.Provider>
290
327
  </DeploymentModeContext.Provider>
291
328
  </StigmerContext.Provider>
@@ -310,6 +347,7 @@ function useModelRegistryFetch(client: Stigmer): ModelRegistryState {
310
347
  const [version, setVersion] = useState(0);
311
348
  const [state, setState] = useState<Omit<ModelRegistryState, "refetch">>({
312
349
  models: [],
350
+ visionLimits: undefined,
313
351
  isLoading: true,
314
352
  error: null,
315
353
  });
@@ -333,7 +371,7 @@ function useModelRegistryFetch(client: Stigmer): ModelRegistryState {
333
371
  }
334
372
  }
335
373
 
336
- return fetchModelRegistry(c.baseUrl, token, c.fetch);
374
+ return fetchModelRegistryDocument(c.baseUrl, token, c.fetch);
337
375
  }, []);
338
376
 
339
377
  useEffect(() => {
@@ -348,9 +386,14 @@ function useModelRegistryFetch(client: Stigmer): ModelRegistryState {
348
386
  setState((prev) => (prev.isLoading ? prev : { ...prev, isLoading: true }));
349
387
 
350
388
  try {
351
- const models = await doFetch(signal);
352
- if (!signal.aborted && models) {
353
- setState({ models, isLoading: false, error: null });
389
+ const document = await doFetch(signal);
390
+ if (!signal.aborted && document) {
391
+ setState({
392
+ models: document.models,
393
+ visionLimits: document.visionLimits,
394
+ isLoading: false,
395
+ error: null,
396
+ });
354
397
  fetchAttemptRef.current = 0;
355
398
  }
356
399
  } catch (err: unknown) {
@@ -1,6 +1,7 @@
1
1
  "use client";
2
2
 
3
3
  import { cn } from "@stigmer/theme";
4
+ import { SpinnerIcon } from "../internal/SpinnerIcon.js";
4
5
 
5
6
  /** Props for {@link WizardNav}. */
6
7
  export interface WizardNavProps {
@@ -98,7 +99,7 @@ export function WizardNav({
98
99
  "stg:disabled:pointer-events-none stg:disabled:opacity-40",
99
100
  )}
100
101
  >
101
- {isSubmitting && <SpinnerIcon />}
102
+ {isSubmitting && <SpinnerIcon size={14} />}
102
103
  {nextLabel}
103
104
  {!isSubmitting && <ArrowRightIcon className="stg:size-3.5" />}
104
105
  </button>
@@ -145,20 +146,3 @@ function ArrowRightIcon({ className }: { readonly className?: string }) {
145
146
  );
146
147
  }
147
148
 
148
- function SpinnerIcon() {
149
- return (
150
- <svg
151
- width="14"
152
- height="14"
153
- viewBox="0 0 16 16"
154
- fill="none"
155
- stroke="currentColor"
156
- strokeWidth="2"
157
- strokeLinecap="round"
158
- className="stg:animate-spin"
159
- aria-hidden="true"
160
- >
161
- <path d="M8 2a6 6 0 1 0 6 6" />
162
- </svg>
163
- );
164
- }
@@ -81,7 +81,7 @@ export function ConfirmDialog({
81
81
  onCancel={handleDialogCancel}
82
82
  className={cn(
83
83
  "stg:fixed stg:inset-0 stg:z-50 stg:m-auto stg:w-full stg:max-w-sm stg:rounded-lg stg:border stg:border-border stg:bg-popover stg:p-0 stg:text-popover-foreground stg:shadow-lg",
84
- "stg:backdrop:bg-black/50",
84
+ "stg:backdrop:bg-backdrop",
85
85
  "stg:open:animate-in stg:open:fade-in-0 stg:open:zoom-in-95",
86
86
  )}
87
87
  >
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { useCallback, useMemo } from "react";
4
4
  import { toast } from "../feedback/toast.js";
5
+ import { useCopyFeedback } from "../internal/useCopyFeedback.js";
5
6
 
6
7
  export interface UseCopyResourceReturn {
7
8
  /** Copy arbitrary text to the clipboard with toast feedback. */
@@ -17,9 +18,10 @@ export interface UseCopyResourceReturn {
17
18
  /**
18
19
  * Clipboard helper for resource detail pages.
19
20
  *
20
- * Wraps `navigator.clipboard.writeText` with toast feedback so every
21
- * copy action is confirmed visually (Nielsen heuristic #1 — visibility
22
- * of system status). Falls back to a hidden textarea for older browsers.
21
+ * Wraps the shared copy behavior (`useCopyFeedback`) with toast feedback so
22
+ * every copy action is confirmed visually (Nielsen heuristic #1 — visibility
23
+ * of system status). A rejected write (insecure context, denied permission)
24
+ * toasts an error instead of claiming a copy that didn't happen.
23
25
  *
24
26
  * @example
25
27
  * ```tsx
@@ -31,15 +33,18 @@ export interface UseCopyResourceReturn {
31
33
  * ```
32
34
  */
33
35
  export function useCopyResource(): UseCopyResourceReturn {
34
- const copy = useCallback(async (text: string, label: string) => {
35
- try {
36
- await navigator.clipboard.writeText(text);
37
- toast.success(`${label} copied`);
38
- } catch {
39
- fallbackCopy(text);
40
- toast.success(`${label} copied`);
41
- }
42
- }, []);
36
+ const { copy: copyText } = useCopyFeedback();
37
+
38
+ const copy = useCallback(
39
+ async (text: string, label: string) => {
40
+ if (await copyText(text)) {
41
+ toast.success(`${label} copied`);
42
+ } else {
43
+ toast.error(`Couldn't copy ${label}`);
44
+ }
45
+ },
46
+ [copyText],
47
+ );
43
48
 
44
49
  const copyId = useCallback(
45
50
  (id: string) => copy(id, "ID"),
@@ -61,14 +66,3 @@ export function useCopyResource(): UseCopyResourceReturn {
61
66
  [copy, copyId, copySlug, copyQualifiedSlug],
62
67
  );
63
68
  }
64
-
65
- function fallbackCopy(text: string): void {
66
- const textarea = document.createElement("textarea");
67
- textarea.value = text;
68
- textarea.style.position = "fixed";
69
- textarea.style.opacity = "0";
70
- document.body.appendChild(textarea);
71
- textarea.select();
72
- document.execCommand("copy");
73
- document.body.removeChild(textarea);
74
- }
@@ -71,6 +71,7 @@ import { useResumeSchedule } from "./useResumeSchedule.js";
71
71
  import { useSetScheduleEnabled } from "./useSetScheduleEnabled.js";
72
72
  import { useTriggerSchedule } from "./useTriggerSchedule.js";
73
73
  import { useUpdateScheduleSpec } from "./useUpdateScheduleSpec.js";
74
+ import { SpinnerIcon } from "../internal/SpinnerIcon.js";
74
75
 
75
76
  /** Props for {@link ScheduleDetailView}. */
76
77
  export interface ScheduleDetailViewProps {
@@ -1311,7 +1312,7 @@ function InlineEditActions({
1311
1312
  "stg:focus-visible:outline-none stg:focus-visible:ring-2 stg:focus-visible:ring-ring",
1312
1313
  )}
1313
1314
  >
1314
- {isSaving && <SpinnerIcon />}
1315
+ {isSaving && <SpinnerIcon size={14} />}
1315
1316
  Save
1316
1317
  </button>
1317
1318
  </div>
@@ -1632,20 +1633,3 @@ function PencilIcon({ className }: { readonly className?: string }) {
1632
1633
  );
1633
1634
  }
1634
1635
 
1635
- function SpinnerIcon() {
1636
- return (
1637
- <svg
1638
- width="14"
1639
- height="14"
1640
- viewBox="0 0 16 16"
1641
- fill="none"
1642
- stroke="currentColor"
1643
- strokeWidth="2"
1644
- strokeLinecap="round"
1645
- className="stg:animate-spin"
1646
- aria-hidden="true"
1647
- >
1648
- <path d="M8 2a6 6 0 1 0 6 6" />
1649
- </svg>
1650
- );
1651
- }
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
 
3
- import { useCallback, useState, type FormEvent } from "react";
3
+ import { type FormEvent, useCallback, useId, useState } from "react";
4
4
  import { cn } from "@stigmer/theme";
5
5
  import {
6
6
  getUserMessage,
@@ -24,6 +24,7 @@ import { CadenceField } from "./CadenceField.js";
24
24
  import { TimeZoneField, browserTimeZone } from "./TimeZoneField.js";
25
25
  import { useCreateSchedule } from "./useCreateSchedule.js";
26
26
  import { cadenceToCron, validateCron, type CadencePreset } from "./cadence.js";
27
+ import { SpinnerIcon } from "../internal/SpinnerIcon.js";
27
28
 
28
29
  // ---------------------------------------------------------------------------
29
30
  // Public API
@@ -84,6 +85,7 @@ export function ScheduleForm({
84
85
  onCancel,
85
86
  className,
86
87
  }: ScheduleFormProps) {
88
+ const baseId = useId();
87
89
  const { create, isCreating, error, clearError } = useCreateSchedule();
88
90
 
89
91
  const [name, setName] = useState("");
@@ -209,11 +211,11 @@ export function ScheduleForm({
209
211
  >
210
212
  {/* Name */}
211
213
  <div className="stg:space-y-1">
212
- <label htmlFor="stgm-new-schedule-name" className={labelClasses}>
214
+ <label htmlFor={`${baseId}-name`} className={labelClasses}>
213
215
  Name
214
216
  </label>
215
217
  <input
216
- id="stgm-new-schedule-name"
218
+ id={`${baseId}-name`}
217
219
  type="text"
218
220
  value={name}
219
221
  onChange={(e) => setName(e.target.value)}
@@ -227,13 +229,13 @@ export function ScheduleForm({
227
229
 
228
230
  {/* Target agent */}
229
231
  <div className="stg:space-y-1">
230
- <span id="stgm-new-schedule-agent-label" className={labelClasses}>
232
+ <span id={`${baseId}-agent-label`} className={labelClasses}>
231
233
  Agent to run
232
234
  </span>
233
235
  <Popover.Root open={pickerOpen} onOpenChange={setPickerOpen}>
234
236
  <Popover.Trigger
235
237
  disabled={isCreating}
236
- aria-labelledby="stgm-new-schedule-agent-label"
238
+ aria-labelledby={`${baseId}-agent-label`}
237
239
  className={cn(
238
240
  "stg:flex stg:w-full stg:items-center stg:justify-between stg:rounded-md stg:border stg:border-input stg:bg-background stg:px-2.5 stg:py-1.5 stg:text-left stg:text-xs",
239
241
  "stg:focus-visible:outline-none stg:focus-visible:ring-1 stg:focus-visible:ring-ring",
@@ -267,11 +269,11 @@ export function ScheduleForm({
267
269
 
268
270
  {/* Message */}
269
271
  <div className="stg:space-y-1">
270
- <label htmlFor="stgm-new-schedule-message" className={labelClasses}>
272
+ <label htmlFor={`${baseId}-message`} className={labelClasses}>
271
273
  Message
272
274
  </label>
273
275
  <textarea
274
- id="stgm-new-schedule-message"
276
+ id={`${baseId}-message`}
275
277
  value={message}
276
278
  onChange={(e) => setMessage(e.target.value)}
277
279
  placeholder="The instruction the agent receives on every fire — write it for a run with no human present."
@@ -314,7 +316,7 @@ export function ScheduleForm({
314
316
  schedule fire, so the picker is filtered to visibility_org —
315
317
  the same credential surface a channel binding uses. */}
316
318
  <div className="stg:space-y-1">
317
- <span id="stgm-new-schedule-env-label" className={labelClasses}>
319
+ <span id={`${baseId}-env-label`} className={labelClasses}>
318
320
  Environments <span className="stg:font-normal stg:text-muted-foreground">(optional)</span>
319
321
  </span>
320
322
  <EnvironmentPicker
@@ -391,12 +393,12 @@ export function ScheduleForm({
391
393
  surface: nobody is watching a 3 AM fire (DD-018 D-5). Clamped
392
394
  by the platform profile; tool-round bounds stay API-only. */}
393
395
  <div className="stg:space-y-1">
394
- <label htmlFor="stgm-new-schedule-budget" className={labelClasses}>
396
+ <label htmlFor={`${baseId}-budget`} className={labelClasses}>
395
397
  Budget per run (USD){" "}
396
398
  <span className="stg:font-normal stg:text-muted-foreground">(optional)</span>
397
399
  </label>
398
400
  <input
399
- id="stgm-new-schedule-budget"
401
+ id={`${baseId}-budget`}
400
402
  type="number"
401
403
  min="0"
402
404
  step="any"
@@ -415,11 +417,11 @@ export function ScheduleForm({
415
417
 
416
418
  {/* Time zone */}
417
419
  <div className="stg:space-y-1">
418
- <label htmlFor="stgm-new-schedule-tz" className={labelClasses}>
420
+ <label htmlFor={`${baseId}-tz`} className={labelClasses}>
419
421
  Time zone
420
422
  </label>
421
423
  <TimeZoneField
422
- id="stgm-new-schedule-tz"
424
+ id={`${baseId}-tz`}
423
425
  value={timeZone}
424
426
  onChange={setTimeZone}
425
427
  disabled={isCreating}
@@ -429,16 +431,16 @@ export function ScheduleForm({
429
431
  {/* Enabled */}
430
432
  <div className="stg:flex stg:items-start stg:gap-3">
431
433
  <Switch
432
- id="stgm-new-schedule-enabled"
434
+ id={`${baseId}-enabled`}
433
435
  checked={enabled}
434
436
  onCheckedChange={setEnabled}
435
437
  disabled={isCreating}
436
- aria-labelledby="stgm-new-schedule-enabled-label"
438
+ aria-labelledby={`${baseId}-enabled-label`}
437
439
  />
438
440
  <div className="stg:space-y-0.5">
439
441
  <label
440
- id="stgm-new-schedule-enabled-label"
441
- htmlFor="stgm-new-schedule-enabled"
442
+ id={`${baseId}-enabled-label`}
443
+ htmlFor={`${baseId}-enabled`}
442
444
  className={labelClasses}
443
445
  >
444
446
  Enabled
@@ -467,7 +469,7 @@ export function ScheduleForm({
467
469
  "stg:disabled:pointer-events-none stg:disabled:opacity-40",
468
470
  )}
469
471
  >
470
- {isCreating && <SpinnerIcon />}
472
+ {isCreating && <SpinnerIcon size={14} />}
471
473
  Create schedule
472
474
  </button>
473
475
 
@@ -597,20 +599,3 @@ function ChevronIcon() {
597
599
  );
598
600
  }
599
601
 
600
- function SpinnerIcon() {
601
- return (
602
- <svg
603
- width="14"
604
- height="14"
605
- viewBox="0 0 16 16"
606
- fill="none"
607
- stroke="currentColor"
608
- strokeWidth="2"
609
- strokeLinecap="round"
610
- className="stg:animate-spin"
611
- aria-hidden="true"
612
- >
613
- <path d="M8 2a6 6 0 1 0 6 6" />
614
- </svg>
615
- );
616
- }