@stigmer/react 3.12.3 → 3.12.4

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 (314) 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/channel/ChannelConversationsDialog.d.ts.map +1 -1
  11. package/channel/ChannelConversationsDialog.js +2 -1
  12. package/channel/ChannelConversationsDialog.js.map +1 -1
  13. package/channel/ChannelTemplatesDialog.d.ts.map +1 -1
  14. package/channel/ChannelTemplatesDialog.js +2 -1
  15. package/channel/ChannelTemplatesDialog.js.map +1 -1
  16. package/channel/ConnectSlackDialog.d.ts.map +1 -1
  17. package/channel/ConnectSlackDialog.js +2 -1
  18. package/channel/ConnectSlackDialog.js.map +1 -1
  19. package/channel/connect/ServingAppSection.d.ts.map +1 -1
  20. package/channel/connect/ServingAppSection.js +2 -1
  21. package/channel/connect/ServingAppSection.js.map +1 -1
  22. package/channel-app/CreateChannelAppForm.d.ts.map +1 -1
  23. package/channel-app/CreateChannelAppForm.js +2 -1
  24. package/channel-app/CreateChannelAppForm.js.map +1 -1
  25. package/conversation/ConversationListPane.d.ts.map +1 -1
  26. package/conversation/ConversationListPane.js +2 -1
  27. package/conversation/ConversationListPane.js.map +1 -1
  28. package/conversation/ConversationTimelineView.d.ts.map +1 -1
  29. package/conversation/ConversationTimelineView.js +2 -1
  30. package/conversation/ConversationTimelineView.js.map +1 -1
  31. package/cursor-accounts/CursorAccountsConsole.d.ts.map +1 -1
  32. package/cursor-accounts/CursorAccountsConsole.js +2 -1
  33. package/cursor-accounts/CursorAccountsConsole.js.map +1 -1
  34. package/cursor-accounts/MemberKeysPanel.d.ts.map +1 -1
  35. package/cursor-accounts/MemberKeysPanel.js +2 -1
  36. package/cursor-accounts/MemberKeysPanel.js.map +1 -1
  37. package/dashboard/DashboardFailedRuns.d.ts.map +1 -1
  38. package/dashboard/DashboardFailedRuns.js +2 -1
  39. package/dashboard/DashboardFailedRuns.js.map +1 -1
  40. package/dependency-graph/DependencyGraph.d.ts.map +1 -1
  41. package/dependency-graph/DependencyGraph.js +2 -1
  42. package/dependency-graph/DependencyGraph.js.map +1 -1
  43. package/dependency-graph/DependencyTreeNode.d.ts.map +1 -1
  44. package/dependency-graph/DependencyTreeNode.js +2 -1
  45. package/dependency-graph/DependencyTreeNode.js.map +1 -1
  46. package/environment/EnvironmentPicker.d.ts.map +1 -1
  47. package/environment/EnvironmentPicker.js +2 -1
  48. package/environment/EnvironmentPicker.js.map +1 -1
  49. package/error/SecretFlowErrorGuide.d.ts.map +1 -1
  50. package/error/SecretFlowErrorGuide.js +2 -1
  51. package/error/SecretFlowErrorGuide.js.map +1 -1
  52. package/execution/ArtifactContentBody.d.ts.map +1 -1
  53. package/execution/ArtifactContentBody.js +2 -1
  54. package/execution/ArtifactContentBody.js.map +1 -1
  55. package/execution/ArtifactsWidget.d.ts.map +1 -1
  56. package/execution/ArtifactsWidget.js +2 -1
  57. package/execution/ArtifactsWidget.js.map +1 -1
  58. package/execution/FileChangeProgressBar.d.ts.map +1 -1
  59. package/execution/FileChangeProgressBar.js +2 -1
  60. package/execution/FileChangeProgressBar.js.map +1 -1
  61. package/execution/TodoList.d.ts.map +1 -1
  62. package/execution/TodoList.js +2 -1
  63. package/execution/TodoList.js.map +1 -1
  64. package/execution/WriteBacksWidget.d.ts.map +1 -1
  65. package/execution/WriteBacksWidget.js +2 -1
  66. package/execution/WriteBacksWidget.js.map +1 -1
  67. package/execution/tool-categories.d.ts +5 -22
  68. package/execution/tool-categories.d.ts.map +1 -1
  69. package/execution/tool-categories.js +8 -38
  70. package/execution/tool-categories.js.map +1 -1
  71. package/iam-policy/PeopleWithAccess.d.ts.map +1 -1
  72. package/iam-policy/PeopleWithAccess.js +2 -1
  73. package/iam-policy/PeopleWithAccess.js.map +1 -1
  74. package/iam-policy/PrincipalPicker.d.ts.map +1 -1
  75. package/iam-policy/PrincipalPicker.js +2 -1
  76. package/iam-policy/PrincipalPicker.js.map +1 -1
  77. package/iam-policy/RoleSelector.d.ts.map +1 -1
  78. package/iam-policy/RoleSelector.js +2 -1
  79. package/iam-policy/RoleSelector.js.map +1 -1
  80. package/identity-provider/CreateIdentityProviderForm.d.ts.map +1 -1
  81. package/identity-provider/CreateIdentityProviderForm.js +2 -1
  82. package/identity-provider/CreateIdentityProviderForm.js.map +1 -1
  83. package/identity-provider/IdentityProviderDetailPanel.d.ts.map +1 -1
  84. package/identity-provider/IdentityProviderDetailPanel.js +2 -1
  85. package/identity-provider/IdentityProviderDetailPanel.js.map +1 -1
  86. package/identity-provider/IdentityProviderWizard.d.ts.map +1 -1
  87. package/identity-provider/IdentityProviderWizard.js +2 -1
  88. package/identity-provider/IdentityProviderWizard.js.map +1 -1
  89. package/index.d.ts +3 -1
  90. package/index.d.ts.map +1 -1
  91. package/index.js +3 -0
  92. package/index.js.map +1 -1
  93. package/internal/element-resets.d.ts +17 -0
  94. package/internal/element-resets.d.ts.map +1 -0
  95. package/internal/element-resets.js +32 -0
  96. package/internal/element-resets.js.map +1 -0
  97. package/internal/file-tree/FileTreeNode.d.ts.map +1 -1
  98. package/internal/file-tree/FileTreeNode.js +2 -1
  99. package/internal/file-tree/FileTreeNode.js.map +1 -1
  100. package/internal/markdown-components.d.ts +7 -0
  101. package/internal/markdown-components.d.ts.map +1 -1
  102. package/internal/markdown-components.js +15 -5
  103. package/internal/markdown-components.js.map +1 -1
  104. package/invitation/InvitationManager.d.ts.map +1 -1
  105. package/invitation/InvitationManager.js +2 -1
  106. package/invitation/InvitationManager.js.map +1 -1
  107. package/manifest/ApplyManifestDialog.d.ts.map +1 -1
  108. package/manifest/ApplyManifestDialog.js +2 -1
  109. package/manifest/ApplyManifestDialog.js.map +1 -1
  110. package/mcp-server/steps/IdentityTransportStep.d.ts.map +1 -1
  111. package/mcp-server/steps/IdentityTransportStep.js +2 -1
  112. package/mcp-server/steps/IdentityTransportStep.js.map +1 -1
  113. package/package.json +4 -4
  114. package/platform-client/CreatePlatformClientForm.d.ts.map +1 -1
  115. package/platform-client/CreatePlatformClientForm.js +2 -1
  116. package/platform-client/CreatePlatformClientForm.js.map +1 -1
  117. package/platform-client/PlatformClientDetailPanel.d.ts.map +1 -1
  118. package/platform-client/PlatformClientDetailPanel.js +2 -1
  119. package/platform-client/PlatformClientDetailPanel.js.map +1 -1
  120. package/pricing-governance/BaselineEditor.d.ts.map +1 -1
  121. package/pricing-governance/BaselineEditor.js +2 -1
  122. package/pricing-governance/BaselineEditor.js.map +1 -1
  123. package/pricing-governance/PricingGovernanceConsole.d.ts.map +1 -1
  124. package/pricing-governance/PricingGovernanceConsole.js +2 -1
  125. package/pricing-governance/PricingGovernanceConsole.js.map +1 -1
  126. package/provider-standing/ProviderStandingAccessNotice.d.ts +11 -0
  127. package/provider-standing/ProviderStandingAccessNotice.d.ts.map +1 -0
  128. package/provider-standing/ProviderStandingAccessNotice.js +14 -0
  129. package/provider-standing/ProviderStandingAccessNotice.js.map +1 -0
  130. package/provider-standing/ProviderStandingConsole.d.ts +24 -0
  131. package/provider-standing/ProviderStandingConsole.d.ts.map +1 -0
  132. package/provider-standing/ProviderStandingConsole.js +98 -0
  133. package/provider-standing/ProviderStandingConsole.js.map +1 -0
  134. package/provider-standing/index.d.ts +6 -0
  135. package/provider-standing/index.d.ts.map +1 -0
  136. package/provider-standing/index.js +6 -0
  137. package/provider-standing/index.js.map +1 -0
  138. package/provider-standing/useProviderStanding.d.ts +34 -0
  139. package/provider-standing/useProviderStanding.d.ts.map +1 -0
  140. package/provider-standing/useProviderStanding.js +26 -0
  141. package/provider-standing/useProviderStanding.js.map +1 -0
  142. package/provider.d.ts +12 -0
  143. package/provider.d.ts.map +1 -1
  144. package/provider.js +12 -0
  145. package/provider.js.map +1 -1
  146. package/resource-creation/StepIndicator.d.ts.map +1 -1
  147. package/resource-creation/StepIndicator.js +2 -1
  148. package/resource-creation/StepIndicator.js.map +1 -1
  149. package/schedule/ScheduleDetailView.d.ts.map +1 -1
  150. package/schedule/ScheduleDetailView.js +3 -2
  151. package/schedule/ScheduleDetailView.js.map +1 -1
  152. package/schedule/ScheduleRunsTable.d.ts.map +1 -1
  153. package/schedule/ScheduleRunsTable.js +2 -1
  154. package/schedule/ScheduleRunsTable.js.map +1 -1
  155. package/session/facets/ArtifactsTab.d.ts.map +1 -1
  156. package/session/facets/ArtifactsTab.js +2 -1
  157. package/session/facets/ArtifactsTab.js.map +1 -1
  158. package/session/facets/ChangesTab.d.ts.map +1 -1
  159. package/session/facets/ChangesTab.js +2 -1
  160. package/session/facets/ChangesTab.js.map +1 -1
  161. package/session/facets/UsageTab.d.ts +10 -3
  162. package/session/facets/UsageTab.d.ts.map +1 -1
  163. package/session/facets/UsageTab.js +42 -6
  164. package/session/facets/UsageTab.js.map +1 -1
  165. package/session/index.d.ts +1 -1
  166. package/session/index.d.ts.map +1 -1
  167. package/session/index.js.map +1 -1
  168. package/session/useSessionUsage.d.ts +25 -0
  169. package/session/useSessionUsage.d.ts.map +1 -1
  170. package/session/useSessionUsage.js +11 -0
  171. package/session/useSessionUsage.js.map +1 -1
  172. package/settings/settings-nav.d.ts.map +1 -1
  173. package/settings/settings-nav.js +7 -1
  174. package/settings/settings-nav.js.map +1 -1
  175. package/settings/useSettingsNavGroups.d.ts.map +1 -1
  176. package/settings/useSettingsNavGroups.js +4 -1
  177. package/settings/useSettingsNavGroups.js.map +1 -1
  178. package/sharing/ShareAgentDialog.d.ts.map +1 -1
  179. package/sharing/ShareAgentDialog.js +2 -1
  180. package/sharing/ShareAgentDialog.js.map +1 -1
  181. package/sidebar/WorkspaceSidebar.d.ts.map +1 -1
  182. package/sidebar/WorkspaceSidebar.js +2 -1
  183. package/sidebar/WorkspaceSidebar.js.map +1 -1
  184. package/skill/SkillFileBrowser.d.ts.map +1 -1
  185. package/skill/SkillFileBrowser.js +2 -1
  186. package/skill/SkillFileBrowser.js.map +1 -1
  187. package/skill/internal/fetchAndUnpackArtifact.d.ts +1 -1
  188. package/skill/internal/fetchAndUnpackArtifact.d.ts.map +1 -1
  189. package/skill/internal/fetchAndUnpackArtifact.js +47 -3
  190. package/skill/internal/fetchAndUnpackArtifact.js.map +1 -1
  191. package/skill/useSkillDiff.d.ts.map +1 -1
  192. package/skill/useSkillDiff.js +7 -1
  193. package/skill/useSkillDiff.js.map +1 -1
  194. package/skill/useSkillUpload.d.ts.map +1 -1
  195. package/skill/useSkillUpload.js +22 -4
  196. package/skill/useSkillUpload.js.map +1 -1
  197. package/src/__tests__/bare-host-resets.layout.test.tsx +184 -0
  198. package/src/agent/steps/IdentityStep.tsx +2 -1
  199. package/src/agent-instance/AgentInstanceDetailPanel.tsx +2 -1
  200. package/src/api-key/CreateApiKeyForm.tsx +2 -1
  201. package/src/channel/ChannelConversationsDialog.tsx +2 -1
  202. package/src/channel/ChannelTemplatesDialog.tsx +2 -1
  203. package/src/channel/ConnectSlackDialog.tsx +2 -1
  204. package/src/channel/connect/ServingAppSection.tsx +2 -1
  205. package/src/channel-app/CreateChannelAppForm.tsx +2 -1
  206. package/src/conversation/ConversationListPane.tsx +2 -5
  207. package/src/conversation/ConversationTimelineView.tsx +2 -1
  208. package/src/cursor-accounts/CursorAccountsConsole.tsx +2 -1
  209. package/src/cursor-accounts/MemberKeysPanel.tsx +2 -1
  210. package/src/dashboard/DashboardFailedRuns.tsx +2 -1
  211. package/src/dependency-graph/DependencyGraph.tsx +2 -1
  212. package/src/dependency-graph/DependencyTreeNode.tsx +2 -1
  213. package/src/environment/EnvironmentPicker.tsx +2 -1
  214. package/src/error/SecretFlowErrorGuide.tsx +3 -2
  215. package/src/execution/ArtifactContentBody.tsx +2 -1
  216. package/src/execution/ArtifactsWidget.tsx +2 -1
  217. package/src/execution/FileChangeProgressBar.tsx +2 -1
  218. package/src/execution/TodoList.tsx +2 -1
  219. package/src/execution/WriteBacksWidget.tsx +2 -1
  220. package/src/execution/tool-categories.ts +17 -41
  221. package/src/iam-policy/PeopleWithAccess.tsx +2 -1
  222. package/src/iam-policy/PrincipalPicker.tsx +2 -0
  223. package/src/iam-policy/RoleSelector.tsx +2 -1
  224. package/src/identity-provider/CreateIdentityProviderForm.tsx +2 -1
  225. package/src/identity-provider/IdentityProviderDetailPanel.tsx +2 -1
  226. package/src/identity-provider/IdentityProviderWizard.tsx +2 -1
  227. package/src/index.ts +13 -0
  228. package/src/internal/element-resets.ts +33 -0
  229. package/src/internal/file-tree/FileTreeNode.tsx +2 -1
  230. package/src/internal/markdown-components.tsx +15 -5
  231. package/src/invitation/InvitationManager.tsx +3 -2
  232. package/src/manifest/ApplyManifestDialog.tsx +2 -1
  233. package/src/mcp-server/steps/IdentityTransportStep.tsx +3 -2
  234. package/src/platform-client/CreatePlatformClientForm.tsx +4 -3
  235. package/src/platform-client/PlatformClientDetailPanel.tsx +4 -3
  236. package/src/pricing-governance/BaselineEditor.tsx +3 -2
  237. package/src/pricing-governance/PricingGovernanceConsole.tsx +2 -1
  238. package/src/provider-standing/ProviderStandingAccessNotice.tsx +36 -0
  239. package/src/provider-standing/ProviderStandingConsole.tsx +216 -0
  240. package/src/provider-standing/__tests__/ProviderStandingConsole.test.tsx +143 -0
  241. package/src/provider-standing/index.ts +8 -0
  242. package/src/provider-standing/useProviderStanding.ts +50 -0
  243. package/src/provider.tsx +12 -0
  244. package/src/resource-creation/StepIndicator.tsx +2 -1
  245. package/src/schedule/ScheduleDetailView.tsx +3 -2
  246. package/src/schedule/ScheduleRunsTable.tsx +2 -1
  247. package/src/session/__tests__/UsageTab.test.tsx +136 -0
  248. package/src/session/__tests__/useSessionUsage.test.ts +19 -0
  249. package/src/session/facets/ArtifactsTab.tsx +2 -1
  250. package/src/session/facets/ChangesTab.tsx +2 -1
  251. package/src/session/facets/UsageTab.tsx +98 -6
  252. package/src/session/index.ts +1 -0
  253. package/src/session/useSessionUsage.ts +37 -0
  254. package/src/settings/__tests__/useSettingsNavGroups.test.tsx +11 -1
  255. package/src/settings/settings-nav.ts +7 -0
  256. package/src/settings/useSettingsNavGroups.ts +8 -1
  257. package/src/sharing/ShareAgentDialog.tsx +2 -1
  258. package/src/sidebar/WorkspaceSidebar.tsx +2 -1
  259. package/src/skill/SkillFileBrowser.tsx +2 -1
  260. package/src/skill/__tests__/SkillFileBrowser.test.tsx +10 -2
  261. package/src/skill/__tests__/fetchAndUnpackArtifact.test.ts +90 -0
  262. package/src/skill/__tests__/useSkillUpload.test.ts +69 -0
  263. package/src/skill/internal/fetchAndUnpackArtifact.ts +54 -4
  264. package/src/skill/useSkillDiff.ts +7 -1
  265. package/src/skill/useSkillUpload.ts +25 -6
  266. package/src/workflow/FailedRunsWidget.tsx +2 -1
  267. package/src/workflow/PendingApprovalsWidget.tsx +2 -1
  268. package/src/workflow/facets/WorkflowArtifactsTab.tsx +2 -1
  269. package/src/workflow/facets/WorkflowUsageTab.tsx +2 -1
  270. package/src/workflow/inspector/WorkflowSummaryPanel.tsx +2 -1
  271. package/src/workflow/inspector/tabs/BranchesTab.tsx +2 -1
  272. package/src/workflow/inspector/tabs/IterationTab.tsx +2 -1
  273. package/src/workflow/instance/WorkflowInstanceDetailPanel.tsx +2 -1
  274. package/src/workspace/ExplorerTree.tsx +2 -1
  275. package/src/workspace/WorkspaceContentSearch.tsx +2 -1
  276. package/src/workspace/WorkspaceFileSearch.tsx +2 -1
  277. package/src/workspace/WorkspaceSummary.tsx +2 -1
  278. package/styles.css +1 -1
  279. package/workflow/FailedRunsWidget.d.ts.map +1 -1
  280. package/workflow/FailedRunsWidget.js +2 -1
  281. package/workflow/FailedRunsWidget.js.map +1 -1
  282. package/workflow/PendingApprovalsWidget.d.ts.map +1 -1
  283. package/workflow/PendingApprovalsWidget.js +2 -1
  284. package/workflow/PendingApprovalsWidget.js.map +1 -1
  285. package/workflow/facets/WorkflowArtifactsTab.d.ts.map +1 -1
  286. package/workflow/facets/WorkflowArtifactsTab.js +2 -1
  287. package/workflow/facets/WorkflowArtifactsTab.js.map +1 -1
  288. package/workflow/facets/WorkflowUsageTab.d.ts.map +1 -1
  289. package/workflow/facets/WorkflowUsageTab.js +2 -1
  290. package/workflow/facets/WorkflowUsageTab.js.map +1 -1
  291. package/workflow/inspector/WorkflowSummaryPanel.d.ts.map +1 -1
  292. package/workflow/inspector/WorkflowSummaryPanel.js +2 -1
  293. package/workflow/inspector/WorkflowSummaryPanel.js.map +1 -1
  294. package/workflow/inspector/tabs/BranchesTab.d.ts.map +1 -1
  295. package/workflow/inspector/tabs/BranchesTab.js +2 -1
  296. package/workflow/inspector/tabs/BranchesTab.js.map +1 -1
  297. package/workflow/inspector/tabs/IterationTab.d.ts.map +1 -1
  298. package/workflow/inspector/tabs/IterationTab.js +2 -1
  299. package/workflow/inspector/tabs/IterationTab.js.map +1 -1
  300. package/workflow/instance/WorkflowInstanceDetailPanel.d.ts.map +1 -1
  301. package/workflow/instance/WorkflowInstanceDetailPanel.js +2 -1
  302. package/workflow/instance/WorkflowInstanceDetailPanel.js.map +1 -1
  303. package/workspace/ExplorerTree.d.ts.map +1 -1
  304. package/workspace/ExplorerTree.js +2 -1
  305. package/workspace/ExplorerTree.js.map +1 -1
  306. package/workspace/WorkspaceContentSearch.d.ts.map +1 -1
  307. package/workspace/WorkspaceContentSearch.js +2 -1
  308. package/workspace/WorkspaceContentSearch.js.map +1 -1
  309. package/workspace/WorkspaceFileSearch.d.ts.map +1 -1
  310. package/workspace/WorkspaceFileSearch.js +2 -1
  311. package/workspace/WorkspaceFileSearch.js.map +1 -1
  312. package/workspace/WorkspaceSummary.d.ts.map +1 -1
  313. package/workspace/WorkspaceSummary.js +2 -1
  314. package/workspace/WorkspaceSummary.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useSkillDiff.js","sourceRoot":"","sources":["../../src/skill/useSkillDiff.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useSkillDiff.js","sourceRoot":"","sources":["../../src/skill/useSkillDiff.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useSkillUpload.d.ts","sourceRoot":"","sources":["../../src/skill/useSkillUpload.ts"],"names":[],"mappings":"AASA,sDAAsD;AACtD,MAAM,WAAW,cAAc;IAC7B,6EAA6E;IAC7E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,uCAAuC;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,iDAAiD;IACjD,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B;AAED,iEAAiE;AACjE,MAAM,WAAW,kBAAkB;IACjC,2DAA2D;IAC3D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,8CAA8C;IAC9C,QAAQ,CAAC,KAAK,EAAE,cAAc,EAAE,CAAC;IACjC,iDAAiD;IACjD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,qDAAqD;IACrD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,8CAA8C;AAC9C,MAAM,WAAW,oBAAoB;IACnC,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAC5C,qEAAqE;IACrE,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,yDAAyD;IACzD,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,iEAAiE;IACjE,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,yDAAyD;IACzD,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;IAC3B,4EAA4E;IAC5E,QAAQ,CAAC,QAAQ,EAAE,UAAU,GAAG,IAAI,CAAC;CACtC;AAeD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,cAAc,IAAI,oBAAoB,CAqGrD"}
