@stigmer/react 3.12.1 → 3.12.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (658) hide show
  1. package/access/ManageAccessDialog.d.ts.map +1 -1
  2. package/access/ManageAccessDialog.js +7 -2
  3. package/access/ManageAccessDialog.js.map +1 -1
  4. package/activity/format-relative-time.d.ts +11 -9
  5. package/activity/format-relative-time.d.ts.map +1 -1
  6. package/activity/format-relative-time.js +11 -9
  7. package/activity/format-relative-time.js.map +1 -1
  8. package/agent/steps/CapabilitiesStep.js +5 -2
  9. package/agent/steps/CapabilitiesStep.js.map +1 -1
  10. package/agent/steps/IdentityStep.d.ts.map +1 -1
  11. package/agent/steps/IdentityStep.js +6 -5
  12. package/agent/steps/IdentityStep.js.map +1 -1
  13. package/agent-instance/CreateAgentInstanceDialog.d.ts.map +1 -1
  14. package/agent-instance/CreateAgentInstanceDialog.js +10 -2
  15. package/agent-instance/CreateAgentInstanceDialog.js.map +1 -1
  16. package/api-key/ApiKeyCreatedAlert.d.ts.map +1 -1
  17. package/api-key/ApiKeyCreatedAlert.js +12 -20
  18. package/api-key/ApiKeyCreatedAlert.js.map +1 -1
  19. package/api-key/ApiKeyListPanel.d.ts.map +1 -1
  20. package/api-key/ApiKeyListPanel.js +3 -23
  21. package/api-key/ApiKeyListPanel.js.map +1 -1
  22. package/api-key/CreateApiKeyForm.d.ts.map +1 -1
  23. package/api-key/CreateApiKeyForm.js +6 -10
  24. package/api-key/CreateApiKeyForm.js.map +1 -1
  25. package/approval-defaults-context.d.ts +47 -0
  26. package/approval-defaults-context.d.ts.map +1 -0
  27. package/approval-defaults-context.js +27 -0
  28. package/approval-defaults-context.js.map +1 -0
  29. package/attachment/index.d.ts +2 -0
  30. package/attachment/index.d.ts.map +1 -1
  31. package/attachment/index.js +1 -0
  32. package/attachment/index.js.map +1 -1
  33. package/attachment/vision-preflight.d.ts +113 -0
  34. package/attachment/vision-preflight.d.ts.map +1 -0
  35. package/attachment/vision-preflight.js +143 -0
  36. package/attachment/vision-preflight.js.map +1 -0
  37. package/billing/AutoRechargeCard.d.ts.map +1 -1
  38. package/billing/AutoRechargeCard.js +3 -2
  39. package/billing/AutoRechargeCard.js.map +1 -1
  40. package/billing/BillingSection.d.ts.map +1 -1
  41. package/billing/BillingSection.js +3 -2
  42. package/billing/BillingSection.js.map +1 -1
  43. package/channel/ChannelConversationsDialog.d.ts.map +1 -1
  44. package/channel/ChannelConversationsDialog.js +5 -4
  45. package/channel/ChannelConversationsDialog.js.map +1 -1
  46. package/channel/ChannelCredentialsDialog.d.ts.map +1 -1
  47. package/channel/ChannelCredentialsDialog.js +9 -4
  48. package/channel/ChannelCredentialsDialog.js.map +1 -1
  49. package/channel/ChannelTemplatesDialog.d.ts.map +1 -1
  50. package/channel/ChannelTemplatesDialog.js +5 -4
  51. package/channel/ChannelTemplatesDialog.js.map +1 -1
  52. package/channel/ConnectSlackDialog.d.ts.map +1 -1
  53. package/channel/ConnectSlackDialog.js +9 -4
  54. package/channel/ConnectSlackDialog.js.map +1 -1
  55. package/channel/ConnectWhatsAppDialog.d.ts.map +1 -1
  56. package/channel/ConnectWhatsAppDialog.js +9 -4
  57. package/channel/ConnectWhatsAppDialog.js.map +1 -1
  58. package/channel/useChannelSessions.d.ts.map +1 -1
  59. package/channel/useChannelSessions.js.map +1 -1
  60. package/channel-app/ChannelAppDetailPanel.d.ts.map +1 -1
  61. package/channel-app/ChannelAppDetailPanel.js +8 -5
  62. package/channel-app/ChannelAppDetailPanel.js.map +1 -1
  63. package/channel-app/CreateChannelAppForm.d.ts.map +1 -1
  64. package/channel-app/CreateChannelAppForm.js +12 -7
  65. package/channel-app/CreateChannelAppForm.js.map +1 -1
  66. package/channel-app/internal.d.ts +0 -1
  67. package/channel-app/internal.d.ts.map +1 -1
  68. package/channel-app/internal.js +5 -10
  69. package/channel-app/internal.js.map +1 -1
  70. package/composer/ComposerToolbar.js +2 -1
  71. package/composer/ComposerToolbar.js.map +1 -1
  72. package/composer/SessionComposer.d.ts +1 -1
  73. package/composer/SessionComposer.d.ts.map +1 -1
  74. package/composer/SessionComposer.js +120 -13
  75. package/composer/SessionComposer.js.map +1 -1
  76. package/composer/icons.d.ts +0 -1
  77. package/composer/icons.d.ts.map +1 -1
  78. package/composer/icons.js +0 -3
  79. package/composer/icons.js.map +1 -1
  80. package/conversation/ConversationComposer.js +1 -1
  81. package/conversation/ConversationComposer.js.map +1 -1
  82. package/conversation/ConversationListPane.d.ts.map +1 -1
  83. package/conversation/ConversationListPane.js +3 -2
  84. package/conversation/ConversationListPane.js.map +1 -1
  85. package/cursor-accounts/MemberCoverageTable.js +3 -14
  86. package/cursor-accounts/MemberCoverageTable.js.map +1 -1
  87. package/dashboard/DashboardFailedRuns.d.ts.map +1 -1
  88. package/dashboard/DashboardFailedRuns.js +2 -14
  89. package/dashboard/DashboardFailedRuns.js.map +1 -1
  90. package/environment/CreateEnvironmentForm.d.ts.map +1 -1
  91. package/environment/CreateEnvironmentForm.js +4 -8
  92. package/environment/CreateEnvironmentForm.js.map +1 -1
  93. package/environment/EnvVarForm.d.ts.map +1 -1
  94. package/environment/EnvVarForm.js +2 -4
  95. package/environment/EnvVarForm.js.map +1 -1
  96. package/environment/EnvironmentVariableEditor.d.ts.map +1 -1
  97. package/environment/EnvironmentVariableEditor.js +5 -7
  98. package/environment/EnvironmentVariableEditor.js.map +1 -1
  99. package/execution/ArtifactApplyButton.d.ts.map +1 -1
  100. package/execution/ArtifactApplyButton.js +2 -4
  101. package/execution/ArtifactApplyButton.js.map +1 -1
  102. package/execution/ExecutionErrorNotice.d.ts +36 -0
  103. package/execution/ExecutionErrorNotice.d.ts.map +1 -0
  104. package/execution/ExecutionErrorNotice.js +39 -0
  105. package/execution/ExecutionErrorNotice.js.map +1 -0
  106. package/execution/FilePathLink.d.ts.map +1 -1
  107. package/execution/FilePathLink.js +5 -8
  108. package/execution/FilePathLink.js.map +1 -1
  109. package/execution/FileReviewCard.d.ts.map +1 -1
  110. package/execution/FileReviewCard.js +1 -6
  111. package/execution/FileReviewCard.js.map +1 -1
  112. package/execution/FollowUpInput.d.ts.map +1 -1
  113. package/execution/FollowUpInput.js +1 -3
  114. package/execution/FollowUpInput.js.map +1 -1
  115. package/execution/LivenessStatusLine.d.ts +40 -0
  116. package/execution/LivenessStatusLine.d.ts.map +1 -0
  117. package/execution/LivenessStatusLine.js +34 -0
  118. package/execution/LivenessStatusLine.js.map +1 -0
  119. package/execution/MessageEntry.d.ts.map +1 -1
  120. package/execution/MessageEntry.js +31 -3
  121. package/execution/MessageEntry.js.map +1 -1
  122. package/execution/MessageThread.d.ts +25 -0
  123. package/execution/MessageThread.d.ts.map +1 -1
  124. package/execution/MessageThread.js +51 -36
  125. package/execution/MessageThread.js.map +1 -1
  126. package/execution/SetupProgress.d.ts.map +1 -1
  127. package/execution/SetupProgress.js +1 -1
  128. package/execution/SetupProgress.js.map +1 -1
  129. package/execution/SubAgentSection.d.ts.map +1 -1
  130. package/execution/SubAgentSection.js +9 -7
  131. package/execution/SubAgentSection.js.map +1 -1
  132. package/execution/TerminalSession.d.ts +30 -0
  133. package/execution/TerminalSession.d.ts.map +1 -1
  134. package/execution/TerminalSession.js +37 -1
  135. package/execution/TerminalSession.js.map +1 -1
  136. package/execution/ToolCallDetail.d.ts +9 -0
  137. package/execution/ToolCallDetail.d.ts.map +1 -1
  138. package/execution/ToolCallDetail.js +16 -0
  139. package/execution/ToolCallDetail.js.map +1 -1
  140. package/execution/ToolCallItem.d.ts +20 -6
  141. package/execution/ToolCallItem.d.ts.map +1 -1
  142. package/execution/ToolCallItem.js +102 -29
  143. package/execution/ToolCallItem.js.map +1 -1
  144. package/execution/ToolRunGroup.d.ts.map +1 -1
  145. package/execution/ToolRunGroup.js +11 -11
  146. package/execution/ToolRunGroup.js.map +1 -1
  147. package/execution/WriteBackCard.d.ts.map +1 -1
  148. package/execution/WriteBackCard.js +5 -20
  149. package/execution/WriteBackCard.js.map +1 -1
  150. package/execution/index.d.ts +6 -2
  151. package/execution/index.d.ts.map +1 -1
  152. package/execution/index.js +3 -1
  153. package/execution/index.js.map +1 -1
  154. package/execution/tool-categories.d.ts +42 -7
  155. package/execution/tool-categories.d.ts.map +1 -1
  156. package/execution/tool-categories.js +38 -4
  157. package/execution/tool-categories.js.map +1 -1
  158. package/execution/tool-presenter.d.ts +17 -1
  159. package/execution/tool-presenter.d.ts.map +1 -1
  160. package/execution/tool-presenter.js +4 -1
  161. package/execution/tool-presenter.js.map +1 -1
  162. package/execution/useArtifactInspection.d.ts.map +1 -1
  163. package/execution/useArtifactInspection.js +4 -7
  164. package/execution/useArtifactInspection.js.map +1 -1
  165. package/iam-policy/GrantAccessForm.d.ts.map +1 -1
  166. package/iam-policy/GrantAccessForm.js +2 -4
  167. package/iam-policy/GrantAccessForm.js.map +1 -1
  168. package/iam-policy/OrgMembersPanel.d.ts.map +1 -1
  169. package/iam-policy/OrgMembersPanel.js +3 -5
  170. package/iam-policy/OrgMembersPanel.js.map +1 -1
  171. package/iam-policy/RoleSelector.d.ts.map +1 -1
  172. package/iam-policy/RoleSelector.js +7 -1
  173. package/iam-policy/RoleSelector.js.map +1 -1
  174. package/identity-provider/CreateIdentityProviderForm.d.ts.map +1 -1
  175. package/identity-provider/CreateIdentityProviderForm.js +6 -9
  176. package/identity-provider/CreateIdentityProviderForm.js.map +1 -1
  177. package/identity-provider/IdentityProviderDetailPanel.d.ts.map +1 -1
  178. package/identity-provider/IdentityProviderDetailPanel.js +17 -26
  179. package/identity-provider/IdentityProviderDetailPanel.js.map +1 -1
  180. package/identity-provider/IdentityProviderListPanel.d.ts.map +1 -1
  181. package/identity-provider/IdentityProviderListPanel.js +2 -4
  182. package/identity-provider/IdentityProviderListPanel.js.map +1 -1
  183. package/identity-provider/IdentityProviderWizard.d.ts.map +1 -1
  184. package/identity-provider/IdentityProviderWizard.js +8 -7
  185. package/identity-provider/IdentityProviderWizard.js.map +1 -1
  186. package/identity-provider/SsoLoginPrompt.js +5 -6
  187. package/identity-provider/SsoLoginPrompt.js.map +1 -1
  188. package/index.d.ts +9 -8
  189. package/index.d.ts.map +1 -1
  190. package/index.js +4 -4
  191. package/index.js.map +1 -1
  192. package/internal/DecisionButton.d.ts.map +1 -1
  193. package/internal/DecisionButton.js +1 -6
  194. package/internal/DecisionButton.js.map +1 -1
  195. package/internal/SpinnerIcon.d.ts +22 -0
  196. package/internal/SpinnerIcon.d.ts.map +1 -0
  197. package/internal/SpinnerIcon.js +23 -0
  198. package/internal/SpinnerIcon.js.map +1 -0
  199. package/internal/select-element-text.d.ts +11 -0
  200. package/internal/select-element-text.d.ts.map +1 -0
  201. package/internal/select-element-text.js +19 -0
  202. package/internal/select-element-text.js.map +1 -0
  203. package/internal/thread-card/ThreadCardShell.d.ts +27 -10
  204. package/internal/thread-card/ThreadCardShell.d.ts.map +1 -1
  205. package/internal/thread-card/ThreadCardShell.js +11 -5
  206. package/internal/thread-card/ThreadCardShell.js.map +1 -1
  207. package/internal/thread-card/glyphs.d.ts +11 -2
  208. package/internal/thread-card/glyphs.d.ts.map +1 -1
  209. package/internal/thread-card/glyphs.js +9 -3
  210. package/internal/thread-card/glyphs.js.map +1 -1
  211. package/internal/thread-card/index.d.ts +1 -1
  212. package/internal/thread-card/index.d.ts.map +1 -1
  213. package/internal/thread-card/index.js.map +1 -1
  214. package/internal/useCopyFeedback.d.ts +28 -0
  215. package/internal/useCopyFeedback.d.ts.map +1 -0
  216. package/internal/useCopyFeedback.js +40 -0
  217. package/internal/useCopyFeedback.js.map +1 -0
  218. package/invitation/InvitationCreatedAlert.d.ts.map +1 -1
  219. package/invitation/InvitationCreatedAlert.js +12 -19
  220. package/invitation/InvitationCreatedAlert.js.map +1 -1
  221. package/invitation/InvitationManager.d.ts.map +1 -1
  222. package/invitation/InvitationManager.js +14 -21
  223. package/invitation/InvitationManager.js.map +1 -1
  224. package/invitation/InvitationRedemption.d.ts.map +1 -1
  225. package/invitation/InvitationRedemption.js +2 -4
  226. package/invitation/InvitationRedemption.js.map +1 -1
  227. package/library/useExportResource.d.ts.map +1 -1
  228. package/library/useExportResource.js +16 -27
  229. package/library/useExportResource.js.map +1 -1
  230. package/manifest/ApplyManifestDialog.js +1 -1
  231. package/manifest/EditResourceYamlDialog.js +1 -1
  232. package/mcp-server/DefinitionDriftNotice.d.ts +42 -0
  233. package/mcp-server/DefinitionDriftNotice.d.ts.map +1 -0
  234. package/mcp-server/DefinitionDriftNotice.js +52 -0
  235. package/mcp-server/DefinitionDriftNotice.js.map +1 -0
  236. package/mcp-server/McpServerConnectDialog.js +1 -1
  237. package/mcp-server/McpServerDetailView.d.ts.map +1 -1
  238. package/mcp-server/McpServerDetailView.js +47 -14
  239. package/mcp-server/McpServerDetailView.js.map +1 -1
  240. package/mcp-server/OAuthAppForm.d.ts.map +1 -1
  241. package/mcp-server/OAuthAppForm.js +2 -4
  242. package/mcp-server/OAuthAppForm.js.map +1 -1
  243. package/mcp-server/internal/definitionDrift.d.ts +39 -0
  244. package/mcp-server/internal/definitionDrift.d.ts.map +1 -0
  245. package/mcp-server/internal/definitionDrift.js +122 -0
  246. package/mcp-server/internal/definitionDrift.js.map +1 -0
  247. package/mcp-server/internal/mcpServerToInput.d.ts.map +1 -1
  248. package/mcp-server/internal/mcpServerToInput.js +3 -0
  249. package/mcp-server/internal/mcpServerToInput.js.map +1 -1
  250. package/mcp-server/steps/EnvironmentAuthStep.d.ts.map +1 -1
  251. package/mcp-server/steps/EnvironmentAuthStep.js +8 -4
  252. package/mcp-server/steps/EnvironmentAuthStep.js.map +1 -1
  253. package/mcp-server/steps/IdentityTransportStep.d.ts.map +1 -1
  254. package/mcp-server/steps/IdentityTransportStep.js +5 -4
  255. package/mcp-server/steps/IdentityTransportStep.js.map +1 -1
  256. package/mcp-server/useMcpServerConnect.d.ts +1 -1
  257. package/mcp-server/useMcpServerDefinitionDrift.d.ts +44 -0
  258. package/mcp-server/useMcpServerDefinitionDrift.d.ts.map +1 -0
  259. package/mcp-server/useMcpServerDefinitionDrift.js +61 -0
  260. package/mcp-server/useMcpServerDefinitionDrift.js.map +1 -0
  261. package/models/ModelRegistryContext.d.ts +7 -1
  262. package/models/ModelRegistryContext.d.ts.map +1 -1
  263. package/models/ModelRegistryContext.js.map +1 -1
  264. package/models/ModelSelector.js +9 -1
  265. package/models/ModelSelector.js.map +1 -1
  266. package/models/index.d.ts +2 -2
  267. package/models/index.d.ts.map +1 -1
  268. package/models/index.js +1 -1
  269. package/models/index.js.map +1 -1
  270. package/models/registry.d.ts +88 -6
  271. package/models/registry.d.ts.map +1 -1
  272. package/models/registry.js +133 -27
  273. package/models/registry.js.map +1 -1
  274. package/models/useModelRegistry.d.ts +7 -1
  275. package/models/useModelRegistry.d.ts.map +1 -1
  276. package/models/useModelRegistry.js +3 -2
  277. package/models/useModelRegistry.js.map +1 -1
  278. package/oauth-app/CreateOAuthAppForm.d.ts.map +1 -1
  279. package/oauth-app/CreateOAuthAppForm.js +4 -5
  280. package/oauth-app/CreateOAuthAppForm.js.map +1 -1
  281. package/oauth-app/OAuthAppDetailPanel.d.ts.map +1 -1
  282. package/oauth-app/OAuthAppDetailPanel.js +5 -6
  283. package/oauth-app/OAuthAppDetailPanel.js.map +1 -1
  284. package/organization/CreateOrganizationForm.d.ts.map +1 -1
  285. package/organization/CreateOrganizationForm.js +5 -9
  286. package/organization/CreateOrganizationForm.js.map +1 -1
  287. package/organization/OrgProfilePanel.d.ts.map +1 -1
  288. package/organization/OrgProfilePanel.js +7 -16
  289. package/organization/OrgProfilePanel.js.map +1 -1
  290. package/package.json +4 -4
  291. package/platform-client/CreatePlatformClientForm.d.ts.map +1 -1
  292. package/platform-client/CreatePlatformClientForm.js +5 -6
  293. package/platform-client/CreatePlatformClientForm.js.map +1 -1
  294. package/platform-client/PlatformClientDetailPanel.d.ts.map +1 -1
  295. package/platform-client/PlatformClientDetailPanel.js +6 -7
  296. package/platform-client/PlatformClientDetailPanel.js.map +1 -1
  297. package/platform-client/PlatformClientListPanel.d.ts.map +1 -1
  298. package/platform-client/PlatformClientListPanel.js +2 -4
  299. package/platform-client/PlatformClientListPanel.js.map +1 -1
  300. package/platform-client/PlatformClientSecretAlert.d.ts.map +1 -1
  301. package/platform-client/PlatformClientSecretAlert.js +18 -25
  302. package/platform-client/PlatformClientSecretAlert.js.map +1 -1
  303. package/provider.d.ts +34 -1
  304. package/provider.d.ts.map +1 -1
  305. package/provider.js +14 -7
  306. package/provider.js.map +1 -1
  307. package/resource-creation/WizardNav.d.ts.map +1 -1
  308. package/resource-creation/WizardNav.js +2 -4
  309. package/resource-creation/WizardNav.js.map +1 -1
  310. package/resource-detail/ConfirmDialog.js +1 -1
  311. package/resource-detail/useCopyResource.d.ts +4 -3
  312. package/resource-detail/useCopyResource.d.ts.map +1 -1
  313. package/resource-detail/useCopyResource.js +10 -19
  314. package/resource-detail/useCopyResource.js.map +1 -1
  315. package/schedule/ScheduleDetailView.d.ts.map +1 -1
  316. package/schedule/ScheduleDetailView.js +2 -4
  317. package/schedule/ScheduleDetailView.js.map +1 -1
  318. package/schedule/ScheduleForm.d.ts.map +1 -1
  319. package/schedule/ScheduleForm.js +6 -7
  320. package/schedule/ScheduleForm.js.map +1 -1
  321. package/session/NewSessionViewer.d.ts +52 -2
  322. package/session/NewSessionViewer.d.ts.map +1 -1
  323. package/session/NewSessionViewer.js +21 -6
  324. package/session/NewSessionViewer.js.map +1 -1
  325. package/session/SessionViewer.d.ts +63 -2
  326. package/session/SessionViewer.d.ts.map +1 -1
  327. package/session/SessionViewer.js +43 -17
  328. package/session/SessionViewer.js.map +1 -1
  329. package/session/audience.d.ts +17 -0
  330. package/session/audience.d.ts.map +1 -1
  331. package/session/index.d.ts +2 -1
  332. package/session/index.d.ts.map +1 -1
  333. package/session/index.js.map +1 -1
  334. package/session/run-config.d.ts +50 -0
  335. package/session/run-config.d.ts.map +1 -0
  336. package/session/run-config.js +15 -0
  337. package/session/run-config.js.map +1 -0
  338. package/session/useNewSessionFlow.d.ts +11 -0
  339. package/session/useNewSessionFlow.d.ts.map +1 -1
  340. package/session/useNewSessionFlow.js +29 -2
  341. package/session/useNewSessionFlow.js.map +1 -1
  342. package/session/useSessionConversation.d.ts +7 -7
  343. package/session/useSessionConversation.d.ts.map +1 -1
  344. package/session/useSessionConversation.js +2 -0
  345. package/session/useSessionConversation.js.map +1 -1
  346. package/session/useSessionPageFlow.d.ts +18 -4
  347. package/session/useSessionPageFlow.d.ts.map +1 -1
  348. package/session/useSessionPageFlow.js +33 -6
  349. package/session/useSessionPageFlow.js.map +1 -1
  350. package/session/useSessionPanel.d.ts +37 -2
  351. package/session/useSessionPanel.d.ts.map +1 -1
  352. package/session/useSessionPanel.js +44 -10
  353. package/session/useSessionPanel.js.map +1 -1
  354. package/settings/ApiKeysSection.d.ts.map +1 -1
  355. package/settings/ApiKeysSection.js +3 -2
  356. package/settings/ApiKeysSection.js.map +1 -1
  357. package/settings/ChannelAppsSection.d.ts.map +1 -1
  358. package/settings/ChannelAppsSection.js +3 -2
  359. package/settings/ChannelAppsSection.js.map +1 -1
  360. package/settings/EnvironmentsSection.js +5 -3
  361. package/settings/EnvironmentsSection.js.map +1 -1
  362. package/settings/IdentityProvidersSection.d.ts.map +1 -1
  363. package/settings/IdentityProvidersSection.js +3 -2
  364. package/settings/IdentityProvidersSection.js.map +1 -1
  365. package/settings/InvitationsSection.d.ts.map +1 -1
  366. package/settings/InvitationsSection.js +3 -1
  367. package/settings/InvitationsSection.js.map +1 -1
  368. package/settings/MembersSection.d.ts.map +1 -1
  369. package/settings/MembersSection.js +3 -1
  370. package/settings/MembersSection.js.map +1 -1
  371. package/settings/OAuthAppsSection.d.ts.map +1 -1
  372. package/settings/OAuthAppsSection.js +3 -2
  373. package/settings/OAuthAppsSection.js.map +1 -1
  374. package/settings/OrgProfileSection.d.ts.map +1 -1
  375. package/settings/OrgProfileSection.js +3 -2
  376. package/settings/OrgProfileSection.js.map +1 -1
  377. package/settings/PlatformClientsSection.d.ts.map +1 -1
  378. package/settings/PlatformClientsSection.js +3 -2
  379. package/settings/PlatformClientsSection.js.map +1 -1
  380. package/settings/UsageSection.d.ts.map +1 -1
  381. package/settings/UsageSection.js +3 -1
  382. package/settings/UsageSection.js.map +1 -1
  383. package/sharing/ShareAgentDialog.d.ts.map +1 -1
  384. package/sharing/ShareAgentDialog.js +18 -7
  385. package/sharing/ShareAgentDialog.js.map +1 -1
  386. package/sidebar/chrome.d.ts +3 -4
  387. package/sidebar/chrome.d.ts.map +1 -1
  388. package/sidebar/chrome.js +5 -4
  389. package/sidebar/chrome.js.map +1 -1
  390. package/skill/SkillDiffDialog.js +1 -1
  391. package/src/access/ManageAccessDialog.tsx +10 -4
  392. package/src/activity/format-relative-time.ts +11 -9
  393. package/src/agent/steps/CapabilitiesStep.tsx +6 -3
  394. package/src/agent/steps/IdentityStep.tsx +19 -12
  395. package/src/agent-instance/CreateAgentInstanceDialog.tsx +17 -8
  396. package/src/api-key/ApiKeyCreatedAlert.tsx +10 -19
  397. package/src/api-key/ApiKeyListPanel.tsx +3 -39
  398. package/src/api-key/CreateApiKeyForm.tsx +12 -26
  399. package/src/approval-defaults-context.ts +56 -0
  400. package/src/attachment/__tests__/vision-preflight.test.ts +311 -0
  401. package/src/attachment/index.ts +12 -0
  402. package/src/attachment/vision-preflight.ts +236 -0
  403. package/src/billing/AutoRechargeCard.tsx +5 -4
  404. package/src/billing/BillingSection.tsx +4 -3
  405. package/src/channel/ChannelConversationsDialog.tsx +8 -4
  406. package/src/channel/ChannelCredentialsDialog.tsx +14 -4
  407. package/src/channel/ChannelTemplatesDialog.tsx +8 -4
  408. package/src/channel/ConnectSlackDialog.tsx +14 -4
  409. package/src/channel/ConnectWhatsAppDialog.tsx +14 -4
  410. package/src/channel/useChannelSessions.ts +3 -0
  411. package/src/channel-app/ChannelAppDetailPanel.tsx +15 -12
  412. package/src/channel-app/CreateChannelAppForm.tsx +17 -12
  413. package/src/channel-app/internal.tsx +5 -25
  414. package/src/composer/ComposerToolbar.tsx +1 -1
  415. package/src/composer/SessionComposer.tsx +160 -13
  416. package/src/composer/__tests__/SessionComposer-modelCoherence.test.tsx +220 -0
  417. package/src/composer/__tests__/SessionComposer-visionPreflight.test.tsx +222 -0
  418. package/src/composer/icons.tsx +0 -18
  419. package/src/conversation/ConversationComposer.tsx +1 -1
  420. package/src/conversation/ConversationListPane.tsx +4 -3
  421. package/src/cursor-accounts/MemberCoverageTable.tsx +3 -14
  422. package/src/cursor-accounts/__tests__/CursorAccountsConsole.test.tsx +2 -10
  423. package/src/dashboard/DashboardFailedRuns.tsx +2 -12
  424. package/src/environment/CreateEnvironmentForm.tsx +8 -27
  425. package/src/environment/EnvVarForm.tsx +2 -18
  426. package/src/environment/EnvironmentVariableEditor.tsx +5 -21
  427. package/src/execution/ArtifactApplyButton.tsx +2 -17
  428. package/src/execution/ExecutionErrorNotice.tsx +99 -0
  429. package/src/execution/FilePathLink.tsx +5 -9
  430. package/src/execution/FileReviewCard.tsx +1 -20
  431. package/src/execution/FollowUpInput.tsx +1 -16
  432. package/src/execution/LivenessStatusLine.tsx +59 -0
  433. package/src/execution/MessageEntry.tsx +136 -25
  434. package/src/execution/MessageThread.tsx +84 -83
  435. package/src/execution/SetupProgress.tsx +5 -1
  436. package/src/execution/SubAgentSection.tsx +9 -20
  437. package/src/execution/TerminalSession.tsx +97 -10
  438. package/src/execution/ToolCallDetail.tsx +19 -0
  439. package/src/execution/ToolCallItem.tsx +157 -37
  440. package/src/execution/ToolRunGroup.tsx +30 -32
  441. package/src/execution/WriteBackCard.tsx +5 -24
  442. package/src/execution/__tests__/MessageEntry-copy.test.tsx +125 -0
  443. package/src/execution/__tests__/MessageThread.test.tsx +97 -0
  444. package/src/execution/__tests__/TerminalSession.test.tsx +71 -1
  445. package/src/execution/__tests__/ToolCallDetail.test.tsx +33 -1
  446. package/src/execution/__tests__/ToolCallItem.test.tsx +299 -11
  447. package/src/execution/__tests__/ToolRunGroup.test.tsx +41 -9
  448. package/src/execution/__tests__/message-thread-slots.test.tsx +92 -0
  449. package/src/execution/__tests__/tool-presenter.test.tsx +41 -4
  450. package/src/execution/index.ts +8 -2
  451. package/src/execution/tool-categories.ts +72 -8
  452. package/src/execution/tool-presenter.ts +22 -1
  453. package/src/execution/useArtifactInspection.ts +4 -8
  454. package/src/iam-policy/GrantAccessForm.tsx +2 -18
  455. package/src/iam-policy/OrgMembersPanel.tsx +3 -19
  456. package/src/iam-policy/RoleSelector.tsx +8 -1
  457. package/src/identity-provider/CreateIdentityProviderForm.tsx +13 -31
  458. package/src/identity-provider/IdentityProviderDetailPanel.tsx +24 -49
  459. package/src/identity-provider/IdentityProviderListPanel.tsx +2 -18
  460. package/src/identity-provider/IdentityProviderWizard.tsx +15 -32
  461. package/src/identity-provider/SsoLoginPrompt.tsx +6 -21
  462. package/src/index.ts +23 -1
  463. package/src/internal/DecisionButton.tsx +1 -20
  464. package/src/internal/SpinnerIcon.tsx +42 -0
  465. package/src/internal/__tests__/ThreadCardShell.test.tsx +43 -7
  466. package/src/internal/__tests__/useCopyFeedback.test.ts +92 -0
  467. package/src/internal/select-element-text.ts +17 -0
  468. package/src/internal/thread-card/ThreadCardShell.tsx +53 -21
  469. package/src/internal/thread-card/glyphs.tsx +24 -3
  470. package/src/internal/thread-card/index.ts +1 -0
  471. package/src/internal/useCopyFeedback.ts +61 -0
  472. package/src/invitation/InvitationCreatedAlert.tsx +10 -18
  473. package/src/invitation/InvitationManager.tsx +23 -34
  474. package/src/invitation/InvitationRedemption.tsx +2 -18
  475. package/src/library/useExportResource.ts +15 -29
  476. package/src/manifest/ApplyManifestDialog.tsx +1 -1
  477. package/src/manifest/EditResourceYamlDialog.tsx +1 -1
  478. package/src/mcp-server/DefinitionDriftNotice.tsx +120 -0
  479. package/src/mcp-server/McpServerConnectDialog.tsx +1 -1
  480. package/src/mcp-server/McpServerDetailView.tsx +58 -26
  481. package/src/mcp-server/OAuthAppForm.tsx +2 -18
  482. package/src/mcp-server/__tests__/DefinitionDriftNotice.test.tsx +57 -0
  483. package/src/mcp-server/__tests__/definitionDrift.test.ts +245 -0
  484. package/src/mcp-server/__tests__/mcpServerToInput.test.ts +201 -0
  485. package/src/mcp-server/__tests__/useMcpServerDefinitionDrift.test.tsx +173 -0
  486. package/src/mcp-server/internal/definitionDrift.ts +158 -0
  487. package/src/mcp-server/internal/mcpServerToInput.ts +3 -0
  488. package/src/mcp-server/steps/EnvironmentAuthStep.tsx +19 -19
  489. package/src/mcp-server/steps/IdentityTransportStep.tsx +24 -23
  490. package/src/mcp-server/useMcpServerConnect.ts +1 -1
  491. package/src/mcp-server/useMcpServerDefinitionDrift.ts +95 -0
  492. package/src/models/ModelRegistryContext.ts +7 -1
  493. package/src/models/ModelSelector.tsx +37 -0
  494. package/src/models/__tests__/ModelSelector-visionIndicator.test.tsx +129 -0
  495. package/src/models/__tests__/resolveDefaultModel.test.ts +115 -0
  496. package/src/models/__tests__/useModelRegistry.test.tsx +99 -4
  497. package/src/models/index.ts +2 -2
  498. package/src/models/registry.ts +196 -29
  499. package/src/models/useModelRegistry.ts +10 -2
  500. package/src/oauth-app/CreateOAuthAppForm.tsx +16 -31
  501. package/src/oauth-app/OAuthAppDetailPanel.tsx +16 -31
  502. package/src/organization/CreateOrganizationForm.tsx +10 -29
  503. package/src/organization/OrgProfilePanel.tsx +13 -44
  504. package/src/platform-client/CreatePlatformClientForm.tsx +9 -29
  505. package/src/platform-client/PlatformClientDetailPanel.tsx +10 -30
  506. package/src/platform-client/PlatformClientListPanel.tsx +2 -18
  507. package/src/platform-client/PlatformClientSecretAlert.tsx +26 -55
  508. package/src/provider.tsx +76 -33
  509. package/src/resource-creation/WizardNav.tsx +2 -18
  510. package/src/resource-detail/ConfirmDialog.tsx +1 -1
  511. package/src/resource-detail/useCopyResource.ts +17 -23
  512. package/src/schedule/ScheduleDetailView.tsx +2 -18
  513. package/src/schedule/ScheduleForm.tsx +19 -34
  514. package/src/session/NewSessionViewer.tsx +85 -7
  515. package/src/session/SessionViewer.tsx +120 -17
  516. package/src/session/__tests__/audienceWiring.test.tsx +76 -0
  517. package/src/session/__tests__/panelNegotiation.test.tsx +302 -0
  518. package/src/session/__tests__/useNewSessionFlow.test.tsx +134 -5
  519. package/src/session/__tests__/useSessionPageFlow.autoApprove.test.tsx +74 -0
  520. package/src/session/__tests__/useSessionPageFlow.runConfig.test.tsx +157 -0
  521. package/src/session/__tests__/useSessionPanel.test.ts +114 -0
  522. package/src/session/audience.ts +18 -0
  523. package/src/session/index.ts +2 -1
  524. package/src/session/run-config.ts +59 -0
  525. package/src/session/useNewSessionFlow.ts +39 -2
  526. package/src/session/useSessionConversation.ts +10 -8
  527. package/src/session/useSessionPageFlow.ts +51 -10
  528. package/src/session/useSessionPanel.ts +91 -10
  529. package/src/settings/ApiKeysSection.tsx +4 -3
  530. package/src/settings/ChannelAppsSection.tsx +4 -3
  531. package/src/settings/EnvironmentsSection.tsx +8 -5
  532. package/src/settings/IdentityProvidersSection.tsx +4 -3
  533. package/src/settings/InvitationsSection.tsx +4 -2
  534. package/src/settings/MembersSection.tsx +4 -2
  535. package/src/settings/OAuthAppsSection.tsx +4 -3
  536. package/src/settings/OrgProfileSection.tsx +4 -3
  537. package/src/settings/PlatformClientsSection.tsx +4 -3
  538. package/src/settings/UsageSection.tsx +4 -2
  539. package/src/sharing/ShareAgentDialog.tsx +28 -10
  540. package/src/sidebar/__tests__/WorkspaceSidebar.test.tsx +4 -1
  541. package/src/sidebar/chrome.tsx +6 -6
  542. package/src/skill/SkillDiffDialog.tsx +1 -1
  543. package/src/styles.css +43 -0
  544. package/src/version-history/VersionTimelineEntry.tsx +1 -21
  545. package/src/workflow/FailedRunsWidget.tsx +2 -9
  546. package/src/workflow/PendingApprovalsWidget.tsx +2 -9
  547. package/src/workflow/ViewYamlDialog.tsx +7 -22
  548. package/src/workflow/WorkflowArchitectDialog.tsx +8 -27
  549. package/src/workflow/WorkflowArtifactDocument.tsx +5 -9
  550. package/src/workflow/WorkflowCanvasEditor.tsx +2 -0
  551. package/src/workflow/WorkflowCanvasInner.tsx +14 -1
  552. package/src/workflow/WorkflowDiffGraph.tsx +7 -1
  553. package/src/workflow/WorkflowExecutionViewer.tsx +88 -11
  554. package/src/workflow/WorkflowExplainDialog.tsx +8 -24
  555. package/src/workflow/WorkflowOverviewGraph.tsx +9 -1
  556. package/src/workflow/WorkflowRefinePanel.tsx +2 -18
  557. package/src/workflow/WorkflowRepairCard.tsx +2 -18
  558. package/src/workflow/WorkflowRunDialog.tsx +3 -23
  559. package/src/workflow/WorkflowTaskApprovalSummary.tsx +2 -17
  560. package/src/workflow/WorkflowVersionBadge.tsx +4 -13
  561. package/src/workflow/WorkflowVersionTimeline.tsx +1 -25
  562. package/src/workflow/__tests__/panelNegotiation.test.tsx +230 -0
  563. package/src/workflow/__tests__/useWorkflowCanvas.dirty.test.tsx +178 -0
  564. package/src/workflow/__tests__/useWorkflowCanvas.drag.test.tsx +224 -0
  565. package/src/workflow/__tests__/useWorkflowExecutionPanel.test.ts +100 -0
  566. package/src/workflow/execution-comparison/ExecutionComparisonPicker.tsx +7 -11
  567. package/src/workflow/execution-history/ExecutionHistoryTable.tsx +1 -25
  568. package/src/workflow/index.ts +1 -0
  569. package/src/workflow/instance/CreateWorkflowInstanceDialog.tsx +1 -1
  570. package/src/workflow/instance/WorkflowInstanceDetailPanel.tsx +2 -1
  571. package/src/workflow/picker/BranchAddPopover.tsx +4 -3
  572. package/src/workflow/templates/WorkflowTemplatePreview.tsx +1 -1
  573. package/src/workflow/useApprovalBoundary.ts +1 -1
  574. package/src/workflow/useWorkflowCanvas.ts +114 -11
  575. package/src/workflow/useWorkflowExecutionPanel.ts +95 -13
  576. package/styles.css +1 -1
  577. package/version-history/VersionTimelineEntry.d.ts.map +1 -1
  578. package/version-history/VersionTimelineEntry.js +1 -23
  579. package/version-history/VersionTimelineEntry.js.map +1 -1
  580. package/workflow/CanvasTransitionEdge.d.ts +1 -1
  581. package/workflow/FailedRunsWidget.d.ts.map +1 -1
  582. package/workflow/FailedRunsWidget.js +2 -11
  583. package/workflow/FailedRunsWidget.js.map +1 -1
  584. package/workflow/PendingApprovalsWidget.d.ts.map +1 -1
  585. package/workflow/PendingApprovalsWidget.js +2 -11
  586. package/workflow/PendingApprovalsWidget.js.map +1 -1
  587. package/workflow/ViewYamlDialog.d.ts.map +1 -1
  588. package/workflow/ViewYamlDialog.js +7 -23
  589. package/workflow/ViewYamlDialog.js.map +1 -1
  590. package/workflow/WorkflowArchitectDialog.d.ts.map +1 -1
  591. package/workflow/WorkflowArchitectDialog.js +7 -11
  592. package/workflow/WorkflowArchitectDialog.js.map +1 -1
  593. package/workflow/WorkflowArtifactDocument.d.ts.map +1 -1
  594. package/workflow/WorkflowArtifactDocument.js +5 -8
  595. package/workflow/WorkflowArtifactDocument.js.map +1 -1
  596. package/workflow/WorkflowCanvasEditor.d.ts.map +1 -1
  597. package/workflow/WorkflowCanvasEditor.js +1 -1
  598. package/workflow/WorkflowCanvasEditor.js.map +1 -1
  599. package/workflow/WorkflowCanvasInner.d.ts +4 -2
  600. package/workflow/WorkflowCanvasInner.d.ts.map +1 -1
  601. package/workflow/WorkflowCanvasInner.js +7 -3
  602. package/workflow/WorkflowCanvasInner.js.map +1 -1
  603. package/workflow/WorkflowDiffGraph.js +6 -2
  604. package/workflow/WorkflowDiffGraph.js.map +1 -1
  605. package/workflow/WorkflowExecutionViewer.d.ts +51 -0
  606. package/workflow/WorkflowExecutionViewer.d.ts.map +1 -1
  607. package/workflow/WorkflowExecutionViewer.js +23 -6
  608. package/workflow/WorkflowExecutionViewer.js.map +1 -1
  609. package/workflow/WorkflowExplainDialog.d.ts.map +1 -1
  610. package/workflow/WorkflowExplainDialog.js +6 -8
  611. package/workflow/WorkflowExplainDialog.js.map +1 -1
  612. package/workflow/WorkflowOverviewGraph.js +8 -2
  613. package/workflow/WorkflowOverviewGraph.js.map +1 -1
  614. package/workflow/WorkflowRefinePanel.d.ts.map +1 -1
  615. package/workflow/WorkflowRefinePanel.js +2 -4
  616. package/workflow/WorkflowRefinePanel.js.map +1 -1
  617. package/workflow/WorkflowRepairCard.d.ts.map +1 -1
  618. package/workflow/WorkflowRepairCard.js +2 -4
  619. package/workflow/WorkflowRepairCard.js.map +1 -1
  620. package/workflow/WorkflowRunDialog.d.ts.map +1 -1
  621. package/workflow/WorkflowRunDialog.js +2 -7
  622. package/workflow/WorkflowRunDialog.js.map +1 -1
  623. package/workflow/WorkflowTaskApprovalSummary.d.ts.map +1 -1
  624. package/workflow/WorkflowTaskApprovalSummary.js +2 -4
  625. package/workflow/WorkflowTaskApprovalSummary.js.map +1 -1
  626. package/workflow/WorkflowVersionBadge.d.ts.map +1 -1
  627. package/workflow/WorkflowVersionBadge.js +4 -13
  628. package/workflow/WorkflowVersionBadge.js.map +1 -1
  629. package/workflow/WorkflowVersionTimeline.d.ts.map +1 -1
  630. package/workflow/WorkflowVersionTimeline.js +1 -26
  631. package/workflow/WorkflowVersionTimeline.js.map +1 -1
  632. package/workflow/execution-comparison/ExecutionComparisonPicker.d.ts.map +1 -1
  633. package/workflow/execution-comparison/ExecutionComparisonPicker.js +7 -15
  634. package/workflow/execution-comparison/ExecutionComparisonPicker.js.map +1 -1
  635. package/workflow/execution-history/ExecutionHistoryTable.d.ts.map +1 -1
  636. package/workflow/execution-history/ExecutionHistoryTable.js +1 -24
  637. package/workflow/execution-history/ExecutionHistoryTable.js.map +1 -1
  638. package/workflow/index.d.ts +1 -1
  639. package/workflow/index.d.ts.map +1 -1
  640. package/workflow/index.js.map +1 -1
  641. package/workflow/instance/CreateWorkflowInstanceDialog.js +1 -1
  642. package/workflow/instance/WorkflowInstanceDetailPanel.d.ts.map +1 -1
  643. package/workflow/instance/WorkflowInstanceDetailPanel.js +1 -1
  644. package/workflow/instance/WorkflowInstanceDetailPanel.js.map +1 -1
  645. package/workflow/picker/BranchAddPopover.d.ts.map +1 -1
  646. package/workflow/picker/BranchAddPopover.js +3 -2
  647. package/workflow/picker/BranchAddPopover.js.map +1 -1
  648. package/workflow/templates/WorkflowTemplatePreview.js +1 -1
  649. package/workflow/useApprovalBoundary.d.ts +1 -1
  650. package/workflow/useApprovalBoundary.js +1 -1
  651. package/workflow/useWorkflowCanvas.d.ts +5 -1
  652. package/workflow/useWorkflowCanvas.d.ts.map +1 -1
  653. package/workflow/useWorkflowCanvas.js +99 -13
  654. package/workflow/useWorkflowCanvas.js.map +1 -1
  655. package/workflow/useWorkflowExecutionPanel.d.ts +38 -2
  656. package/workflow/useWorkflowExecutionPanel.d.ts.map +1 -1
  657. package/workflow/useWorkflowExecutionPanel.js +46 -13
  658. package/workflow/useWorkflowExecutionPanel.js.map +1 -1
