@stigmer/react 3.12.1 → 3.12.3

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 (708) hide show
  1. package/access/ManageAccessDialog.d.ts.map +1 -1
  2. package/access/ManageAccessDialog.js +8 -19
  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 +15 -20
  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/AttachmentImageLightbox.d.ts.map +1 -1
  30. package/attachment/AttachmentImageLightbox.js +8 -23
  31. package/attachment/AttachmentImageLightbox.js.map +1 -1
  32. package/attachment/index.d.ts +2 -0
  33. package/attachment/index.d.ts.map +1 -1
  34. package/attachment/index.js +1 -0
  35. package/attachment/index.js.map +1 -1
  36. package/attachment/vision-preflight.d.ts +113 -0
  37. package/attachment/vision-preflight.d.ts.map +1 -0
  38. package/attachment/vision-preflight.js +143 -0
  39. package/attachment/vision-preflight.js.map +1 -0
  40. package/billing/AutoRechargeCard.d.ts.map +1 -1
  41. package/billing/AutoRechargeCard.js +3 -2
  42. package/billing/AutoRechargeCard.js.map +1 -1
  43. package/billing/BillingSection.d.ts.map +1 -1
  44. package/billing/BillingSection.js +3 -2
  45. package/billing/BillingSection.js.map +1 -1
  46. package/channel/ChannelConversationsDialog.d.ts.map +1 -1
  47. package/channel/ChannelConversationsDialog.js +6 -21
  48. package/channel/ChannelConversationsDialog.js.map +1 -1
  49. package/channel/ChannelCredentialsDialog.d.ts.map +1 -1
  50. package/channel/ChannelCredentialsDialog.js +10 -21
  51. package/channel/ChannelCredentialsDialog.js.map +1 -1
  52. package/channel/ChannelTemplatesDialog.d.ts.map +1 -1
  53. package/channel/ChannelTemplatesDialog.js +7 -22
  54. package/channel/ChannelTemplatesDialog.js.map +1 -1
  55. package/channel/ConnectSlackDialog.d.ts.map +1 -1
  56. package/channel/ConnectSlackDialog.js +10 -23
  57. package/channel/ConnectSlackDialog.js.map +1 -1
  58. package/channel/ConnectWhatsAppDialog.d.ts.map +1 -1
  59. package/channel/ConnectWhatsAppDialog.js +10 -23
  60. package/channel/ConnectWhatsAppDialog.js.map +1 -1
  61. package/channel/useChannelSessions.d.ts.map +1 -1
  62. package/channel/useChannelSessions.js.map +1 -1
  63. package/channel-app/ChannelAppDetailPanel.d.ts.map +1 -1
  64. package/channel-app/ChannelAppDetailPanel.js +8 -5
  65. package/channel-app/ChannelAppDetailPanel.js.map +1 -1
  66. package/channel-app/CreateChannelAppForm.d.ts.map +1 -1
  67. package/channel-app/CreateChannelAppForm.js +12 -7
  68. package/channel-app/CreateChannelAppForm.js.map +1 -1
  69. package/channel-app/internal.d.ts +0 -1
  70. package/channel-app/internal.d.ts.map +1 -1
  71. package/channel-app/internal.js +5 -10
  72. package/channel-app/internal.js.map +1 -1
  73. package/composer/ComposerToolbar.js +2 -1
  74. package/composer/ComposerToolbar.js.map +1 -1
  75. package/composer/SessionComposer.d.ts +1 -1
  76. package/composer/SessionComposer.d.ts.map +1 -1
  77. package/composer/SessionComposer.js +120 -13
  78. package/composer/SessionComposer.js.map +1 -1
  79. package/composer/icons.d.ts +0 -1
  80. package/composer/icons.d.ts.map +1 -1
  81. package/composer/icons.js +0 -3
  82. package/composer/icons.js.map +1 -1
  83. package/conversation/ConversationAttentionBanner.d.ts +23 -6
  84. package/conversation/ConversationAttentionBanner.d.ts.map +1 -1
  85. package/conversation/ConversationAttentionBanner.js +25 -10
  86. package/conversation/ConversationAttentionBanner.js.map +1 -1
  87. package/conversation/ConversationComposer.js +1 -1
  88. package/conversation/ConversationComposer.js.map +1 -1
  89. package/conversation/ConversationListPane.d.ts.map +1 -1
  90. package/conversation/ConversationListPane.js +28 -8
  91. package/conversation/ConversationListPane.js.map +1 -1
  92. package/conversation/ConversationsWorkbench.d.ts.map +1 -1
  93. package/conversation/ConversationsWorkbench.js +1 -1
  94. package/conversation/ConversationsWorkbench.js.map +1 -1
  95. package/cursor-accounts/MemberCoverageTable.js +3 -14
  96. package/cursor-accounts/MemberCoverageTable.js.map +1 -1
  97. package/dashboard/DashboardFailedRuns.d.ts.map +1 -1
  98. package/dashboard/DashboardFailedRuns.js +2 -14
  99. package/dashboard/DashboardFailedRuns.js.map +1 -1
  100. package/environment/CreateEnvironmentForm.d.ts.map +1 -1
  101. package/environment/CreateEnvironmentForm.js +4 -8
  102. package/environment/CreateEnvironmentForm.js.map +1 -1
  103. package/environment/EnvVarForm.d.ts.map +1 -1
  104. package/environment/EnvVarForm.js +2 -4
  105. package/environment/EnvVarForm.js.map +1 -1
  106. package/environment/EnvironmentVariableEditor.d.ts.map +1 -1
  107. package/environment/EnvironmentVariableEditor.js +5 -7
  108. package/environment/EnvironmentVariableEditor.js.map +1 -1
  109. package/execution/ApprovalCard.d.ts.map +1 -1
  110. package/execution/ApprovalCard.js +13 -3
  111. package/execution/ApprovalCard.js.map +1 -1
  112. package/execution/ArtifactApplyButton.d.ts.map +1 -1
  113. package/execution/ArtifactApplyButton.js +2 -4
  114. package/execution/ArtifactApplyButton.js.map +1 -1
  115. package/execution/ArtifactPreviewModal.d.ts.map +1 -1
  116. package/execution/ArtifactPreviewModal.js +11 -17
  117. package/execution/ArtifactPreviewModal.js.map +1 -1
  118. package/execution/ExecutionErrorNotice.d.ts +36 -0
  119. package/execution/ExecutionErrorNotice.d.ts.map +1 -0
  120. package/execution/ExecutionErrorNotice.js +39 -0
  121. package/execution/ExecutionErrorNotice.js.map +1 -0
  122. package/execution/FilePathLink.d.ts.map +1 -1
  123. package/execution/FilePathLink.js +5 -8
  124. package/execution/FilePathLink.js.map +1 -1
  125. package/execution/FileReviewCard.d.ts.map +1 -1
  126. package/execution/FileReviewCard.js +1 -6
  127. package/execution/FileReviewCard.js.map +1 -1
  128. package/execution/FollowUpInput.d.ts.map +1 -1
  129. package/execution/FollowUpInput.js +1 -3
  130. package/execution/FollowUpInput.js.map +1 -1
  131. package/execution/LivenessStatusLine.d.ts +40 -0
  132. package/execution/LivenessStatusLine.d.ts.map +1 -0
  133. package/execution/LivenessStatusLine.js +34 -0
  134. package/execution/LivenessStatusLine.js.map +1 -0
  135. package/execution/MessageEntry.d.ts.map +1 -1
  136. package/execution/MessageEntry.js +31 -3
  137. package/execution/MessageEntry.js.map +1 -1
  138. package/execution/MessageThread.d.ts +25 -0
  139. package/execution/MessageThread.d.ts.map +1 -1
  140. package/execution/MessageThread.js +51 -36
  141. package/execution/MessageThread.js.map +1 -1
  142. package/execution/SetupProgress.d.ts.map +1 -1
  143. package/execution/SetupProgress.js +1 -1
  144. package/execution/SetupProgress.js.map +1 -1
  145. package/execution/SubAgentSection.d.ts.map +1 -1
  146. package/execution/SubAgentSection.js +9 -7
  147. package/execution/SubAgentSection.js.map +1 -1
  148. package/execution/TerminalSession.d.ts +30 -0
  149. package/execution/TerminalSession.d.ts.map +1 -1
  150. package/execution/TerminalSession.js +37 -1
  151. package/execution/TerminalSession.js.map +1 -1
  152. package/execution/ToolCallDetail.d.ts +9 -0
  153. package/execution/ToolCallDetail.d.ts.map +1 -1
  154. package/execution/ToolCallDetail.js +16 -0
  155. package/execution/ToolCallDetail.js.map +1 -1
  156. package/execution/ToolCallItem.d.ts +23 -7
  157. package/execution/ToolCallItem.d.ts.map +1 -1
  158. package/execution/ToolCallItem.js +120 -35
  159. package/execution/ToolCallItem.js.map +1 -1
  160. package/execution/ToolRunGroup.d.ts.map +1 -1
  161. package/execution/ToolRunGroup.js +11 -11
  162. package/execution/ToolRunGroup.js.map +1 -1
  163. package/execution/WriteBackCard.d.ts.map +1 -1
  164. package/execution/WriteBackCard.js +5 -20
  165. package/execution/WriteBackCard.js.map +1 -1
  166. package/execution/index.d.ts +7 -3
  167. package/execution/index.d.ts.map +1 -1
  168. package/execution/index.js +4 -2
  169. package/execution/index.js.map +1 -1
  170. package/execution/tool-categories.d.ts +93 -7
  171. package/execution/tool-categories.d.ts.map +1 -1
  172. package/execution/tool-categories.js +141 -5
  173. package/execution/tool-categories.js.map +1 -1
  174. package/execution/tool-presenter.d.ts +32 -1
  175. package/execution/tool-presenter.d.ts.map +1 -1
  176. package/execution/tool-presenter.js +10 -2
  177. package/execution/tool-presenter.js.map +1 -1
  178. package/execution/useArtifactInspection.d.ts.map +1 -1
  179. package/execution/useArtifactInspection.js +4 -7
  180. package/execution/useArtifactInspection.js.map +1 -1
  181. package/iam-policy/GrantAccessForm.d.ts.map +1 -1
  182. package/iam-policy/GrantAccessForm.js +2 -4
  183. package/iam-policy/GrantAccessForm.js.map +1 -1
  184. package/iam-policy/OrgMembersPanel.d.ts.map +1 -1
  185. package/iam-policy/OrgMembersPanel.js +3 -5
  186. package/iam-policy/OrgMembersPanel.js.map +1 -1
  187. package/iam-policy/RoleSelector.d.ts.map +1 -1
  188. package/iam-policy/RoleSelector.js +7 -1
  189. package/iam-policy/RoleSelector.js.map +1 -1
  190. package/identity-provider/CreateIdentityProviderForm.d.ts.map +1 -1
  191. package/identity-provider/CreateIdentityProviderForm.js +6 -9
  192. package/identity-provider/CreateIdentityProviderForm.js.map +1 -1
  193. package/identity-provider/IdentityProviderDetailPanel.d.ts.map +1 -1
  194. package/identity-provider/IdentityProviderDetailPanel.js +17 -26
  195. package/identity-provider/IdentityProviderDetailPanel.js.map +1 -1
  196. package/identity-provider/IdentityProviderListPanel.d.ts.map +1 -1
  197. package/identity-provider/IdentityProviderListPanel.js +2 -4
  198. package/identity-provider/IdentityProviderListPanel.js.map +1 -1
  199. package/identity-provider/IdentityProviderWizard.d.ts.map +1 -1
  200. package/identity-provider/IdentityProviderWizard.js +8 -7
  201. package/identity-provider/IdentityProviderWizard.js.map +1 -1
  202. package/identity-provider/SsoLoginPrompt.js +5 -6
  203. package/identity-provider/SsoLoginPrompt.js.map +1 -1
  204. package/index.d.ts +9 -8
  205. package/index.d.ts.map +1 -1
  206. package/index.js +4 -4
  207. package/index.js.map +1 -1
  208. package/internal/DecisionButton.d.ts.map +1 -1
  209. package/internal/DecisionButton.js +1 -6
  210. package/internal/DecisionButton.js.map +1 -1
  211. package/internal/DialogShell.d.ts +77 -0
  212. package/internal/DialogShell.d.ts.map +1 -0
  213. package/internal/DialogShell.js +77 -0
  214. package/internal/DialogShell.js.map +1 -0
  215. package/internal/SpinnerIcon.d.ts +22 -0
  216. package/internal/SpinnerIcon.d.ts.map +1 -0
  217. package/internal/SpinnerIcon.js +23 -0
  218. package/internal/SpinnerIcon.js.map +1 -0
  219. package/internal/select-element-text.d.ts +11 -0
  220. package/internal/select-element-text.d.ts.map +1 -0
  221. package/internal/select-element-text.js +19 -0
  222. package/internal/select-element-text.js.map +1 -0
  223. package/internal/thread-card/ThreadCardShell.d.ts +27 -10
  224. package/internal/thread-card/ThreadCardShell.d.ts.map +1 -1
  225. package/internal/thread-card/ThreadCardShell.js +11 -5
  226. package/internal/thread-card/ThreadCardShell.js.map +1 -1
  227. package/internal/thread-card/glyphs.d.ts +11 -2
  228. package/internal/thread-card/glyphs.d.ts.map +1 -1
  229. package/internal/thread-card/glyphs.js +9 -3
  230. package/internal/thread-card/glyphs.js.map +1 -1
  231. package/internal/thread-card/index.d.ts +1 -1
  232. package/internal/thread-card/index.d.ts.map +1 -1
  233. package/internal/thread-card/index.js.map +1 -1
  234. package/internal/useCopyFeedback.d.ts +28 -0
  235. package/internal/useCopyFeedback.d.ts.map +1 -0
  236. package/internal/useCopyFeedback.js +40 -0
  237. package/internal/useCopyFeedback.js.map +1 -0
  238. package/invitation/InvitationCreatedAlert.d.ts.map +1 -1
  239. package/invitation/InvitationCreatedAlert.js +12 -19
  240. package/invitation/InvitationCreatedAlert.js.map +1 -1
  241. package/invitation/InvitationManager.d.ts.map +1 -1
  242. package/invitation/InvitationManager.js +14 -21
  243. package/invitation/InvitationManager.js.map +1 -1
  244. package/invitation/InvitationRedemption.d.ts.map +1 -1
  245. package/invitation/InvitationRedemption.js +2 -4
  246. package/invitation/InvitationRedemption.js.map +1 -1
  247. package/library/useExportResource.d.ts.map +1 -1
  248. package/library/useExportResource.js +16 -27
  249. package/library/useExportResource.js.map +1 -1
  250. package/manifest/ApplyManifestDialog.d.ts.map +1 -1
  251. package/manifest/ApplyManifestDialog.js +7 -17
  252. package/manifest/ApplyManifestDialog.js.map +1 -1
  253. package/manifest/EditResourceYamlDialog.d.ts.map +1 -1
  254. package/manifest/EditResourceYamlDialog.js +3 -19
  255. package/manifest/EditResourceYamlDialog.js.map +1 -1
  256. package/mcp-server/DefinitionDriftNotice.d.ts +42 -0
  257. package/mcp-server/DefinitionDriftNotice.d.ts.map +1 -0
  258. package/mcp-server/DefinitionDriftNotice.js +52 -0
  259. package/mcp-server/DefinitionDriftNotice.js.map +1 -0
  260. package/mcp-server/McpServerConnectDialog.d.ts.map +1 -1
  261. package/mcp-server/McpServerConnectDialog.js +8 -20
  262. package/mcp-server/McpServerConnectDialog.js.map +1 -1
  263. package/mcp-server/McpServerDetailView.d.ts.map +1 -1
  264. package/mcp-server/McpServerDetailView.js +50 -28
  265. package/mcp-server/McpServerDetailView.js.map +1 -1
  266. package/mcp-server/OAuthAppForm.d.ts.map +1 -1
  267. package/mcp-server/OAuthAppForm.js +2 -4
  268. package/mcp-server/OAuthAppForm.js.map +1 -1
  269. package/mcp-server/internal/definitionDrift.d.ts +39 -0
  270. package/mcp-server/internal/definitionDrift.d.ts.map +1 -0
  271. package/mcp-server/internal/definitionDrift.js +122 -0
  272. package/mcp-server/internal/definitionDrift.js.map +1 -0
  273. package/mcp-server/internal/mcpServerToInput.d.ts.map +1 -1
  274. package/mcp-server/internal/mcpServerToInput.js +3 -0
  275. package/mcp-server/internal/mcpServerToInput.js.map +1 -1
  276. package/mcp-server/steps/EnvironmentAuthStep.d.ts.map +1 -1
  277. package/mcp-server/steps/EnvironmentAuthStep.js +8 -4
  278. package/mcp-server/steps/EnvironmentAuthStep.js.map +1 -1
  279. package/mcp-server/steps/IdentityTransportStep.d.ts.map +1 -1
  280. package/mcp-server/steps/IdentityTransportStep.js +5 -4
  281. package/mcp-server/steps/IdentityTransportStep.js.map +1 -1
  282. package/mcp-server/useMcpServerConnect.d.ts +1 -1
  283. package/mcp-server/useMcpServerDefinitionDrift.d.ts +44 -0
  284. package/mcp-server/useMcpServerDefinitionDrift.d.ts.map +1 -0
  285. package/mcp-server/useMcpServerDefinitionDrift.js +61 -0
  286. package/mcp-server/useMcpServerDefinitionDrift.js.map +1 -0
  287. package/models/ModelRegistryContext.d.ts +7 -1
  288. package/models/ModelRegistryContext.d.ts.map +1 -1
  289. package/models/ModelRegistryContext.js.map +1 -1
  290. package/models/ModelSelector.js +9 -1
  291. package/models/ModelSelector.js.map +1 -1
  292. package/models/index.d.ts +2 -2
  293. package/models/index.d.ts.map +1 -1
  294. package/models/index.js +1 -1
  295. package/models/index.js.map +1 -1
  296. package/models/registry.d.ts +88 -6
  297. package/models/registry.d.ts.map +1 -1
  298. package/models/registry.js +133 -27
  299. package/models/registry.js.map +1 -1
  300. package/models/useModelRegistry.d.ts +7 -1
  301. package/models/useModelRegistry.d.ts.map +1 -1
  302. package/models/useModelRegistry.js +3 -2
  303. package/models/useModelRegistry.js.map +1 -1
  304. package/oauth-app/CreateOAuthAppForm.d.ts.map +1 -1
  305. package/oauth-app/CreateOAuthAppForm.js +4 -5
  306. package/oauth-app/CreateOAuthAppForm.js.map +1 -1
  307. package/oauth-app/OAuthAppDetailPanel.d.ts.map +1 -1
  308. package/oauth-app/OAuthAppDetailPanel.js +5 -6
  309. package/oauth-app/OAuthAppDetailPanel.js.map +1 -1
  310. package/organization/CreateOrganizationForm.d.ts.map +1 -1
  311. package/organization/CreateOrganizationForm.js +5 -9
  312. package/organization/CreateOrganizationForm.js.map +1 -1
  313. package/organization/OrgProfilePanel.d.ts.map +1 -1
  314. package/organization/OrgProfilePanel.js +7 -16
  315. package/organization/OrgProfilePanel.js.map +1 -1
  316. package/package.json +4 -4
  317. package/platform-client/CreatePlatformClientForm.d.ts.map +1 -1
  318. package/platform-client/CreatePlatformClientForm.js +5 -6
  319. package/platform-client/CreatePlatformClientForm.js.map +1 -1
  320. package/platform-client/PlatformClientDetailPanel.d.ts.map +1 -1
  321. package/platform-client/PlatformClientDetailPanel.js +6 -7
  322. package/platform-client/PlatformClientDetailPanel.js.map +1 -1
  323. package/platform-client/PlatformClientListPanel.d.ts.map +1 -1
  324. package/platform-client/PlatformClientListPanel.js +2 -4
  325. package/platform-client/PlatformClientListPanel.js.map +1 -1
  326. package/platform-client/PlatformClientSecretAlert.d.ts.map +1 -1
  327. package/platform-client/PlatformClientSecretAlert.js +18 -25
  328. package/platform-client/PlatformClientSecretAlert.js.map +1 -1
  329. package/provider.d.ts +34 -1
  330. package/provider.d.ts.map +1 -1
  331. package/provider.js +14 -7
  332. package/provider.js.map +1 -1
  333. package/resource-creation/WizardNav.d.ts.map +1 -1
  334. package/resource-creation/WizardNav.js +2 -4
  335. package/resource-creation/WizardNav.js.map +1 -1
  336. package/resource-detail/ConfirmDialog.d.ts +2 -3
  337. package/resource-detail/ConfirmDialog.d.ts.map +1 -1
  338. package/resource-detail/ConfirmDialog.js +8 -20
  339. package/resource-detail/ConfirmDialog.js.map +1 -1
  340. package/resource-detail/useCopyResource.d.ts +4 -3
  341. package/resource-detail/useCopyResource.d.ts.map +1 -1
  342. package/resource-detail/useCopyResource.js +10 -19
  343. package/resource-detail/useCopyResource.js.map +1 -1
  344. package/schedule/ScheduleDetailView.d.ts.map +1 -1
  345. package/schedule/ScheduleDetailView.js +2 -4
  346. package/schedule/ScheduleDetailView.js.map +1 -1
  347. package/schedule/ScheduleForm.d.ts.map +1 -1
  348. package/schedule/ScheduleForm.js +6 -7
  349. package/schedule/ScheduleForm.js.map +1 -1
  350. package/session/NewSessionViewer.d.ts +52 -2
  351. package/session/NewSessionViewer.d.ts.map +1 -1
  352. package/session/NewSessionViewer.js +21 -6
  353. package/session/NewSessionViewer.js.map +1 -1
  354. package/session/SessionViewer.d.ts +63 -2
  355. package/session/SessionViewer.d.ts.map +1 -1
  356. package/session/SessionViewer.js +43 -17
  357. package/session/SessionViewer.js.map +1 -1
  358. package/session/audience.d.ts +17 -0
  359. package/session/audience.d.ts.map +1 -1
  360. package/session/index.d.ts +2 -1
  361. package/session/index.d.ts.map +1 -1
  362. package/session/index.js.map +1 -1
  363. package/session/run-config.d.ts +50 -0
  364. package/session/run-config.d.ts.map +1 -0
  365. package/session/run-config.js +15 -0
  366. package/session/run-config.js.map +1 -0
  367. package/session/useNewSessionFlow.d.ts +11 -0
  368. package/session/useNewSessionFlow.d.ts.map +1 -1
  369. package/session/useNewSessionFlow.js +29 -2
  370. package/session/useNewSessionFlow.js.map +1 -1
  371. package/session/useSessionConversation.d.ts +7 -7
  372. package/session/useSessionConversation.d.ts.map +1 -1
  373. package/session/useSessionConversation.js +2 -0
  374. package/session/useSessionConversation.js.map +1 -1
  375. package/session/useSessionPageFlow.d.ts +18 -4
  376. package/session/useSessionPageFlow.d.ts.map +1 -1
  377. package/session/useSessionPageFlow.js +33 -6
  378. package/session/useSessionPageFlow.js.map +1 -1
  379. package/session/useSessionPanel.d.ts +37 -2
  380. package/session/useSessionPanel.d.ts.map +1 -1
  381. package/session/useSessionPanel.js +44 -10
  382. package/session/useSessionPanel.js.map +1 -1
  383. package/settings/ApiKeysSection.d.ts.map +1 -1
  384. package/settings/ApiKeysSection.js +3 -2
  385. package/settings/ApiKeysSection.js.map +1 -1
  386. package/settings/ChannelAppsSection.d.ts.map +1 -1
  387. package/settings/ChannelAppsSection.js +3 -2
  388. package/settings/ChannelAppsSection.js.map +1 -1
  389. package/settings/EnvironmentsSection.js +5 -3
  390. package/settings/EnvironmentsSection.js.map +1 -1
  391. package/settings/IdentityProvidersSection.d.ts.map +1 -1
  392. package/settings/IdentityProvidersSection.js +3 -2
  393. package/settings/IdentityProvidersSection.js.map +1 -1
  394. package/settings/InvitationsSection.d.ts.map +1 -1
  395. package/settings/InvitationsSection.js +3 -1
  396. package/settings/InvitationsSection.js.map +1 -1
  397. package/settings/MembersSection.d.ts.map +1 -1
  398. package/settings/MembersSection.js +3 -1
  399. package/settings/MembersSection.js.map +1 -1
  400. package/settings/OAuthAppsSection.d.ts.map +1 -1
  401. package/settings/OAuthAppsSection.js +3 -2
  402. package/settings/OAuthAppsSection.js.map +1 -1
  403. package/settings/OrgProfileSection.d.ts.map +1 -1
  404. package/settings/OrgProfileSection.js +3 -2
  405. package/settings/OrgProfileSection.js.map +1 -1
  406. package/settings/PlatformClientsSection.d.ts.map +1 -1
  407. package/settings/PlatformClientsSection.js +3 -2
  408. package/settings/PlatformClientsSection.js.map +1 -1
  409. package/settings/UsageSection.d.ts.map +1 -1
  410. package/settings/UsageSection.js +3 -1
  411. package/settings/UsageSection.js.map +1 -1
  412. package/sharing/ShareAgentDialog.d.ts.map +1 -1
  413. package/sharing/ShareAgentDialog.js +19 -26
  414. package/sharing/ShareAgentDialog.js.map +1 -1
  415. package/sidebar/chrome.d.ts +3 -4
  416. package/sidebar/chrome.d.ts.map +1 -1
  417. package/sidebar/chrome.js +5 -4
  418. package/sidebar/chrome.js.map +1 -1
  419. package/skill/SkillDiffDialog.d.ts.map +1 -1
  420. package/skill/SkillDiffDialog.js +5 -21
  421. package/skill/SkillDiffDialog.js.map +1 -1
  422. package/src/access/ManageAccessDialog.tsx +14 -28
  423. package/src/activity/format-relative-time.ts +11 -9
  424. package/src/agent/steps/CapabilitiesStep.tsx +6 -3
  425. package/src/agent/steps/IdentityStep.tsx +19 -12
  426. package/src/agent-instance/CreateAgentInstanceDialog.tsx +29 -33
  427. package/src/api-key/ApiKeyCreatedAlert.tsx +10 -19
  428. package/src/api-key/ApiKeyListPanel.tsx +3 -39
  429. package/src/api-key/CreateApiKeyForm.tsx +12 -26
  430. package/src/approval-defaults-context.ts +56 -0
  431. package/src/attachment/AttachmentImageLightbox.tsx +13 -36
  432. package/src/attachment/__tests__/vision-preflight.test.ts +311 -0
  433. package/src/attachment/index.ts +12 -0
  434. package/src/attachment/vision-preflight.ts +236 -0
  435. package/src/billing/AutoRechargeCard.tsx +5 -4
  436. package/src/billing/BillingSection.tsx +4 -3
  437. package/src/channel/ChannelConversationsDialog.tsx +14 -29
  438. package/src/channel/ChannelCredentialsDialog.tsx +19 -29
  439. package/src/channel/ChannelTemplatesDialog.tsx +16 -31
  440. package/src/channel/ConnectSlackDialog.tsx +19 -31
  441. package/src/channel/ConnectWhatsAppDialog.tsx +19 -31
  442. package/src/channel/useChannelSessions.ts +3 -0
  443. package/src/channel-app/ChannelAppDetailPanel.tsx +15 -12
  444. package/src/channel-app/CreateChannelAppForm.tsx +17 -12
  445. package/src/channel-app/internal.tsx +5 -25
  446. package/src/composer/ComposerToolbar.tsx +1 -1
  447. package/src/composer/SessionComposer.tsx +160 -13
  448. package/src/composer/__tests__/SessionComposer-modelCoherence.test.tsx +220 -0
  449. package/src/composer/__tests__/SessionComposer-visionPreflight.test.tsx +222 -0
  450. package/src/composer/icons.tsx +0 -18
  451. package/src/conversation/ConversationAttentionBanner.tsx +64 -19
  452. package/src/conversation/ConversationComposer.tsx +1 -1
  453. package/src/conversation/ConversationListPane.tsx +46 -20
  454. package/src/conversation/ConversationsWorkbench.tsx +1 -0
  455. package/src/conversation/__tests__/ConversationAttentionBanner.test.tsx +76 -2
  456. package/src/conversation/__tests__/ConversationListPane.test.tsx +15 -4
  457. package/src/cursor-accounts/MemberCoverageTable.tsx +3 -14
  458. package/src/cursor-accounts/__tests__/CursorAccountsConsole.test.tsx +2 -10
  459. package/src/dashboard/DashboardFailedRuns.tsx +2 -12
  460. package/src/environment/CreateEnvironmentForm.tsx +8 -27
  461. package/src/environment/EnvVarForm.tsx +2 -18
  462. package/src/environment/EnvironmentVariableEditor.tsx +5 -21
  463. package/src/execution/ApprovalCard.tsx +23 -2
  464. package/src/execution/ArtifactApplyButton.tsx +2 -17
  465. package/src/execution/ArtifactPreviewModal.tsx +15 -27
  466. package/src/execution/ExecutionErrorNotice.tsx +99 -0
  467. package/src/execution/FilePathLink.tsx +5 -9
  468. package/src/execution/FileReviewCard.tsx +1 -20
  469. package/src/execution/FollowUpInput.tsx +1 -16
  470. package/src/execution/LivenessStatusLine.tsx +59 -0
  471. package/src/execution/MessageEntry.tsx +136 -25
  472. package/src/execution/MessageThread.tsx +84 -83
  473. package/src/execution/SetupProgress.tsx +5 -1
  474. package/src/execution/SubAgentSection.tsx +9 -20
  475. package/src/execution/TerminalSession.tsx +97 -10
  476. package/src/execution/ToolCallDetail.tsx +19 -0
  477. package/src/execution/ToolCallItem.tsx +175 -44
  478. package/src/execution/ToolRunGroup.tsx +30 -32
  479. package/src/execution/WriteBackCard.tsx +5 -24
  480. package/src/execution/__tests__/MessageEntry-copy.test.tsx +125 -0
  481. package/src/execution/__tests__/MessageThread.test.tsx +97 -0
  482. package/src/execution/__tests__/TerminalSession.test.tsx +71 -1
  483. package/src/execution/__tests__/ToolCallDetail.test.tsx +33 -1
  484. package/src/execution/__tests__/ToolCallItem.test.tsx +299 -11
  485. package/src/execution/__tests__/ToolRunGroup.test.tsx +41 -9
  486. package/src/execution/__tests__/intent-title.test.tsx +221 -0
  487. package/src/execution/__tests__/message-thread-slots.test.tsx +92 -0
  488. package/src/execution/__tests__/tool-presenter.test.tsx +41 -4
  489. package/src/execution/index.ts +11 -2
  490. package/src/execution/tool-categories.ts +195 -9
  491. package/src/execution/tool-presenter.ts +44 -2
  492. package/src/execution/useArtifactInspection.ts +4 -8
  493. package/src/iam-policy/GrantAccessForm.tsx +2 -18
  494. package/src/iam-policy/OrgMembersPanel.tsx +3 -19
  495. package/src/iam-policy/RoleSelector.tsx +8 -1
  496. package/src/identity-provider/CreateIdentityProviderForm.tsx +13 -31
  497. package/src/identity-provider/IdentityProviderDetailPanel.tsx +24 -49
  498. package/src/identity-provider/IdentityProviderListPanel.tsx +2 -18
  499. package/src/identity-provider/IdentityProviderWizard.tsx +15 -32
  500. package/src/identity-provider/SsoLoginPrompt.tsx +6 -21
  501. package/src/index.ts +26 -1
  502. package/src/internal/DecisionButton.tsx +1 -20
  503. package/src/internal/DialogShell.tsx +169 -0
  504. package/src/internal/SpinnerIcon.tsx +42 -0
  505. package/src/internal/__tests__/DialogShell.test.tsx +223 -0
  506. package/src/internal/__tests__/ThreadCardShell.test.tsx +43 -7
  507. package/src/internal/__tests__/useCopyFeedback.test.ts +92 -0
  508. package/src/internal/select-element-text.ts +17 -0
  509. package/src/internal/thread-card/ThreadCardShell.tsx +53 -21
  510. package/src/internal/thread-card/glyphs.tsx +24 -3
  511. package/src/internal/thread-card/index.ts +1 -0
  512. package/src/internal/useCopyFeedback.ts +61 -0
  513. package/src/invitation/InvitationCreatedAlert.tsx +10 -18
  514. package/src/invitation/InvitationManager.tsx +23 -34
  515. package/src/invitation/InvitationRedemption.tsx +2 -18
  516. package/src/library/useExportResource.ts +15 -29
  517. package/src/manifest/ApplyManifestDialog.tsx +8 -26
  518. package/src/manifest/EditResourceYamlDialog.tsx +4 -31
  519. package/src/mcp-server/DefinitionDriftNotice.tsx +120 -0
  520. package/src/mcp-server/McpServerConnectDialog.tsx +15 -29
  521. package/src/mcp-server/McpServerDetailView.tsx +69 -49
  522. package/src/mcp-server/OAuthAppForm.tsx +2 -18
  523. package/src/mcp-server/__tests__/DefinitionDriftNotice.test.tsx +57 -0
  524. package/src/mcp-server/__tests__/definitionDrift.test.ts +245 -0
  525. package/src/mcp-server/__tests__/mcpServerToInput.test.ts +201 -0
  526. package/src/mcp-server/__tests__/useMcpServerDefinitionDrift.test.tsx +173 -0
  527. package/src/mcp-server/internal/definitionDrift.ts +158 -0
  528. package/src/mcp-server/internal/mcpServerToInput.ts +3 -0
  529. package/src/mcp-server/steps/EnvironmentAuthStep.tsx +19 -19
  530. package/src/mcp-server/steps/IdentityTransportStep.tsx +24 -23
  531. package/src/mcp-server/useMcpServerConnect.ts +1 -1
  532. package/src/mcp-server/useMcpServerDefinitionDrift.ts +95 -0
  533. package/src/models/ModelRegistryContext.ts +7 -1
  534. package/src/models/ModelSelector.tsx +37 -0
  535. package/src/models/__tests__/ModelSelector-visionIndicator.test.tsx +129 -0
  536. package/src/models/__tests__/resolveDefaultModel.test.ts +115 -0
  537. package/src/models/__tests__/useModelRegistry.test.tsx +99 -4
  538. package/src/models/index.ts +2 -2
  539. package/src/models/registry.ts +196 -29
  540. package/src/models/useModelRegistry.ts +10 -2
  541. package/src/oauth-app/CreateOAuthAppForm.tsx +16 -31
  542. package/src/oauth-app/OAuthAppDetailPanel.tsx +16 -31
  543. package/src/organization/CreateOrganizationForm.tsx +10 -29
  544. package/src/organization/OrgProfilePanel.tsx +13 -44
  545. package/src/platform-client/CreatePlatformClientForm.tsx +9 -29
  546. package/src/platform-client/PlatformClientDetailPanel.tsx +10 -30
  547. package/src/platform-client/PlatformClientListPanel.tsx +2 -18
  548. package/src/platform-client/PlatformClientSecretAlert.tsx +26 -55
  549. package/src/provider.tsx +76 -33
  550. package/src/resource-creation/WizardNav.tsx +2 -18
  551. package/src/resource-detail/ConfirmDialog.tsx +9 -30
  552. package/src/resource-detail/useCopyResource.ts +17 -23
  553. package/src/schedule/ScheduleDetailView.tsx +2 -18
  554. package/src/schedule/ScheduleForm.tsx +19 -34
  555. package/src/session/NewSessionViewer.tsx +85 -7
  556. package/src/session/SessionViewer.tsx +120 -17
  557. package/src/session/__tests__/audienceWiring.test.tsx +76 -0
  558. package/src/session/__tests__/panelNegotiation.test.tsx +302 -0
  559. package/src/session/__tests__/useNewSessionFlow.test.tsx +134 -5
  560. package/src/session/__tests__/useSessionPageFlow.autoApprove.test.tsx +74 -0
  561. package/src/session/__tests__/useSessionPageFlow.runConfig.test.tsx +157 -0
  562. package/src/session/__tests__/useSessionPanel.test.ts +114 -0
  563. package/src/session/audience.ts +18 -0
  564. package/src/session/index.ts +2 -1
  565. package/src/session/run-config.ts +59 -0
  566. package/src/session/useNewSessionFlow.ts +39 -2
  567. package/src/session/useSessionConversation.ts +10 -8
  568. package/src/session/useSessionPageFlow.ts +51 -10
  569. package/src/session/useSessionPanel.ts +91 -10
  570. package/src/settings/ApiKeysSection.tsx +4 -3
  571. package/src/settings/ChannelAppsSection.tsx +4 -3
  572. package/src/settings/EnvironmentsSection.tsx +8 -5
  573. package/src/settings/IdentityProvidersSection.tsx +4 -3
  574. package/src/settings/InvitationsSection.tsx +4 -2
  575. package/src/settings/MembersSection.tsx +4 -2
  576. package/src/settings/OAuthAppsSection.tsx +4 -3
  577. package/src/settings/OrgProfileSection.tsx +4 -3
  578. package/src/settings/PlatformClientsSection.tsx +4 -3
  579. package/src/settings/UsageSection.tsx +4 -2
  580. package/src/sharing/ShareAgentDialog.tsx +33 -37
  581. package/src/sidebar/__tests__/WorkspaceSidebar.test.tsx +4 -1
  582. package/src/sidebar/chrome.tsx +6 -6
  583. package/src/skill/SkillDiffDialog.tsx +13 -36
  584. package/src/styles.css +43 -0
  585. package/src/version-history/VersionTimelineEntry.tsx +1 -21
  586. package/src/workflow/FailedRunsWidget.tsx +2 -9
  587. package/src/workflow/PendingApprovalsWidget.tsx +2 -9
  588. package/src/workflow/ViewYamlDialog.tsx +21 -55
  589. package/src/workflow/WorkflowArchitectDialog.tsx +17 -68
  590. package/src/workflow/WorkflowArtifactDocument.tsx +5 -9
  591. package/src/workflow/WorkflowCanvasEditor.tsx +2 -0
  592. package/src/workflow/WorkflowCanvasInner.tsx +14 -1
  593. package/src/workflow/WorkflowDiffGraph.tsx +7 -1
  594. package/src/workflow/WorkflowExecutionViewer.tsx +88 -11
  595. package/src/workflow/WorkflowExplainDialog.tsx +18 -60
  596. package/src/workflow/WorkflowGraphFullscreenDialog.tsx +14 -26
  597. package/src/workflow/WorkflowOverviewGraph.tsx +9 -1
  598. package/src/workflow/WorkflowRefinePanel.tsx +2 -18
  599. package/src/workflow/WorkflowRepairCard.tsx +2 -18
  600. package/src/workflow/WorkflowRunDialog.tsx +23 -70
  601. package/src/workflow/WorkflowTaskApprovalSummary.tsx +2 -17
  602. package/src/workflow/WorkflowVersionBadge.tsx +4 -13
  603. package/src/workflow/WorkflowVersionTimeline.tsx +1 -25
  604. package/src/workflow/__tests__/panelNegotiation.test.tsx +230 -0
  605. package/src/workflow/__tests__/useWorkflowCanvas.dirty.test.tsx +178 -0
  606. package/src/workflow/__tests__/useWorkflowCanvas.drag.test.tsx +224 -0
  607. package/src/workflow/__tests__/useWorkflowExecutionPanel.test.ts +100 -0
  608. package/src/workflow/execution-comparison/ExecutionComparisonPicker.tsx +20 -41
  609. package/src/workflow/execution-history/ExecutionHistoryTable.tsx +1 -25
  610. package/src/workflow/index.ts +1 -0
  611. package/src/workflow/instance/CreateWorkflowInstanceDialog.tsx +14 -27
  612. package/src/workflow/instance/WorkflowInstanceDetailPanel.tsx +2 -1
  613. package/src/workflow/picker/BranchAddPopover.tsx +4 -3
  614. package/src/workflow/templates/WorkflowTemplatePreview.tsx +18 -28
  615. package/src/workflow/useApprovalBoundary.ts +1 -1
  616. package/src/workflow/useWorkflowCanvas.ts +114 -11
  617. package/src/workflow/useWorkflowExecutionPanel.ts +95 -13
  618. package/styles.css +1 -1
  619. package/version-history/VersionTimelineEntry.d.ts.map +1 -1
  620. package/version-history/VersionTimelineEntry.js +1 -23
  621. package/version-history/VersionTimelineEntry.js.map +1 -1
  622. package/workflow/CanvasTransitionEdge.d.ts +1 -1
  623. package/workflow/FailedRunsWidget.d.ts.map +1 -1
  624. package/workflow/FailedRunsWidget.js +2 -11
  625. package/workflow/FailedRunsWidget.js.map +1 -1
  626. package/workflow/PendingApprovalsWidget.d.ts.map +1 -1
  627. package/workflow/PendingApprovalsWidget.js +2 -11
  628. package/workflow/PendingApprovalsWidget.js.map +1 -1
  629. package/workflow/ViewYamlDialog.d.ts.map +1 -1
  630. package/workflow/ViewYamlDialog.js +14 -49
  631. package/workflow/ViewYamlDialog.js.map +1 -1
  632. package/workflow/WorkflowArchitectDialog.d.ts.map +1 -1
  633. package/workflow/WorkflowArchitectDialog.js +10 -33
  634. package/workflow/WorkflowArchitectDialog.js.map +1 -1
  635. package/workflow/WorkflowArtifactDocument.d.ts.map +1 -1
  636. package/workflow/WorkflowArtifactDocument.js +5 -8
  637. package/workflow/WorkflowArtifactDocument.js.map +1 -1
  638. package/workflow/WorkflowCanvasEditor.d.ts.map +1 -1
  639. package/workflow/WorkflowCanvasEditor.js +1 -1
  640. package/workflow/WorkflowCanvasEditor.js.map +1 -1
  641. package/workflow/WorkflowCanvasInner.d.ts +4 -2
  642. package/workflow/WorkflowCanvasInner.d.ts.map +1 -1
  643. package/workflow/WorkflowCanvasInner.js +7 -3
  644. package/workflow/WorkflowCanvasInner.js.map +1 -1
  645. package/workflow/WorkflowDiffGraph.js +6 -2
  646. package/workflow/WorkflowDiffGraph.js.map +1 -1
  647. package/workflow/WorkflowExecutionViewer.d.ts +51 -0
  648. package/workflow/WorkflowExecutionViewer.d.ts.map +1 -1
  649. package/workflow/WorkflowExecutionViewer.js +23 -6
  650. package/workflow/WorkflowExecutionViewer.js.map +1 -1
  651. package/workflow/WorkflowExplainDialog.d.ts.map +1 -1
  652. package/workflow/WorkflowExplainDialog.js +10 -28
  653. package/workflow/WorkflowExplainDialog.js.map +1 -1
  654. package/workflow/WorkflowGraphFullscreenDialog.d.ts.map +1 -1
  655. package/workflow/WorkflowGraphFullscreenDialog.js +11 -17
  656. package/workflow/WorkflowGraphFullscreenDialog.js.map +1 -1
  657. package/workflow/WorkflowOverviewGraph.js +8 -2
  658. package/workflow/WorkflowOverviewGraph.js.map +1 -1
  659. package/workflow/WorkflowRefinePanel.d.ts.map +1 -1
  660. package/workflow/WorkflowRefinePanel.js +2 -4
  661. package/workflow/WorkflowRefinePanel.js.map +1 -1
  662. package/workflow/WorkflowRepairCard.d.ts.map +1 -1
  663. package/workflow/WorkflowRepairCard.js +2 -4
  664. package/workflow/WorkflowRepairCard.js.map +1 -1
  665. package/workflow/WorkflowRunDialog.d.ts.map +1 -1
  666. package/workflow/WorkflowRunDialog.js +14 -35
  667. package/workflow/WorkflowRunDialog.js.map +1 -1
  668. package/workflow/WorkflowTaskApprovalSummary.d.ts.map +1 -1
  669. package/workflow/WorkflowTaskApprovalSummary.js +2 -4
  670. package/workflow/WorkflowTaskApprovalSummary.js.map +1 -1
  671. package/workflow/WorkflowVersionBadge.d.ts.map +1 -1
  672. package/workflow/WorkflowVersionBadge.js +4 -13
  673. package/workflow/WorkflowVersionBadge.js.map +1 -1
  674. package/workflow/WorkflowVersionTimeline.d.ts.map +1 -1
  675. package/workflow/WorkflowVersionTimeline.js +1 -26
  676. package/workflow/WorkflowVersionTimeline.js.map +1 -1
  677. package/workflow/execution-comparison/ExecutionComparisonPicker.d.ts.map +1 -1
  678. package/workflow/execution-comparison/ExecutionComparisonPicker.js +14 -40
  679. package/workflow/execution-comparison/ExecutionComparisonPicker.js.map +1 -1
  680. package/workflow/execution-history/ExecutionHistoryTable.d.ts.map +1 -1
  681. package/workflow/execution-history/ExecutionHistoryTable.js +1 -24
  682. package/workflow/execution-history/ExecutionHistoryTable.js.map +1 -1
  683. package/workflow/index.d.ts +1 -1
  684. package/workflow/index.d.ts.map +1 -1
  685. package/workflow/index.js.map +1 -1
  686. package/workflow/instance/CreateWorkflowInstanceDialog.d.ts.map +1 -1
  687. package/workflow/instance/CreateWorkflowInstanceDialog.js +7 -20
  688. package/workflow/instance/CreateWorkflowInstanceDialog.js.map +1 -1
  689. package/workflow/instance/WorkflowInstanceDetailPanel.d.ts.map +1 -1
  690. package/workflow/instance/WorkflowInstanceDetailPanel.js +1 -1
  691. package/workflow/instance/WorkflowInstanceDetailPanel.js.map +1 -1
  692. package/workflow/picker/BranchAddPopover.d.ts.map +1 -1
  693. package/workflow/picker/BranchAddPopover.js +3 -2
  694. package/workflow/picker/BranchAddPopover.js.map +1 -1
  695. package/workflow/templates/WorkflowTemplatePreview.d.ts +1 -1
  696. package/workflow/templates/WorkflowTemplatePreview.d.ts.map +1 -1
  697. package/workflow/templates/WorkflowTemplatePreview.js +10 -22
  698. package/workflow/templates/WorkflowTemplatePreview.js.map +1 -1
  699. package/workflow/useApprovalBoundary.d.ts +1 -1
  700. package/workflow/useApprovalBoundary.js +1 -1
  701. package/workflow/useWorkflowCanvas.d.ts +5 -1
  702. package/workflow/useWorkflowCanvas.d.ts.map +1 -1
  703. package/workflow/useWorkflowCanvas.js +99 -13
  704. package/workflow/useWorkflowCanvas.js.map +1 -1
  705. package/workflow/useWorkflowExecutionPanel.d.ts +38 -2
  706. package/workflow/useWorkflowExecutionPanel.d.ts.map +1 -1
  707. package/workflow/useWorkflowExecutionPanel.js +46 -13
  708. package/workflow/useWorkflowExecutionPanel.js.map +1 -1