1
+ {"version":3,"file":"useSkillUpload.d.ts","sourceRoot":"","sources":["../../src/skill/useSkillUpload.ts"],"names":[],"mappings":"AASA,sDAAsD;AACtD,MAAM,WAAW,cAAc;IAC7B,6EAA6E;IAC7E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,uCAAuC;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,iDAAiD;IACjD,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B;AAED,iEAAiE;AACjE,MAAM,WAAW,kBAAkB;IACjC,2DAA2D;IAC3D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,8CAA8C;IAC9C,QAAQ,CAAC,KAAK,EAAE,cAAc,EAAE,CAAC;IACjC,iDAAiD;IACjD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,qDAAqD;IACrD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,8CAA8C;AAC9C,MAAM,WAAW,oBAAoB;IACnC,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAC5C,qEAAqE;IACrE,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,yDAAyD;IACzD,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,iEAAiE;IACjE,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,yDAAyD;IACzD,QAAQ,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC;IAC3B,4EAA4E;IAC5E,QAAQ,CAAC,QAAQ,EAAE,UAAU,GAAG,IAAI,CAAC;CACtC;AAeD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,cAAc,IAAI,oBAAoB,CA2GrD"}
@@ -73,9 +73,13 @@ export function useSkillUpload() {
73
73
  if (abortRef.current !== callId)
74
74
  return;
75
75
  const entries = Object.entries(unzipped);
76
- const skillMdEntry = findSkillMd(entries);
76
+ const skillMdEntry = findRootSkillMd(entries);
77
77
  if (!skillMdEntry) {
78
- setValidationError("ZIP must contain a SKILL.md file at the root level");
78
+ const nestedPath = findNestedSkillMd(entries);
79
+ setValidationError(nestedPath
80
+ ? `Found ${nestedPath} — SKILL.md must be at the archive root. ` +
81
+ "Zip the skill folder's contents, not the folder itself."
82
+ : "ZIP must contain a SKILL.md file at the root level");
79
83
  return;
80
84
  }
81
85
  const skillMdContent = strFromU8(skillMdEntry[1]);
@@ -136,8 +140,22 @@ function isZip(bytes) {
136
140
  bytes[2] === ZIP_MAGIC_BYTES[2] &&
137
141
  bytes[3] === ZIP_MAGIC_BYTES[3]);
138
142
  }