@@ -54,24 +54,6 @@ export function ArrowUpIcon() {
54
54
  );
55
55
  }
56
56
 
57
- export function SpinnerIcon() {
58
- return (
59
- <svg
60
- width="16"
61
- height="16"
62
- viewBox="0 0 16 16"
63
- fill="none"
64
- stroke="currentColor"
65
- strokeWidth="2"
66
- strokeLinecap="round"
67
- className="stg:animate-spin"
68
- aria-hidden="true"
69
- >
70
- <path d="M8 2a6 6 0 1 0 6 6" />
71
- </svg>
72
- );
73
- }
74
-
75
57
  /**
76
58
  * Filled rounded square — the universal "stop" glyph. Sized to ~62% of the
77
59
  * viewBox so it reads as a confident, deliberate mark (not a stray dot) when
@@ -7,7 +7,7 @@ import { getUserMessage } from "@stigmer/sdk";
7
7
  import { ChannelSendOutcome } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/message_io_pb";
8
8
  import type { SendChannelMessageOutput } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/message_io_pb";
9
9
  import { Button } from "../button/Button.js";
10
- import { SpinnerIcon } from "../composer/icons.js";
10
+ import { SpinnerIcon } from "../internal/SpinnerIcon.js";
11
11
  import { useComposer } from "../composer/useComposer.js";
12
12
 
13
13
  /** Props for {@link ConversationComposer}. */
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
 
