@stigmer/react 3.12.3 → 3.12.5

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 (493) hide show
  1. package/agent/steps/IdentityStep.d.ts.map +1 -1
  2. package/agent/steps/IdentityStep.js +2 -1
  3. package/agent/steps/IdentityStep.js.map +1 -1
  4. package/agent-instance/AgentInstanceDetailPanel.d.ts.map +1 -1
  5. package/agent-instance/AgentInstanceDetailPanel.js +2 -1
  6. package/agent-instance/AgentInstanceDetailPanel.js.map +1 -1
  7. package/api-key/CreateApiKeyForm.d.ts.map +1 -1
  8. package/api-key/CreateApiKeyForm.js +2 -1
  9. package/api-key/CreateApiKeyForm.js.map +1 -1
  10. package/attachment/AttachmentChipList.js +16 -6
  11. package/attachment/AttachmentChipList.js.map +1 -1
  12. package/attachment/index.d.ts +1 -1
  13. package/attachment/index.d.ts.map +1 -1
  14. package/attachment/index.js.map +1 -1
  15. package/attachment/useAttachments.d.ts +51 -8
  16. package/attachment/useAttachments.d.ts.map +1 -1
  17. package/attachment/useAttachments.js +74 -3
  18. package/attachment/useAttachments.js.map +1 -1
  19. package/channel/ChannelConversationsDialog.d.ts.map +1 -1
  20. package/channel/ChannelConversationsDialog.js +2 -1
  21. package/channel/ChannelConversationsDialog.js.map +1 -1
  22. package/channel/ChannelTemplatesDialog.d.ts.map +1 -1
  23. package/channel/ChannelTemplatesDialog.js +2 -1
  24. package/channel/ChannelTemplatesDialog.js.map +1 -1
  25. package/channel/ConnectSlackDialog.d.ts.map +1 -1
  26. package/channel/ConnectSlackDialog.js +2 -1
  27. package/channel/ConnectSlackDialog.js.map +1 -1
  28. package/channel/connect/ServingAppSection.d.ts.map +1 -1
  29. package/channel/connect/ServingAppSection.js +2 -1
  30. package/channel/connect/ServingAppSection.js.map +1 -1
  31. package/channel-app/CreateChannelAppForm.d.ts.map +1 -1
  32. package/channel-app/CreateChannelAppForm.js +2 -1
  33. package/channel-app/CreateChannelAppForm.js.map +1 -1
  34. package/composer/SessionComposer.d.ts.map +1 -1
  35. package/composer/SessionComposer.js +17 -10
  36. package/composer/SessionComposer.js.map +1 -1
  37. package/conversation/ConversationComposer.d.ts +19 -3
  38. package/conversation/ConversationComposer.d.ts.map +1 -1
  39. package/conversation/ConversationComposer.js +4 -4
  40. package/conversation/ConversationComposer.js.map +1 -1
  41. package/conversation/ConversationListPane.d.ts.map +1 -1
  42. package/conversation/ConversationListPane.js +2 -1
  43. package/conversation/ConversationListPane.js.map +1 -1
  44. package/conversation/ConversationTemplatePickerDialog.d.ts +63 -0
  45. package/conversation/ConversationTemplatePickerDialog.d.ts.map +1 -0
  46. package/conversation/ConversationTemplatePickerDialog.js +151 -0
  47. package/conversation/ConversationTemplatePickerDialog.js.map +1 -0
  48. package/conversation/ConversationTimelineView.d.ts.map +1 -1
  49. package/conversation/ConversationTimelineView.js +2 -1
  50. package/conversation/ConversationTimelineView.js.map +1 -1
  51. package/conversation/ConversationsWorkbench.d.ts.map +1 -1
  52. package/conversation/ConversationsWorkbench.js +16 -5
  53. package/conversation/ConversationsWorkbench.js.map +1 -1
  54. package/conversation/index.d.ts +3 -1
  55. package/conversation/index.d.ts.map +1 -1
  56. package/conversation/index.js +1 -0
  57. package/conversation/index.js.map +1 -1
  58. package/conversation/useConversationParticipation.d.ts +41 -4
  59. package/conversation/useConversationParticipation.d.ts.map +1 -1
  60. package/conversation/useConversationParticipation.js +13 -2
  61. package/conversation/useConversationParticipation.js.map +1 -1
  62. package/cursor-accounts/CursorAccountsConsole.d.ts.map +1 -1
  63. package/cursor-accounts/CursorAccountsConsole.js +2 -1
  64. package/cursor-accounts/CursorAccountsConsole.js.map +1 -1
  65. package/cursor-accounts/MemberKeysPanel.d.ts.map +1 -1
  66. package/cursor-accounts/MemberKeysPanel.js +2 -1
  67. package/cursor-accounts/MemberKeysPanel.js.map +1 -1
  68. package/dashboard/DashboardFailedRuns.d.ts.map +1 -1
  69. package/dashboard/DashboardFailedRuns.js +2 -1
  70. package/dashboard/DashboardFailedRuns.js.map +1 -1
  71. package/dependency-graph/DependencyGraph.d.ts.map +1 -1
  72. package/dependency-graph/DependencyGraph.js +2 -1
  73. package/dependency-graph/DependencyGraph.js.map +1 -1
  74. package/dependency-graph/DependencyTreeNode.d.ts.map +1 -1
  75. package/dependency-graph/DependencyTreeNode.js +2 -1
  76. package/dependency-graph/DependencyTreeNode.js.map +1 -1
  77. package/environment/EnvironmentPicker.d.ts.map +1 -1
  78. package/environment/EnvironmentPicker.js +2 -1
  79. package/environment/EnvironmentPicker.js.map +1 -1
  80. package/error/SecretFlowErrorGuide.d.ts.map +1 -1
  81. package/error/SecretFlowErrorGuide.js +2 -1
  82. package/error/SecretFlowErrorGuide.js.map +1 -1
  83. package/execution/ArtifactContentBody.d.ts.map +1 -1
  84. package/execution/ArtifactContentBody.js +2 -1
  85. package/execution/ArtifactContentBody.js.map +1 -1
  86. package/execution/ArtifactsWidget.d.ts.map +1 -1
  87. package/execution/ArtifactsWidget.js +2 -1
  88. package/execution/ArtifactsWidget.js.map +1 -1
  89. package/execution/FileChangeProgressBar.d.ts.map +1 -1
  90. package/execution/FileChangeProgressBar.js +2 -1
  91. package/execution/FileChangeProgressBar.js.map +1 -1
  92. package/execution/TodoList.d.ts.map +1 -1
  93. package/execution/TodoList.js +2 -1
  94. package/execution/TodoList.js.map +1 -1
  95. package/execution/WriteBacksWidget.d.ts.map +1 -1
  96. package/execution/WriteBacksWidget.js +2 -1
  97. package/execution/WriteBacksWidget.js.map +1 -1
  98. package/execution/tool-categories.d.ts +5 -22
  99. package/execution/tool-categories.d.ts.map +1 -1
  100. package/execution/tool-categories.js +8 -38
  101. package/execution/tool-categories.js.map +1 -1
  102. package/iam-policy/PeopleWithAccess.d.ts.map +1 -1
  103. package/iam-policy/PeopleWithAccess.js +2 -1
  104. package/iam-policy/PeopleWithAccess.js.map +1 -1
  105. package/iam-policy/PrincipalPicker.d.ts.map +1 -1
  106. package/iam-policy/PrincipalPicker.js +2 -1
  107. package/iam-policy/PrincipalPicker.js.map +1 -1
  108. package/iam-policy/RoleSelector.d.ts.map +1 -1
  109. package/iam-policy/RoleSelector.js +2 -1
  110. package/iam-policy/RoleSelector.js.map +1 -1
  111. package/identity-account/AccountPreferencesPanel.d.ts +35 -0
  112. package/identity-account/AccountPreferencesPanel.d.ts.map +1 -0
  113. package/identity-account/AccountPreferencesPanel.js +187 -0
  114. package/identity-account/AccountPreferencesPanel.js.map +1 -0
  115. package/identity-account/index.d.ts +8 -0
  116. package/identity-account/index.d.ts.map +1 -1
  117. package/identity-account/index.js +4 -0
  118. package/identity-account/index.js.map +1 -1
  119. package/identity-account/useAccountExecutionDefaults.d.ts +36 -0
  120. package/identity-account/useAccountExecutionDefaults.d.ts.map +1 -0
  121. package/identity-account/useAccountExecutionDefaults.js +46 -0
  122. package/identity-account/useAccountExecutionDefaults.js.map +1 -0
  123. package/identity-account/useMyIdentityAccount.d.ts +55 -0
  124. package/identity-account/useMyIdentityAccount.d.ts.map +1 -0
  125. package/identity-account/useMyIdentityAccount.js +37 -0
  126. package/identity-account/useMyIdentityAccount.js.map +1 -0
  127. package/identity-account/useUpdateIdentityAccount.d.ts +42 -0
  128. package/identity-account/useUpdateIdentityAccount.d.ts.map +1 -0
  129. package/identity-account/useUpdateIdentityAccount.js +53 -0
  130. package/identity-account/useUpdateIdentityAccount.js.map +1 -0
  131. package/identity-provider/CreateIdentityProviderForm.d.ts.map +1 -1
  132. package/identity-provider/CreateIdentityProviderForm.js +2 -1
  133. package/identity-provider/CreateIdentityProviderForm.js.map +1 -1
  134. package/identity-provider/IdentityProviderDetailPanel.d.ts.map +1 -1
  135. package/identity-provider/IdentityProviderDetailPanel.js +2 -1
  136. package/identity-provider/IdentityProviderDetailPanel.js.map +1 -1
  137. package/identity-provider/IdentityProviderWizard.d.ts.map +1 -1
  138. package/identity-provider/IdentityProviderWizard.js +2 -1
  139. package/identity-provider/IdentityProviderWizard.js.map +1 -1
  140. package/index.d.ts +14 -10
  141. package/index.d.ts.map +1 -1
  142. package/index.js +11 -5
  143. package/index.js.map +1 -1
  144. package/internal/StandingContextField.d.ts +37 -0
  145. package/internal/StandingContextField.d.ts.map +1 -0
  146. package/internal/StandingContextField.js +24 -0
  147. package/internal/StandingContextField.js.map +1 -0
  148. package/internal/element-resets.d.ts +17 -0
  149. package/internal/element-resets.d.ts.map +1 -0
  150. package/internal/element-resets.js +32 -0
  151. package/internal/element-resets.js.map +1 -0
  152. package/internal/file-tree/FileTreeNode.d.ts.map +1 -1
  153. package/internal/file-tree/FileTreeNode.js +2 -1
  154. package/internal/file-tree/FileTreeNode.js.map +1 -1
  155. package/internal/markdown-components.d.ts +7 -0
  156. package/internal/markdown-components.d.ts.map +1 -1
  157. package/internal/markdown-components.js +15 -5
  158. package/internal/markdown-components.js.map +1 -1
  159. package/invitation/InvitationManager.d.ts.map +1 -1
  160. package/invitation/InvitationManager.js +2 -1
  161. package/invitation/InvitationManager.js.map +1 -1
  162. package/library/InstanceVisibilitySelector.d.ts.map +1 -1
  163. package/library/InstanceVisibilitySelector.js +9 -2
  164. package/library/InstanceVisibilitySelector.js.map +1 -1
  165. package/library/ResourceVisibilityControl.d.ts +13 -3
  166. package/library/ResourceVisibilityControl.d.ts.map +1 -1
  167. package/library/ResourceVisibilityControl.js +33 -5
  168. package/library/ResourceVisibilityControl.js.map +1 -1
  169. package/library/VisibilityOptionRow.d.ts +6 -0
  170. package/library/VisibilityOptionRow.d.ts.map +1 -1
  171. package/library/VisibilityOptionRow.js +11 -1
  172. package/library/VisibilityOptionRow.js.map +1 -1
  173. package/library/VisibilitySelector.d.ts.map +1 -1
  174. package/library/VisibilitySelector.js +14 -2
  175. package/library/VisibilitySelector.js.map +1 -1
  176. package/library/index.d.ts +4 -2
  177. package/library/index.d.ts.map +1 -1
  178. package/library/index.js +2 -1
  179. package/library/index.js.map +1 -1
  180. package/library/useCanSetPublicVisibility.d.ts +30 -0
  181. package/library/useCanSetPublicVisibility.d.ts.map +1 -0
  182. package/library/useCanSetPublicVisibility.js +41 -0
  183. package/library/useCanSetPublicVisibility.js.map +1 -0
  184. package/library/visibilityLevels.d.ts +32 -1
  185. package/library/visibilityLevels.d.ts.map +1 -1
  186. package/library/visibilityLevels.js +34 -14
  187. package/library/visibilityLevels.js.map +1 -1
  188. package/manifest/ApplyManifestDialog.d.ts.map +1 -1
  189. package/manifest/ApplyManifestDialog.js +2 -1
  190. package/manifest/ApplyManifestDialog.js.map +1 -1
  191. package/mcp-server/steps/IdentityTransportStep.d.ts.map +1 -1
  192. package/mcp-server/steps/IdentityTransportStep.js +2 -1
  193. package/mcp-server/steps/IdentityTransportStep.js.map +1 -1
  194. package/mcp-server/useMcpServerConnect.d.ts +8 -5
  195. package/mcp-server/useMcpServerConnect.d.ts.map +1 -1
  196. package/mcp-server/useMcpServerConnect.js +2 -1
  197. package/mcp-server/useMcpServerConnect.js.map +1 -1
  198. package/mcp-server/useMcpServerOAuthConnect.d.ts.map +1 -1
  199. package/mcp-server/useMcpServerOAuthConnect.js +7 -2
  200. package/mcp-server/useMcpServerOAuthConnect.js.map +1 -1
  201. package/oauth-app/CreateOAuthAppForm.d.ts +2 -2
  202. package/oauth-app/CreateOAuthAppForm.d.ts.map +1 -1
  203. package/oauth-app/CreateOAuthAppForm.js +13 -4
  204. package/oauth-app/CreateOAuthAppForm.js.map +1 -1
  205. package/oauth-app/OAuthAppDetailPanel.d.ts.map +1 -1
  206. package/oauth-app/OAuthAppDetailPanel.js +32 -5
  207. package/oauth-app/OAuthAppDetailPanel.js.map +1 -1
  208. package/organization/OrgPreferencesPanel.d.ts +32 -0
  209. package/organization/OrgPreferencesPanel.d.ts.map +1 -0
  210. package/organization/OrgPreferencesPanel.js +90 -0
  211. package/organization/OrgPreferencesPanel.js.map +1 -0
  212. package/organization/OrgProfilePanel.d.ts.map +1 -1
  213. package/organization/OrgProfilePanel.js +5 -4
  214. package/organization/OrgProfilePanel.js.map +1 -1
  215. package/organization/index.d.ts +2 -0
  216. package/organization/index.d.ts.map +1 -1
  217. package/organization/index.js +1 -0
  218. package/organization/index.js.map +1 -1
  219. package/package.json +4 -4
  220. package/platform-client/CreatePlatformClientForm.d.ts.map +1 -1
  221. package/platform-client/CreatePlatformClientForm.js +2 -1
  222. package/platform-client/CreatePlatformClientForm.js.map +1 -1
  223. package/platform-client/PlatformClientDetailPanel.d.ts.map +1 -1
  224. package/platform-client/PlatformClientDetailPanel.js +2 -1
  225. package/platform-client/PlatformClientDetailPanel.js.map +1 -1
  226. package/pricing-governance/BaselineEditor.d.ts.map +1 -1
  227. package/pricing-governance/BaselineEditor.js +2 -1
  228. package/pricing-governance/BaselineEditor.js.map +1 -1
  229. package/pricing-governance/PricingGovernanceConsole.d.ts.map +1 -1
  230. package/pricing-governance/PricingGovernanceConsole.js +2 -1
  231. package/pricing-governance/PricingGovernanceConsole.js.map +1 -1
  232. package/provider-standing/ProviderStandingAccessNotice.d.ts +11 -0
  233. package/provider-standing/ProviderStandingAccessNotice.d.ts.map +1 -0
  234. package/provider-standing/ProviderStandingAccessNotice.js +14 -0
  235. package/provider-standing/ProviderStandingAccessNotice.js.map +1 -0
  236. package/provider-standing/ProviderStandingConsole.d.ts +24 -0
  237. package/provider-standing/ProviderStandingConsole.d.ts.map +1 -0
  238. package/provider-standing/ProviderStandingConsole.js +98 -0
  239. package/provider-standing/ProviderStandingConsole.js.map +1 -0
  240. package/provider-standing/index.d.ts +6 -0
  241. package/provider-standing/index.d.ts.map +1 -0
  242. package/provider-standing/index.js +6 -0
  243. package/provider-standing/index.js.map +1 -0
  244. package/provider-standing/useProviderStanding.d.ts +34 -0
  245. package/provider-standing/useProviderStanding.d.ts.map +1 -0
  246. package/provider-standing/useProviderStanding.js +26 -0
  247. package/provider-standing/useProviderStanding.js.map +1 -0
  248. package/provider.d.ts +12 -0
  249. package/provider.d.ts.map +1 -1
  250. package/provider.js +12 -0
  251. package/provider.js.map +1 -1
  252. package/resource-creation/StepIndicator.d.ts.map +1 -1
  253. package/resource-creation/StepIndicator.js +2 -1
  254. package/resource-creation/StepIndicator.js.map +1 -1
  255. package/schedule/ScheduleDetailView.d.ts.map +1 -1
  256. package/schedule/ScheduleDetailView.js +3 -2
  257. package/schedule/ScheduleDetailView.js.map +1 -1
  258. package/schedule/ScheduleRunsTable.d.ts.map +1 -1
  259. package/schedule/ScheduleRunsTable.js +2 -1
  260. package/schedule/ScheduleRunsTable.js.map +1 -1
  261. package/session/NewSessionViewer.d.ts +10 -1
  262. package/session/NewSessionViewer.d.ts.map +1 -1
  263. package/session/NewSessionViewer.js +2 -1
  264. package/session/NewSessionViewer.js.map +1 -1
  265. package/session/facets/ArtifactsTab.d.ts.map +1 -1
  266. package/session/facets/ArtifactsTab.js +2 -1
  267. package/session/facets/ArtifactsTab.js.map +1 -1
  268. package/session/facets/ChangesTab.d.ts.map +1 -1
  269. package/session/facets/ChangesTab.js +2 -1
  270. package/session/facets/ChangesTab.js.map +1 -1
  271. package/session/facets/UsageTab.d.ts +10 -3
  272. package/session/facets/UsageTab.d.ts.map +1 -1
  273. package/session/facets/UsageTab.js +42 -6
  274. package/session/facets/UsageTab.js.map +1 -1
  275. package/session/index.d.ts +1 -1
  276. package/session/index.d.ts.map +1 -1
  277. package/session/index.js.map +1 -1
  278. package/session/useNewSessionFlow.d.ts +27 -1
  279. package/session/useNewSessionFlow.d.ts.map +1 -1
  280. package/session/useNewSessionFlow.js +45 -8
  281. package/session/useNewSessionFlow.js.map +1 -1
  282. package/session/useSessionUsage.d.ts +25 -0
  283. package/session/useSessionUsage.d.ts.map +1 -1
  284. package/session/useSessionUsage.js +11 -0
  285. package/session/useSessionUsage.js.map +1 -1
  286. package/settings/AccountPreferencesSection.d.ts +3 -0
  287. package/settings/AccountPreferencesSection.d.ts.map +1 -0
  288. package/settings/AccountPreferencesSection.js +10 -0
  289. package/settings/AccountPreferencesSection.js.map +1 -0
  290. package/settings/OrgPreferencesSection.d.ts +3 -0
  291. package/settings/OrgPreferencesSection.d.ts.map +1 -0
  292. package/settings/OrgPreferencesSection.js +13 -0
  293. package/settings/OrgPreferencesSection.js.map +1 -0
  294. package/settings/index.d.ts +2 -0
  295. package/settings/index.d.ts.map +1 -1
  296. package/settings/index.js +2 -0
  297. package/settings/index.js.map +1 -1
  298. package/settings/settings-nav.d.ts.map +1 -1
  299. package/settings/settings-nav.js +23 -1
  300. package/settings/settings-nav.js.map +1 -1
  301. package/settings/useSettingsNavGroups.d.ts.map +1 -1
  302. package/settings/useSettingsNavGroups.js +4 -1
  303. package/settings/useSettingsNavGroups.js.map +1 -1
  304. package/sharing/ShareAgentDialog.d.ts.map +1 -1
  305. package/sharing/ShareAgentDialog.js +2 -1
  306. package/sharing/ShareAgentDialog.js.map +1 -1
  307. package/sidebar/WorkspaceSidebar.d.ts.map +1 -1
  308. package/sidebar/WorkspaceSidebar.js +2 -1
  309. package/sidebar/WorkspaceSidebar.js.map +1 -1
  310. package/skill/SkillFileBrowser.d.ts.map +1 -1
  311. package/skill/SkillFileBrowser.js +2 -1
  312. package/skill/SkillFileBrowser.js.map +1 -1
  313. package/skill/internal/fetchAndUnpackArtifact.d.ts +1 -1
  314. package/skill/internal/fetchAndUnpackArtifact.d.ts.map +1 -1
  315. package/skill/internal/fetchAndUnpackArtifact.js +47 -3
  316. package/skill/internal/fetchAndUnpackArtifact.js.map +1 -1
  317. package/skill/useSkillDiff.d.ts.map +1 -1
  318. package/skill/useSkillDiff.js +7 -1
  319. package/skill/useSkillDiff.js.map +1 -1
  320. package/skill/useSkillUpload.d.ts.map +1 -1
  321. package/skill/useSkillUpload.js +22 -4
  322. package/skill/useSkillUpload.js.map +1 -1
  323. package/src/__tests__/bare-host-resets.layout.test.tsx +184 -0
  324. package/src/agent/steps/IdentityStep.tsx +2 -1
  325. package/src/agent-instance/AgentInstanceDetailPanel.tsx +2 -1
  326. package/src/api-key/CreateApiKeyForm.tsx +2 -1
  327. package/src/attachment/AttachmentChipList.tsx +19 -8
  328. package/src/attachment/__tests__/AttachmentChipList.test.tsx +12 -0
  329. package/src/attachment/__tests__/useAttachments.test.ts +293 -0
  330. package/src/attachment/index.ts +1 -0
  331. package/src/attachment/useAttachments.ts +143 -11
  332. package/src/channel/ChannelConversationsDialog.tsx +2 -1
  333. package/src/channel/ChannelTemplatesDialog.tsx +2 -1
  334. package/src/channel/ConnectSlackDialog.tsx +2 -1
  335. package/src/channel/connect/ServingAppSection.tsx +2 -1
  336. package/src/channel-app/CreateChannelAppForm.tsx +2 -1
  337. package/src/composer/SessionComposer.tsx +23 -14
  338. package/src/conversation/ConversationComposer.tsx +38 -4
  339. package/src/conversation/ConversationListPane.tsx +2 -5
  340. package/src/conversation/ConversationTemplatePickerDialog.tsx +441 -0
  341. package/src/conversation/ConversationTimelineView.tsx +2 -1
  342. package/src/conversation/ConversationsWorkbench.tsx +40 -4
  343. package/src/conversation/__tests__/ConversationComposer.test.tsx +56 -1
  344. package/src/conversation/__tests__/ConversationTemplatePickerDialog.test.tsx +224 -0
  345. package/src/conversation/__tests__/useConversationParticipation.test.tsx +45 -4
  346. package/src/conversation/index.ts +4 -0
  347. package/src/conversation/useConversationParticipation.ts +58 -6
  348. package/src/cursor-accounts/CursorAccountsConsole.tsx +2 -1
  349. package/src/cursor-accounts/MemberKeysPanel.tsx +2 -1
  350. package/src/dashboard/DashboardFailedRuns.tsx +2 -1
  351. package/src/dependency-graph/DependencyGraph.tsx +2 -1
  352. package/src/dependency-graph/DependencyTreeNode.tsx +2 -1
  353. package/src/environment/EnvironmentPicker.tsx +2 -1
  354. package/src/error/SecretFlowErrorGuide.tsx +3 -2
  355. package/src/execution/ArtifactContentBody.tsx +2 -1
  356. package/src/execution/ArtifactsWidget.tsx +2 -1
  357. package/src/execution/FileChangeProgressBar.tsx +2 -1
  358. package/src/execution/TodoList.tsx +2 -1
  359. package/src/execution/WriteBacksWidget.tsx +2 -1
  360. package/src/execution/tool-categories.ts +17 -41
  361. package/src/iam-policy/PeopleWithAccess.tsx +2 -1
  362. package/src/iam-policy/PrincipalPicker.tsx +2 -0
  363. package/src/iam-policy/RoleSelector.tsx +2 -1
  364. package/src/identity-account/AccountPreferencesPanel.tsx +446 -0
  365. package/src/identity-account/__tests__/AccountPreferencesPanel.test.tsx +233 -0
  366. package/src/identity-account/__tests__/useAccountExecutionDefaults.test.tsx +116 -0
  367. package/src/identity-account/__tests__/useMyIdentityAccount.test.tsx +121 -0
  368. package/src/identity-account/index.ts +11 -0
  369. package/src/identity-account/useAccountExecutionDefaults.ts +63 -0
  370. package/src/identity-account/useMyIdentityAccount.ts +75 -0
  371. package/src/identity-account/useUpdateIdentityAccount.ts +73 -0
  372. package/src/identity-provider/CreateIdentityProviderForm.tsx +2 -1
  373. package/src/identity-provider/IdentityProviderDetailPanel.tsx +2 -1
  374. package/src/identity-provider/IdentityProviderWizard.tsx +2 -1
  375. package/src/index.ts +37 -2
  376. package/src/internal/StandingContextField.tsx +92 -0
  377. package/src/internal/element-resets.ts +33 -0
  378. package/src/internal/file-tree/FileTreeNode.tsx +2 -1
  379. package/src/internal/markdown-components.tsx +15 -5
  380. package/src/invitation/InvitationManager.tsx +3 -2
  381. package/src/library/InstanceVisibilitySelector.tsx +9 -2
  382. package/src/library/ResourceVisibilityControl.tsx +46 -13
  383. package/src/library/VisibilityOptionRow.tsx +28 -6
  384. package/src/library/VisibilitySelector.tsx +14 -2
  385. package/src/library/__tests__/VisibilitySelector.test.tsx +48 -1
  386. package/src/library/__tests__/visibilityLevels.test.ts +67 -1
  387. package/src/library/index.ts +6 -1
  388. package/src/library/useCanSetPublicVisibility.ts +56 -0
  389. package/src/library/visibilityLevels.ts +65 -14
  390. package/src/manifest/ApplyManifestDialog.tsx +2 -1
  391. package/src/mcp-server/__tests__/useMcpServerConnect.asyncLane.test.tsx +117 -0
  392. package/src/mcp-server/steps/IdentityTransportStep.tsx +3 -2
  393. package/src/mcp-server/useMcpServerConnect.ts +9 -6
  394. package/src/mcp-server/useMcpServerOAuthConnect.ts +7 -2
  395. package/src/oauth-app/CreateOAuthAppForm.tsx +58 -3
  396. package/src/oauth-app/OAuthAppDetailPanel.tsx +84 -3
  397. package/src/organization/OrgPreferencesPanel.tsx +221 -0
  398. package/src/organization/OrgProfilePanel.tsx +5 -4
  399. package/src/organization/__tests__/OrgPreferencesPanel.test.tsx +145 -0
  400. package/src/organization/__tests__/OrgProfilePanel.test.tsx +108 -0
  401. package/src/organization/index.ts +2 -0
  402. package/src/platform-client/CreatePlatformClientForm.tsx +4 -3
  403. package/src/platform-client/PlatformClientDetailPanel.tsx +4 -3
  404. package/src/pricing-governance/BaselineEditor.tsx +3 -2
  405. package/src/pricing-governance/PricingGovernanceConsole.tsx +2 -1
  406. package/src/provider-standing/ProviderStandingAccessNotice.tsx +36 -0
  407. package/src/provider-standing/ProviderStandingConsole.tsx +216 -0
  408. package/src/provider-standing/__tests__/ProviderStandingConsole.test.tsx +143 -0
  409. package/src/provider-standing/index.ts +8 -0
  410. package/src/provider-standing/useProviderStanding.ts +50 -0
  411. package/src/provider.tsx +12 -0
  412. package/src/resource-creation/StepIndicator.tsx +2 -1
  413. package/src/schedule/ScheduleDetailView.tsx +3 -2
  414. package/src/schedule/ScheduleRunsTable.tsx +2 -1
  415. package/src/session/NewSessionViewer.tsx +12 -0
  416. package/src/session/__tests__/UsageTab.test.tsx +136 -0
  417. package/src/session/__tests__/useNewSessionFlow.test.tsx +151 -0
  418. package/src/session/__tests__/useSessionUsage.test.ts +19 -0
  419. package/src/session/facets/ArtifactsTab.tsx +2 -1
  420. package/src/session/facets/ChangesTab.tsx +2 -1
  421. package/src/session/facets/UsageTab.tsx +98 -6
  422. package/src/session/index.ts +1 -0
  423. package/src/session/useNewSessionFlow.ts +76 -9
  424. package/src/session/useSessionUsage.ts +37 -0
  425. package/src/settings/AccountPreferencesSection.tsx +25 -0
  426. package/src/settings/OrgPreferencesSection.tsx +35 -0
  427. package/src/settings/__tests__/settings-nav.test.ts +27 -0
  428. package/src/settings/__tests__/useSettingsNavGroups.test.tsx +11 -1
  429. package/src/settings/index.ts +2 -0
  430. package/src/settings/settings-nav.ts +25 -0
  431. package/src/settings/useSettingsNavGroups.ts +8 -1
  432. package/src/sharing/ShareAgentDialog.tsx +2 -1
  433. package/src/sidebar/WorkspaceSidebar.tsx +2 -1
  434. package/src/skill/SkillFileBrowser.tsx +2 -1
  435. package/src/skill/__tests__/SkillFileBrowser.test.tsx +10 -2
  436. package/src/skill/__tests__/fetchAndUnpackArtifact.test.ts +90 -0
  437. package/src/skill/__tests__/useSkillUpload.test.ts +69 -0
  438. package/src/skill/internal/fetchAndUnpackArtifact.ts +54 -4
  439. package/src/skill/useSkillDiff.ts +7 -1
  440. package/src/skill/useSkillUpload.ts +25 -6
  441. package/src/workflow/ApprovalFormBuilder.tsx +5 -27
  442. package/src/workflow/FailedRunsWidget.tsx +2 -1
  443. package/src/workflow/PendingApprovalsWidget.tsx +2 -1
  444. package/src/workflow/facets/WorkflowArtifactsTab.tsx +2 -1
  445. package/src/workflow/facets/WorkflowUsageTab.tsx +2 -1
  446. package/src/workflow/inspector/WorkflowSummaryPanel.tsx +2 -1
  447. package/src/workflow/inspector/tabs/BranchesTab.tsx +2 -1
  448. package/src/workflow/inspector/tabs/IterationTab.tsx +2 -1
  449. package/src/workflow/instance/WorkflowInstanceDetailPanel.tsx +2 -1
  450. package/src/workspace/ExplorerTree.tsx +2 -1
  451. package/src/workspace/WorkspaceContentSearch.tsx +2 -1
  452. package/src/workspace/WorkspaceFileSearch.tsx +2 -1
  453. package/src/workspace/WorkspaceSummary.tsx +2 -1
  454. package/styles.css +1 -1
  455. package/workflow/ApprovalFormBuilder.d.ts.map +1 -1
  456. package/workflow/ApprovalFormBuilder.js +8 -5
  457. package/workflow/ApprovalFormBuilder.js.map +1 -1
  458. package/workflow/FailedRunsWidget.d.ts.map +1 -1
  459. package/workflow/FailedRunsWidget.js +2 -1
  460. package/workflow/FailedRunsWidget.js.map +1 -1
  461. package/workflow/PendingApprovalsWidget.d.ts.map +1 -1
  462. package/workflow/PendingApprovalsWidget.js +2 -1
  463. package/workflow/PendingApprovalsWidget.js.map +1 -1
  464. package/workflow/facets/WorkflowArtifactsTab.d.ts.map +1 -1
  465. package/workflow/facets/WorkflowArtifactsTab.js +2 -1
  466. package/workflow/facets/WorkflowArtifactsTab.js.map +1 -1
  467. package/workflow/facets/WorkflowUsageTab.d.ts.map +1 -1
  468. package/workflow/facets/WorkflowUsageTab.js +2 -1
  469. package/workflow/facets/WorkflowUsageTab.js.map +1 -1
  470. package/workflow/inspector/WorkflowSummaryPanel.d.ts.map +1 -1
  471. package/workflow/inspector/WorkflowSummaryPanel.js +2 -1
  472. package/workflow/inspector/WorkflowSummaryPanel.js.map +1 -1
  473. package/workflow/inspector/tabs/BranchesTab.d.ts.map +1 -1
  474. package/workflow/inspector/tabs/BranchesTab.js +2 -1
  475. package/workflow/inspector/tabs/BranchesTab.js.map +1 -1
  476. package/workflow/inspector/tabs/IterationTab.d.ts.map +1 -1
  477. package/workflow/inspector/tabs/IterationTab.js +2 -1
  478. package/workflow/inspector/tabs/IterationTab.js.map +1 -1
  479. package/workflow/instance/WorkflowInstanceDetailPanel.d.ts.map +1 -1
  480. package/workflow/instance/WorkflowInstanceDetailPanel.js +2 -1
  481. package/workflow/instance/WorkflowInstanceDetailPanel.js.map +1 -1
  482. package/workspace/ExplorerTree.d.ts.map +1 -1
  483. package/workspace/ExplorerTree.js +2 -1
  484. package/workspace/ExplorerTree.js.map +1 -1
  485. package/workspace/WorkspaceContentSearch.d.ts.map +1 -1
  486. package/workspace/WorkspaceContentSearch.js +2 -1
  487. package/workspace/WorkspaceContentSearch.js.map +1 -1
  488. package/workspace/WorkspaceFileSearch.d.ts.map +1 -1
  489. package/workspace/WorkspaceFileSearch.js +2 -1
  490. package/workspace/WorkspaceFileSearch.js.map +1 -1
  491. package/workspace/WorkspaceSummary.d.ts.map +1 -1
  492. package/workspace/WorkspaceSummary.js +2 -1
  493. package/workspace/WorkspaceSummary.js.map +1 -1
