@stigmer/react 3.41.0 → 3.41.1-dev.20261003094357.g39d6aa748646

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 (510) hide show
  1. package/README.md +1 -1
  2. package/access/ManageAccessButton.d.ts +1 -1
  3. package/access/ManageAccessButton.js +1 -1
  4. package/access/ManageAccessDialog.js +1 -1
  5. package/access/ManageAccessDialog.js.map +1 -1
  6. package/agent/AgentDetailView.d.ts.map +1 -1
  7. package/agent/AgentDetailView.js +2 -1
  8. package/agent/AgentDetailView.js.map +1 -1
  9. package/api-key/ApiKeyListPanel.d.ts.map +1 -1
  10. package/api-key/ApiKeyListPanel.js +2 -1
  11. package/api-key/ApiKeyListPanel.js.map +1 -1
  12. package/attachment/AttachmentImageLightbox.d.ts.map +1 -1
  13. package/attachment/AttachmentImageLightbox.js.map +1 -1
  14. package/billing/AutoRechargeCard.d.ts +3 -3
  15. package/billing/AutoRechargeCard.d.ts.map +1 -1
  16. package/billing/AutoRechargeCard.js +4 -4
  17. package/billing/AutoRechargeCard.js.map +1 -1
  18. package/billing/BillingSection.d.ts.map +1 -1
  19. package/billing/BillingSection.js +7 -6
  20. package/billing/BillingSection.js.map +1 -1
  21. package/billing/CreditLedgerTable.d.ts +3 -3
  22. package/billing/CreditLedgerTable.d.ts.map +1 -1
  23. package/billing/CreditLedgerTable.js +3 -3
  24. package/billing/CreditLedgerTable.js.map +1 -1
  25. package/billing/CreditPackGrid.d.ts +1 -1
  26. package/billing/CreditPackGrid.js +1 -1
  27. package/billing/PaymentMethodCard.d.ts +1 -1
  28. package/billing/PaymentMethodCard.js +1 -1
  29. package/billing/PlanSection.d.ts +3 -3
  30. package/billing/PlanSection.d.ts.map +1 -1
  31. package/billing/PlanSection.js +4 -3
  32. package/billing/PlanSection.js.map +1 -1
  33. package/billing/ProviderKeysSection.js +13 -13
  34. package/billing/ProviderKeysSection.js.map +1 -1
  35. package/billing/plan-features.js +1 -1
  36. package/billing/plan-features.js.map +1 -1
  37. package/billing/useBillingAccount.d.ts +4 -4
  38. package/billing/useBillingAccount.d.ts.map +1 -1
  39. package/billing/useBillingAccount.js +7 -7
  40. package/billing/useBillingAccount.js.map +1 -1
  41. package/billing/useBillingUsageReport.d.ts +4 -4
  42. package/billing/useBillingUsageReport.d.ts.map +1 -1
  43. package/billing/useBillingUsageReport.js +7 -7
  44. package/billing/useBillingUsageReport.js.map +1 -1
  45. package/billing/useChangePlan.d.ts +2 -2
  46. package/billing/useChangePlan.d.ts.map +1 -1
  47. package/billing/useChangePlan.js +4 -4
  48. package/billing/useChangePlan.js.map +1 -1
  49. package/billing/useCreateBillingPortalSession.d.ts +2 -2
  50. package/billing/useCreateBillingPortalSession.d.ts.map +1 -1
  51. package/billing/useCreateBillingPortalSession.js +3 -3
  52. package/billing/useCreateBillingPortalSession.js.map +1 -1
  53. package/billing/useCreateCheckoutSession.d.ts +2 -2
  54. package/billing/useCreateCheckoutSession.d.ts.map +1 -1
  55. package/billing/useCreateCheckoutSession.js +2 -2
  56. package/billing/useCreateCheckoutSession.js.map +1 -1
  57. package/billing/useCreatePaymentMethodSetupSession.d.ts +1 -1
  58. package/billing/useCreatePaymentMethodSetupSession.d.ts.map +1 -1
  59. package/billing/useCreatePaymentMethodSetupSession.js +2 -2
  60. package/billing/useCreatePaymentMethodSetupSession.js.map +1 -1
  61. package/billing/useCreditLedger.d.ts +4 -4
  62. package/billing/useCreditLedger.d.ts.map +1 -1
  63. package/billing/useCreditLedger.js +7 -7
  64. package/billing/useCreditLedger.js.map +1 -1
  65. package/billing/useCustomerModelPricing.d.ts +4 -4
  66. package/billing/useCustomerModelPricing.d.ts.map +1 -1
  67. package/billing/useCustomerModelPricing.js +6 -6
  68. package/billing/useCustomerModelPricing.js.map +1 -1
  69. package/billing/useEntitlements.d.ts +2 -2
  70. package/billing/useEntitlements.d.ts.map +1 -1
  71. package/billing/useEntitlements.js +4 -4
  72. package/billing/useEntitlements.js.map +1 -1
  73. package/billing/usePeriodEstimate.d.ts +1 -1
  74. package/billing/usePeriodEstimate.d.ts.map +1 -1
  75. package/billing/usePeriodEstimate.js +3 -3
  76. package/billing/usePeriodEstimate.js.map +1 -1
  77. package/billing/useProviderKeys.d.ts +5 -5
  78. package/billing/useProviderKeys.d.ts.map +1 -1
  79. package/billing/useProviderKeys.js +7 -7
  80. package/billing/useProviderKeys.js.map +1 -1
  81. package/billing/useSetAutoRechargeConfig.d.ts +2 -2
  82. package/billing/useSetAutoRechargeConfig.d.ts.map +1 -1
  83. package/billing/useSetAutoRechargeConfig.js +2 -2
  84. package/billing/useSetAutoRechargeConfig.js.map +1 -1
  85. package/billing/useSubscription.d.ts +3 -3
  86. package/billing/useSubscription.d.ts.map +1 -1
  87. package/billing/useSubscription.js +7 -7
  88. package/billing/useSubscription.js.map +1 -1
  89. package/channel-app/ChannelAppListPanel.d.ts.map +1 -1
  90. package/channel-app/ChannelAppListPanel.js +2 -1
  91. package/channel-app/ChannelAppListPanel.js.map +1 -1
  92. package/channel-app/slackAppSetup.d.ts +0 -23
  93. package/channel-app/slackAppSetup.d.ts.map +1 -1
  94. package/channel-app/slackAppSetup.js +3 -2
  95. package/channel-app/slackAppSetup.js.map +1 -1
  96. package/channel-app/whatsappAppSetup.d.ts +0 -26
  97. package/channel-app/whatsappAppSetup.d.ts.map +1 -1
  98. package/channel-app/whatsappAppSetup.js +2 -1
  99. package/channel-app/whatsappAppSetup.js.map +1 -1
  100. package/cursor-accounts/CursorAccountEditor.js +3 -3
  101. package/cursor-accounts/CursorAccountEditor.js.map +1 -1
  102. package/cursor-accounts/CursorAccountsConsole.js +3 -3
  103. package/cursor-accounts/CursorAccountsConsole.js.map +1 -1
  104. package/dashboard/OperationalDashboard.d.ts +1 -4
  105. package/dashboard/OperationalDashboard.d.ts.map +1 -1
  106. package/dashboard/OperationalDashboard.js +1 -3
  107. package/dashboard/OperationalDashboard.js.map +1 -1
  108. package/dashboard/useDashboardSummary.d.ts +1 -3
  109. package/dashboard/useDashboardSummary.d.ts.map +1 -1
  110. package/dashboard/useDashboardSummary.js +1 -1
  111. package/dashboard/useDashboardSummary.js.map +1 -1
  112. package/environment/EnvironmentListPanel.d.ts.map +1 -1
  113. package/environment/EnvironmentListPanel.js +2 -1
  114. package/environment/EnvironmentListPanel.js.map +1 -1
  115. package/environment/EnvironmentVariableEditor.d.ts.map +1 -1
  116. package/environment/EnvironmentVariableEditor.js +2 -1
  117. package/environment/EnvironmentVariableEditor.js.map +1 -1
  118. package/execution/ArtifactFileContent.d.ts.map +1 -1
  119. package/execution/ArtifactFileContent.js +2 -1
  120. package/execution/ArtifactFileContent.js.map +1 -1
  121. package/execution/McpToolDetail.d.ts.map +1 -1
  122. package/execution/McpToolDetail.js +2 -1
  123. package/execution/McpToolDetail.js.map +1 -1
  124. package/execution/ResultView.d.ts.map +1 -1
  125. package/execution/ResultView.js +2 -1
  126. package/execution/ResultView.js.map +1 -1
  127. package/execution/TerminalSession.js +1 -1
  128. package/execution/TerminalSession.js.map +1 -1
  129. package/execution/ThreadSkeleton.d.ts.map +1 -1
  130. package/execution/ThreadSkeleton.js +2 -1
  131. package/execution/ThreadSkeleton.js.map +1 -1
  132. package/execution/file-path-resolver.d.ts.map +1 -1
  133. package/execution/file-path-resolver.js +3 -2
  134. package/execution/file-path-resolver.js.map +1 -1
  135. package/execution/sandbox-path-normalizer.d.ts +0 -11
  136. package/execution/sandbox-path-normalizer.d.ts.map +1 -1
  137. package/execution/sandbox-path-normalizer.js +2 -1
  138. package/execution/sandbox-path-normalizer.js.map +1 -1
  139. package/github/parseGitUrl.d.ts.map +1 -1
  140. package/github/parseGitUrl.js +16 -4
  141. package/github/parseGitUrl.js.map +1 -1
  142. package/iam-policy/GrantAccessForm.d.ts +3 -3
  143. package/iam-policy/GrantAccessForm.d.ts.map +1 -1
  144. package/iam-policy/GrantAccessForm.js +3 -3
  145. package/iam-policy/GrantAccessForm.js.map +1 -1
  146. package/iam-policy/OrgMembersPanel.d.ts +3 -3
  147. package/iam-policy/OrgMembersPanel.d.ts.map +1 -1
  148. package/iam-policy/OrgMembersPanel.js +4 -3
  149. package/iam-policy/OrgMembersPanel.js.map +1 -1
  150. package/iam-policy/PeopleWithAccess.d.ts +2 -2
  151. package/iam-policy/PeopleWithAccess.d.ts.map +1 -1
  152. package/iam-policy/PeopleWithAccess.js +2 -2
  153. package/iam-policy/PeopleWithAccess.js.map +1 -1
  154. package/iam-policy/PrincipalPicker.d.ts +2 -2
  155. package/iam-policy/PrincipalPicker.d.ts.map +1 -1
  156. package/iam-policy/PrincipalPicker.js +2 -2
  157. package/iam-policy/PrincipalPicker.js.map +1 -1
  158. package/iam-policy/SharePanel.d.ts +3 -3
  159. package/iam-policy/SharePanel.d.ts.map +1 -1
  160. package/iam-policy/SharePanel.js +3 -3
  161. package/iam-policy/SharePanel.js.map +1 -1
  162. package/iam-policy/useCreateIamPolicy.d.ts +1 -1
  163. package/iam-policy/useCreateIamPolicy.js +1 -1
  164. package/iam-policy/useDeleteIamPolicy.d.ts +1 -1
  165. package/iam-policy/useDeleteIamPolicy.js +1 -1
  166. package/iam-policy/useGranteeCandidates.d.ts +3 -3
  167. package/iam-policy/useGranteeCandidates.d.ts.map +1 -1
  168. package/iam-policy/useGranteeCandidates.js +2 -2
  169. package/iam-policy/useGranteeCandidates.js.map +1 -1
  170. package/iam-policy/useOwnerAssignment.d.ts +2 -2
  171. package/iam-policy/useOwnerAssignment.d.ts.map +1 -1
  172. package/iam-policy/useOwnerAssignment.js +3 -3
  173. package/iam-policy/useOwnerAssignment.js.map +1 -1
  174. package/iam-policy/usePrincipalsCount.d.ts +4 -4
  175. package/iam-policy/usePrincipalsCount.d.ts.map +1 -1
  176. package/iam-policy/usePrincipalsCount.js +7 -7
  177. package/iam-policy/usePrincipalsCount.js.map +1 -1
  178. package/iam-policy/useResourceAccess.d.ts +1 -1
  179. package/iam-policy/useResourceAccess.js +1 -1
  180. package/iam-policy/useRevokeOrgAccess.d.ts +1 -1
  181. package/iam-policy/useRevokeOrgAccess.d.ts.map +1 -1
  182. package/iam-policy/useRevokeOrgAccess.js +2 -2
  183. package/iam-policy/useRevokeOrgAccess.js.map +1 -1
  184. package/identity-account/AccountPreferencesPanel.d.ts.map +1 -1
  185. package/identity-account/AccountPreferencesPanel.js +2 -1
  186. package/identity-account/AccountPreferencesPanel.js.map +1 -1
  187. package/identity-provider/IdentityProviderDetailPanel.js +4 -4
  188. package/identity-provider/IdentityProviderDetailPanel.js.map +1 -1
  189. package/identity-provider/IdentityProviderListPanel.d.ts.map +1 -1
  190. package/identity-provider/IdentityProviderListPanel.js +2 -1
  191. package/identity-provider/IdentityProviderListPanel.js.map +1 -1
  192. package/identity-provider/IdentityProviderWizard.js +1 -1
  193. package/identity-provider/IdentityProviderWizard.js.map +1 -1
  194. package/identity-provider/SsoLoginPrompt.js +2 -1
  195. package/identity-provider/SsoLoginPrompt.js.map +1 -1
  196. package/identity-provider/useIdentityProviderList.d.ts +2 -2
  197. package/identity-provider/useIdentityProviderList.js +2 -2
  198. package/index.d.ts +1 -1
  199. package/index.d.ts.map +1 -1
  200. package/index.js +1 -1
  201. package/index.js.map +1 -1
  202. package/inline-edit/InlineEditImage.d.ts +4 -0
  203. package/inline-edit/InlineEditImage.d.ts.map +1 -1
  204. package/inline-edit/InlineEditImage.js +12 -11
  205. package/inline-edit/InlineEditImage.js.map +1 -1
  206. package/inline-edit/InlineEditText.d.ts +4 -0
  207. package/inline-edit/InlineEditText.d.ts.map +1 -1
  208. package/inline-edit/InlineEditText.js +12 -11
  209. package/inline-edit/InlineEditText.js.map +1 -1
  210. package/inline-edit/InlineEditTextarea.d.ts +4 -0
  211. package/inline-edit/InlineEditTextarea.d.ts.map +1 -1
  212. package/inline-edit/InlineEditTextarea.js +11 -16
  213. package/inline-edit/InlineEditTextarea.js.map +1 -1
  214. package/inline-edit/useInlineDraft.d.ts +26 -0
  215. package/inline-edit/useInlineDraft.d.ts.map +1 -0
  216. package/inline-edit/useInlineDraft.js +61 -0
  217. package/inline-edit/useInlineDraft.js.map +1 -0
  218. package/internal/DialogShell.d.ts +21 -0
  219. package/internal/DialogShell.d.ts.map +1 -1
  220. package/internal/DialogShell.js +51 -4
  221. package/internal/DialogShell.js.map +1 -1
  222. package/internal/LoadingRegion.d.ts +35 -0
  223. package/internal/LoadingRegion.d.ts.map +1 -0
  224. package/internal/LoadingRegion.js +33 -0
  225. package/internal/LoadingRegion.js.map +1 -0
  226. package/internal/markdown-components.d.ts.map +1 -1
  227. package/internal/markdown-components.js +18 -4
  228. package/internal/markdown-components.js.map +1 -1
  229. package/internal/trim.d.ts +7 -0
  230. package/internal/trim.d.ts.map +1 -0
  231. package/internal/trim.js +12 -0
  232. package/internal/trim.js.map +1 -0
  233. package/invitation/InvitationManager.d.ts.map +1 -1
  234. package/invitation/InvitationManager.js +2 -1
  235. package/invitation/InvitationManager.js.map +1 -1
  236. package/invitation/InvitationRedemption.d.ts.map +1 -1
  237. package/invitation/InvitationRedemption.js +5 -4
  238. package/invitation/InvitationRedemption.js.map +1 -1
  239. package/invitation/useInvitationPreview.d.ts +1 -1
  240. package/invitation/useInvitationPreview.js +1 -1
  241. package/licenses/LicenseDetail.d.ts.map +1 -1
  242. package/licenses/LicenseDetail.js +3 -3
  243. package/licenses/LicenseDetail.js.map +1 -1
  244. package/licenses/LicenseIssueForm.js +6 -6
  245. package/licenses/LicenseIssueForm.js.map +1 -1
  246. package/licenses/license-draft.d.ts +1 -1
  247. package/licenses/license-draft.d.ts.map +1 -1
  248. package/licenses/license-draft.js +3 -3
  249. package/licenses/license-draft.js.map +1 -1
  250. package/licenses/license-format.js +1 -1
  251. package/licenses/license-format.js.map +1 -1
  252. package/mcp-server/McpServerDetailView.d.ts.map +1 -1
  253. package/mcp-server/McpServerDetailView.js +2 -1
  254. package/mcp-server/McpServerDetailView.js.map +1 -1
  255. package/memory/MemoryListPanel.d.ts.map +1 -1
  256. package/memory/MemoryListPanel.js +2 -1
  257. package/memory/MemoryListPanel.js.map +1 -1
  258. package/oauth-app/OAuthAppListPanel.d.ts.map +1 -1
  259. package/oauth-app/OAuthAppListPanel.js +2 -1
  260. package/oauth-app/OAuthAppListPanel.js.map +1 -1
  261. package/organization/OrgPreferencesPanel.d.ts +3 -3
  262. package/organization/OrgPreferencesPanel.d.ts.map +1 -1
  263. package/organization/OrgPreferencesPanel.js +6 -5
  264. package/organization/OrgPreferencesPanel.js.map +1 -1
  265. package/organization/OrgProfilePanel.d.ts +3 -3
  266. package/organization/OrgProfilePanel.d.ts.map +1 -1
  267. package/organization/OrgProfilePanel.js +8 -7
  268. package/organization/OrgProfilePanel.js.map +1 -1
  269. package/organization/index.d.ts +1 -0
  270. package/organization/index.d.ts.map +1 -1
  271. package/organization/index.js +1 -0
  272. package/organization/index.js.map +1 -1
  273. package/organization/useFollowSessionOrganization.d.ts +9 -0
  274. package/organization/useFollowSessionOrganization.d.ts.map +1 -0
  275. package/organization/useFollowSessionOrganization.js +52 -0
  276. package/organization/useFollowSessionOrganization.js.map +1 -0
  277. package/package.json +5 -5
  278. package/plan-catalog/plan-draft.js +3 -3
  279. package/plan-catalog/plan-draft.js.map +1 -1
  280. package/platform-client/PlatformClientListPanel.d.ts.map +1 -1
  281. package/platform-client/PlatformClientListPanel.js +2 -1
  282. package/platform-client/PlatformClientListPanel.js.map +1 -1
  283. package/plugin/PluginDetailView.d.ts.map +1 -1
  284. package/plugin/PluginDetailView.js +2 -1
  285. package/plugin/PluginDetailView.js.map +1 -1
  286. package/portal-container.d.ts +8 -0
  287. package/portal-container.d.ts.map +1 -1
  288. package/portal-container.js +8 -0
  289. package/portal-container.js.map +1 -1
  290. package/provider.d.ts +4 -1
  291. package/provider.d.ts.map +1 -1
  292. package/provider.js +4 -1
  293. package/provider.js.map +1 -1
  294. package/public-base-url-context.d.ts.map +1 -1
  295. package/public-base-url-context.js +2 -1
  296. package/public-base-url-context.js.map +1 -1
  297. package/schedule/ScheduleDetailView.d.ts.map +1 -1
  298. package/schedule/ScheduleDetailView.js +2 -1
  299. package/schedule/ScheduleDetailView.js.map +1 -1
  300. package/session/SessionViewer.d.ts +7 -2
  301. package/session/SessionViewer.d.ts.map +1 -1
  302. package/session/SessionViewer.js +7 -2
  303. package/session/SessionViewer.js.map +1 -1
  304. package/session/useSessionConversation.d.ts +10 -1
  305. package/session/useSessionConversation.d.ts.map +1 -1
  306. package/session/useSessionConversation.js +5 -3
  307. package/session/useSessionConversation.js.map +1 -1
  308. package/settings/EnvironmentsSection.d.ts.map +1 -1
  309. package/settings/EnvironmentsSection.js +2 -1
  310. package/settings/EnvironmentsSection.js.map +1 -1
  311. package/settings/MembersSection.js +2 -2
  312. package/settings/MembersSection.js.map +1 -1
  313. package/settings/OrgPreferencesSection.js +1 -1
  314. package/settings/OrgPreferencesSection.js.map +1 -1
  315. package/settings/OrgProfileSection.js +1 -1
  316. package/settings/OrgProfileSection.js.map +1 -1
  317. package/settings/TeamsSection.js +1 -1
  318. package/settings/TeamsSection.js.map +1 -1
  319. package/settings/UsageSection.js +1 -1
  320. package/settings/UsageSection.js.map +1 -1
  321. package/sharing/ShareAgentDialog.d.ts.map +1 -1
  322. package/sharing/ShareAgentDialog.js +2 -1
  323. package/sharing/ShareAgentDialog.js.map +1 -1
  324. package/sharing/SharedAgentChat.d.ts.map +1 -1
  325. package/sharing/SharedAgentChat.js +2 -1
  326. package/sharing/SharedAgentChat.js.map +1 -1
  327. package/sidebar/WorkspaceSidebar.d.ts.map +1 -1
  328. package/sidebar/WorkspaceSidebar.js +2 -1
  329. package/sidebar/WorkspaceSidebar.js.map +1 -1
  330. package/skill/SkillDetailView.d.ts.map +1 -1
  331. package/skill/SkillDetailView.js +2 -1
  332. package/skill/SkillDetailView.js.map +1 -1
  333. package/skill/SkillDiffDialog.d.ts.map +1 -1
  334. package/skill/SkillDiffDialog.js +2 -1
  335. package/skill/SkillDiffDialog.js.map +1 -1
  336. package/skill/SkillFileBrowser.d.ts.map +1 -1
  337. package/skill/SkillFileBrowser.js +2 -1
  338. package/skill/SkillFileBrowser.js.map +1 -1
  339. package/src/access/ManageAccessButton.tsx +1 -1
  340. package/src/access/ManageAccessDialog.tsx +1 -1
  341. package/src/agent/AgentDetailView.tsx +4 -4
  342. package/src/api-key/ApiKeyListPanel.tsx +4 -4
  343. package/src/attachment/AttachmentImageLightbox.tsx +3 -4
  344. package/src/billing/AutoRechargeCard.tsx +5 -5
  345. package/src/billing/BillingSection.tsx +10 -9
  346. package/src/billing/CreditLedgerTable.tsx +4 -4
  347. package/src/billing/CreditPackGrid.tsx +1 -1
  348. package/src/billing/PaymentMethodCard.tsx +1 -1
  349. package/src/billing/PlanSection.tsx +6 -5
  350. package/src/billing/ProviderKeysSection.tsx +15 -15
  351. package/src/billing/plan-features.ts +1 -1
  352. package/src/billing/useBillingAccount.ts +7 -7
  353. package/src/billing/useBillingUsageReport.ts +7 -7
  354. package/src/billing/useChangePlan.ts +6 -6
  355. package/src/billing/useCreateBillingPortalSession.ts +4 -4
  356. package/src/billing/useCreateCheckoutSession.ts +3 -3
  357. package/src/billing/useCreatePaymentMethodSetupSession.ts +3 -3
  358. package/src/billing/useCreditLedger.ts +7 -7
  359. package/src/billing/useCustomerModelPricing.ts +7 -7
  360. package/src/billing/useEntitlements.ts +5 -5
  361. package/src/billing/usePeriodEstimate.ts +4 -4
  362. package/src/billing/useProviderKeys.ts +12 -12
  363. package/src/billing/useSetAutoRechargeConfig.ts +3 -3
  364. package/src/billing/useSubscription.ts +7 -7
  365. package/src/channel-app/ChannelAppListPanel.tsx +4 -4
  366. package/src/channel-app/slackAppSetup.ts +3 -2
  367. package/src/channel-app/whatsappAppSetup.ts +2 -1
  368. package/src/cursor-accounts/CursorAccountEditor.tsx +3 -3
  369. package/src/cursor-accounts/CursorAccountsConsole.tsx +5 -5
  370. package/src/dashboard/OperationalDashboard.tsx +1 -6
  371. package/src/dashboard/useDashboardSummary.ts +2 -4
  372. package/src/environment/EnvironmentListPanel.tsx +4 -4
  373. package/src/environment/EnvironmentVariableEditor.tsx +4 -4
  374. package/src/execution/ArtifactFileContent.tsx +3 -2
  375. package/src/execution/McpToolDetail.tsx +3 -3
  376. package/src/execution/ResultView.tsx +3 -3
  377. package/src/execution/TerminalSession.tsx +1 -1
  378. package/src/execution/ThreadSkeleton.tsx +4 -4
  379. package/src/execution/file-path-resolver.ts +3 -2
  380. package/src/execution/sandbox-path-normalizer.ts +2 -1
  381. package/src/github/parseGitUrl.ts +13 -4
  382. package/src/iam-policy/GrantAccessForm.tsx +4 -4
  383. package/src/iam-policy/OrgMembersPanel.tsx +7 -7
  384. package/src/iam-policy/PeopleWithAccess.tsx +3 -3
  385. package/src/iam-policy/PrincipalPicker.tsx +3 -3
  386. package/src/iam-policy/SharePanel.tsx +4 -4
  387. package/src/iam-policy/useCreateIamPolicy.ts +1 -1
  388. package/src/iam-policy/useDeleteIamPolicy.ts +1 -1
  389. package/src/iam-policy/useGranteeCandidates.ts +3 -3
  390. package/src/iam-policy/useOwnerAssignment.ts +3 -3
  391. package/src/iam-policy/usePrincipalsCount.ts +7 -7
  392. package/src/iam-policy/useResourceAccess.ts +1 -1
  393. package/src/iam-policy/useRevokeOrgAccess.ts +3 -3
  394. package/src/identity-account/AccountPreferencesPanel.tsx +4 -4
  395. package/src/identity-provider/IdentityProviderDetailPanel.tsx +3 -9
  396. package/src/identity-provider/IdentityProviderListPanel.tsx +4 -4
  397. package/src/identity-provider/IdentityProviderWizard.tsx +1 -1
  398. package/src/identity-provider/SsoLoginPrompt.tsx +6 -5
  399. package/src/identity-provider/useIdentityProviderList.ts +2 -2
  400. package/src/index.ts +1 -0
  401. package/src/inline-edit/InlineEditImage.tsx +13 -11
  402. package/src/inline-edit/InlineEditText.tsx +13 -11
  403. package/src/inline-edit/InlineEditTextarea.tsx +12 -16
  404. package/src/inline-edit/useInlineDraft.ts +85 -0
  405. package/src/internal/DialogShell.tsx +80 -3
  406. package/src/internal/LoadingRegion.tsx +46 -0
  407. package/src/internal/loading-region-markup.json +71 -0
  408. package/src/internal/markdown-components.tsx +15 -4
  409. package/src/internal/trim.ts +10 -0
  410. package/src/invitation/InvitationManager.tsx +4 -4
  411. package/src/invitation/InvitationRedemption.tsx +7 -7
  412. package/src/invitation/useInvitationPreview.ts +1 -1
  413. package/src/licenses/LicenseDetail.tsx +8 -6
  414. package/src/licenses/LicenseIssueForm.tsx +6 -6
  415. package/src/licenses/license-draft.ts +4 -4
  416. package/src/licenses/license-format.ts +1 -1
  417. package/src/mcp-server/McpServerDetailView.tsx +4 -4
  418. package/src/memory/MemoryListPanel.tsx +4 -4
  419. package/src/oauth-app/OAuthAppListPanel.tsx +4 -4
  420. package/src/organization/OrgPreferencesPanel.tsx +9 -9
  421. package/src/organization/OrgProfilePanel.tsx +12 -12
  422. package/src/organization/index.ts +1 -0
  423. package/src/organization/useFollowSessionOrganization.ts +54 -0
  424. package/src/plan-catalog/plan-draft.ts +3 -3
  425. package/src/platform-client/PlatformClientListPanel.tsx +4 -4
  426. package/src/plugin/PluginDetailView.tsx +3 -2
  427. package/src/portal-container.ts +8 -0
  428. package/src/provider.tsx +4 -1
  429. package/src/public-base-url-context.ts +2 -1
  430. package/src/schedule/ScheduleDetailView.tsx +4 -4
  431. package/src/session/SessionViewer.tsx +13 -3
  432. package/src/session/useSessionConversation.ts +14 -3
  433. package/src/settings/EnvironmentsSection.tsx +3 -2
  434. package/src/settings/MembersSection.tsx +3 -3
  435. package/src/settings/OrgPreferencesSection.tsx +1 -1
  436. package/src/settings/OrgProfileSection.tsx +1 -1
  437. package/src/settings/TeamsSection.tsx +1 -1
  438. package/src/settings/UsageSection.tsx +1 -1
  439. package/src/sharing/ShareAgentDialog.tsx +2 -1
  440. package/src/sharing/SharedAgentChat.tsx +4 -4
  441. package/src/sidebar/WorkspaceSidebar.tsx +3 -2
  442. package/src/skill/SkillDetailView.tsx +4 -4
  443. package/src/skill/SkillDiffDialog.tsx +4 -4
  444. package/src/skill/SkillFileBrowser.tsx +4 -4
  445. package/src/team/TeamDetailPanel.tsx +3 -3
  446. package/src/team/TeamListPanel.tsx +3 -2
  447. package/src/team/TeamMembersPanel.tsx +3 -3
  448. package/src/usage/OrgUsagePanel.tsx +9 -9
  449. package/src/usage/useExportCSV.ts +9 -9
  450. package/src/usage/useOrgUsageReport.ts +7 -7
  451. package/src/version-history/VersionTimeline.tsx +4 -4
  452. package/src/workflow/WorkflowVersionDiffViewer.tsx +4 -4
  453. package/src/workflow/WorkflowVersionTimeline.tsx +4 -4
  454. package/src/workflow/useDiagnoseExecutionFlow.ts +23 -18
  455. package/src/workflow/useExplainWorkflowFlow.ts +7 -3
  456. package/src/workflow/useRefineWorkflowFlow.ts +17 -10
  457. package/src/workflow/useWorkflowArchitectFlow.ts +7 -3
  458. package/src/workspace/ExplorerTree.tsx +4 -8
  459. package/src/workspace/FileViewer.tsx +4 -5
  460. package/styles.css +1 -1
  461. package/team/TeamDetailPanel.d.ts +2 -2
  462. package/team/TeamDetailPanel.d.ts.map +1 -1
  463. package/team/TeamDetailPanel.js +2 -2
  464. package/team/TeamDetailPanel.js.map +1 -1
  465. package/team/TeamListPanel.d.ts.map +1 -1
  466. package/team/TeamListPanel.js +2 -1
  467. package/team/TeamListPanel.js.map +1 -1
  468. package/team/TeamMembersPanel.d.ts +2 -2
  469. package/team/TeamMembersPanel.d.ts.map +1 -1
  470. package/team/TeamMembersPanel.js +2 -2
  471. package/team/TeamMembersPanel.js.map +1 -1
  472. package/usage/OrgUsagePanel.d.ts +3 -3
  473. package/usage/OrgUsagePanel.d.ts.map +1 -1
  474. package/usage/OrgUsagePanel.js +6 -5
  475. package/usage/OrgUsagePanel.js.map +1 -1
  476. package/usage/useExportCSV.d.ts +2 -2
  477. package/usage/useExportCSV.d.ts.map +1 -1
  478. package/usage/useExportCSV.js +9 -9
  479. package/usage/useExportCSV.js.map +1 -1
  480. package/usage/useOrgUsageReport.d.ts +4 -4
  481. package/usage/useOrgUsageReport.d.ts.map +1 -1
  482. package/usage/useOrgUsageReport.js +7 -7
  483. package/usage/useOrgUsageReport.js.map +1 -1
  484. package/version-history/VersionTimeline.d.ts.map +1 -1
  485. package/version-history/VersionTimeline.js +2 -1
  486. package/version-history/VersionTimeline.js.map +1 -1
  487. package/workflow/WorkflowVersionDiffViewer.d.ts.map +1 -1
  488. package/workflow/WorkflowVersionDiffViewer.js +2 -1
  489. package/workflow/WorkflowVersionDiffViewer.js.map +1 -1
  490. package/workflow/WorkflowVersionTimeline.d.ts.map +1 -1
  491. package/workflow/WorkflowVersionTimeline.js +2 -1
  492. package/workflow/WorkflowVersionTimeline.js.map +1 -1
  493. package/workflow/useDiagnoseExecutionFlow.d.ts.map +1 -1
  494. package/workflow/useDiagnoseExecutionFlow.js +23 -18
  495. package/workflow/useDiagnoseExecutionFlow.js.map +1 -1
  496. package/workflow/useExplainWorkflowFlow.d.ts.map +1 -1
  497. package/workflow/useExplainWorkflowFlow.js +7 -3
  498. package/workflow/useExplainWorkflowFlow.js.map +1 -1
  499. package/workflow/useRefineWorkflowFlow.d.ts.map +1 -1
  500. package/workflow/useRefineWorkflowFlow.js +14 -10
  501. package/workflow/useRefineWorkflowFlow.js.map +1 -1
  502. package/workflow/useWorkflowArchitectFlow.d.ts.map +1 -1
  503. package/workflow/useWorkflowArchitectFlow.js +7 -3
  504. package/workflow/useWorkflowArchitectFlow.js.map +1 -1
  505. package/workspace/ExplorerTree.d.ts.map +1 -1
  506. package/workspace/ExplorerTree.js +2 -5
  507. package/workspace/ExplorerTree.js.map +1 -1
  508. package/workspace/FileViewer.d.ts.map +1 -1
  509. package/workspace/FileViewer.js +2 -1
  510. package/workspace/FileViewer.js.map +1 -1