3
- import { memo, useCallback, useRef } from "react";
3
+ import { memo, useCallback, useId, useRef } from "react";
4
4
  import { timestampDate } from "@bufbuild/protobuf/wkt";
5
5
  import { MessageSquare, TriangleAlert, User } from "lucide-react";
6
6
  import { cn } from "@stigmer/theme";
@@ -110,6 +110,7 @@ export function ConversationListPane({
110
110
  now,
111
111
  className,
112
112
  }: ConversationListPaneProps) {
113
+ const channelFilterId = useId();
113
114
  const providerById = new Map(
114
115
  channels.map((channel) => [
115
116
  channel.metadata?.id ?? "",
@@ -129,11 +130,11 @@ export function ConversationListPane({
129
130
  )}
130
131
  {channels.length > 1 && (
131
132
  <>
132
- <label className="stg:sr-only" htmlFor="stgm-conversation-channel-filter">
133
+ <label className="stg:sr-only" htmlFor={channelFilterId}>
133
134
  Filter by channel
134
135
  </label>
135
136
  <select
136
- id="stgm-conversation-channel-filter"
137
+ id={channelFilterId}
137
138
  value={channelFilter}
138
139
  onChange={(e) => onChannelFilterChange(e.target.value)}
139
140
  className={cn(
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
 
3
- import { useCallback, useState } from "react";
3
+ import { useCopyFeedback } from "../internal/useCopyFeedback.js";
4
4
  import { cn } from "@stigmer/theme";
5
5
  import {
6
6
  CursorMemberKeyState,
@@ -420,21 +420,10 @@ function KeyStatusBadge({
420
420
  * would join the operator's own Cursor account to the team.
421
421
  */
422
422
  function CopyInviteButton({ inviteLink }: { readonly inviteLink: string }) {
423
- const [copied, setCopied] = useState(false);
424
-
425
- const handleCopy = useCallback(async () => {
426
- try {
427
- await navigator.clipboard.writeText(inviteLink);
428
- setCopied(true);
429
- setTimeout(() => setCopied(false), 2000);
430
- } catch {
431
- // Clipboard unavailable (permissions, non-secure context) — the
432
- // section description still points at the Cursor dashboard.
433
- }
434
- }, [inviteLink]);
423
+ const { copy, copied } = useCopyFeedback();
435
424
 
436
425
  return (
437
- <Button size="sm" variant="outline" onClick={() => void handleCopy()}>
426
+ <Button size="sm" variant="outline" onClick={() => void copy(inviteLink)}>
438
427
  {copied ? "Copied" : "Copy invite"}
439
428
  </Button>
440
429
  );
@@ -137,16 +137,8 @@ function scenarView() {
137
137
  }),
138
138
  }),
139
139
  ],
140
- // The server populates both the deprecated flat list and the
141
- // spend-joined views; the console reads only the views.
142
- membersWithoutKeys: [
143
- create(CursorTeamMemberSchema, {
144
- userId: "u2",
145
- email: "uncovered@scenar.ai",
146
- name: "Uncovered U",
147
- role: "member",
148
- }),
149
- ],
140
+ // The console reads the spend-joined views (field 4's flat list is
141
+ // gone from the proto stigmer#313).
150
142
  membersWithoutKeysViews: [
151
143
  create(CursorTeamMemberViewSchema, {
152
144
  member: create(CursorTeamMemberSchema, {
@@ -3,6 +3,7 @@
3
3
  import { memo } from "react";
4
4
  import { cn } from "@stigmer/theme";
5
5
  import type { DashboardFailedRun } from "./types.js";
6
+ import { formatRelativeTime } from "../activity/format-relative-time.js";
6
7
 
7
8
  export interface DashboardFailedRunsProps {
8
9
  readonly failedRuns: readonly DashboardFailedRun[];
@@ -12,17 +13,6 @@ export interface DashboardFailedRunsProps {
12
13
  readonly className?: string;
13
14
  }
14
15
 
15
- function timeAgo(date: Date): string {
16
- const seconds = Math.floor((Date.now() - date.getTime()) / 1000);
17
- if (seconds < 60) return "just now";
18
- const minutes = Math.floor(seconds / 60);
19
- if (minutes < 60) return `${minutes}m ago`;
20
- const hours = Math.floor(minutes / 60);
21
- if (hours < 24) return `${hours}h ago`;
22
- const days = Math.floor(hours / 24);
23
- return `${days}d ago`;
24
- }
25
-
26
16
  /**
27
17
  * Widget showing recent failed executions from both agent and workflow
28
18
  * domains, interleaved by timestamp.
@@ -89,7 +79,7 @@ export const DashboardFailedRuns = memo(function DashboardFailedRuns({
89
79
  )}
90
80
  </div>
91
81
  <span className="stg:shrink-0 stg:text-muted-foreground">
92
- {timeAgo(run.failedAt)}
82
+ {formatRelativeTime(run.failedAt)}
93
83
  </span>
94
84
  {onViewClick && (
95
85
  <button
@@ -1,10 +1,11 @@
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 { getUserMessage } from "@stigmer/sdk";
6
6
  import type { Environment } from "@stigmer/protos/ai/stigmer/agentic/environment/v1/api_pb";
7
7
  import { useCreateEnvironment } from "./useCreateEnvironment.js";
8
+ import { SpinnerIcon } from "../internal/SpinnerIcon.js";
8
9
 
9
10
  // ---------------------------------------------------------------------------
10
11
  // Public API
@@ -47,6 +48,7 @@ export function CreateEnvironmentForm({
47
48
  onCancel,
48
49
  className,
49
50
  }: CreateEnvironmentFormProps) {
51
+ const baseId = useId();
50
52
  const { create, isCreating, error, clearError } = useCreateEnvironment();
51
53
 
52
54
  const [name, setName] = useState("");
@@ -80,13 +82,13 @@ export function CreateEnvironmentForm({
80
82
  <div className="stg:space-y-2">
81
83
  <div className="stg:space-y-1">
82
84
  <label
83
- htmlFor="stgm-new-env-name"
85
+ htmlFor={`${baseId}-name`}
84
86
  className="stg:text-xs stg:font-medium stg:text-foreground"
85
87
  >
86
88
  Name
87
89
  </label>
88
90
  <input
89
- id="stgm-new-env-name"
91
+ id={`${baseId}-name`}
90
92
  type="text"
91
93
  value={name}
92
94
  onChange={(e) => setName(e.target.value)}
@@ -105,14 +107,14 @@ export function CreateEnvironmentForm({
105
107
 
106
108
  <div className="stg:space-y-1">
107
109
  <label
108
- htmlFor="stgm-new-env-desc"
110
+ htmlFor={`${baseId}-desc`}
109
111
  className="stg:text-xs stg:font-medium stg:text-muted-foreground"
110
112
  >
111
113
  Description{" "}
112
114
  <span className="stg:text-muted-foreground-subtle">(optional)</span>
113
115
  </label>
114
116
  <input
115
- id="stgm-new-env-desc"
117
+ id={`${baseId}-desc`}
116
118
  type="text"
117
119
  value={description}
118
120
  onChange={(e) => setDescription(e.target.value)}
@@ -144,7 +146,7 @@ export function CreateEnvironmentForm({
144
146
  "stg:disabled:pointer-events-none stg:disabled:opacity-40",
145
147
  )}
146
148
  >
147
- {isCreating && <SpinnerIcon />}
149
+ {isCreating && <SpinnerIcon size={12} />}
148
150
  Create environment
149
151
  </button>
150
152
 
@@ -167,24 +169,3 @@ export function CreateEnvironmentForm({
167
169
  );
168
170
  }
169
171
 
170
- // ---------------------------------------------------------------------------
171
- // Icons
172
- // ---------------------------------------------------------------------------
173
-
174
- function SpinnerIcon() {
175
- return (
176
- <svg
177
- width="12"
178
- height="12"
179
- viewBox="0 0 16 16"
180
- fill="none"
181
- stroke="currentColor"
182
- strokeWidth="2"
183
- strokeLinecap="round"
184
- className="stg:animate-spin"
185
- aria-hidden="true"
186
- >
187
- <path d="M8 2a6 6 0 1 0 6 6" />
188
- </svg>
189
- );
190
- }
@@ -5,6 +5,7 @@ import { cn } from "@stigmer/theme";
5
5
  import type { EnvVarInput } from "@stigmer/sdk";
6
6
  import { useScrollShadows } from "../internal/useScrollShadows.js";
7
7
  import { ScrollFade } from "../internal/ScrollFade.js";
8
+ import { SpinnerIcon } from "../internal/SpinnerIcon.js";
8
9
 
9
10
  /**
10
11
  * Describes a single environment variable the form should collect.
@@ -414,7 +415,7 @@ export function EnvVarForm({
414
415
  "stg:disabled:pointer-events-none stg:disabled:opacity-40",
415
416
  )}
416
417
  >
417
- {isSubmitting && <SpinnerIcon />}
418
+ {isSubmitting && <SpinnerIcon size={12} />}
418
419
  {resolvedSubmitLabel}
419
420
  </button>
420
421
  </div>
@@ -466,20 +467,3 @@ function EyeOffIcon() {
466
467
  );
467
468
  }
468
469
 
469
- function SpinnerIcon() {
470
- return (
471
- <svg
472
- width="12"
473
- height="12"
474
- viewBox="0 0 16 16"
475
- fill="none"
476
- stroke="currentColor"
477
- strokeWidth="2"
478
- strokeLinecap="round"
479
- className="stg:animate-spin"
480
- aria-hidden="true"
481
- >
482
- <path d="M8 2a6 6 0 1 0 6 6" />
483
- </svg>
484
- );
485
- }
@@ -17,6 +17,7 @@ import { PermissionGate } from "../iam-policy/PermissionGate.js";
17
17
  import { useUpdateEnvironmentVariables } from "./useUpdateEnvironmentVariables.js";
18
18
  import { useRemoveEnvironmentVariables } from "./useRemoveEnvironmentVariables.js";
19
19
  import { useRevealSecretValue } from "./useRevealSecretValue.js";
20
+ import { SpinnerIcon } from "../internal/SpinnerIcon.js";
20
21
 
21
22
  // ---------------------------------------------------------------------------
22
23
  // Public API
@@ -367,7 +368,7 @@ function VariableRow({
367
368
  label="Save"
368
369
  variant="primary"
369
370
  >
370
- {isSaving ? <SpinnerIcon /> : <CheckIcon />}
371
+ {isSaving ? <SpinnerIcon size={12} /> : <CheckIcon />}
371
372
  </ActionButton>
372
373
 
373
374
  <ActionButton
@@ -436,7 +437,7 @@ function VariableRow({
436
437
  label="Confirm delete"
437
438
  variant="danger"
438
439
  >
439
- {isDeleting ? <SpinnerIcon /> : <CheckIcon />}
440
+ {isDeleting ? <SpinnerIcon size={12} /> : <CheckIcon />}
440
441
  </ActionButton>
441
442
  <ActionButton
442
443
  onClick={() => setMode("idle")}
@@ -469,7 +470,7 @@ function VariableRow({
469
470
  variant="muted"
470
471
  >
471
472
  {isRevealing ? (
472
- <SpinnerIcon />
473
+ <SpinnerIcon size={12} />
473
474
  ) : revealedValue !== null ? (
474
475
  <EyeOffIcon />
475
476
  ) : (
@@ -609,7 +610,7 @@ function AddVariableForm({
609
610
  "stg:disabled:pointer-events-none stg:disabled:opacity-40",
610
611
  )}
611
612
  >
612
- {isAdding && <SpinnerIcon />}
613
+ {isAdding && <SpinnerIcon size={12} />}
613
614
  Add
614
615
  </button>
615
616
  <button
@@ -815,20 +816,3 @@ function PlusIcon() {
815
816
  );
816
817
  }
817
818
 
818
- function SpinnerIcon() {
819
- return (
820
- <svg
821
- width="12"
822
- height="12"
823
- viewBox="0 0 16 16"
824
- fill="none"
825
- stroke="currentColor"
826
- strokeWidth="2"
827
- strokeLinecap="round"
828
- className="stg:animate-spin"
829
- aria-hidden="true"
830
- >
831
- <path d="M8 2a6 6 0 1 0 6 6" />
832
- </svg>
833
- );
834
- }
@@ -1,6 +1,7 @@
1
1
  "use client";
2
2
 
3
3
  import { cn } from "@stigmer/theme";
4
+ import { SpinnerIcon } from "../internal/thread-card/glyphs.js";
4
5
 
5
6
  /** Props for {@link ArtifactApplyButton}. */
6
7
  export interface ArtifactApplyButtonProps {
@@ -51,7 +52,7 @@ export function ArtifactApplyButton({
51
52
  >
52
53
  {isApplying ? (
53
54
  <span className="stg:inline-flex stg:items-center stg:gap-1.5">
54
- <SpinnerIcon />
55
+ <SpinnerIcon size={12} className="stg:shrink-0" />
55
56
  Applying{"\u2026"}
56
57
  </span>
57
58
  ) : (
@@ -61,19 +62,3 @@ export function ArtifactApplyButton({
61
62
  );
62
63
  }
63
64
 
64
- function SpinnerIcon() {
65
- return (
66
- <svg
67
- width="12"
68
- height="12"
69
- viewBox="0 0 12 12"
70
- fill="none"
71
- stroke="currentColor"
72
- strokeWidth="1.5"
73
- className="stg:shrink-0 stg:animate-spin"
74
- aria-hidden="true"
75
- >
76
- <path d="M6 1.5A4.5 4.5 0 1 1 1.5 6" strokeLinecap="round" />
77
- </svg>
78
- );
79
- }
@@ -0,0 +1,99 @@
1
+ "use client";
2
+
3
+ import { useState } from "react";
4
+ import { cn } from "@stigmer/theme";
5
+
6
+ /**
7
+ * Recognizes a recoverable *interruption* (worker reaped / heartbeat timeout /
8
+ * stall) as opposed to a genuine application failure. The runner stamps these
9
+ * with a stable signature ("[StallTimeoutError]", "Execution interrupted",
10
+ * "Retry or resume."), and the workflow auto-resumes them while recovery cycles
11
+ * remain; by the time one reaches the UI as terminal it is resumable from the
12
+ * session's persisted harness_state_id rather than a dead end.
13
+ */
14
+ function isInterruptedError(error: string): boolean {
15
+ return /\[StallTimeoutError\]|execution interrupted|retry or resume/i.test(error);
16
+ }
17
+
18
+ /** Props for {@link ExecutionErrorNotice} and its MessageThread slot. */
19
+ export interface ExecutionErrorNoticeProps {
20
+ /** The server-reported failure reason (`AgentExecutionStatus.error`), raw. */
21
+ readonly error: string;
22
+ /**
23
+ * The originating user message, resent verbatim on retry. Absent when the
24
+ * failed execution has no resendable prompt — the retry affordance is
25
+ * hidden in that case.
26
+ */
27
+ readonly retryMessage?: string;
28
+ /**
29
+ * Resends {@link retryMessage}; the server continues from the session's
30
+ * persisted harness_state_id. Retry renders only when both this handler
31
+ * and {@link retryMessage} are present.
32
+ */
33
+ readonly onRetry?: (message: string) => void;
34
+ }
35
+
36
+ /**
37
+ * Renders the server-reported failure reason (`AgentExecutionStatus.error`)
38
+ * for an execution that died — typically before producing any messages. The
39
+ * reason can be a long Temporal error, so it is clamped by default with a
40
+ * Show more / Show less toggle.
41
+ *
42
+ * A genuine failure renders as a destructive alert with a Retry. A *recoverable
43
+ * interruption* renders as a neutral notice with a Resume — both resend the
44
+ * originating message, which the server continues from the session's persisted
45
+ * harness_state_id (the same data path; the framing differs so an interruption
46
+ * never looks like a dead-end crash).
47
+ *
48
+ * Slot-overridable via `MessageThreadSlots.ExecutionErrorNotice`. An override
49
+ * receives the raw reason and the retry wiring and owns its own presentation —
50
+ * including whether to reproduce the interruption-vs-failure framing, which is
51
+ * an internal heuristic of this built-in, not part of the slot contract.
52
+ */
53
+ export function ExecutionErrorNotice({
54
+ error,
55
+ retryMessage,
56
+ onRetry,
57
+ }: ExecutionErrorNoticeProps) {
58
+ const [expanded, setExpanded] = useState(false);
59
+ const canRetry = !!onRetry && !!retryMessage;
60
+ const interrupted = isInterruptedError(error);
61
+
62
+ return (
63
+ <div
64
+ role={interrupted ? "status" : "alert"}
65
+ className={cn(
66
+ "stg:mx-4 stg:flex stg:flex-col stg:gap-1.5 stg:rounded-md stg:px-3 stg:py-2",
67
+ interrupted ? "stg:bg-muted" : "stg:bg-destructive-subtle",
68
+ )}
69
+ >
70
+ <p
71
+ className={cn(
72
+ "stg:text-xs stg:whitespace-pre-wrap stg:break-words",
73
+ interrupted ? "stg:text-foreground" : "stg:text-destructive",
74
+ !expanded && "stg:line-clamp-3",
75
+ )}
76
+ >
77
+ {error}
78
+ </p>
79
+ <div className="stg:flex stg:items-center stg:gap-3 stg:text-xs">
80
+ <button
81
+ type="button"
82
+ onClick={() => setExpanded((v) => !v)}
83
+ className="stg:font-medium stg:text-muted-foreground stg:underline-offset-2 stg:hover:underline stg:focus-visible:outline-none stg:focus-visible:ring-2 stg:focus-visible:ring-ring"
84
+ >
85
+ {expanded ? "Show less" : "Show more"}
86
+ </button>
87
+ {canRetry && (
88
+ <button
89
+ type="button"
90
+ onClick={() => onRetry!(retryMessage!)}
91
+ className="stg:font-medium stg:text-foreground stg:underline-offset-2 stg:hover:underline stg:focus-visible:outline-none stg:focus-visible:ring-2 stg:focus-visible:ring-ring"
92
+ >
93
+ {interrupted ? "Resume" : "Retry"}
94
+ </button>
95
+ )}
96
+ </div>
97
+ </div>
98
+ );
99
+ }
@@ -1,8 +1,9 @@
1
1
  "use client";
2
2
 
3
- import { useCallback, useContext, useMemo, useState } from "react";
3
+ import { useCallback, useContext, useMemo } from "react";
4
4
  import { cn } from "@stigmer/theme";
5
5
  import { Tooltip, TooltipContent, TooltipTrigger } from "../internal/tooltip.js";
6
+ import { useCopyFeedback } from "../internal/useCopyFeedback.js";
6
7
  import { FilePathContext } from "./FilePathContext.js";
7
8
  import { resolvePathAction, splitDisplayPath } from "./file-path-resolver.js";
8
9
 
@@ -28,8 +29,6 @@ export interface FilePathLinkProps {
28
29
  readonly className?: string;
29
30
  }
30
31
 
31
- const COPIED_FEEDBACK_MS = 2000;
32
-
33
32
  /**
34
33
  * Interactive file path display that replaces inert `<span>` path
35
34
  * text in tool call rendering.
@@ -62,7 +61,7 @@ export function FilePathLink({
62
61
  className,
63
62
  }: FilePathLinkProps) {
64
63
  const { workspaceEntries, onFilePathClick } = useContext(FilePathContext);
65
- const [copied, setCopied] = useState(false);
64
+ const { copy, copied } = useCopyFeedback();
66
65
 
67
66
  const resolved = useMemo(
68
67
  () => resolvePathAction(path, workspaceEntries),
@@ -80,11 +79,8 @@ export function FilePathLink({
80
79
 
81
80
  const handleCopy = useCallback(() => {
82
81
  const value = resolved.action === "copy" ? resolved.value : path;
83
- navigator.clipboard.writeText(value).then(() => {
84
- setCopied(true);
85
- setTimeout(() => setCopied(false), COPIED_FEEDBACK_MS);
86
- });
87
- }, [resolved, path]);
82
+ void copy(value);
83
+ }, [resolved, path, copy]);
88
84
 
89
85
  const handleClick = useCallback(
90
86
  (e: React.MouseEvent) => {
@@ -28,6 +28,7 @@ import {
28
28
  fileReviewability,
29
29
  type FileReviewability,
30
30
  } from "./file-review-status.js";
31
+ import { SpinnerIcon } from "../internal/thread-card/glyphs.js";
31
32
 
32
33
  /** A stable empty set so the default `submittingDecisionKeys` keeps a constant ref. */
33
34
  const NO_KEYS: ReadonlySet<string> = new Set();
@@ -1063,23 +1064,3 @@ function bulkLabels(
1063
1064
  return { approve: `${approveVerb} all`, reject: "Reject all" };
1064
1065
  }
1065
1066
 
1066
- // ---------------------------------------------------------------------------
1067
- // Inline SVG icon
1068
- // ---------------------------------------------------------------------------
1069
-
1070
- function SpinnerIcon() {
1071
- return (
1072
- <svg
1073
- width="10"
1074
- height="10"
1075
- viewBox="0 0 12 12"
1076
- fill="none"
1077
- stroke="currentColor"
1078
- strokeWidth="1.5"
1079
- className="stg:animate-spin"
1080
- aria-hidden="true"
1081
- >
1082
- <path d="M6 1.5A4.5 4.5 0 1 1 1.5 6" strokeLinecap="round" />
1083
- </svg>
1084
- );
1085
- }
@@ -9,6 +9,7 @@ import {
9
9
  } from "react";
10
10
  import { cn } from "@stigmer/theme";
11
11
  import { ModelSelector } from "../models/ModelSelector.js";
12
+ import { SpinnerIcon } from "../internal/SpinnerIcon.js";
12
13
 
13
14
  /** Props for {@link FollowUpInput}. */
14
15
  export interface FollowUpInputProps {
@@ -204,19 +205,3 @@ function ArrowUpIcon() {
204
205
  );
205
206
  }
206
207
 
207
- function SpinnerIcon() {
208
- return (
209
- <svg
210
- width="16"
211
- height="16"
212
- viewBox="0 0 16 16"
213
- fill="none"
214
- stroke="currentColor"
215
- strokeWidth="2"
216
- strokeLinecap="round"
217
- className="stg:animate-spin"
218
- >
219
- <path d="M8 2a6 6 0 1 0 6 6" />
220
- </svg>
221
- );
222
- }
@@ -0,0 +1,59 @@
1
+ "use client";
2
+
3
+ import { memo } from "react";
4
+ import { cn } from "@stigmer/theme";
5
+
6
+ /** Props for {@link LivenessStatusLine}. */
7
+ export interface LivenessStatusLineProps {
8
+ /**
9
+ * The status copy. Defaults to `"Working…"` — deliberately generic: the
10
+ * thread has no model-authored account of what the agent is doing between
11
+ * visible events (that seam is stigmer#276), so the line claims only what
12
+ * is provably true.
13
+ */
14
+ readonly label?: string;
15
+ /** Additional CSS class names for the root container. */
16
+ readonly className?: string;
17
+ }
18
+
19
+ /**
20
+ * The thread's ambient-liveness anchor (stigmer#277): a quiet one-line status
21
+ * at the bottom of the thread while an execution is live but nothing else on
22
+ * screen is visibly moving — the exact stretches (model generation between
23
+ * tool calls) where users conclude the agent died and reach for a restart.
24
+ *
25
+ * The label carries the shared `stgm-shimmer-label` sweep, the same treatment
26
+ * as a running tool row's title and the thinking indicator, so "alive" reads
27
+ * identically everywhere. {@link MessageThread} emits it only while the
28
+ * active execution is `IN_PROGRESS` with no running tool call, no live
29
+ * sub-agent, and no pending approval — when a gate is waiting on the *user*,
30
+ * shimmering "Working…" would be a lie, and when a tool is running, its own
31
+ * row carries the sweep. It disappears the moment the execution settles
32
+ * (phase-driven, DD-009 — never inferred from the stream going quiet).
33
+ *
34
+ * Replaceable via {@link MessageThreadSlots.LivenessStatusLine} (the
35
+ * SetupProgress precedent) for hosts that want their own liveness voice.
36
+ *
37
+ * All visual properties flow through `--stgm-*` tokens.
38
+ *
39
+ * @example
40
+ * ```tsx
41
+ * <LivenessStatusLine />
42
+ * <LivenessStatusLine label="Reviewing your data…" />
43
+ * ```
44
+ */
45
+ export const LivenessStatusLine = memo(function LivenessStatusLine({
46
+ label = "Working\u2026",
47
+ className,
48
+ }: LivenessStatusLineProps) {
49
+ return (
50
+ <div
51
+ role="status"
52
+ aria-label={label}
53
+ data-cursor-target="liveness-status-line"
54
+ className={cn("stg:flex stg:items-center stg:px-4 stg:py-1.5", className)}
55
+ >
56
+ <span className="stg:text-xs stgm-shimmer-label">{label}</span>
57
+ </div>
58
+ );
59
+ });