package/src/index.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  // Provider and context
2
2
  export { StigmerProvider, type StigmerProviderProps } from "./provider.js";
3
+ export { type ApprovalDefaults } from "./approval-defaults-context.js";
3
4
  export { StigmerContext } from "./context.js";
4
5
 
5
6
  // Runner adapter
@@ -39,7 +40,9 @@ export {
39
40
  modelKey,
40
41
  parseModelKey,
41
42
  fetchModelRegistry,
43
+ fetchModelRegistryDocument,
42
44
  parseRegistryJson,
45
+ parseRegistryDocument,
43
46
  useModelRegistry,
44
47
  ModelRegistryContext,
45
48
  ModelSelector,
@@ -51,6 +54,7 @@ export {
51
54
  } from "./models/index.js";
52
55
  export type {
53
56
  ModelInfo,
57
+ ModelRegistryDocument,
54
58
  ModelRegistryState,
55
59
  ParsedModelKey,
56
60
  Provider,
@@ -60,6 +64,7 @@ export type {
60
64
  ModelSelectorProps,
61
65
  HarnessSelectorProps,
62
66
  HarnessOption,
67
+ VisionLimits,
63
68
  } from "./models/index.js";
64
69
 
65
70
  // Workspace — behavior hooks and styled components
@@ -215,6 +220,7 @@ export type {
215
220
  ExecutionTargetOption,
216
221
  RuntimeEnvProvider,
217
222
  SessionAudience,
223
+ SessionPanelMode,
218
224
  SetupTabProps,
219
225
  SetupTabMutationCallbacks,
220
226
  } from "./session/index.js";
@@ -257,6 +263,7 @@ export {
257
263
  ExecutionPhaseBadge,
258
264
  InteractionModeBadge,
259
265
  SetupProgress,
266
+ LivenessStatusLine,
260
267
  ExecutionProgress,
261
268
  TodoList,
262
269
  TodoCard,
@@ -279,6 +286,7 @@ export {
279
286
  ResultView,
280
287
  summarizeResultView,
281
288
  TerminalSession,
289
+ TerminalTail,
282
290
  useToolPresentation,
283
291
  registerToolPresenter,
284
292
  getToolPresenter,
@@ -288,6 +296,9 @@ export {
288
296
  toolKindToCategoryInfo,
289
297
  defaultDisclosureForCategory,
290
298
  extractPrimaryArg,
299
+ extractShellIntent,
300
+ extractShellIntentFromPreview,
301
+ SHELL_INTENT_ARG_FIELD,
291
302
  McpToolDetail,
292
303
  parseMcpResult,
293
304
  formatDuration,
@@ -296,6 +307,7 @@ export {
296
307
  SubAgentSection,
297
308
  MessageEntry,
298
309
  MessageThread,
310
+ ExecutionErrorNotice,
299
311
  ThreadSkeleton,
300
312
  FollowUpInput,
301
313
  ApprovalCard,
@@ -380,6 +392,7 @@ export type {
380
392
  ExecutionPhaseBadgeProps,
381
393
  InteractionModeBadgeProps,
382
394
  SetupProgressProps,
395
+ LivenessStatusLineProps,
383
396
  ExecutionProgressProps,
384
397
  TodoListProps,
385
398
  TodoCardProps,
@@ -398,6 +411,7 @@ export type {
398
411
  ToolCallDetailProps,
399
412
  ResultViewProps,
400
413
  TerminalSessionProps,
414
+ TerminalTailProps,
401
415
  ToolPresentation,
402
416
  ToolPresenter,
403
417
  ToolDisclosure,
@@ -409,6 +423,8 @@ export type {
409
423
  SubAgentSectionProps,
410
424
  MessageEntryProps,
411
425
  MessageThreadProps,
426
+ MessageThreadSlots,
427
+ ExecutionErrorNoticeProps,
412
428
  ThreadContentColumn,
413
429
  ThreadSkeletonProps,
414
430
  FollowUpInputProps,
@@ -466,13 +482,14 @@ export type { ExecutionArtifact } from "@stigmer/protos/ai/stigmer/agentic/agent
466
482
  export { ExecutionArtifactKind } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
467
483
 
468
484
  // Attachment — file upload behavior hook, styled chip list, clipboard paste,
469
- // and vision-resolution image preparation
485
+ // vision-resolution image preparation, and vision preflight warnings
470
486
  export {
471
487
  useAttachments,
472
488
  AttachmentChipList,
473
489
  MAX_ATTACHMENT_BYTES,
474
490
  MAX_VISION_LONG_EDGE_PX,
475
491
  MAX_VISION_PIXELS,
492
+ assessVisionPreflight,
476
493
  detectContentType,
477
494
  exceedsVisionResolution,
478
495
  extractClipboardFiles,
@@ -481,15 +498,22 @@ export {
481
498
  prepareImageForVision,
482
499
  uniquifyFilename,
483
500
  validateAttachmentSize,
501
+ visionPreflightMessage,
484
502
  } from "./attachment/index.js";
485
503
  export type {
486
504
  AttachmentPhase,
487
505
  AttachmentEntry,
506
+ AssessVisionPreflightOptions,
488
507
  ClipboardFilesSource,
489
508
  UseAttachmentsOptions,
490
509
  UseAttachmentsReturn,
491
510
  AttachmentChipListProps,
492
511
  VisionFitSize,
512
+ VisionPreflight,
513
+ VisionPreflightAttachment,
514
+ VisionPreflightMessageOptions,
515
+ VisionPreflightReason,
516
+ VisionPreflightWarning,
493
517
  } from "./attachment/index.js";
494
518
 
495
519
  // File Reference — workspace file-reference behavior hook and styled chip list
@@ -1868,6 +1892,7 @@ export type {
1868
1892
  WorkflowTaskListProps,
1869
1893
  WorkflowDetailViewProps,
1870
1894
  WorkflowExecutionViewerProps,
1895
+ WorkflowExecutionPanelMode,
1871
1896
  WorkflowExecutionHeaderProps,
1872
1897
  WorkflowExecutionPanelController,
1873
1898
  UseWorkflowExecutionPanelOptions,
@@ -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
  /** The visual weight of a {@link DecisionButton}. */
6
7
  export type DecisionVariant = "primary" | "ghost" | "danger";
@@ -106,23 +107,3 @@ export function DecisionButton({
106
107
  );
107
108
  }
108
109
 
109
- // ---------------------------------------------------------------------------
110
- // Inline SVG icon
111
- // ---------------------------------------------------------------------------
112
-
113
- function SpinnerIcon() {
114
- return (
115
- <svg
116
- width="10"
117
- height="10"
118
- viewBox="0 0 12 12"
119
- fill="none"
120
- stroke="currentColor"
121
- strokeWidth="1.5"
122
- className="stg:animate-spin"
123
- aria-hidden="true"
124
- >
125
- <path d="M6 1.5A4.5 4.5 0 1 1 1.5 6" strokeLinecap="round" />
126
- </svg>
127
- );
128
- }
@@ -0,0 +1,169 @@
1
+ "use client";
2
+
3
+ import { useCallback, useEffect, useRef } from "react";
4
+ import type { MouseEvent, ReactNode, SyntheticEvent } from "react";
5
+ import { cn } from "@stigmer/theme";
6
+
7
+ /**
8
+ * Width presets for {@link DialogShell}, mapping to Tailwind `max-w-*`
9
+ * utilities. Free-form sizes (e.g. a lightbox's `85vw`) ride `className`,
10
+ * which wins over the preset via `cn()`'s tailwind-merge.
11
+ */
12
+ export type DialogShellWidth = "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl";
13
+
14
+ const WIDTH_CLASS: Record<DialogShellWidth, string> = {
15
+ sm: "stg:max-w-sm",
16
+ md: "stg:max-w-md",
17
+ lg: "stg:max-w-lg",
18
+ xl: "stg:max-w-xl",
19
+ "2xl": "stg:max-w-2xl",
20
+ "3xl": "stg:max-w-3xl",
21
+ "4xl": "stg:max-w-4xl",
22
+ };
23
+
24
+ /** Props for {@link DialogShell}. */
25
+ export interface DialogShellProps {
26
+ /** Whether the dialog is open (controlled — the SDK dialog convention). */
27
+ readonly open: boolean;
28
+ /**
29
+ * Called with `false` when the dialog should close: Escape / the platform
30
+ * cancel gesture, or a native close the host did not drive (e.g. a
31
+ * `method="dialog"` form submit). The shell never closes itself — state
32
+ * stays authoritative, so a host that ignores the callback keeps the
33
+ * dialog open (matching the pre-extraction per-dialog behavior).
34
+ */
35
+ readonly onOpenChange: (open: boolean) => void;
36
+ /** Max-width preset (default `"md"`). See {@link DialogShellWidth}. */
37
+ readonly width?: DialogShellWidth;
38
+ /**
39
+ * Modal (default) renders in the top layer via `showModal()` — focus trap,
40
+ * Escape, and the token backdrop. `modal={false}` renders the dialog
41
+ * in-flow (`open` attribute, relative positioning, no backdrop, no focus
42
+ * trap) — the channel-dialog embedding mode.
43
+ */
44
+ readonly modal?: boolean;
45
+ /**
46
+ * Light dismiss: a click on the backdrop (the dialog element itself —
47
+ * clicks inside the content land on descendants) reports close intent.
48
+ * The house rule from the pre-extraction census: read-only viewers
49
+ * (diff/YAML/explain/lightbox/pickers) dismiss on backdrop, form dialogs
50
+ * do NOT — a stray click must never discard a half-filled form. Default
51
+ * `false`.
52
+ */
53
+ readonly dismissOnBackdrop?: boolean;
54
+ /**
55
+ * Merged after the shell's own chrome, so deliberate outliers (a
56
+ * lightbox's viewport sizing, a fullscreen graph's `h-[90vh]`, a
57
+ * `bg-background` surface) override the defaults per class.
58
+ */
59
+ readonly className?: string;
60
+ /** Dialog content. Lazy-mounting bodies (`{open && …}`) stay caller-owned. */
61
+ readonly children: ReactNode;
62
+ /** Accessible name, when no visible heading labels the dialog. */
63
+ readonly "aria-label"?: string;
64
+ /** Id of the visible heading that labels the dialog. */
65
+ readonly "aria-labelledby"?: string;
66
+ }
67
+
68
+ /**
69
+ * The one dialog shell (stigmer#653). Owns everything every modal dialog in
70
+ * the SDK used to re-transcribe by hand: the `<dialog>` element and its
71
+ * `showModal()`/`close()` lifecycle, cancel/Escape wiring, the token
72
+ * backdrop (`--stgm-backdrop`), the open animation, and the base
73
+ * positioning/chrome — parameterized by {@link DialogShellWidth}.
74
+ *
75
+ * Converged chrome: `rounded-xl` + `shadow-xl` on the `popover` token
76
+ * surface (the token family for top-layer content). Before the extraction
77
+ * the 24 hand-rolled shells had drifted across `rounded-lg/xl`,
78
+ * `shadow-lg/xl/2xl`, three background tokens, two hardcoded backdrops that
79
+ * escaped the #652 fence, and animation classes present on some dialogs and
80
+ * missing from others.
81
+ *
82
+ * Internal on purpose — not exported from the package until a host needs it.
83
+ * The `stigmer/no-handrolled-dialog` lint rule fences new `<dialog>`
84
+ * elements onto this shell.
85
+ *
86
+ * @example
87
+ * ```tsx
88
+ * <DialogShell open={open} onOpenChange={setOpen} width="lg" aria-labelledby={titleId}>
89
+ * {open && <MyDialogBody titleId={titleId} onClose={() => setOpen(false)} />}
90
+ * </DialogShell>
91
+ * ```
92
+ */
93
+ export function DialogShell({
94
+ open,
95
+ onOpenChange,
96
+ width = "md",
97
+ modal = true,
98
+ dismissOnBackdrop = false,
99
+ className,
100
+ children,
101
+ "aria-label": ariaLabel,
102
+ "aria-labelledby": ariaLabelledby,
103
+ }: DialogShellProps) {
104
+ const dialogRef = useRef<HTMLDialogElement>(null);
105
+
106
+ // Sync the native top-layer state to the controlled prop. Runs on mount
107
+ // too, so a shell mounted with `open` already true shows immediately.
108
+ useEffect(() => {
109
+ const dialog = dialogRef.current;
110
+ if (!dialog || !modal) return;
111
+ if (open && !dialog.open) {
112
+ dialog.showModal();
113
+ } else if (!open && dialog.open) {
114
+ dialog.close();
115
+ }
116
+ }, [open, modal]);
117
+
118
+ // Escape / platform cancel: keep the native dialog open (preventDefault)
119
+ // and report the intent — the controlled `open` prop then drives the
120
+ // actual close through the effect above.
121
+ const handleCancel = useCallback(
122
+ (e: SyntheticEvent<HTMLDialogElement>) => {
123
+ e.preventDefault();
124
+ onOpenChange(false);
125
+ },
126
+ [onOpenChange],
127
+ );
128
+
129
+ // A native close the effect did not perform (e.g. a `method="dialog"`
130
+ // form submit) must not leave the controlled state stranded open.
131
+ const handleClose = useCallback(() => {
132
+ if (open) onOpenChange(false);
133
+ }, [open, onOpenChange]);
134
+
135
+ // Backdrop clicks hit the <dialog> element itself; clicks anywhere in the
136
+ // content land on a descendant, so the target check is exact.
137
+ const handleClick = useCallback(
138
+ (e: MouseEvent<HTMLDialogElement>) => {
139
+ if (e.target === e.currentTarget) onOpenChange(false);
140
+ },
141
+ [onOpenChange],
142
+ );
143
+
144
+ return (
145
+ <dialog
146
+ ref={dialogRef}
147
+ open={modal ? undefined : open || undefined}
148
+ onCancel={modal ? handleCancel : undefined}
149
+ onClose={modal ? handleClose : undefined}
150
+ onClick={modal && dismissOnBackdrop ? handleClick : undefined}
151
+ aria-label={ariaLabel}
152
+ aria-labelledby={ariaLabelledby}
153
+ className={cn(
154
+ "stg:w-full stg:rounded-xl stg:border stg:border-border stg:bg-popover stg:p-0 stg:text-popover-foreground stg:shadow-xl",
155
+ modal
156
+ ? cn(
157
+ "stg:fixed stg:inset-0 stg:z-50 stg:m-auto",
158
+ "stg:backdrop:bg-backdrop",
159
+ "stg:open:animate-in stg:open:fade-in-0 stg:open:zoom-in-95",
160
+ )
161
+ : "stg:relative",
162
+ WIDTH_CLASS[width],
163
+ className,
164
+ )}
165
+ >
166
+ {children}
167
+ </dialog>
168
+ );
169
+ }
@@ -0,0 +1,42 @@
1
+ import { cn } from "@stigmer/theme";
2
+
3
+ /**
4
+ * The SDK's canonical in-flight spinner: a three-quarter arc on a 16×16
5
+ * grid, colored by `currentColor` so the consumer's text token drives it
6
+ * (never hardcoded values — Dont-Do #3). Extracted from ~33 identical
7
+ * per-component copies (stigmer-cloud#270); new busy states import this
8
+ * instead of pasting another one.
9
+ *
10
+ * `size` is the rendered box; the glyph scales from the same viewBox, so
11
+ * every size renders the identical shape. Decorative by contract
12
+ * (`aria-hidden`) — pair it with visible or `sr-only` text when the busy
13
+ * state itself must be announced.
14
+ *
15
+ * The thread-card rows deliberately use a finer quarter-arc micro-glyph
16
+ * instead — see `internal/thread-card/glyphs.tsx`.
17
+ *
18
+ * @internal Not part of the public API.
19
+ */
20
+ export function SpinnerIcon({
21
+ size = 16,
22
+ className,
23
+ }: {
24
+ readonly size?: number;
25
+ readonly className?: string;
26
+ } = {}) {
27
+ return (
28
+ <svg
29
+ width={size}
30
+ height={size}
31
+ viewBox="0 0 16 16"
32
+ fill="none"
33
+ stroke="currentColor"
34
+ strokeWidth="2"
35
+ strokeLinecap="round"
36
+ className={cn("stg:animate-spin", className)}
37
+ aria-hidden="true"
38
+ >
39
+ <path d="M8 2a6 6 0 1 0 6 6" />
40
+ </svg>
41
+ );
42
+ }
@@ -0,0 +1,223 @@
1
+ /**
2
+ * DialogShell (stigmer#653): the one modal shell — showModal lifecycle,
3
+ * cancel/Escape wiring with state authority, native-close sync, the token
4
+ * backdrop + converged chrome, and the non-modal in-flow mode.
5
+ */
6
+
7
+ import { describe, it, expect, vi, beforeAll, afterEach } from "vitest";
8
+ import { render, cleanup, fireEvent } from "@testing-library/react";
9
+ import { DialogShell } from "../DialogShell";
10
+
11
+ // happy-dom does not implement the native dialog show/close methods.
12
+ beforeAll(() => {
13
+ HTMLDialogElement.prototype.showModal = function showModal() {
14
+ this.open = true;
15
+ };
16
+ HTMLDialogElement.prototype.close = function close() {
17
+ this.open = false;
18
+ };
19
+ });
20
+
21
+ afterEach(cleanup);
22
+
23
+ function dialogOf(container: HTMLElement): HTMLDialogElement {
24
+ return container.querySelector("dialog")!;
25
+ }
26
+
27
+ describe("DialogShell lifecycle", () => {
28
+ it("opens via showModal when the controlled prop flips true", () => {
29
+ const { container, rerender } = render(
30
+ <DialogShell open={false} onOpenChange={() => {}}>
31
+ <p>body</p>
32
+ </DialogShell>,
33
+ );
34
+ expect(dialogOf(container).open).toBe(false);
35
+
36
+ rerender(
37
+ <DialogShell open onOpenChange={() => {}}>
38
+ <p>body</p>
39
+ </DialogShell>,
40
+ );
41
+ expect(dialogOf(container).open).toBe(true);
42
+ });
43
+
44
+ it("shows immediately when mounted already open", () => {
45
+ const { container } = render(
46
+ <DialogShell open onOpenChange={() => {}}>
47
+ <p>body</p>
48
+ </DialogShell>,
49
+ );
50
+ expect(dialogOf(container).open).toBe(true);
51
+ });
52
+
53
+ it("closes the native dialog when the controlled prop flips false", () => {
54
+ const { container, rerender } = render(
55
+ <DialogShell open onOpenChange={() => {}}>
56
+ <p>body</p>
57
+ </DialogShell>,
58
+ );
59
+ rerender(
60
+ <DialogShell open={false} onOpenChange={() => {}}>
61
+ <p>body</p>
62
+ </DialogShell>,
63
+ );
64
+ expect(dialogOf(container).open).toBe(false);
65
+ });
66
+
67
+ it("Escape/cancel reports intent but never closes on its own — state stays authoritative", () => {
68
+ const onOpenChange = vi.fn();
69
+ const { container } = render(
70
+ <DialogShell open onOpenChange={onOpenChange}>
71
+ <p>body</p>
72
+ </DialogShell>,
73
+ );
74
+
75
+ fireEvent(dialogOf(container), new Event("cancel", { cancelable: true }));
76
+
77
+ expect(onOpenChange).toHaveBeenCalledExactlyOnceWith(false);
78
+ // The shell prevented the native close; the dialog stays open until the
79
+ // host flips the prop.
80
+ expect(dialogOf(container).open).toBe(true);
81
+ });
82
+
83
+ it("syncs the controlled state when something else closes the dialog natively", () => {
84
+ const onOpenChange = vi.fn();
85
+ const { container } = render(
86
+ <DialogShell open onOpenChange={onOpenChange}>
87
+ <p>body</p>
88
+ </DialogShell>,
89
+ );
90
+
91
+ // e.g. a method="dialog" form submit closes without going through props.
92
+ const dialog = dialogOf(container);
93
+ dialog.close();
94
+ fireEvent(dialog, new Event("close"));
95
+
96
+ expect(onOpenChange).toHaveBeenCalledExactlyOnceWith(false);
97
+ });
98
+
99
+ it("does not re-report a close the host itself drove", () => {
100
+ const onOpenChange = vi.fn();
101
+ const { container, rerender } = render(
102
+ <DialogShell open onOpenChange={onOpenChange}>
103
+ <p>body</p>
104
+ </DialogShell>,
105
+ );
106
+ rerender(
107
+ <DialogShell open={false} onOpenChange={onOpenChange}>
108
+ <p>body</p>
109
+ </DialogShell>,
110
+ );
111
+ // The effect's own dialog.close() fires a native close event in real
112
+ // browsers — replay it against the now-false prop.
113
+ fireEvent(dialogOf(container), new Event("close"));
114
+ expect(onOpenChange).not.toHaveBeenCalled();
115
+ });
116
+ });
117
+
118
+ describe("DialogShell chrome", () => {
119
+ it("carries the token backdrop, animation, positioning, and width preset", () => {
120
+ const { container } = render(
121
+ <DialogShell open onOpenChange={() => {}} width="3xl">
122
+ <p>body</p>
123
+ </DialogShell>,
124
+ );
125
+ const cls = dialogOf(container).className;
126
+
127
+ expect(cls).toContain("stg:backdrop:bg-backdrop");
128
+ expect(cls).toContain("stg:open:animate-in");
129
+ expect(cls).toContain("stg:fixed");
130
+ expect(cls).toContain("stg:m-auto");
131
+ expect(cls).toContain("stg:max-w-3xl");
132
+ expect(cls).toContain("stg:bg-popover");
133
+ });
134
+
135
+ it("className overrides the shell's own chrome per class (tailwind-merge)", () => {
136
+ const { container } = render(
137
+ <DialogShell
138
+ open
139
+ onOpenChange={() => {}}
140
+ className="stg:bg-background stg:max-w-[85vw]"
141
+ >
142
+ <p>body</p>
143
+ </DialogShell>,
144
+ );
145
+ const cls = dialogOf(container).className;
146
+
147
+ expect(cls).toContain("stg:bg-background");
148
+ expect(cls).not.toContain("stg:bg-popover");
149
+ expect(cls).toContain("stg:max-w-[85vw]");
150
+ expect(cls).not.toContain("stg:max-w-md");
151
+ });
152
+
153
+ it("labels the dialog for assistive tech", () => {
154
+ const { container } = render(
155
+ <DialogShell open onOpenChange={() => {}} aria-label="Confirm delete">
156
+ <p>body</p>
157
+ </DialogShell>,
158
+ );
159
+ expect(dialogOf(container).getAttribute("aria-label")).toBe("Confirm delete");
160
+ });
161
+ });
162
+
163
+ describe("DialogShell backdrop dismiss", () => {
164
+ it("dismissOnBackdrop: a click on the dialog element itself reports close intent", () => {
165
+ const onOpenChange = vi.fn();
166
+ const { container } = render(
167
+ <DialogShell open onOpenChange={onOpenChange} dismissOnBackdrop>
168
+ <p>body</p>
169
+ </DialogShell>,
170
+ );
171
+
172
+ fireEvent.click(dialogOf(container));
173
+ expect(onOpenChange).toHaveBeenCalledExactlyOnceWith(false);
174
+ });
175
+
176
+ it("dismissOnBackdrop: clicks on content descendants never dismiss", () => {
177
+ const onOpenChange = vi.fn();
178
+ const { container, getByText } = render(
179
+ <DialogShell open onOpenChange={onOpenChange} dismissOnBackdrop>
180
+ <p>body</p>
181
+ </DialogShell>,
182
+ );
183
+
184
+ fireEvent.click(getByText("body"));
185
+ expect(onOpenChange).not.toHaveBeenCalled();
186
+ expect(dialogOf(container).open).toBe(true);
187
+ });
188
+
189
+ it("default: backdrop clicks are inert (form dialogs)", () => {
190
+ const onOpenChange = vi.fn();
191
+ const { container } = render(
192
+ <DialogShell open onOpenChange={onOpenChange}>
193
+ <p>body</p>
194
+ </DialogShell>,
195
+ );
196
+
197
+ fireEvent.click(dialogOf(container));
198
+ expect(onOpenChange).not.toHaveBeenCalled();
199
+ });
200
+ });
201
+
202
+ describe("DialogShell non-modal mode", () => {
203
+ it("renders in-flow: open attribute, no backdrop, no fixed positioning", () => {
204
+ const { container, rerender } = render(
205
+ <DialogShell open modal={false} onOpenChange={() => {}}>
206
+ <p>body</p>
207
+ </DialogShell>,
208
+ );
209
+ const dialog = dialogOf(container);
210
+
211
+ expect(dialog.open).toBe(true);
212
+ expect(dialog.className).toContain("stg:relative");
213
+ expect(dialog.className).not.toContain("stg:backdrop:bg-backdrop");
214
+ expect(dialog.className).not.toContain("stg:fixed");
215
+
216
+ rerender(
217
+ <DialogShell open={false} modal={false} onOpenChange={() => {}}>
218
+ <p>body</p>
219
+ </DialogShell>,
220
+ );
221
+ expect(dialogOf(container).open).toBe(false);
222
+ });
223
+ });
@@ -1,9 +1,9 @@
1
1
  // Contract tests for the shared thread-card shell (T05/T06): the chrome
2
- // axes (bordered vs divider row, gate accent), the header gestures
3
- // (`expand` / `none` — `select` died with the Inspect drill-down, T06)
4
- // with their ARIA semantics, and the nested-button keydown guard. The two
5
- // consuming threads pin their own compositions; this file pins what they
6
- // share.
2
+ // tiers (card / nested divider row / quiet unboxed line, gate accent), the
3
+ // header gestures (`expand` / `none` — `select` died with the Inspect
4
+ // drill-down, T06) with their ARIA semantics, and the nested-button keydown
5
+ // guard. The two consuming threads pin their own compositions; this file
6
+ // pins what they share.
7
7
 
8
8
  import { describe, it, expect, vi, afterEach } from "vitest";
9
9
  import { render, screen, fireEvent, cleanup } from "@testing-library/react";
@@ -16,7 +16,7 @@ import {
16
16
  afterEach(cleanup);
17
17
 
18
18
  describe("ThreadCardShell chrome", () => {
19
- it("renders a bordered card by default and a divider row when nested", () => {
19
+ it("renders a bordered card by default, a divider row when nested, and no chrome when quiet", () => {
20
20
  const { rerender, container } = render(
21
21
  <ThreadCardShell cursorTarget="row">
22
22
  <ThreadCardHeader>content</ThreadCardHeader>
@@ -27,12 +27,22 @@ describe("ThreadCardShell chrome", () => {
27
27
  expect(root().className).toContain("stg:border-border-prominent");
28
28
 
29
29
  rerender(
30
- <ThreadCardShell cursorTarget="row" bordered={false}>
30
+ <ThreadCardShell cursorTarget="row" variant="row">
31
31
  <ThreadCardHeader>content</ThreadCardHeader>
32
32
  </ThreadCardShell>,
33
33
  );
34
34
  expect(root().className).toContain("stg:border-b");
35
35
  expect(root().className).not.toContain("stg:border-border-prominent");
36
+
37
+ rerender(
38
+ <ThreadCardShell cursorTarget="row" variant="quiet">
39
+ <ThreadCardHeader>content</ThreadCardHeader>
40
+ </ThreadCardShell>,
41
+ );
42
+ // The quiet tier is an unboxed line: no card border, no divider.
43
+ expect(root().className).not.toContain("stg:border-border-prominent");
44
+ expect(root().className).not.toContain("stg:border-b");
45
+ expect(root().className).not.toContain("stg:rounded-lg");
36
46
  });
37
47
 
38
48
  it("carries the gate accent", () => {
@@ -44,6 +54,19 @@ describe("ThreadCardShell chrome", () => {
44
54
  const root = container.querySelector('[data-cursor-target="row"]') as HTMLElement;
45
55
  expect(root.className).toContain("stg:border-l-warning");
46
56
  });
57
+
58
+ it("never draws the gate accent on a quiet shell — escalation is the caller's job", () => {
59
+ // The quiet tier deliberately ignores `accent`: a gated row must be
60
+ // escalated to variant="card" by its component, never rendered as an
61
+ // accented bare line (see ThreadCardVariant).
62
+ const { container } = render(
63
+ <ThreadCardShell cursorTarget="row" variant="quiet" accent="warning">
64
+ <ThreadCardHeader>content</ThreadCardHeader>
65
+ </ThreadCardShell>,
66
+ );
67
+ const root = container.querySelector('[data-cursor-target="row"]') as HTMLElement;
68
+ expect(root.className).not.toContain("stg:border-l-warning");
69
+ });
47
70
  });
48
71
 
49
72
  describe("ThreadCardHeader gestures", () => {
@@ -102,4 +125,17 @@ describe("ThreadCardBody", () => {
102
125
  render(<ThreadCardBody id="detail-1">body</ThreadCardBody>);
103
126
  expect(document.getElementById("detail-1")?.textContent).toBe("body");
104
127
  });
128
+
129
+ it("swaps the card padding for a left rail when the body is quiet-contained", () => {
130
+ const { rerender } = render(<ThreadCardBody id="detail-1">body</ThreadCardBody>);
131
+ const el = () => document.getElementById("detail-1")!;
132
+ expect(el().className).not.toContain("stg:border-l-2");
133
+
134
+ rerender(
135
+ <ThreadCardBody id="detail-1" rail>
136
+ body
137
+ </ThreadCardBody>,
138
+ );
139
+ expect(el().className).toContain("stg:border-l-2");
140
+ });
105
141
  });