@@ -0,0 +1,69 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { renderHook, act } from "@testing-library/react";
3
+ import { zipSync, strToU8 } from "fflate";
4
+ import { useSkillUpload } from "../useSkillUpload";
5
+
6
+ const SKILL_MD = "---\nname: my-skill\ndescription: A test skill\n---\n# My Skill\n";
7
+
8
+ /** Build a real ZIP (fflate, the same library the hook unpacks with) as a File. */
9
+ function zipFile(files: Record<string, Uint8Array>): File {
10
+ return new File([zipSync(files)], "skill.zip", { type: "application/zip" });
11
+ }
12
+
13
+ async function process(files: Record<string, Uint8Array>) {
14
+ const { result } = renderHook(() => useSkillUpload());
15
+ await act(() => result.current.processFile(zipFile(files)));
16
+ return result;
17
+ }
18
+
19
+ describe("useSkillUpload", () => {
20
+ it("accepts a root SKILL.md and produces a preview", async () => {
21
+ const result = await process({
22
+ "SKILL.md": strToU8(SKILL_MD),
23
+ "references/schema.md": strToU8("# Schema"),
24
+ });
25
+
26
+ expect(result.current.validationError).toBeNull();
27
+ expect(result.current.preview?.name).toBe("my-skill");
28
+ expect(result.current.preview?.description).toBe("A test skill");
29
+ expect(result.current.artifact).not.toBeNull();
30
+ });
31
+
32
+ // The layout contract is root-only on both editions (DD-018, #452). The
33
+ // preview exists to catch the "zipped the folder instead of its contents"
34
+ // mistake BEFORE upload — accepting nested here and failing at push is the
35
+ // exact confusion issue #684 pins.
36
+ it("rejects a nested-only SKILL.md with the zip-the-contents hint", async () => {
37
+ const result = await process({
38
+ "my-skill/SKILL.md": strToU8(SKILL_MD),
39
+ "my-skill/references/schema.md": strToU8("# Schema"),
40
+ });
41
+
42
+ expect(result.current.preview).toBeNull();
43
+ expect(result.current.artifact).toBeNull();
44
+ expect(result.current.validationError).toBe(
45
+ "Found my-skill/SKILL.md — SKILL.md must be at the archive root. " +
46
+ "Zip the skill folder's contents, not the folder itself.",
47
+ );
48
+ });
49
+
50
+ it("detects a deeply nested SKILL.md for the hint (any depth, server parity)", async () => {
51
+ const result = await process({
52
+ "wrapper/my-skill/SKILL.md": strToU8(SKILL_MD),
53
+ });
54
+
55
+ expect(result.current.preview).toBeNull();
56
+ expect(result.current.validationError).toContain("Found wrapper/my-skill/SKILL.md");
57
+ });
58
+
59
+ it("rejects an archive with no SKILL.md anywhere with the plain root-level message", async () => {
60
+ const result = await process({
61
+ "README.md": strToU8("# Not a skill"),
62
+ });
63
+
64
+ expect(result.current.preview).toBeNull();
65
+ expect(result.current.validationError).toBe(
66
+ "ZIP must contain a SKILL.md file at the root level",
67
+ );
68
+ });
69
+ });
@@ -1,6 +1,6 @@
1
1
  import { create } from "@bufbuild/protobuf";