@@ -17,10 +17,8 @@ import type { DashboardSummary } from "./types.js";
17
17
 
18
18
  /** Options for {@link useDashboardSummary}. */
19
19
  export interface UseDashboardSummaryOptions {
20
- /** Organization slug for execution summaries. */
20
+ /** The organization whose execution summaries and usage report to read. */
21
21
  readonly org: string | null | undefined;
22
- /** Organization ID (metadata.id) for the usage report. */
23
- readonly orgId: string | null | undefined;
24
22
  /** Refetch interval in milliseconds. @default 60_000 */
25
23
  readonly refetchInterval?: number;
26
24
  }
@@ -66,7 +64,7 @@ export function useDashboardSummary(
66
64
 
67
65
  const dateRange = useMemo(() => dateRangeFromPreset("7d"), []);
68
66
  const { report: orgUsage, isLoading: usageLoading, error: usageError, refetch: usageRefetch } =
69
- useOrgUsageReport(options.orgId ?? null, dateRange);
67
+ useOrgUsageReport(options.org ?? null, dateRange);
70
68
 
71
69
  const isLoading = wfLoading || agLoading || usageLoading;
72
70
  const error = wfError ?? agError ?? usageError;
@@ -10,6 +10,7 @@ import { EditResourceYamlDialog } from "../manifest/EditResourceYamlDialog.js";
10
10
  import { useEnvironmentList } from "./useEnvironmentList.js";
11
11
  import { EnvironmentVariableEditor } from "./EnvironmentVariableEditor.js";
12
12
  import { isShareRestrictedEnvironment } from "./shareRestriction.js";
13
+ import { LoadingRegion } from "../internal/LoadingRegion.js";
13
14
 
14
15
  // ---------------------------------------------------------------------------
15
16
  // Public API
@@ -132,10 +133,9 @@ export function EnvironmentListPanel({
132
133
 
133
134
  if (isLoading) {
134
135
  return (
135
- <div
136
+ <LoadingRegion
136
137
  className={cn("stg:space-y-2", className)}
137
- aria-busy="true"
138
- aria-label="Loading environments"
138
+ label="Loading environments"
139
139
  >
140
140
  {Array.from({ length: 2 }, (_, i) => (
141
141
  <div
@@ -143,7 +143,7 @@ export function EnvironmentListPanel({
143
143
  className="stg:bg-muted-subtle stg:h-14 stg:animate-pulse stg:rounded-lg"
144
144
  />
145
145
  ))}
146
- </div>
146
+ </LoadingRegion>
147
147
  );
148
148
  }
149
149
 
@@ -18,6 +18,7 @@ import { useUpdateEnvironmentVariables } from "./useUpdateEnvironmentVariables.j
18
18
  import { useRemoveEnvironmentVariables } from "./useRemoveEnvironmentVariables.js";
19
19
  import { useRevealSecretValue } from "./useRevealSecretValue.js";
20
20
  import { SpinnerIcon } from "../internal/SpinnerIcon.js";
21
+ import { LoadingRegion } from "../internal/LoadingRegion.js";
21
22
 
22
23
  // ---------------------------------------------------------------------------
23
24
  // Public API
@@ -152,10 +153,9 @@ export function EnvironmentVariableEditor({
152
153
 
153
154
  if (isLoading) {
154
155
  return (
155
- <div
156
+ <LoadingRegion
156
157
  className={cn("stg:space-y-2", className)}
157
- aria-busy="true"
158
- aria-label="Loading variables"
158
+ label="Loading variables"
159
159
  >
160
160
  {Array.from({ length: 3 }, (_, i) => (
161
161
  <div
@@ -164,7 +164,7 @@ export function EnvironmentVariableEditor({
164
164
  style={{ width: `${85 - i * 10}%` }}
165
165
  />
166
166
  ))}
167
- </div>
167
+ </LoadingRegion>
168
168
  );
169
169
  }
170
170
 
@@ -4,6 +4,7 @@
4
4
  // unavailable / text). Domain: execution (data-model-agnostic).
5
5
 
6
6
  import { ArtifactContentRenderer } from "./ArtifactContentRenderer.js";
7
+ import { LoadingRegion } from "../internal/LoadingRegion.js";
7
8
 
8
9
  /** Props for {@link ArtifactFileContent}. */
9
10
  export interface ArtifactFileContentProps {
@@ -44,7 +45,7 @@ export function ArtifactFileContent({
44
45
  }: ArtifactFileContentProps) {
45
46
  if (isLoading) {
46
47
  return (
47
- <div className="stg:space-y-2 stg:p-4" aria-busy="true" aria-label="Loading content">
48
+ <LoadingRegion className="stg:space-y-2 stg:p-4" label="Loading content">
48
49
  {SKELETON_LINE_WIDTHS.map((width, i) => (
49
50
  <div
50
51
  key={i}
@@ -53,7 +54,7 @@ export function ArtifactFileContent({
53
54
  aria-hidden="true"
54
55
  />
55
56
  ))}
56
- </div>
57
+ </LoadingRegion>
57
58
  );
58
59
  }
59
60
 
@@ -19,6 +19,7 @@ import { execIdFromStorageKey } from "./useFileChangeContent.js";
19
19
  import { useArtifactDownloadUrl } from "./useArtifactDownloadUrl.js";
20
20
  import { useArtifactDownload } from "./useArtifactDownload.js";
21
21
  import { useToolOutputContent } from "./useToolOutputContent.js";
22
+ import { LoadingRegion } from "../internal/LoadingRegion.js";
22
23
 
23
24
  /** Props for {@link McpToolDetail}. */
24
25
  export interface McpToolDetailProps {
@@ -115,10 +116,9 @@ function McpOffloadedImage({ storageKey }: { readonly storageKey: string }) {
115
116
  }
116
117
  if (!url) {
117
118
  return (
118
- <div
119
+ <LoadingRegion
119
120
  className="stg:h-40 stg:w-64 stg:animate-pulse stg:rounded-md stg:border stg:border-border stg:bg-muted"
120
- aria-busy="true"
121
- aria-label="Loading image output"
121
+ label="Loading image output"
122
122
  />
123
123
  );
124
124
  }
@@ -25,6 +25,7 @@ import { execIdFromStorageKey } from "./useFileChangeContent.js";
25
25
  import { useArtifactDownloadUrl } from "./useArtifactDownloadUrl.js";
26
26
  import { useArtifactDownload } from "./useArtifactDownload.js";
27
27
  import { useToolOutputContent } from "./useToolOutputContent.js";
28
+ import { LoadingRegion } from "../internal/LoadingRegion.js";
28
29
 
29
30
  /** Props for {@link ResultView}. */
30
31
  export interface ResultViewProps {
@@ -509,10 +510,9 @@ function OutputRefImage({ storageKey, className }: { storageKey: string; classNa
509
510
  }
510
511
  if (!url) {
511
512
  return (
512
- <div
513
+ <LoadingRegion
513
514
  className={cn("stg:h-40 stg:w-64 stg:animate-pulse stg:rounded-md stg:border stg:border-border stg:bg-muted", className)}
514
- aria-busy="true"
515
- aria-label="Loading image output"
515
+ label="Loading image output"
516
516
  />
517
517
  );
518
518
  }
@@ -128,7 +128,7 @@ export function TerminalTail({
128
128
  const combined = [stdout, stderr]
129
129
  .filter((s): s is string => Boolean(s))
130
130
  .join("\n")
131
- .replace(/\s+$/, "");
131
+ .trimEnd();
132
132
  const lines = combined ? normalize(combined).split("\n") : [];
133
133
  const tail = lines.slice(-TAIL_LINE_LIMIT);
134
134
  const hiddenCount = lines.length - tail.length;
@@ -1,6 +1,7 @@
1
1
  "use client";
2
2
 
3
3
  import { cn } from "@stigmer/theme";
4
+ import { LoadingRegion } from "../internal/LoadingRegion.js";
4
5
 
5
6
  /** Props for {@link ThreadSkeleton}. */
6
7
  export interface ThreadSkeletonProps {
@@ -30,10 +31,9 @@ const AI_LINE_WIDTHS = [
30
31
  */
31
32
  export function ThreadSkeleton({ className }: ThreadSkeletonProps) {
32
33
  return (
33
- <div
34
+ <LoadingRegion
34
35
  className={cn("stg:flex stg:flex-col stg:gap-4 stg:pt-6 stg:pb-4", className)}
35
- aria-busy="true"
36
- aria-label="Loading conversation"
36
+ label="Loading conversation"
37
37
  >
38
38
  <div className="stg:animate-pulse stg:space-y-4">
39
39
  {/* Turn 1: Human bubble */}
@@ -68,6 +68,6 @@ export function ThreadSkeleton({ className }: ThreadSkeletonProps) {
68
68
  ))}
69
69
  </div>
70
70
  </div>
71
- </div>
71
+ </LoadingRegion>
72
72
  );
73
73
  }
@@ -1,4 +1,5 @@
1
1
  import type { WorkspaceEntry } from "@stigmer/protos/ai/stigmer/agentic/session/v1/workspace_pb";
2
+ import { trimTrailing } from "../internal/trim.js";
2
3
 
3
4
  const PLATFORM_PREFIX = ".stigmer/";
4
5
  const PLATFORM_DIR_NAME = ".stigmer";
@@ -71,7 +72,7 @@ export interface DisplayPath {
71
72
  */
72
73
  export function splitDisplayPath(path: string): DisplayPath {
73
74
  if (!path) return { dir: "", base: "" };
74
- const trimmed = path.replace(/\/+$/, "");
75
+ const trimmed = trimTrailing(path, "/");
75
76
  const idx = trimmed.lastIndexOf("/");
76
77
  if (idx < 0) return { dir: "", base: trimmed };
77
78
  const base = trimmed.slice(idx + 1);
@@ -239,7 +240,7 @@ function matchWorkspaceEntry(
239
240
 
240
241
  function joinLocalPath(base: string, rel: string): string {
241
242
  if (!rel) return base;
242
- const cleanBase = base.replace(/\/+$/, "");
243
+ const cleanBase = trimTrailing(base, "/");
243
244
  const cleanRel = rel.replace(/^\/+/, "");
244
245
  return `${cleanBase}/${cleanRel}`;
245
246
  }
@@ -9,6 +9,7 @@
9
9
  *
10
10
  * @module
11
11
  */
12
+ import { trimTrailing } from "../internal/trim.js";
12
13
 
13
14
  /**
14
15
  * Replace absolute sandbox workspace paths with workspace-relative
@@ -49,7 +50,7 @@ export function normalizeSandboxPaths(
49
50
  ): string {
50
51
  if (!text || !workspaceRoot) return text;
51
52
 
52
- const wsRoot = workspaceRoot.replace(/\/+$/, "");
53
+ const wsRoot = trimTrailing(workspaceRoot, "/");
53
54
 
54
55
  // 1) Strip workspace root prefix (with trailing slash) → workspace-relative
55
56
  text = replaceAll(text, wsRoot + "/", "");
@@ -9,7 +9,7 @@ export interface ParsedGitRepo {
9
9
  readonly repo: string;
10
10
  }
11
11
 
12
- const GITHUB_URL_RE = /github\.com[/:]([^/]+)\/([^/.]+?)(?:\.git)?$/;
12
+ const GITHUB_HOST = "github.com";
13
13
 
14
14
  /**
15
15
  * Extract the owner and repository name from a GitHub URL.
@@ -22,7 +22,16 @@ const GITHUB_URL_RE = /github\.com[/:]([^/]+)\/([^/.]+?)(?:\.git)?$/;
22
22
  * Returns `null` for non-GitHub or unparseable URLs.
23
23
  */
24
24
  export function parseGitUrl(url: string): ParsedGitRepo | null {
25
- const match = url.match(GITHUB_URL_RE);
26
- if (!match) return null;
27
- return { owner: match[1], repo: match[2] };
25
+ // Read by position rather than by a pattern: the lazy repository group of
26
+ // `github\.com[/:]([^/]+)\/([^/.]+?)(?:\.git)?$` backtracks on a long input.
27
+ const at = url.indexOf(GITHUB_HOST);
28
+ if (at === -1) return null;
29
+ const separator = url[at + GITHUB_HOST.length];
30
+ if (separator !== "/" && separator !== ":") return null;
31
+ const parts = url.slice(at + GITHUB_HOST.length + 1).split("/");
32
+ if (parts.length !== 2) return null;
33
+ const [owner, name] = parts as [string, string];
34
+ const repo = name.endsWith(".git") ? name.slice(0, -".git".length) : name;
35
+ if (owner === "" || repo === "" || repo.includes(".")) return null;
36
+ return { owner, repo };
28
37
  }
@@ -45,7 +45,7 @@ export interface GrantAccessFormProps {
45
45
  * Organization whose people (and teams) can be granted access. Drives
46
46
  * the {@link PrincipalPicker} typeahead.
47
47
  */
48
- readonly orgId: string;
48
+ readonly org: string;
49
49
  /**
50
50
  * Offer the organization's teams beside its people. Set it where the
51
51
  * resource can be shared with a team (`useShareFlow().canShareWithTeams`).
@@ -72,7 +72,7 @@ export interface GrantAccessFormProps {
72
72
  * resourceKind={ApiResourceKind.agent}
73
73
  * resourceKindString="agent"
74
74
  * resourceId={agentId}
75
- * orgId={orgId}
75
+ * org={org}
76
76
  * includeTeams={share.canShareWithTeams}
77
77
  * onGranted={() => share.refetch()}
78
78
  * onCancel={() => setShowForm(false)}
@@ -83,7 +83,7 @@ export function GrantAccessForm({
83
83
  resourceKind,
84
84
  resourceKindString,
85
85
  resourceId,
86
- orgId,
86
+ org,
87
87
  includeTeams = false,
88
88
  excludeGrantees,
89
89
  onGranted,
@@ -150,7 +150,7 @@ export function GrantAccessForm({
150
150
  <form onSubmit={handleSubmit} className={cn("stg:space-y-3", className)}>
151
151
  <div className="stg:space-y-3">
152
152
  <PrincipalPicker
153
- orgId={orgId}
153
+ org={org}
154
154
  value={grantee}
155
155
  onChange={chooseGrantee}
156
156
  includeTeams={includeTeams}
@@ -26,6 +26,7 @@ import { useDeleteIamPolicy } from "./useDeleteIamPolicy.js";
26
26
  import { RoleSelector } from "./RoleSelector.js";
27
27
  import { ProviderBadge } from "./ProviderBadge.js";
28
28
  import { SpinnerIcon } from "../internal/SpinnerIcon.js";
29
+ import { LoadingRegion } from "../internal/LoadingRegion.js";
29
30
 
30
31
  // ---------------------------------------------------------------------------
31
32
  // Public API
@@ -34,7 +35,7 @@ import { SpinnerIcon } from "../internal/SpinnerIcon.js";
34
35
  /** Props for {@link OrgMembersPanel}. */
35
36
  export interface OrgMembersPanelProps {
36
37
  /** Organization ID (`metadata.id`) whose members to manage. */
37
- readonly orgId: string;
38
+ readonly org: string;
38
39
  /** Exposed refetch for parent-triggered refresh. */
39
40
  readonly onRefetchRef?: (refetch: () => void) => void;
40
41
  /** Additional CSS class names for the root container. */
@@ -71,11 +72,11 @@ export interface OrgMembersPanelProps {
71
72
  *
72
73
  * @example
73
74
  * ```tsx
74
- * <OrgMembersPanel orgId={activeOrg.metadata.id} />
75
+ * <OrgMembersPanel org={activeOrg.metadata.id} />
75
76
  * ```
76
77
  */
77
78
  export function OrgMembersPanel({
78
- orgId,
79
+ org: orgId,
79
80
  onRefetchRef,
80
81
  className,
81
82
  }: OrgMembersPanelProps) {
@@ -127,10 +128,9 @@ export function OrgMembersPanel({
127
128
 
128
129
  if (isLoading) {
129
130
  return (
130
- <div
131
+ <LoadingRegion
131
132
  className={cn("stg:space-y-2", className)}
132
- aria-busy="true"
133
- aria-label="Loading members"
133
+ label="Loading members"
134
134
  >
135
135
  {Array.from({ length: 3 }, (_, i) => (
136
136
  <div
@@ -138,7 +138,7 @@ export function OrgMembersPanel({
138
138
  className="stg:bg-muted-subtle stg:h-14 stg:animate-pulse stg:rounded-lg"
139
139
  />
140
140
  ))}
141
- </div>
141
+ </LoadingRegion>
142
142
  );
143
143
  }
144
144
 
@@ -42,7 +42,7 @@ export interface PeopleWithAccessProps {
42
42
  * Organization the resource belongs to (`metadata.org`). Drives the
43
43
  * people-and-teams typeahead in the grant form.
44
44
  */
45
- readonly orgId: string;
45
+ readonly org: string;
46
46
  /** Additional CSS class names for the root container. */
47
47
  readonly className?: string;
48
48
  }
@@ -72,7 +72,7 @@ export function PeopleWithAccess({
72
72
  resource,
73
73
  resourceKindString,
74
74
  resourceKind,
75
- orgId,
75
+ org,
76
76
  className,
77
77
  }: PeopleWithAccessProps) {
78
78
  const {
@@ -155,7 +155,7 @@ export function PeopleWithAccess({
155
155
  resourceKind={resourceKind}
156
156
  resourceKindString={resourceKindString}
157
157
  resourceId={resource.id}
158
- orgId={orgId}
158
+ org={org}
159
159
  includeTeams={canShareWithTeams}
160
160
  excludeGrantees={existingGrantees}
161
161
  onGranted={() => {
@@ -37,7 +37,7 @@ export type SelectedGrantee = GranteeCandidate;
37
37
  /** Props for {@link PrincipalPicker}. */
38
38
  export interface PrincipalPickerProps {
39
39
  /** Organization whose people (and teams) are selectable. */
40
- readonly orgId: string;
40
+ readonly org: string;
41
41
  /** Currently selected grantee, or `null`. Controlled. */
42
42
  readonly value: SelectedGrantee | null;
43
43
  /** Fired when the selection changes. */
@@ -73,7 +73,7 @@ export interface PrincipalPickerProps {
73
73
  * All visual properties flow through `--stgm-*` design tokens.
74
74
  */
75
75
  export function PrincipalPicker({
76
- orgId,
76
+ org,
77
77
  value,
78
78
  onChange,
79
79
  includeTeams = false,
@@ -85,7 +85,7 @@ export function PrincipalPicker({
85
85
  }: PrincipalPickerProps) {
86
86
  const listboxId = useId();
87
87
  const { people, teams, isLoading, error } = useGranteeCandidates({
88
- orgId: orgId || null,
88
+ org: org || null,
89
89
  includeTeams,
90
90
  });
91
91
 
@@ -17,7 +17,7 @@ export interface SharePanelProps {
17
17
  * Organization the resource belongs to (`metadata.org`). Drives the
18
18
  * org-member typeahead in the grant form.
19
19
  */
20
- readonly orgId: string;
20
+ readonly org: string;
21
21
  /** Fired when the user closes the panel. */
22
22
  readonly onClose?: () => void;
23
23
  /** Additional CSS class names for the root container. */
@@ -42,7 +42,7 @@ export interface SharePanelProps {
42
42
  * resource={{ kind: "session", id: sessionId, resourceKind: ApiResourceKind.session }}
43
43
  * resourceKindString="session"
44
44
  * resourceKind={ApiResourceKind.session}
45
- * orgId={orgId}
45
+ * org={org}
46
46
  * onClose={() => setOpen(false)}
47
47
  * />
48
48
  * ```
@@ -51,7 +51,7 @@ export function SharePanel({
51
51
  resource,
52
52
  resourceKindString,
53
53
  resourceKind,
54
- orgId,
54
+ org,
55
55
  onClose,
56
56
  className,
57
57
  }: SharePanelProps) {
@@ -85,7 +85,7 @@ export function SharePanel({
85
85
  resource={resource}
86
86
  resourceKindString={resourceKindString}
87
87
  resourceKind={resourceKind}
88
- orgId={orgId}
88
+ org={org}
89
89
  />
90
90
  </div>
91
91
  );
@@ -33,7 +33,7 @@ export interface UseCreateIamPolicyReturn {
33
33
  *
34
34
  * await create({
35
35
  * principal: { kind: "identity_account", id: accountId },
36
- * resource: { kind: "organization", id: orgId },
36
+ * resource: { kind: "organization", id: org },
37
37
  * relation: "admin",
38
38
  * });
39
39
  * ```
@@ -32,7 +32,7 @@ export interface UseDeleteIamPolicyReturn {
32
32
  *
33
33
  * await remove({
34
34
  * principal: { kind: "identity_account", id: accountId },
35
- * resource: { kind: "organization", id: orgId },
35
+ * resource: { kind: "organization", id: org },
36
36
  * relation: "admin",
37
37
  * });
38
38
  * ```
@@ -49,7 +49,7 @@ export type GranteeCandidate = PersonCandidate | TeamCandidate;
49
49
  /** Options for {@link useGranteeCandidates}. */
50
50
  export interface UseGranteeCandidatesOptions {
51
51
  /** The organization whose people (and teams) are offered, or `null` to skip. */
52
- readonly orgId: string | null;
52
+ readonly org: string | null;
53
53
  /** Offer the organization's teams too. Pass `false` where teams cannot be granted. */
54
54
  readonly includeTeams: boolean;
55
55
  }
@@ -70,13 +70,13 @@ export interface UseGranteeCandidatesReturn {
70
70
  * @example
71
71
  * ```tsx
72
72
  * const { people, teams } = useGranteeCandidates({
73
- * orgId,
73
+ * org,
74
74
  * includeTeams: share.canShareWithTeams,
75
75
  * });
76
76
  * ```
77
77
  */
78
78
  export function useGranteeCandidates({
79
- orgId,
79
+ org: orgId,
80
80
  includeTeams,
81
81
  }: UseGranteeCandidatesOptions): UseGranteeCandidatesReturn {
82
82
  const access = useResourceAccess(orgId ? { kind: "organization", id: orgId } : null);
@@ -26,11 +26,11 @@ export interface UseOwnerAssignmentReturn {
26
26
  * change asks the same question here. Fails open, like every capability
27
27
  * gate: the server refuses whatever this lets through.
28
28
  *
29
- * @param orgId - The organization's id, or `null` to skip the check.
29
+ * @param org - The organization's id, or `null` to skip the check.
30
30
  */
31
- export function useOwnerAssignment(orgId: string | null): UseOwnerAssignmentReturn {
31
+ export function useOwnerAssignment(org: string | null): UseOwnerAssignmentReturn {
32
32
  const { allowed } = useCheckPermission(
33
- orgId ? { kind: "organization", id: orgId } : null,
33
+ org ? { kind: "organization", id: org } : null,
34
34
  "can_assign_roles",
35
35
  );
36
36
  return {
@@ -33,33 +33,33 @@ export interface UsePrincipalsCountReturn {
33
33
  * `isPlatformClientAccount` (from `@stigmer/sdk`) marks, as
34
34
  * `OrgMembersPanel` does.
35
35
  *
36
- * Pass `null` as `orgId` to skip fetching (stable no-op).
36
+ * Pass `null` as `org` to skip fetching (stable no-op).
37
37
  *
38
- * @param orgId - Organization ID, or `null` to skip.
38
+ * @param org - Organization ID, or `null` to skip.
39
39
  * @param principalKind - Kind of principals to count. Defaults to `"identity_account"`.
40
40
  *
41
41
  * @example
42
42
  * ```tsx
43
- * const { count, isLoading } = usePrincipalsCount(orgId);
43
+ * const { count, isLoading } = usePrincipalsCount(org);
44
44
  * // count = 5
45
45
  * ```
46
46
  */
47
47
  export function usePrincipalsCount(
48
- orgId: string | null,
48
+ org: string | null,
49
49
  principalKind: string = "identity_account",
50
50
  ): UsePrincipalsCountReturn {
51
51
  const stigmer = useStigmer();
52
52
 
53
53
  const { data: count, isLoading, isRefetching, error, refetch } = useFetch(
54
- orgId
54
+ org
55
55
  ? () =>
56
56
  stigmer.iamPolicy
57
57
  .getPrincipalsCount(
58
- create(GetPrincipalsCountInputSchema, { orgId, principalKind }),
58
+ create(GetPrincipalsCountInputSchema, { org, principalKind }),
59
59
  )
60
60
  .then((r) => r.count)
61
61
  : null,
62
- [orgId, principalKind, stigmer],
62
+ [org, principalKind, stigmer],
63
63
  0,
64
64
  );
65
65
 
@@ -57,7 +57,7 @@ export interface UseResourceAccessReturn {
57
57
  * @example
58
58
  * ```tsx
59
59
  * const { members, isLoading } = useResourceAccess(
60
- * { kind: "organization", id: orgId },
60
+ * { kind: "organization", id: org },
61
61
  * { includeInherited: true },
62
62
  * );
63
63
  * ```
@@ -17,7 +17,7 @@ export interface UseRevokeOrgAccessReturn {
17
17
  * operation. What they created stays with the organization; it is
18
18
  * theirs again only if they are invited back.
19
19
  */
20
- readonly revoke: (accountId: string, orgId: string) => Promise<void>;
20
+ readonly revoke: (accountId: string, org: string) => Promise<void>;
21
21
  /** `true` while the revoke request is in flight. */
22
22
  readonly isRevoking: boolean;
23
23
  /** Error from the last failed revoke, or `null` when healthy. */
@@ -51,7 +51,7 @@ export function useRevokeOrgAccess(): UseRevokeOrgAccessReturn {
51
51
  const clearError = useCallback(() => setError(null), []);
52
52
 
53
53
  const revoke = useCallback(
54
- async (accountId: string, orgId: string): Promise<void> => {
54
+ async (accountId: string, org: string): Promise<void> => {
55
55
  setIsRevoking(true);
56
56
  setError(null);
57
57
 
@@ -59,7 +59,7 @@ export function useRevokeOrgAccess(): UseRevokeOrgAccessReturn {
59
59
  await stigmer.iamPolicy.revokeOrgAccess(
60
60
  create(RevokeOrgAccessInputSchema, {
61
61
  identityAccountId: accountId,
62
- organizationId: orgId,
62
+ org,
63
63
  }),
64
64
  );
65
65
  } catch (err) {
@@ -21,6 +21,7 @@ import { MemoryEnabledRow } from "../internal/MemoryEnabledRow.js";
21
21
  import { StandingContextField } from "../internal/StandingContextField.js";
22
22
  import { SpinnerIcon } from "../internal/SpinnerIcon.js";
23
23
  import { Switch } from "../switch/Switch.js";
24
+ import { LoadingRegion } from "../internal/LoadingRegion.js";
24
25
 
25
26
  /** Props for {@link AccountPreferencesPanel}. */
26
27
  export interface AccountPreferencesPanelProps {
@@ -232,14 +233,13 @@ export function AccountPreferencesPanel({
232
233
 
233
234
  if (isFetching && !account) {
234
235
  return (
235
- <div
236
+ <LoadingRegion
236
237
  className={cn("stg:space-y-4", className)}
237
- aria-busy="true"
238
- aria-label="Loading account preferences"
238
+ label="Loading account preferences"
239
239
  >
240
240
  <div className="stg:bg-muted-subtle stg:h-28 stg:animate-pulse stg:rounded" />
241
241
  <div className="stg:bg-muted-subtle stg:h-8 stg:w-32 stg:animate-pulse stg:rounded" />
242
- </div>
242
+ </LoadingRegion>
243
243
  );
244
244
  }
245
245
 
@@ -136,8 +136,8 @@ export function IdentityProviderDetailPanel({
136
136
  clearError();
137
137
  try {
138
138
  // Full-spec-replace safety: spread the complete mapped input and
139
- // override only the edited fields, so unlisted spec fields (e.g.
140
- // rate_limit_budget) survive the save. Fields the form clears
139
+ // override only the edited fields, so a spec field the form does
140
+ // not list survives the save. Fields the form clears
141
141
  // (SSO providers have no JIT settings) are set to undefined
142
142
  // explicitly — omitting them would carry the stale mapped value.
143
143
  const updated = await update({
@@ -289,7 +289,7 @@ export function IdentityProviderDetailPanel({
289
289
  value={userinfoEndpoint}
290
290
  onChange={setUserinfoEndpoint}
291
291
  placeholder="https://example.com/userinfo"
292
- hint="Optional — used to fetch user profile data"
292
+ hint="Optional. Read only when Stigmer creates an account from a token with no email claim"
293
293
  disabled={isUpdating}
294
294
  />
295
295
 
@@ -421,12 +421,6 @@ function ViewMode({
421
421
  hint="Share this URL with your team members to sign in via SSO"
422
422
  />
423
423
  )}
424
- {(spec?.rateLimitBudget ?? 0) > 0 && (
425
- <Field
426
- label="Rate limit"
427
- value={`${spec!.rateLimitBudget} req/min`}
428
- />
429
- )}
430
424
 
431
425
  {/* JIT provisioning fields */}
432
426
  {!spec?.isSsoProvider && spec?.autoProvisionAccounts && (