139
- function findSkillMd(entries) {
140
- return entries.find(([path]) => path === "SKILL.md" || path.match(/^[^/]+\/SKILL\.md$/));
143
+ /**
144
+ * The layout contract is root-only on both editions (DD-018, #452): the
145
+ * server rejects an archive whose only SKILL.md is nested, so the preview
146
+ * must too — accepting it here converts a clear pre-upload error into a
147
+ * confusing post-upload rejection (issue #684).
148
+ */
149
+ function findRootSkillMd(entries) {
150
+ return entries.find(([path]) => path === "SKILL.md");
151
+ }
152
+ /**
153
+ * Detect the "zipped the folder instead of its contents" mistake so the
154
+ * error can say what to do. Any-depth suffix match, mirroring the server's
155
+ * nested-occurrence detection (skill/storage/zip_extractor.go).
156
+ */
157
+ function findNestedSkillMd(entries) {
158
+ return entries.find(([path]) => path.endsWith("/SKILL.md"))?.[0];
141
159
  }
142
160
  function parseFrontmatter(content) {
143
161
  const match = content.match(FRONTMATTER_RE);
@@ -1 +1 @@
1
- {"version":3,"file":"useSkillUpload.js","sourceRoot":"","sources":["../../src/skill/useSkillUpload.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useSkillUpload.js","sourceRoot":"","sources":["../../src/skill/useSkillUpload.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,184 @@
1
+ // Bare-host regression suite for the per-element UA resets (#695).
2
+ //
3
+ // Runs in a real Chromium via `vitest.a11y.config.ts` — the defect under
4
+ // guard is the user agent's OWN default list/fieldset/flow-content styling
5
+ // (bullets, 40px indents, stacked margins), which only a real browser
6
+ // applies. happy-dom has no UA stylesheet, so it would pass vacuously.
7
+ //
8
+ // The contract: every SDK component is authored against a zeroed-margin
9
+ // baseline (our consoles ship a global reset). In a host WITHOUT one —
10
+ // third-party embeds, the SDK's stated audience — UI lists and fieldsets
11
+ // carry the `UNSTYLED_LIST`/`UNSTYLED_FIELDSET` per-component resets
12
+ // (`internal/element-resets.ts` records why this class of reset cannot live
13
+ // in styles.css), and the markdown map declares its own top/inline margins.
14
+ // Like the sibling #374 suite (preflight-parity.layout.test.tsx), this
15
+ // renders against the SHIPPED stylesheet (`dist/styles.css`, rebuilt by
16
+ // `npm run build:css`) and nothing else — the page IS the bare host.
17
+ //
18
+ // Three directions, all load-bearing:
19
+ // 1. A control proving the harness is genuinely bare (a raw <ul> DOES show
20
+ // UA bullets — if this fails, every other assertion here is vacuous).
21
+ // 2. The resets neutralize UA defaults on real, swept components.
22
+ // 3. Utilities and deliberate styling still win (markdown lists keep their
23
+ // explicit bullets; spacing utilities compose on top of the reset).
24
+
25
+ import "../../dist/styles.css";
26
+
27
+ import { describe, it, expect, afterEach } from "vitest";
28
+ import { render, cleanup } from "@testing-library/react";
29
+ import { create } from "@bufbuild/protobuf";
30
+ import Markdown from "react-markdown";
31
+ import type { Stigmer } from "@stigmer/sdk";
32
+ import { TodoItemSchema } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/todo_pb";
33
+ import { TodoStatus } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
34
+ import { StigmerProvider } from "../provider";
35
+ import { TodoList } from "../execution/TodoList.js";
36
+ import { UNSTYLED_FIELDSET, UNSTYLED_LIST } from "../internal/element-resets.js";
37
+ import { MARKDOWN_COMPONENTS } from "../internal/markdown-components.js";
38
+
39
+ afterEach(cleanup);
40
+
41
+ // A minimal client (the preflight-parity suite's idiom): a null credential
42
+ // keeps the provider's registry fetches non-blocking so rendering is
43
+ // synchronous and never touches the network.
44
+ function makeClient(): Stigmer {
45
+ return {
46
+ baseUrl: "https://example.test",
47
+ getAuthCredential: async () => null,
48
+ fetch: (async () => {
49
+ throw new Error("network disabled in test");
50
+ }) as unknown as typeof globalThis.fetch,
51
+ } as unknown as Stigmer;
52
+ }
53
+
54
+ function renderScoped(ui: React.ReactNode): HTMLElement {
55
+ render(
56
+ <StigmerProvider client={makeClient()}>
57
+ <div data-testid="probe">{ui}</div>
58
+ </StigmerProvider>,
59
+ );
60
+ return document.querySelector('[data-testid="probe"]') as HTMLElement;
61
+ }
62
+
63
+ function computed(el: Element): CSSStyleDeclaration {
64
+ return getComputedStyle(el);
65
+ }
66
+
67
+ const ZERO_MARGINS = ["0px", "0px", "0px", "0px"];
68
+
69
+ function margins(style: CSSStyleDeclaration): string[] {
70
+ return [style.marginTop, style.marginRight, style.marginBottom, style.marginLeft];
71
+ }
72
+
73
+ describe("bare-host per-element resets (#695)", () => {
74
+ it("CONTROL: the harness is genuinely bare — a raw <ul> wears UA bullets and indent", () => {
75
+ const probe = renderScoped(
76
+ <ul>
77
+ <li>raw</li>
78
+ </ul>,
79
+ );
80
+ const style = computed(probe.querySelector("ul")!);
81
+
82
+ expect(style.listStyleType, "no global reset may leak into this page").toBe("disc");
83
+ expect(style.paddingLeft, "UA padding-inline-start must be present").toBe("40px");
84
+ });
85
+
86
+ describe("UNSTYLED_LIST", () => {
87
+ it("neutralizes bullets, indent, and margins", () => {
88
+ const probe = renderScoped(
89
+ <ul className={UNSTYLED_LIST}>
90
+ <li>item</li>
91
+ </ul>,
92
+ );
93
+ const style = computed(probe.querySelector("ul")!);
94
+
95
+ expect(style.listStyleType).toBe("none");
96
+ expect(style.paddingLeft).toBe("0px");
97
+ expect(margins(style)).toEqual(ZERO_MARGINS);
98
+ });
99
+
100
+ it("spacing utilities still win over the reset (tailwind-merge + layer order)", () => {
101
+ const probe = renderScoped(
102
+ <ul className={`${UNSTYLED_LIST} stg:p-2`}>
103
+ <li>item</li>
104
+ </ul>,
105
+ );
106
+
107
+ expect(computed(probe.querySelector("ul")!).paddingLeft).toBe("8px");
108
+ });
109
+
110
+ it("a real swept organism (TodoList) renders without UA list styling", () => {
111
+ const probe = renderScoped(
112
+ <TodoList
113
+ todos={{
114
+ t1: create(TodoItemSchema, {
115
+ id: "t1",
116
+ content: "Scaffold the component",
117
+ status: TodoStatus.TODO_IN_PROGRESS,
118
+ }),
119
+ }}
120
+ />,
121
+ );
122
+ const style = computed(probe.querySelector('ul[aria-label="Tasks"]')!);
123
+
124
+ expect(style.listStyleType).toBe("none");
125
+ expect(style.paddingLeft).toBe("0px");
126
+ expect(margins(style)).toEqual(ZERO_MARGINS);
127
+ });
128
+ });
129
+
130
+ describe("UNSTYLED_FIELDSET", () => {
131
+ it("neutralizes UA fieldset margins, padding, and min-inline-size", () => {
132
+ const probe = renderScoped(
133
+ <>
134
+ <fieldset data-testid="raw">
135
+ <legend>raw</legend>
136
+ </fieldset>
137
+ <fieldset data-testid="reset" className={UNSTYLED_FIELDSET}>
138
+ <legend>reset</legend>
139
+ </fieldset>
140
+ </>,
141
+ );
142
+
143
+ // Control half: UA fieldset padding really is present in this page.
144
+ expect(computed(probe.querySelector('[data-testid="raw"]')!).paddingLeft).not.toBe("0px");
145
+
146
+ const style = computed(probe.querySelector('[data-testid="reset"]')!);
147
+ expect(margins(style)).toEqual(ZERO_MARGINS);
148
+ expect(style.paddingLeft).toBe("0px");
149
+ expect(style.minWidth, "min-inline-size: min-content breaks flex shrinking").toBe("0px");
150
+ });
151
+ });
152
+
153
+ describe("markdown map (content elements declare their own margins)", () => {
154
+ function renderMarkdown(md: string): HTMLElement {
155
+ return renderScoped(<Markdown components={MARKDOWN_COMPONENTS}>{md}</Markdown>);
156
+ }
157
+
158
+ it("paragraphs carry no UA top margin, so mb-* spacing is the whole rhythm", () => {
159
+ const probe = renderMarkdown("first\n\nsecond");
160
+ const [, second] = Array.from(probe.querySelectorAll("p"));
161
+
162
+ expect(computed(second).marginTop).toBe("0px");
163
+ });
164
+
165
+ it("blockquotes lose the UA 1em/40px box but keep the authored border+padding treatment", () => {
166
+ const probe = renderMarkdown("> quoted");
167
+ const style = computed(probe.querySelector("blockquote")!);
168
+
169
+ expect(style.marginTop).toBe("0px");
170
+ expect(style.marginLeft, "UA margin-inline: 40px must be cleared").toBe("0px");
171
+ expect(style.marginRight).toBe("0px");
172
+ expect(style.paddingLeft, "the authored pl-4 treatment stays").toBe("16px");
173
+ });
174
+
175
+ it("content lists KEEP their bullets — the reset is for UI lists only", () => {
176
+ const probe = renderMarkdown("- one\n- two");
177
+ const style = computed(probe.querySelector("ul")!);
178
+
179
+ expect(style.listStyleType).toBe("disc");
180
+ expect(style.marginTop, "stacked UA margin-top must be cleared").toBe("0px");
181
+ expect(style.paddingLeft, "authored pl-5 replaces the UA 40px").toBe("20px");
182
+ });
183
+ });
184
+ });
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { useCallback, useId } from "react";
4
4
  import { cn } from "@stigmer/theme";
5
+ import { UNSTYLED_FIELDSET } from "../../internal/element-resets.js";
5
6
  import { generateSlug } from "../../internal/slug.js";
6
7
  import type { AgentWizardData } from "./types.js";
7
8
 
@@ -173,7 +174,7 @@ export function IdentityStep({
173
174
  />
174
175
  </div>
175
176
 
176
- <fieldset className="stg:space-y-1.5">
177
+ <fieldset className={cn(UNSTYLED_FIELDSET, "stg:space-y-1.5")}>
177
178
  <legend className="stg:text-sm stg:font-medium stg:text-foreground">
178
179
  Visibility
179
180
  </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 { AgentInstance } from "@stigmer/protos/ai/stigmer/agentic/agentinstance/v1/api_pb";
7
8
  import { ApiResourceVisibility } from "@stigmer/protos/ai/stigmer/commons/apiresource/enum_pb";
@@ -233,7 +234,7 @@ export function AgentInstanceDetailPanel({
233
234
  {(spec?.environmentRefs?.length ?? 0) === 0 ? (
234
235
  <p className="stg:text-xs stg:text-muted-foreground">No environments bound.</p>
235
236
  ) : (
236
- <ol className="stg:space-y-1">
237
+ <ol className={cn(UNSTYLED_LIST, "stg:space-y-1")}>
237
238
  {spec!.environmentRefs.map((ref, idx) => (
238
239
  <li key={`${ref.slug}-${idx}`} className="stg:flex stg:items-center stg:gap-2 stg:text-sm">
239
240
  <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 { useCallback, useId, useState, type FormEvent } from "react";
4
4
  import { cn } from "@stigmer/theme";
5
+ import { UNSTYLED_FIELDSET } from "../internal/element-resets.js";
5
6
  import { getUserMessage } from "@stigmer/sdk";
6
7
  import type { ApiKey } from "@stigmer/protos/ai/stigmer/iam/apikey/v1/api_pb";
7
8
  import { useCreateApiKey } from "./useCreateApiKey.js";
@@ -122,7 +123,7 @@ export function CreateApiKeyForm({
122
123
  </div>
123
124
 
124
125
  {/* Expiry */}
125
- <fieldset className="stg:space-y-1.5">
126
+ <fieldset className={cn(UNSTYLED_FIELDSET, "stg:space-y-1.5")}>
126
127
  <legend className="stg:text-xs stg:font-medium stg:text-foreground">
127
128
  Expiration
128
129
  </legend>
@@ -5,6 +5,7 @@ import { timestampDate } from "@bufbuild/protobuf/wkt";
5
5
  import { MessageSquare, User, X } from "lucide-react";
6
6
  import { cn } from "@stigmer/theme";
7
7
  import { DialogShell } from "../internal/DialogShell.js";
8
+ import { UNSTYLED_LIST } from "../internal/element-resets.js";
8
9
  import { getUserMessage } from "@stigmer/sdk";
9
10
  import type { AgentChannel } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/api_pb";
10
11
  import type { Session } from "@stigmer/protos/ai/stigmer/agentic/session/v1/api_pb";
@@ -153,7 +154,7 @@ function ChannelConversationsDialogBody({
153
154
  description="When someone messages this channel, the sessions serving them appear here."
154
155
  />
155
156
  ) : (
156
- <ul className="stg:space-y-1">
157
+ <ul className={cn(UNSTYLED_LIST, "stg:space-y-1")}>
157
158
  {sessions.map((session) => (
158
159
  <ConversationRow
159
160
  key={session.metadata?.id}
@@ -4,6 +4,7 @@ import { useCallback, useId, type ReactNode } from "react";
4
4
  import { ExternalLink, LayoutTemplate, X } from "lucide-react";
5
5
  import { cn } from "@stigmer/theme";
6
6
  import { DialogShell } from "../internal/DialogShell.js";
7
+ import { UNSTYLED_LIST } from "../internal/element-resets.js";
7
8
  import { getUserMessage } from "@stigmer/sdk";
8
9
  import type { AgentChannel } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/api_pb";
9
10
  import type { ChannelTemplate } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/message_io_pb";
@@ -297,7 +298,7 @@ function ChannelTemplatesList({
297
298
  </p>
298
299
  <WhatsAppManagerLink label="Manage in WhatsApp Manager" />
299
300
  </div>
300
- <ul className="stg:space-y-2">
301
+ <ul className={cn(UNSTYLED_LIST, "stg:space-y-2")}>
301
302
  {templates.map((template) => (
302
303
  <TemplateRow
303
304
  key={`${template.name}\u0000${template.language}`}
@@ -3,6 +3,7 @@
3
3
  import { useCallback, useId, useMemo, useState } from "react";
4
4
  import { cn } from "@stigmer/theme";
5
5
  import { DialogShell } from "../internal/DialogShell.js";
6
+ import { UNSTYLED_LIST } from "../internal/element-resets.js";
6
7
  import { getErrorReason, type ResourceRef } from "@stigmer/sdk";
7
8
  import type { Agent } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/api_pb";
8
9
  import type { AgentChannel } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/api_pb";
@@ -527,7 +528,7 @@ function FlowProgress({
527
528
 
528
529
  return (
529
530
  <div className="stg:space-y-3" aria-live="polite">
530
- <ul className="stg:space-y-2">
531
+ <ul className={cn(UNSTYLED_LIST, "stg:space-y-2")}>
531
532
  {FLOW_STEPS.map((step, i) => {
532
533
  const isActive = i === activeIndex;
533
534
  const isDone = activeIndex > i;
@@ -2,6 +2,7 @@
2
2
 
3
3
  import type { ReactNode } from "react";
4
4
  import { cn } from "@stigmer/theme";
5
+ import { UNSTYLED_FIELDSET } from "../../internal/element-resets.js";
5
6
  import type { ResourceRef } from "@stigmer/sdk";
6
7
  import type { ChannelApp } from "@stigmer/protos/ai/stigmer/agentic/channelapp/v1/api_pb";
7
8
 
@@ -67,7 +68,7 @@ export function ServingAppSection({
67
68
  }
68
69
 
69
70
  return (
70
- <fieldset>
71
+ <fieldset className={UNSTYLED_FIELDSET}>
71
72
  <legend className="stg:mb-1.5 stg:block stg:text-xs stg:font-medium stg:text-foreground">
72
73
  Connect as
73
74
  </legend>
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { type FormEvent, useCallback, useId, useMemo, useState } from "react";
4
4
  import { cn } from "@stigmer/theme";
5
+ import { UNSTYLED_FIELDSET } from "../internal/element-resets.js";
5
6
  import { getUserMessage } from "@stigmer/sdk";
6
7
  import type { ChannelApp } from "@stigmer/protos/ai/stigmer/agentic/channelapp/v1/api_pb";
7
8
  import {
@@ -286,7 +287,7 @@ function ProviderPicker({
286
287
  }) {
287
288
  const groupName = useId();
288
289
  return (
289
- <fieldset>
290
+ <fieldset className={UNSTYLED_FIELDSET}>
290
291
  <legend className="stg:mb-1.5 stg:block stg:text-xs stg:font-medium stg:text-foreground">
291
292
  Provider
292
293
  </legend>
@@ -4,6 +4,7 @@ import { memo, useCallback, useId, useRef } from "react";
4
4
  import { timestampDate } from "@bufbuild/protobuf/wkt";
5
5
  import { MessageSquare, TriangleAlert, User } from "lucide-react";
6
6
  import { cn } from "@stigmer/theme";
7
+ import { UNSTYLED_LIST } from "../internal/element-resets.js";
7
8
  import { getUserMessage } from "@stigmer/sdk";
8
9
  import type { AgentChannel } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/api_pb";
9
10
  import {
@@ -193,11 +194,7 @@ export function ConversationListPane({
193
194
  {/* One context-only provider arms every row's attention
194
195
  tooltip (the WorkspaceSidebar recents-list precedent). */}
195
196
  <TooltipProvider>
196
- {/* The SDK's own list reset (the MemberKeysPanel
197
- convention): hosts without a global preflight would
198
- otherwise render inbox rows with UA bullets and
199
- indent. */}
200
- <ul className="stg:m-0 stg:list-none stg:space-y-0.5 stg:p-0">
197
+ <ul className={cn(UNSTYLED_LIST, "stg:space-y-0.5")}>
201
198
  {conversations.map((conversation) => (
202
199
  <ConversationRow
203
200
  key={`${conversation.agentChannelId}:${conversation.conversationKey}`}
@@ -4,6 +4,7 @@ import { memo, useMemo } from "react";
4
4
  import { timestampDate } from "@bufbuild/protobuf/wkt";
5
5
  import { Ban, Check, CheckCheck, Clock, Info, MessageSquare, TriangleAlert } from "lucide-react";
6
6
  import { cn } from "@stigmer/theme";
7
+ import { UNSTYLED_LIST } from "../internal/element-resets.js";
7
8
  import { getUserMessage } from "@stigmer/sdk";
8
9
  import type { ConversationTimelineItem } from "@stigmer/protos/ai/stigmer/agentic/agentchannel/v1/conversation_io_pb";
9
10
  import { channelProviderOf, type ChannelProviderId } from "../channel/providers.js";
@@ -165,7 +166,7 @@ export function ConversationTimelineView({
165
166
  >
166
167
  {day.label}
167
168
  </div>
168
- <ul className="stg:space-y-1.5">
169
+ <ul className={cn(UNSTYLED_LIST, "stg:space-y-1.5")}>
169
170
  {day.items.map((item) => (
170
171
  <TimelineItemRow
171
172
  key={item.itemId}
@@ -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 { getUserMessage, isPermissionDenied } from "@stigmer/sdk";
6
7
  import type { CursorAccount } from "@stigmer/protos/ai/stigmer/platform/cursoraccount/v1/cursor_account_pb";
7
8
  import type { CursorAccountSummary } from "@stigmer/protos/ai/stigmer/platform/cursoraccount/v1/io_pb";
@@ -145,7 +146,7 @@ export function CursorAccountsConsole({ className }: CursorAccountsConsoleProps)
145
146
  add member execution keys to make it routable.
146
147
  </p>
147
148
  ) : (
148
- <ul role="list" aria-label="Cursor accounts" className="stg:m-0 stg:list-none stg:p-0">
149
+ <ul role="list" aria-label="Cursor accounts" className={UNSTYLED_LIST}>
149
150
  {accounts.map((summary) => (
150
151
  <AccountRow
151
152
  key={summary.account?.accountId}
@@ -5,6 +5,7 @@ import { cn } from "@stigmer/theme";
5
5
  import { getUserMessage } from "@stigmer/sdk";
6
6
  import type { CursorAccountView } from "@stigmer/protos/ai/stigmer/platform/cursoraccount/v1/io_pb";
7
7
  import { Button } from "../button/index.js";
8
+ import { UNSTYLED_LIST } from "../internal/element-resets.js";
8
9
  import { INPUT_CLASSES } from "../internal/form-primitives.js";
9
10
  import { toError } from "../internal/toError.js";
10
11
  import type { CursorAccountCoverage } from "./cursor-account-coverage.js";
@@ -259,7 +260,7 @@ export function MemberKeysPanel({
259
260
  <ul
260
261
  role="list"
261
262
  aria-label="Import results"
262
- className="stg:m-0 stg:list-none stg:space-y-0.5 stg:p-0 stg:text-[11px]"
263
+ className={cn(UNSTYLED_LIST, "stg:space-y-0.5 stg:text-[11px]")}
263
264
  >
264
265
  {importResults.map((result) => (
265
266
  <li
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { memo } from "react";
4
4
  import { cn } from "@stigmer/theme";
5
+ import { UNSTYLED_LIST } from "../internal/element-resets.js";
5
6
  import type { DashboardFailedRun } from "./types.js";
6
7
  import { formatRelativeTime } from "../activity/format-relative-time.js";
7
8
 
@@ -54,7 +55,7 @@ export const DashboardFailedRuns = memo(function DashboardFailedRuns({
54
55
  No recent failures
55
56
  </p>
56
57
  ) : (
57
- <ul className="stg:space-y-1.5" role="list">
58
+ <ul className={cn(UNSTYLED_LIST, "stg:space-y-1.5")} role="list">
58
59
  {failedRuns.map((run) => (
59
60
  <li
60
61
  key={run.id}
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { useCallback, useRef, type KeyboardEvent } from "react";
4
4
  import { cn } from "@stigmer/theme";
5
+ import { UNSTYLED_LIST } from "../internal/element-resets.js";
5
6
  import type { DependencyGraphProps } from "./types.js";
6
7
  import { DependencyTreeNode } from "./DependencyTreeNode.js";
7
8
 
@@ -114,7 +115,7 @@ export function DependencyGraph({
114
115
  role="tree"
115
116
  aria-label={`Dependencies of ${root.label}`}
116
117
  onKeyDown={handleKeyDown}
117
- className="stg:rounded-lg stg:border stg:border-border stg:p-2"
118
+ className={cn(UNSTYLED_LIST, "stg:rounded-lg stg:border stg:border-border stg:p-2")}
118
119
  >
119
120
  <DependencyTreeNode
120
121
  node={root}
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { useCallback, useState, type KeyboardEvent } from "react";
4
4
  import { cn } from "@stigmer/theme";
5
+ import { UNSTYLED_LIST } from "../internal/element-resets.js";
5
6
  import type { DependencyNode, NodeKind } from "./types.js";
6
7
 
7
8
  interface DependencyTreeNodeProps {
@@ -152,7 +153,7 @@ export function DependencyTreeNode({
152
153
  {showChildren && (
153
154
  <ul
154
155
  role="group"
155
- className="stg:relative stg:ml-[11px] stg:border-l stg:border-border stg:pl-3"
156
+ className={cn(UNSTYLED_LIST, "stg:relative stg:ml-[11px] stg:border-l stg:border-border stg:pl-3")}
156
157
  >
157
158
  {node.children.map((child) => (
158
159
  <DependencyTreeNode
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { useCallback, useId, useMemo } from "react";
4
4
  import { cn } from "@stigmer/theme";
5
+ import { UNSTYLED_LIST } from "../internal/element-resets.js";
5
6
  import type { Environment } from "@stigmer/protos/ai/stigmer/agentic/environment/v1/api_pb";
6
7
  import type { ResourceRef } from "@stigmer/sdk";
7
8
  import { useEnvironmentList } from "./useEnvironmentList.js";
@@ -217,7 +218,7 @@ function SelectedList({
217
218
  total,
218
219
  }: SelectedListProps) {
219
220
  return (
220
- <ol className="stg:space-y-1.5" aria-label="Selected environments (merge order)">
221
+ <ol className={cn(UNSTYLED_LIST, "stg:space-y-1.5")} aria-label="Selected environments (merge order)">
221
222
  {value.map((ref, index) => (
222
223
  <li
223
224
  key={`${ref.org}-${ref.slug}-${index}`}
@@ -3,6 +3,7 @@
3
3
  import { useMemo } from "react";
4
4
  import { StigmerError, getUserMessage } from "@stigmer/sdk";
5
5
  import { cn } from "@stigmer/theme";
6
+ import { UNSTYLED_LIST } from "../internal/element-resets.js";
6
7
 
7
8
  /** Props for {@link SecretFlowErrorGuide}. */
8
9
  export interface SecretFlowErrorGuideProps {
@@ -113,7 +114,7 @@ export function SecretFlowErrorGuide({
113
114
  <p className="stg:text-xs stg:text-amber-700 stg:dark:text-amber-300">
114
115
  <span className="stg:font-medium">{server}</span> requires:
115
116
  </p>
116
- <ul className="stg:mt-0.5 stg:space-y-0.5">
117
+ <ul className={cn(UNSTYLED_LIST, "stg:mt-0.5 stg:space-y-0.5")}>
117
118
  {vars.map((v) => (
118
119
  <li
119
120
  key={v}
@@ -131,7 +132,7 @@ export function SecretFlowErrorGuide({
131
132
  <p className="stg:text-xs stg:text-amber-700/90 stg:dark:text-amber-300/90">
132
133
  You can provide these values in two ways:
133
134
  </p>
134
- <ul className="stg:mt-1 stg:space-y-0.5 stg:text-xs stg:text-amber-700/80 stg:dark:text-amber-300/80">
135
+ <ul className={cn(UNSTYLED_LIST, "stg:mt-1 stg:space-y-0.5 stg:text-xs stg:text-amber-700/80 stg:dark:text-amber-300/80")}>
135
136
  <li className="stg:flex stg:items-start stg:gap-1.5">
136
137
  <span className="stg:mt-px stg:shrink-0">•</span>
137
138
  <span>
@@ -2,6 +2,7 @@
2
2
 
3
3
  import type { ExecutionArtifact } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/artifact_pb";
4
4
  import { ExecutionArtifactKind } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
5
+ import { UNSTYLED_LIST } from "../internal/element-resets.js";
5
6
  import { ArtifactFileContent } from "./ArtifactFileContent.js";
6
7
  import type { SkillPackageDetection } from "../library/detect-skill-package.js";
7
8
 
@@ -103,7 +104,7 @@ function DirectoryContentView({
103
104
  <h3 className="stg:mb-2 stg:text-xs stg:font-medium stg:text-muted-foreground">
104
105
  Files ({entries.length})
105
106
  </h3>
106
- <ul className="stg:space-y-0.5" role="list">
107
+ <ul className={`${UNSTYLED_LIST} stg:space-y-0.5`} role="list">
107
108
  {entries.map((entry) => (
108
109
  <li
109
110
  key={entry}
@@ -3,6 +3,7 @@
3
3
  import { useCallback, useMemo, useState } from "react";
4
4
  import type { AgentExecution } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
5
5
  import { cn } from "@stigmer/theme";
6
+ import { UNSTYLED_LIST } from "../internal/element-resets.js";
6
7
  import {
7
8
  useSessionArtifacts,
8
9
  artifactKey,
@@ -116,7 +117,7 @@ export function ArtifactsWidget({
116
117
  </span>
117
118
  </div>
118
119
 
119
- <ul role="list" className="stg:flex stg:flex-col">
120
+ <ul role="list" className={cn(UNSTYLED_LIST, "stg:flex stg:flex-col")}>
120
121
  {artifacts.map((entry) => (
121
122
  <ArtifactRow
122
123
  key={artifactKey(entry.artifact)}