2
2
  import { GetArtifactRequestSchema } from "@stigmer/protos/ai/stigmer/agentic/skill/v1/io_pb";
3
- import type { Stigmer } from "@stigmer/sdk";
3
+ import { isUnimplemented, type Stigmer } from "@stigmer/sdk";
4
4
  import type { SkillFileEntry } from "../useSkillUpload.js";
5
5
 
6
6
  /** Unpacked artifact: file entries for browsing + content map for reading. */
@@ -20,11 +20,10 @@ export async function fetchAndUnpackArtifact(
20
20
  stigmer: Stigmer,
21
21
  artifactStorageKey: string,
22
22
  ): Promise<UnpackedArtifact> {
23
- const request = create(GetArtifactRequestSchema, { artifactStorageKey });
24
- const response = await stigmer.skill.getArtifact(request);
23
+ const artifact = await fetchArtifactBytes(stigmer, artifactStorageKey);
25
24
 
26
25
  const { unzipSync, strFromU8 } = await import("fflate");
27
- const unzipped = unzipSync(response.artifact);
26
+ const unzipped = unzipSync(artifact);
28
27
 
29
28
  const entries = Object.entries(unzipped);
30
29
  const files: SkillFileEntry[] = entries.map(([path, data]) => ({
@@ -49,3 +48,54 @@ export async function fetchAndUnpackArtifact(
49
48
 
50
49
  return { files, contentMap };
51
50
  }
51
+
52
+ /**
53
+ * Fetch the artifact ZIP bytes, URL-first (the transfer lane, stigmer#675):
54
+ * the bytes ride HTTP, so any valid skill (up to the 100MB limit) is
55
+ * fetchable — the unary `getArtifact` RPC is capped at the server's 10MB
56
+ * gRPC message limit.
57
+ *
58
+ * Fallbacks to the unary lane, deliberately wider than the runner's
59
+ * mint-Unimplemented-only contract because this code runs in a browser:
60
+ *
61
+ * - `Unimplemented` from the mint — a pre-transfer-lane server (the code
62
+ * clients key their fallback on, same as every other lane client).
63
+ * - A failed HTTP fetch of the minted URL — in a browser this is how a
64
+ * missing bucket CORS policy surfaces (an opaque `TypeError`,
65
+ * indistinguishable from a network failure). The unary lane was the
66
+ * status quo and still serves everything under the message cap, so
67
+ * degrading beats breaking the console; the warn keeps it observable.
68
+ */
69
+ async function fetchArtifactBytes(
70
+ stigmer: Stigmer,
71
+ artifactStorageKey: string,
72
+ ): Promise<Uint8Array> {
73
+ const request = create(GetArtifactRequestSchema, { artifactStorageKey });
74
+
75
+ let minted;
76
+ try {
77
+ minted = await stigmer.skill.getArtifactDownloadUrl(request);
78
+ } catch (err) {
79
+ if (isUnimplemented(err)) {
80
+ const response = await stigmer.skill.getArtifact(request);
81
+ return response.artifact;
82
+ }
83
+ throw err;
84
+ }
85
+
86
+ try {
87
+ const doFetch = stigmer.fetch ?? globalThis.fetch;
88
+ const resp = await doFetch(minted.url);
89
+ if (!resp.ok) {
90
+ throw new Error(`artifact download failed with HTTP ${resp.status}`);
91
+ }
92
+ return new Uint8Array(await resp.arrayBuffer());
93
+ } catch (err) {
94
+ console.warn(
95
+ "[stigmer] skill artifact download URL fetch failed (bucket CORS not provisioned for this origin?) — falling back to the unary lane",
96
+ err,
97
+ );
98
+ const response = await stigmer.skill.getArtifact(request);
99
+ return response.artifact;
100
+ }
101
+ }
@@ -21,7 +21,13 @@ export interface UseSkillDiffReturn {
21
21
  readonly error: Error | null;
22
22
  }
23
23
 
24
- /** Maximum artifact size (10 MB) to prevent excessive memory usage. */
24
+ /**
25
+ * Maximum COMBINED unpacked text of both artifacts (10 MB) — a browser
26
+ * memory guard on holding and diffing two extracted file trees, NOT a
27
+ * transport limit. The transfer lane (stigmer#675) removed the download
28
+ * cap, so arbitrarily large valid skills can be *fetched*; what stays
29
+ * bounded is what this hook is willing to diff in tab memory.
30
+ */
25
31
  const MAX_ARTIFACT_BYTES = 10 * 1024 * 1024;
26
32
 
27
33
  // ---------------------------------------------------------------------------
@@ -129,10 +129,16 @@ export function useSkillUpload(): UseSkillUploadReturn {
129
129
  if (abortRef.current !== callId) return;
130
130
 
131
131
  const entries = Object.entries(unzipped);
132
- const skillMdEntry = findSkillMd(entries);
132
+ const skillMdEntry = findRootSkillMd(entries);
133
133
 
134
134
  if (!skillMdEntry) {
135
- setValidationError("ZIP must contain a SKILL.md file at the root level");
135
+ const nestedPath = findNestedSkillMd(entries);
136
+ setValidationError(
137
+ nestedPath
138
+ ? `Found ${nestedPath} — SKILL.md must be at the archive root. ` +
139
+ "Zip the skill folder's contents, not the folder itself."
140
+ : "ZIP must contain a SKILL.md file at the root level",
141
+ );
136
142
  return;
137
143
  }
138
144
 
@@ -207,12 +213,25 @@ function isZip(bytes: Uint8Array): boolean {
207
213
  );
208
214
  }
209
215
 
210
- function findSkillMd(
216
+ /**
217
+ * The layout contract is root-only on both editions (DD-018, #452): the
218
+ * server rejects an archive whose only SKILL.md is nested, so the preview
219
+ * must too — accepting it here converts a clear pre-upload error into a
220
+ * confusing post-upload rejection (issue #684).
221
+ */
222
+ function findRootSkillMd(
211
223
  entries: [string, Uint8Array][],
212
224
  ): [string, Uint8Array] | undefined {
213
- return entries.find(
214
- ([path]) => path === "SKILL.md" || path.match(/^[^/]+\/SKILL\.md$/),
215
- );
225
+ return entries.find(([path]) => path === "SKILL.md");
226
+ }
227
+
228
+ /**
229
+ * Detect the "zipped the folder instead of its contents" mistake so the
230
+ * error can say what to do. Any-depth suffix match, mirroring the server's
231
+ * nested-occurrence detection (skill/storage/zip_extractor.go).
232
+ */
233
+ function findNestedSkillMd(entries: [string, Uint8Array][]): string | undefined {
234
+ return entries.find(([path]) => path.endsWith("/SKILL.md"))?.[0];
216
235
  }
217
236
 
218
237
  function parseFrontmatter(content: string): Record<string, unknown> | null {
@@ -24,11 +24,15 @@ interface FormFieldEntry {
24
24
  enumValues: string;
25
25
  }
26
26
 
27
+ // HUMAN_INPUT_TIMEOUT_ESCALATE is deliberately absent: the proto declares it
28
+ // but no runtime exists, and the server validator refuses it at apply
29
+ // (stigmer/stigmer#779). The old option also wrote an `escalation_task` field
30
+ // that HumanInputTaskConfig never had, so every config it produced failed
31
+ // the server's strict decode.
27
32
  const TIMEOUT_POLICY_OPTIONS = [
28
33
  { value: "HUMAN_INPUT_TIMEOUT_FAIL", label: "Fail — task errors on timeout" },
29
34
  { value: "HUMAN_INPUT_TIMEOUT_APPROVE", label: "Auto-approve — proceed as approved" },
30
35
  { value: "HUMAN_INPUT_TIMEOUT_DENY", label: "Auto-deny — proceed as denied" },
31
- { value: "HUMAN_INPUT_TIMEOUT_ESCALATE", label: "Escalate — branch to escalation task" },
32
36
  ] as const;
33
37
 
34
38
  const TIMEOUT_UNITS = [
@@ -107,8 +111,6 @@ export const ApprovalFormBuilder = memo(function ApprovalFormBuilder({
107
111
  <TimeoutSection
108
112
  timeout={typeof cfg.timeout === "number" ? cfg.timeout : 0}
109
113
  onTimeout={typeof cfg.on_timeout === "string" ? cfg.on_timeout : ""}
110
- escalationTask={typeof cfg.escalation_task === "string" ? cfg.escalation_task : ""}
111
- allTaskNames={allTaskNames}
112
114
  onUpdateConfig={onUpdateConfig}
113
115
  />
114
116
  <StringListSection
@@ -619,14 +621,10 @@ function FormFieldRow({
619
621
  function TimeoutSection({
620
622
  timeout,
621
623
  onTimeout,
622
- escalationTask,
623
- allTaskNames,
624
624
  onUpdateConfig,
625
625
  }: {
626
626
  timeout: number;
627
627
  onTimeout: string;
628
- escalationTask: string;
629
- allTaskNames: readonly string[];
630
628
  onUpdateConfig: (fieldPath: string, value: unknown) => void;
631
629
  }) {
632
630
  const bestUnit = useMemo(() => {
@@ -665,8 +663,6 @@ function TimeoutSection({
665
663
  [timeout, unit, onUpdateConfig],
666
664
  );
667
665
 
668
- const isEscalate = onTimeout === "HUMAN_INPUT_TIMEOUT_ESCALATE";
669
-
670
666
  return (
671
667
  <CollapsibleSection title="Timeout">
672
668
  <div className="stg:flex stg:items-center stg:gap-1">
@@ -710,24 +706,6 @@ function TimeoutSection({
710
706
  </div>
711
707
  )}
712
708
 
713
- {isEscalate && (
714
- <div className="stg:mt-1.5 stg:flex stg:flex-col stg:gap-1">
715
- <label className="stg:text-[10px] stg:text-[var(--stgm-muted-foreground,#737373)]">
716
- Escalation task
717
- </label>
718
- <select
719
- value={escalationTask}
720
- onChange={(e) => onUpdateConfig("escalation_task", e.target.value || undefined)}
721
- className={cn(smallInputClass)}
722
- aria-label="Escalation target task"
723
- >
724
- <option value="">— Select escalation task —</option>
725
- {allTaskNames.map((name) => (
726
- <option key={name} value={name}>{name}</option>
727
- ))}
728
- </select>
729
- </div>
730
- )}
731
709
  </CollapsibleSection>
732
710
  );
733
711
  }
@@ -4,6 +4,7 @@ import { memo } from "react";
4
4
  import type { WorkflowExecution } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/api_pb";
5
5
  import { timestampDate } from "@bufbuild/protobuf/wkt";
6
6
  import { cn } from "@stigmer/theme";
7
+ import { UNSTYLED_LIST } from "../internal/element-resets.js";
7
8
  import { formatRelativeTime } from "../activity/format-relative-time.js";
8
9
 
9
10
  export interface FailedRunsWidgetProps {
@@ -54,7 +55,7 @@ export const FailedRunsWidget = memo(function FailedRunsWidget({
54
55
  No recent failures
55
56
  </p>
56
57
  ) : (
57
- <ul className="stg:space-y-2" role="list">
58
+ <ul className={cn(UNSTYLED_LIST, "stg:space-y-2")} role="list">
58
59
  {executions.map((exec) => {
59
60
  const id = exec.metadata?.id;
60
61
  const name =
@@ -4,6 +4,7 @@ import { memo } from "react";
4
4
  import type { PendingApproval } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/io_pb";
5
5
  import { timestampDate } from "@bufbuild/protobuf/wkt";
6
6
  import { cn } from "@stigmer/theme";
7
+ import { UNSTYLED_LIST } from "../internal/element-resets.js";
7
8
  import { formatRelativeTime } from "../activity/format-relative-time.js";
8
9
 
9
10
  export interface PendingApprovalsWidgetProps {
@@ -65,7 +66,7 @@ export const PendingApprovalsWidget = memo(function PendingApprovalsWidget({
65
66
  No approvals pending
66
67
  </p>
67
68
  ) : (
68
- <ul className="stg:space-y-2" role="list">
69
+ <ul className={cn(UNSTYLED_LIST, "stg:space-y-2")} role="list">
69
70
  {approvals.map((approval) => {
70
71
  const requestedAt = approval.requestedAt
71
72
  ? timestampDate(approval.requestedAt)
@@ -5,6 +5,7 @@
5
5
 
6
6
  import type { Artifact } from "@stigmer/protos/ai/stigmer/agentic/artifact/v1/api_pb";
7
7
  import { useMemo } from "react";
8
+ import { UNSTYLED_LIST } from "../../internal/element-resets.js";
8
9
  import { ArtifactRowView } from "../../execution/ArtifactRowView.js";
9
10
  import type { ArtifactRowItem } from "../../execution/artifact-row-item.js";
10
11
  import { deriveWorkflowArtifactItems } from "../deriveWorkflowArtifactItems.js";
@@ -55,7 +56,7 @@ export function WorkflowArtifactsTab({
55
56
  }
56
57
 
57
58
  return (
58
- <ul role="list" className="stg:flex stg:flex-col">
59
+ <ul role="list" className={`${UNSTYLED_LIST} stg:flex stg:flex-col`}>
59
60
  {entries.map(({ artifact, item }) => (
60
61
  <WorkflowArtifactRow
61
62
  key={artifact.metadata?.id ?? item.name}
@@ -5,6 +5,7 @@
5
5
 
6
6
  import { useMemo } from "react";
7
7
  import { cn } from "@stigmer/theme";
8
+ import { UNSTYLED_LIST } from "../../internal/element-resets.js";
8
9
  import type {
9
10
  DerivedCostSummary,
10
11
  DerivedTaskState,
@@ -72,7 +73,7 @@ export function WorkflowUsageTab({
72
73
  <h3 className="stg:px-2 stg:text-xs stg:font-semibold stg:uppercase stg:tracking-wider stg:text-muted-foreground">
73
74
  By task
74
75
  </h3>
75
- <ul role="list" className="stg:flex stg:flex-col">
76
+ <ul role="list" className={cn(UNSTYLED_LIST, "stg:flex stg:flex-col")}>
76
77
  {items.map((item) => (
77
78
  <UsageRow key={item.taskName} item={item} />
78
79
  ))}
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { memo, useMemo, useState, useCallback } from "react";
4
4
  import { cn } from "@stigmer/theme";
5
+ import { UNSTYLED_LIST } from "../../internal/element-resets.js";
5
6
  import type { WorkflowGraphModel, WorkflowGraphBudget, WorkflowGraphEnvVar } from "../workflow-graph-model.js";
6
7
  import { START_NODE_ID, END_NODE_ID } from "../workflow-graph-model.js";
7
8
  import { CATEGORY_DISPLAY_NAMES } from "../canvas-constants.js";
@@ -155,7 +156,7 @@ function ValidationSection({
155
156
  </button>
156
157
 
157
158
  {expanded && (
158
- <ul className="stg:flex stg:flex-col stg:gap-1" role="list">
159
+ <ul className={cn(UNSTYLED_LIST, "stg:flex stg:flex-col stg:gap-1")} role="list">
159
160
  {Array.from(errors.entries()).map(([nodeId, nodeErrors]) =>
160
161
  nodeErrors.map((error, i) => (
161
162
  <li
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { memo, useCallback, useMemo, useState } from "react";
4
4
  import { cn } from "@stigmer/theme";
5
+ import { UNSTYLED_FIELDSET } from "../../../internal/element-resets.js";
5
6
  import {
6
7
  Tooltip,
7
8
  TooltipContent,
@@ -283,7 +284,7 @@ function ForkBranches({
283
284
  return (
284
285
  <div className="stg:flex stg:flex-col stg:gap-3 stg:px-3 stg:py-3">
285
286
  {/* Join policy */}
286
- <fieldset>
287
+ <fieldset className={UNSTYLED_FIELDSET}>
287
288
  <legend className="stg:text-xs stg:font-semibold stg:text-[var(--stgm-foreground,#1a1a2e)] stg:mb-1.5">
288
289
  Join policy
289
290
  </legend>
@@ -1,6 +1,7 @@
1
1
  "use client";
2
2
 
3
3
  import { memo, useCallback, useState, useMemo } from "react";
4
+ import { UNSTYLED_FIELDSET } from "../../../internal/element-resets.js";
4
5
  import type { WorkflowGraphNode } from "../../workflow-graph-model.js";
5
6
  import type { InspectorMutations } from "../types.js";
6
7
 
@@ -177,7 +178,7 @@ export const IterationTab = memo(function IterationTab({
177
178
 
178
179
  {/* Error policy */}
179
180
  {parallelism > 0 && (
180
- <fieldset>
181
+ <fieldset className={UNSTYLED_FIELDSET}>
181
182
  <legend className="stg:text-[10px] stg:font-medium stg:text-[var(--stgm-muted-foreground,#737373)] stg:mb-1.5">
182
183
  Error policy
183
184
  </legend>
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { useCallback, useState } from "react";
4
4
  import { cn } from "@stigmer/theme";
5
+ import { UNSTYLED_LIST } from "../../internal/element-resets.js";
5
6
  import { timestampDate } from "@bufbuild/protobuf/wkt";
6
7
  import type { WorkflowInstance } from "@stigmer/protos/ai/stigmer/agentic/workflowinstance/v1/api_pb";
7
8
  import { ApiResourceVisibility } from "@stigmer/protos/ai/stigmer/commons/apiresource/enum_pb";
@@ -263,7 +264,7 @@ export function WorkflowInstanceDetailPanel({
263
264
  {(spec?.environmentRefs?.length ?? 0) === 0 ? (
264
265
  <p className="stg:text-xs stg:text-muted-foreground">No environments bound.</p>
265
266
  ) : (
266
- <ol className="stg:space-y-1">
267
+ <ol className={cn(UNSTYLED_LIST, "stg:space-y-1")}>
267
268
  {spec!.environmentRefs.map((ref, idx) => (
268
269
  <li key={`${ref.slug}-${idx}`} className="stg:flex stg:items-center stg:gap-2 stg:text-sm">
269
270
  <span className="stg:text-xs stg:text-muted-foreground stg:w-4 stg:text-right">{idx + 1}.</span>
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { useState } from "react";
4
4
  import { cn } from "@stigmer/theme";
5
+ import { UNSTYLED_LIST } from "../internal/element-resets.js";
5
6
  import { FileTreeNode } from "../internal/file-tree/index.js";
6
7
  import type { SelectedWorkspaceFile } from "../internal/store/index.js";
7
8
  import { Tooltip, TooltipContent, TooltipTrigger } from "../internal/tooltip.js";
@@ -231,7 +232,7 @@ function ExplorerRootBody({
231
232
  return (
232
233
  <>
233
234
  <nav aria-label={`File tree for ${entryName}`}>
234
- <ul className="stg:py-0.5 stg:pl-1.5" role="tree">
235
+ <ul className={cn(UNSTYLED_LIST, "stg:py-0.5 stg:pl-1.5")} role="tree">
235
236
  {tree.map((node) => (
236
237
  <FileTreeNode
237
238
  key={node.path}
@@ -11,6 +11,7 @@ import {
11
11
  type ReactNode,
12
12
  } from "react";
13
13
  import { cn } from "@stigmer/theme";
14
+ import { UNSTYLED_LIST } from "../internal/element-resets.js";
14
15
  import type { WorkspaceEntry } from "./useWorkspaceEntries.js";
15
16
  import type {
16
17
  WorkspaceContentMatch,
@@ -235,7 +236,7 @@ export function WorkspaceContentSearch({
235
236
  <MessageState>No files containing &ldquo;{trimmed}&rdquo;.</MessageState>
236
237
  ) : (
237
238
  <>
238
- <ul id={listboxId} role="listbox" aria-label="Search results" className="stg:py-0.5">
239
+ <ul id={listboxId} role="listbox" aria-label="Search results" className={cn(UNSTYLED_LIST, "stg:py-0.5")}>
239
240
  {renderRows({
240
241
  groups,
241
242
  query: trimmed,
@@ -10,6 +10,7 @@ import {
10
10
  type KeyboardEvent,
11
11
  } from "react";
12
12
  import { cn } from "@stigmer/theme";
13
+ import { UNSTYLED_LIST } from "../internal/element-resets.js";
13
14
  import type { WorkspaceEntry } from "./useWorkspaceEntries.js";
14
15
  import type { WorkspaceFileLister } from "./WorkspaceFileLister.js";
15
16
  import type { SelectedWorkspaceFile } from "../internal/store/workspace-file-selection-store.js";
@@ -210,7 +211,7 @@ export function WorkspaceFileSearch({
210
211
  id={listboxId}
211
212
  role="listbox"
212
213
  aria-label="Search results"
213
- className="stg:py-0.5"
214
+ className={cn(UNSTYLED_LIST, "stg:py-0.5")}
214
215
  >
215
216
  {renderRows({
216
217
  groups,
@@ -3,6 +3,7 @@
3
3
  import type { WorkspaceEntry } from "@stigmer/protos/ai/stigmer/agentic/session/v1/workspace_pb";
4
4
  import type { WorkspaceSource } from "@stigmer/protos/ai/stigmer/agentic/session/v1/workspace_pb";
5
5
  import { cn } from "@stigmer/theme";
6
+ import { UNSTYLED_LIST } from "../internal/element-resets.js";
6
7
  import { Tooltip, TooltipContent, TooltipTrigger } from "../internal/tooltip.js";
7
8
  import { TruncatedText } from "../internal/truncated-text.js";
8
9
 
@@ -43,7 +44,7 @@ export function WorkspaceSummary({
43
44
  if (entries.length === 0) return null;
44
45
 
45
46
  return (
46
- <ul className={cn("stg:space-y-1.5", className)} aria-label="Workspace entries">
47
+ <ul className={cn(UNSTYLED_LIST, "stg:space-y-1.5", className)} aria-label="Workspace entries">
47
48
  {entries.map((entry) => (
48
49
  <li key={entry.name} className="stg:text-xs">
49
50
  <div className="stg:flex stg:items-center stg:gap-1.5 stg:font-medium">