@stigmer/react 3.40.1 → 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 (707) hide show
  1. package/README.md +2 -1
  2. package/access/ManageAccessButton.d.ts +1 -1
  3. package/access/ManageAccessButton.js +1 -1
  4. package/access/ManageAccessDialog.d.ts +1 -1
  5. package/access/ManageAccessDialog.js +2 -2
  6. package/access/ManageAccessDialog.js.map +1 -1
  7. package/access/types.d.ts +1 -1
  8. package/agent/AgentDetailView.d.ts.map +1 -1
  9. package/agent/AgentDetailView.js +2 -1
  10. package/agent/AgentDetailView.js.map +1 -1
  11. package/api-key/ApiKeyListPanel.d.ts.map +1 -1
  12. package/api-key/ApiKeyListPanel.js +2 -1
  13. package/api-key/ApiKeyListPanel.js.map +1 -1
  14. package/attachment/AttachmentImageLightbox.d.ts.map +1 -1
  15. package/attachment/AttachmentImageLightbox.js.map +1 -1
  16. package/billing/AutoRechargeCard.d.ts +3 -3
  17. package/billing/AutoRechargeCard.d.ts.map +1 -1
  18. package/billing/AutoRechargeCard.js +4 -4
  19. package/billing/AutoRechargeCard.js.map +1 -1
  20. package/billing/BillingSection.d.ts.map +1 -1
  21. package/billing/BillingSection.js +7 -6
  22. package/billing/BillingSection.js.map +1 -1
  23. package/billing/ChangePlanDialog.d.ts.map +1 -1
  24. package/billing/ChangePlanDialog.js +13 -1
  25. package/billing/ChangePlanDialog.js.map +1 -1
  26. package/billing/CreditLedgerTable.d.ts +3 -3
  27. package/billing/CreditLedgerTable.d.ts.map +1 -1
  28. package/billing/CreditLedgerTable.js +3 -3
  29. package/billing/CreditLedgerTable.js.map +1 -1
  30. package/billing/CreditPackGrid.d.ts +1 -1
  31. package/billing/CreditPackGrid.js +1 -1
  32. package/billing/PaymentMethodCard.d.ts +1 -1
  33. package/billing/PaymentMethodCard.js +1 -1
  34. package/billing/PlanSection.d.ts +3 -3
  35. package/billing/PlanSection.d.ts.map +1 -1
  36. package/billing/PlanSection.js +4 -3
  37. package/billing/PlanSection.js.map +1 -1
  38. package/billing/ProviderKeysSection.d.ts +33 -0
  39. package/billing/ProviderKeysSection.d.ts.map +1 -0
  40. package/billing/ProviderKeysSection.js +143 -0
  41. package/billing/ProviderKeysSection.js.map +1 -0
  42. package/billing/UpgradeNotice.d.ts.map +1 -1
  43. package/billing/UpgradeNotice.js +1 -0
  44. package/billing/UpgradeNotice.js.map +1 -1
  45. package/billing/index.d.ts +4 -0
  46. package/billing/index.d.ts.map +1 -1
  47. package/billing/index.js +2 -0
  48. package/billing/index.js.map +1 -1
  49. package/billing/plan-features.d.ts +3 -2
  50. package/billing/plan-features.d.ts.map +1 -1
  51. package/billing/plan-features.js +5 -4
  52. package/billing/plan-features.js.map +1 -1
  53. package/billing/useBillingAccount.d.ts +4 -4
  54. package/billing/useBillingAccount.d.ts.map +1 -1
  55. package/billing/useBillingAccount.js +7 -7
  56. package/billing/useBillingAccount.js.map +1 -1
  57. package/billing/useBillingUsageReport.d.ts +4 -4
  58. package/billing/useBillingUsageReport.d.ts.map +1 -1
  59. package/billing/useBillingUsageReport.js +7 -7
  60. package/billing/useBillingUsageReport.js.map +1 -1
  61. package/billing/useChangePlan.d.ts +2 -2
  62. package/billing/useChangePlan.d.ts.map +1 -1
  63. package/billing/useChangePlan.js +4 -4
  64. package/billing/useChangePlan.js.map +1 -1
  65. package/billing/useCreateBillingPortalSession.d.ts +2 -2
  66. package/billing/useCreateBillingPortalSession.d.ts.map +1 -1
  67. package/billing/useCreateBillingPortalSession.js +3 -3
  68. package/billing/useCreateBillingPortalSession.js.map +1 -1
  69. package/billing/useCreateCheckoutSession.d.ts +2 -2
  70. package/billing/useCreateCheckoutSession.d.ts.map +1 -1
  71. package/billing/useCreateCheckoutSession.js +2 -2
  72. package/billing/useCreateCheckoutSession.js.map +1 -1
  73. package/billing/useCreatePaymentMethodSetupSession.d.ts +1 -1
  74. package/billing/useCreatePaymentMethodSetupSession.d.ts.map +1 -1
  75. package/billing/useCreatePaymentMethodSetupSession.js +2 -2
  76. package/billing/useCreatePaymentMethodSetupSession.js.map +1 -1
  77. package/billing/useCreditLedger.d.ts +4 -4
  78. package/billing/useCreditLedger.d.ts.map +1 -1
  79. package/billing/useCreditLedger.js +7 -7
  80. package/billing/useCreditLedger.js.map +1 -1
  81. package/billing/useCustomerModelPricing.d.ts +4 -4
  82. package/billing/useCustomerModelPricing.d.ts.map +1 -1
  83. package/billing/useCustomerModelPricing.js +6 -6
  84. package/billing/useCustomerModelPricing.js.map +1 -1
  85. package/billing/useEntitlements.d.ts +2 -2
  86. package/billing/useEntitlements.d.ts.map +1 -1
  87. package/billing/useEntitlements.js +4 -4
  88. package/billing/useEntitlements.js.map +1 -1
  89. package/billing/usePeriodEstimate.d.ts +1 -1
  90. package/billing/usePeriodEstimate.d.ts.map +1 -1
  91. package/billing/usePeriodEstimate.js +3 -3
  92. package/billing/usePeriodEstimate.js.map +1 -1
  93. package/billing/useProviderKeys.d.ts +67 -0
  94. package/billing/useProviderKeys.d.ts.map +1 -0
  95. package/billing/useProviderKeys.js +61 -0
  96. package/billing/useProviderKeys.js.map +1 -0
  97. package/billing/useSetAutoRechargeConfig.d.ts +2 -2
  98. package/billing/useSetAutoRechargeConfig.d.ts.map +1 -1
  99. package/billing/useSetAutoRechargeConfig.js +2 -2
  100. package/billing/useSetAutoRechargeConfig.js.map +1 -1
  101. package/billing/useSubscription.d.ts +3 -3
  102. package/billing/useSubscription.d.ts.map +1 -1
  103. package/billing/useSubscription.js +7 -7
  104. package/billing/useSubscription.js.map +1 -1
  105. package/channel/AgentChannelsPanel.d.ts.map +1 -1
  106. package/channel/AgentChannelsPanel.js +11 -9
  107. package/channel/AgentChannelsPanel.js.map +1 -1
  108. package/channel/connect/ServingAppSection.js +1 -1
  109. package/channel/connect/ServingAppSection.js.map +1 -1
  110. package/channel-app/ChannelAppDetailPanel.d.ts +2 -2
  111. package/channel-app/ChannelAppDetailPanel.js +17 -10
  112. package/channel-app/ChannelAppDetailPanel.js.map +1 -1
  113. package/channel-app/ChannelAppListPanel.d.ts +2 -2
  114. package/channel-app/ChannelAppListPanel.d.ts.map +1 -1
  115. package/channel-app/ChannelAppListPanel.js +2 -1
  116. package/channel-app/ChannelAppListPanel.js.map +1 -1
  117. package/channel-app/CreateChannelAppForm.js +1 -1
  118. package/channel-app/CreateChannelAppForm.js.map +1 -1
  119. package/channel-app/copy.d.ts +3 -3
  120. package/channel-app/copy.js +3 -3
  121. package/channel-app/internal.d.ts +9 -0
  122. package/channel-app/internal.d.ts.map +1 -1
  123. package/channel-app/internal.js +9 -0
  124. package/channel-app/internal.js.map +1 -1
  125. package/channel-app/slackAppSetup.d.ts +3 -24
  126. package/channel-app/slackAppSetup.d.ts.map +1 -1
  127. package/channel-app/slackAppSetup.js +6 -3
  128. package/channel-app/slackAppSetup.js.map +1 -1
  129. package/channel-app/whatsappAppSetup.d.ts +3 -27
  130. package/channel-app/whatsappAppSetup.d.ts.map +1 -1
  131. package/channel-app/whatsappAppSetup.js +5 -2
  132. package/channel-app/whatsappAppSetup.js.map +1 -1
  133. package/composer/SessionComposer.d.ts.map +1 -1
  134. package/composer/SessionComposer.js +5 -9
  135. package/composer/SessionComposer.js.map +1 -1
  136. package/cursor-accounts/CursorAccountEditor.js +3 -3
  137. package/cursor-accounts/CursorAccountEditor.js.map +1 -1
  138. package/cursor-accounts/CursorAccountsConsole.js +3 -3
  139. package/cursor-accounts/CursorAccountsConsole.js.map +1 -1
  140. package/dashboard/OperationalDashboard.d.ts +1 -4
  141. package/dashboard/OperationalDashboard.d.ts.map +1 -1
  142. package/dashboard/OperationalDashboard.js +1 -3
  143. package/dashboard/OperationalDashboard.js.map +1 -1
  144. package/dashboard/useDashboardSummary.d.ts +1 -3
  145. package/dashboard/useDashboardSummary.d.ts.map +1 -1
  146. package/dashboard/useDashboardSummary.js +1 -1
  147. package/dashboard/useDashboardSummary.js.map +1 -1
  148. package/environment/EnvironmentListPanel.d.ts.map +1 -1
  149. package/environment/EnvironmentListPanel.js +2 -1
  150. package/environment/EnvironmentListPanel.js.map +1 -1
  151. package/environment/EnvironmentVariableEditor.d.ts.map +1 -1
  152. package/environment/EnvironmentVariableEditor.js +3 -2
  153. package/environment/EnvironmentVariableEditor.js.map +1 -1
  154. package/environment/index.d.ts +1 -1
  155. package/environment/index.d.ts.map +1 -1
  156. package/environment/index.js +1 -1
  157. package/environment/index.js.map +1 -1
  158. package/environment/systemEnvVars.d.ts +4 -63
  159. package/environment/systemEnvVars.d.ts.map +1 -1
  160. package/environment/systemEnvVars.js +21 -113
  161. package/environment/systemEnvVars.js.map +1 -1
  162. package/execution/ArtifactFileContent.d.ts.map +1 -1
  163. package/execution/ArtifactFileContent.js +2 -1
  164. package/execution/ArtifactFileContent.js.map +1 -1
  165. package/execution/McpToolDetail.d.ts.map +1 -1
  166. package/execution/McpToolDetail.js +2 -1
  167. package/execution/McpToolDetail.js.map +1 -1
  168. package/execution/RecalledMemoriesCard.js +1 -1
  169. package/execution/ResultView.d.ts.map +1 -1
  170. package/execution/ResultView.js +2 -1
  171. package/execution/ResultView.js.map +1 -1
  172. package/execution/TerminalSession.js +1 -1
  173. package/execution/TerminalSession.js.map +1 -1
  174. package/execution/ThreadSkeleton.d.ts.map +1 -1
  175. package/execution/ThreadSkeleton.js +2 -1
  176. package/execution/ThreadSkeleton.js.map +1 -1
  177. package/execution/file-path-resolver.d.ts.map +1 -1
  178. package/execution/file-path-resolver.js +3 -2
  179. package/execution/file-path-resolver.js.map +1 -1
  180. package/execution/sandbox-path-normalizer.d.ts +0 -11
  181. package/execution/sandbox-path-normalizer.d.ts.map +1 -1
  182. package/execution/sandbox-path-normalizer.js +2 -1
  183. package/execution/sandbox-path-normalizer.js.map +1 -1
  184. package/github/parseGitUrl.d.ts.map +1 -1
  185. package/github/parseGitUrl.js +16 -4
  186. package/github/parseGitUrl.js.map +1 -1
  187. package/iam-policy/GrantAccessForm.d.ts +3 -3
  188. package/iam-policy/GrantAccessForm.d.ts.map +1 -1
  189. package/iam-policy/GrantAccessForm.js +3 -3
  190. package/iam-policy/GrantAccessForm.js.map +1 -1
  191. package/iam-policy/OrgMembersPanel.d.ts +3 -3
  192. package/iam-policy/OrgMembersPanel.d.ts.map +1 -1
  193. package/iam-policy/OrgMembersPanel.js +5 -4
  194. package/iam-policy/OrgMembersPanel.js.map +1 -1
  195. package/iam-policy/PeopleWithAccess.d.ts +2 -2
  196. package/iam-policy/PeopleWithAccess.d.ts.map +1 -1
  197. package/iam-policy/PeopleWithAccess.js +2 -2
  198. package/iam-policy/PeopleWithAccess.js.map +1 -1
  199. package/iam-policy/PrincipalPicker.d.ts +2 -2
  200. package/iam-policy/PrincipalPicker.d.ts.map +1 -1
  201. package/iam-policy/PrincipalPicker.js +2 -2
  202. package/iam-policy/PrincipalPicker.js.map +1 -1
  203. package/iam-policy/SharePanel.d.ts +3 -3
  204. package/iam-policy/SharePanel.d.ts.map +1 -1
  205. package/iam-policy/SharePanel.js +3 -3
  206. package/iam-policy/SharePanel.js.map +1 -1
  207. package/iam-policy/useCheckPermission.d.ts +4 -1
  208. package/iam-policy/useCheckPermission.d.ts.map +1 -1
  209. package/iam-policy/useCheckPermission.js +4 -1
  210. package/iam-policy/useCheckPermission.js.map +1 -1
  211. package/iam-policy/useCreateIamPolicy.d.ts +1 -1
  212. package/iam-policy/useCreateIamPolicy.js +1 -1
  213. package/iam-policy/useDeleteIamPolicy.d.ts +1 -1
  214. package/iam-policy/useDeleteIamPolicy.js +1 -1
  215. package/iam-policy/useGrantableRoles.d.ts +1 -1
  216. package/iam-policy/useGrantableRoles.js +1 -1
  217. package/iam-policy/useGranteeCandidates.d.ts +3 -3
  218. package/iam-policy/useGranteeCandidates.d.ts.map +1 -1
  219. package/iam-policy/useGranteeCandidates.js +2 -2
  220. package/iam-policy/useGranteeCandidates.js.map +1 -1
  221. package/iam-policy/useOwnerAssignment.d.ts +2 -2
  222. package/iam-policy/useOwnerAssignment.d.ts.map +1 -1
  223. package/iam-policy/useOwnerAssignment.js +3 -3
  224. package/iam-policy/useOwnerAssignment.js.map +1 -1
  225. package/iam-policy/usePrincipalsCount.d.ts +4 -4
  226. package/iam-policy/usePrincipalsCount.d.ts.map +1 -1
  227. package/iam-policy/usePrincipalsCount.js +7 -7
  228. package/iam-policy/usePrincipalsCount.js.map +1 -1
  229. package/iam-policy/useResourceAccess.d.ts +1 -1
  230. package/iam-policy/useResourceAccess.js +1 -1
  231. package/iam-policy/useRevokeOrgAccess.d.ts +11 -9
  232. package/iam-policy/useRevokeOrgAccess.d.ts.map +1 -1
  233. package/iam-policy/useRevokeOrgAccess.js +6 -6
  234. package/iam-policy/useRevokeOrgAccess.js.map +1 -1
  235. package/identity-account/AccountPreferencesPanel.d.ts +6 -0
  236. package/identity-account/AccountPreferencesPanel.d.ts.map +1 -1
  237. package/identity-account/AccountPreferencesPanel.js +35 -3
  238. package/identity-account/AccountPreferencesPanel.js.map +1 -1
  239. package/identity-account/useAccountExecutionDefaults.d.ts +1 -1
  240. package/identity-account/useAccountExecutionDefaults.d.ts.map +1 -1
  241. package/identity-account/useAccountExecutionDefaults.js +2 -3
  242. package/identity-account/useAccountExecutionDefaults.js.map +1 -1
  243. package/identity-provider/IdentityProviderDetailPanel.js +4 -4
  244. package/identity-provider/IdentityProviderDetailPanel.js.map +1 -1
  245. package/identity-provider/IdentityProviderListPanel.d.ts.map +1 -1
  246. package/identity-provider/IdentityProviderListPanel.js +2 -1
  247. package/identity-provider/IdentityProviderListPanel.js.map +1 -1
  248. package/identity-provider/IdentityProviderWizard.js +1 -1
  249. package/identity-provider/IdentityProviderWizard.js.map +1 -1
  250. package/identity-provider/SsoLoginPrompt.js +2 -1
  251. package/identity-provider/SsoLoginPrompt.js.map +1 -1
  252. package/identity-provider/useIdentityProviderList.d.ts +2 -2
  253. package/identity-provider/useIdentityProviderList.js +2 -2
  254. package/index.d.ts +4 -4
  255. package/index.d.ts.map +1 -1
  256. package/index.js +4 -4
  257. package/index.js.map +1 -1
  258. package/inline-edit/InlineEditImage.d.ts +4 -0
  259. package/inline-edit/InlineEditImage.d.ts.map +1 -1
  260. package/inline-edit/InlineEditImage.js +12 -11
  261. package/inline-edit/InlineEditImage.js.map +1 -1
  262. package/inline-edit/InlineEditText.d.ts +4 -0
  263. package/inline-edit/InlineEditText.d.ts.map +1 -1
  264. package/inline-edit/InlineEditText.js +12 -11
  265. package/inline-edit/InlineEditText.js.map +1 -1
  266. package/inline-edit/InlineEditTextarea.d.ts +4 -0
  267. package/inline-edit/InlineEditTextarea.d.ts.map +1 -1
  268. package/inline-edit/InlineEditTextarea.js +11 -16
  269. package/inline-edit/InlineEditTextarea.js.map +1 -1
  270. package/inline-edit/useInlineDraft.d.ts +26 -0
  271. package/inline-edit/useInlineDraft.d.ts.map +1 -0
  272. package/inline-edit/useInlineDraft.js +61 -0
  273. package/inline-edit/useInlineDraft.js.map +1 -0
  274. package/internal/DialogShell.d.ts +21 -0
  275. package/internal/DialogShell.d.ts.map +1 -1
  276. package/internal/DialogShell.js +51 -4
  277. package/internal/DialogShell.js.map +1 -1
  278. package/internal/LoadingRegion.d.ts +35 -0
  279. package/internal/LoadingRegion.d.ts.map +1 -0
  280. package/internal/LoadingRegion.js +33 -0
  281. package/internal/LoadingRegion.js.map +1 -0
  282. package/internal/UnknownPublicAddressNotice.d.ts +20 -0
  283. package/internal/UnknownPublicAddressNotice.d.ts.map +1 -0
  284. package/internal/UnknownPublicAddressNotice.js +19 -0
  285. package/internal/UnknownPublicAddressNotice.js.map +1 -0
  286. package/internal/features.js +2 -2
  287. package/internal/features.js.map +1 -1
  288. package/internal/markdown-components.d.ts.map +1 -1
  289. package/internal/markdown-components.js +18 -4
  290. package/internal/markdown-components.js.map +1 -1
  291. package/internal/trim.d.ts +7 -0
  292. package/internal/trim.d.ts.map +1 -0
  293. package/internal/trim.js +12 -0
  294. package/internal/trim.js.map +1 -0
  295. package/invitation/InvitationManager.d.ts.map +1 -1
  296. package/invitation/InvitationManager.js +2 -1
  297. package/invitation/InvitationManager.js.map +1 -1
  298. package/invitation/InvitationRedemption.d.ts.map +1 -1
  299. package/invitation/InvitationRedemption.js +5 -4
  300. package/invitation/InvitationRedemption.js.map +1 -1
  301. package/invitation/useInvitationPreview.d.ts +1 -1
  302. package/invitation/useInvitationPreview.js +1 -1
  303. package/library/InstanceVisibilitySelector.d.ts +1 -1
  304. package/library/InstanceVisibilitySelector.d.ts.map +1 -1
  305. package/library/ResourceVisibilityControl.d.ts +6 -3
  306. package/library/ResourceVisibilityControl.d.ts.map +1 -1
  307. package/library/ResourceVisibilityControl.js +7 -4
  308. package/library/ResourceVisibilityControl.js.map +1 -1
  309. package/library/VisibilitySelector.d.ts +2 -2
  310. package/library/VisibilitySelector.d.ts.map +1 -1
  311. package/library/VisibilitySelector.js +1 -1
  312. package/licenses/LicenseDetail.d.ts.map +1 -1
  313. package/licenses/LicenseDetail.js +3 -3
  314. package/licenses/LicenseDetail.js.map +1 -1
  315. package/licenses/LicenseIssueForm.js +7 -7
  316. package/licenses/LicenseIssueForm.js.map +1 -1
  317. package/licenses/license-draft.d.ts +1 -1
  318. package/licenses/license-draft.d.ts.map +1 -1
  319. package/licenses/license-draft.js +3 -3
  320. package/licenses/license-draft.js.map +1 -1
  321. package/licenses/license-format.d.ts +7 -5
  322. package/licenses/license-format.d.ts.map +1 -1
  323. package/licenses/license-format.js +2 -4
  324. package/licenses/license-format.js.map +1 -1
  325. package/mcp-server/McpServerConnectDialog.js +4 -5
  326. package/mcp-server/McpServerConnectDialog.js.map +1 -1
  327. package/mcp-server/McpServerDetailView.d.ts.map +1 -1
  328. package/mcp-server/McpServerDetailView.js +5 -7
  329. package/mcp-server/McpServerDetailView.js.map +1 -1
  330. package/mcp-server/McpServerPicker.d.ts.map +1 -1
  331. package/mcp-server/McpServerPicker.js +2 -6
  332. package/mcp-server/McpServerPicker.js.map +1 -1
  333. package/mcp-server/McpToolSelector.js +1 -1
  334. package/mcp-server/McpToolSelector.js.map +1 -1
  335. package/mcp-server/useMcpServerConnect.d.ts +14 -25
  336. package/mcp-server/useMcpServerConnect.d.ts.map +1 -1
  337. package/mcp-server/useMcpServerConnect.js +7 -19
  338. package/mcp-server/useMcpServerConnect.js.map +1 -1
  339. package/mcp-server/useMcpServerOAuthConnect.d.ts +1 -3
  340. package/mcp-server/useMcpServerOAuthConnect.d.ts.map +1 -1
  341. package/mcp-server/useMcpServerOAuthConnect.js +6 -19
  342. package/mcp-server/useMcpServerOAuthConnect.js.map +1 -1
  343. package/memory/MemoryListPanel.d.ts.map +1 -1
  344. package/memory/MemoryListPanel.js +2 -1
  345. package/memory/MemoryListPanel.js.map +1 -1
  346. package/models/HarnessSelector.d.ts.map +1 -1
  347. package/models/HarnessSelector.js +1 -2
  348. package/models/HarnessSelector.js.map +1 -1
  349. package/models/ModelSelector.d.ts +1 -1
  350. package/models/ModelSelector.d.ts.map +1 -1
  351. package/models/ModelSelector.js +1 -7
  352. package/models/ModelSelector.js.map +1 -1
  353. package/models/harness.d.ts +10 -6
  354. package/models/harness.d.ts.map +1 -1
  355. package/models/harness.js +35 -28
  356. package/models/harness.js.map +1 -1
  357. package/models/index.d.ts +1 -1
  358. package/models/index.d.ts.map +1 -1
  359. package/models/index.js +1 -1
  360. package/models/index.js.map +1 -1
  361. package/oauth-app/OAuthAppListPanel.d.ts.map +1 -1
  362. package/oauth-app/OAuthAppListPanel.js +2 -1
  363. package/oauth-app/OAuthAppListPanel.js.map +1 -1
  364. package/organization/OrgPreferencesPanel.d.ts +3 -3
  365. package/organization/OrgPreferencesPanel.d.ts.map +1 -1
  366. package/organization/OrgPreferencesPanel.js +19 -6
  367. package/organization/OrgPreferencesPanel.js.map +1 -1
  368. package/organization/OrgProfilePanel.d.ts +3 -3
  369. package/organization/OrgProfilePanel.d.ts.map +1 -1
  370. package/organization/OrgProfilePanel.js +8 -7
  371. package/organization/OrgProfilePanel.js.map +1 -1
  372. package/organization/index.d.ts +1 -0
  373. package/organization/index.d.ts.map +1 -1
  374. package/organization/index.js +1 -0
  375. package/organization/index.js.map +1 -1
  376. package/organization/useFollowSessionOrganization.d.ts +9 -0
  377. package/organization/useFollowSessionOrganization.d.ts.map +1 -0
  378. package/organization/useFollowSessionOrganization.js +52 -0
  379. package/organization/useFollowSessionOrganization.js.map +1 -0
  380. package/package.json +5 -5
  381. package/plan-catalog/plan-draft.js +3 -3
  382. package/plan-catalog/plan-draft.js.map +1 -1
  383. package/platform-client/PlatformClientListPanel.d.ts.map +1 -1
  384. package/platform-client/PlatformClientListPanel.js +2 -1
  385. package/platform-client/PlatformClientListPanel.js.map +1 -1
  386. package/plugin/PluginDetailView.d.ts.map +1 -1
  387. package/plugin/PluginDetailView.js +2 -1
  388. package/plugin/PluginDetailView.js.map +1 -1
  389. package/plugin/useMcpServerReadiness.js +2 -2
  390. package/plugin/useMcpServerReadiness.js.map +1 -1
  391. package/portal-container.d.ts +8 -0
  392. package/portal-container.d.ts.map +1 -1
  393. package/portal-container.js +8 -0
  394. package/portal-container.js.map +1 -1
  395. package/provider-standing/ProviderStandingConsole.js +1 -1
  396. package/provider.d.ts +31 -2
  397. package/provider.d.ts.map +1 -1
  398. package/provider.js +7 -3
  399. package/provider.js.map +1 -1
  400. package/public-base-url-context.d.ts +35 -0
  401. package/public-base-url-context.d.ts.map +1 -0
  402. package/public-base-url-context.js +63 -0
  403. package/public-base-url-context.js.map +1 -0
  404. package/resource-workbench/components/SelectionCheckbox.js +1 -1
  405. package/resource-workbench/components/SelectionCheckbox.js.map +1 -1
  406. package/schedule/ScheduleDetailView.d.ts.map +1 -1
  407. package/schedule/ScheduleDetailView.js +2 -1
  408. package/schedule/ScheduleDetailView.js.map +1 -1
  409. package/session/SessionViewer.d.ts +7 -2
  410. package/session/SessionViewer.d.ts.map +1 -1
  411. package/session/SessionViewer.js +7 -2
  412. package/session/SessionViewer.js.map +1 -1
  413. package/session/useLocalSessionWorker.d.ts +19 -3
  414. package/session/useLocalSessionWorker.d.ts.map +1 -1
  415. package/session/useLocalSessionWorker.js +37 -4
  416. package/session/useLocalSessionWorker.js.map +1 -1
  417. package/session/useSessionConversation.d.ts +10 -1
  418. package/session/useSessionConversation.d.ts.map +1 -1
  419. package/session/useSessionConversation.js +5 -3
  420. package/session/useSessionConversation.js.map +1 -1
  421. package/settings/ChannelAppsSection.d.ts +4 -4
  422. package/settings/ChannelAppsSection.js +4 -4
  423. package/settings/EnvironmentsSection.d.ts.map +1 -1
  424. package/settings/EnvironmentsSection.js +2 -1
  425. package/settings/EnvironmentsSection.js.map +1 -1
  426. package/settings/MembersSection.js +2 -2
  427. package/settings/MembersSection.js.map +1 -1
  428. package/settings/OrgPreferencesSection.js +1 -1
  429. package/settings/OrgPreferencesSection.js.map +1 -1
  430. package/settings/OrgProfileSection.js +1 -1
  431. package/settings/OrgProfileSection.js.map +1 -1
  432. package/settings/ProviderKeysSection.d.ts +3 -0
  433. package/settings/ProviderKeysSection.d.ts.map +1 -0
  434. package/settings/ProviderKeysSection.js +3 -0
  435. package/settings/ProviderKeysSection.js.map +1 -0
  436. package/settings/TeamsSection.js +1 -1
  437. package/settings/TeamsSection.js.map +1 -1
  438. package/settings/UsageSection.js +1 -1
  439. package/settings/UsageSection.js.map +1 -1
  440. package/settings/index.d.ts +2 -0
  441. package/settings/index.d.ts.map +1 -1
  442. package/settings/index.js +1 -0
  443. package/settings/index.js.map +1 -1
  444. package/settings/settings-nav.d.ts.map +1 -1
  445. package/settings/settings-nav.js +2 -1
  446. package/settings/settings-nav.js.map +1 -1
  447. package/sharing/ShareAgentDialog.d.ts.map +1 -1
  448. package/sharing/ShareAgentDialog.js +14 -9
  449. package/sharing/ShareAgentDialog.js.map +1 -1
  450. package/sharing/SharedAgentChat.d.ts.map +1 -1
  451. package/sharing/SharedAgentChat.js +2 -1
  452. package/sharing/SharedAgentChat.js.map +1 -1
  453. package/sharing/useCanCreateAgentShare.d.ts +3 -1
  454. package/sharing/useCanCreateAgentShare.d.ts.map +1 -1
  455. package/sharing/useCanCreateAgentShare.js +5 -3
  456. package/sharing/useCanCreateAgentShare.js.map +1 -1
  457. package/sharing/useSaveAgentShare.d.ts +1 -1
  458. package/sharing/useSaveAgentShare.js +1 -1
  459. package/sidebar/WorkspaceSidebar.d.ts.map +1 -1
  460. package/sidebar/WorkspaceSidebar.js +2 -1
  461. package/sidebar/WorkspaceSidebar.js.map +1 -1
  462. package/skill/SkillDetailView.d.ts.map +1 -1
  463. package/skill/SkillDetailView.js +2 -1
  464. package/skill/SkillDetailView.js.map +1 -1
  465. package/skill/SkillDiffDialog.d.ts.map +1 -1
  466. package/skill/SkillDiffDialog.js +2 -1
  467. package/skill/SkillDiffDialog.js.map +1 -1
  468. package/skill/SkillFileBrowser.d.ts.map +1 -1
  469. package/skill/SkillFileBrowser.js +2 -1
  470. package/skill/SkillFileBrowser.js.map +1 -1
  471. package/src/access/ManageAccessButton.tsx +1 -1
  472. package/src/access/ManageAccessDialog.tsx +2 -2
  473. package/src/access/types.ts +1 -1
  474. package/src/agent/AgentDetailView.tsx +4 -4
  475. package/src/api-key/ApiKeyListPanel.tsx +4 -4
  476. package/src/attachment/AttachmentImageLightbox.tsx +3 -4
  477. package/src/billing/AutoRechargeCard.tsx +5 -5
  478. package/src/billing/BillingSection.tsx +10 -9
  479. package/src/billing/ChangePlanDialog.tsx +14 -2
  480. package/src/billing/CreditLedgerTable.tsx +4 -4
  481. package/src/billing/CreditPackGrid.tsx +1 -1
  482. package/src/billing/PaymentMethodCard.tsx +1 -1
  483. package/src/billing/PlanSection.tsx +6 -5
  484. package/src/billing/ProviderKeysSection.tsx +324 -0
  485. package/src/billing/UpgradeNotice.tsx +1 -0
  486. package/src/billing/index.ts +9 -0
  487. package/src/billing/plan-features.ts +5 -4
  488. package/src/billing/useBillingAccount.ts +7 -7
  489. package/src/billing/useBillingUsageReport.ts +7 -7
  490. package/src/billing/useChangePlan.ts +6 -6
  491. package/src/billing/useCreateBillingPortalSession.ts +4 -4
  492. package/src/billing/useCreateCheckoutSession.ts +3 -3
  493. package/src/billing/useCreatePaymentMethodSetupSession.ts +3 -3
  494. package/src/billing/useCreditLedger.ts +7 -7
  495. package/src/billing/useCustomerModelPricing.ts +7 -7
  496. package/src/billing/useEntitlements.ts +5 -5
  497. package/src/billing/usePeriodEstimate.ts +4 -4
  498. package/src/billing/useProviderKeys.ts +129 -0
  499. package/src/billing/useSetAutoRechargeConfig.ts +3 -3
  500. package/src/billing/useSubscription.ts +7 -7
  501. package/src/channel/AgentChannelsPanel.tsx +11 -9
  502. package/src/channel/connect/ServingAppSection.tsx +1 -1
  503. package/src/channel-app/ChannelAppDetailPanel.tsx +37 -20
  504. package/src/channel-app/ChannelAppListPanel.tsx +6 -6
  505. package/src/channel-app/CreateChannelAppForm.tsx +0 -1
  506. package/src/channel-app/copy.ts +3 -3
  507. package/src/channel-app/internal.tsx +21 -0
  508. package/src/channel-app/slackAppSetup.ts +6 -3
  509. package/src/channel-app/whatsappAppSetup.ts +5 -2
  510. package/src/composer/SessionComposer.tsx +5 -14
  511. package/src/cursor-accounts/CursorAccountEditor.tsx +3 -3
  512. package/src/cursor-accounts/CursorAccountsConsole.tsx +5 -5
  513. package/src/dashboard/OperationalDashboard.tsx +1 -6
  514. package/src/dashboard/useDashboardSummary.ts +2 -4
  515. package/src/environment/EnvironmentListPanel.tsx +4 -4
  516. package/src/environment/EnvironmentVariableEditor.tsx +5 -5
  517. package/src/environment/index.ts +1 -7
  518. package/src/environment/systemEnvVars.ts +21 -133
  519. package/src/execution/ArtifactFileContent.tsx +3 -2
  520. package/src/execution/McpToolDetail.tsx +3 -3
  521. package/src/execution/RecalledMemoriesCard.tsx +1 -1
  522. package/src/execution/ResultView.tsx +3 -3
  523. package/src/execution/TerminalSession.tsx +1 -1
  524. package/src/execution/ThreadSkeleton.tsx +4 -4
  525. package/src/execution/file-path-resolver.ts +3 -2
  526. package/src/execution/sandbox-path-normalizer.ts +2 -1
  527. package/src/github/parseGitUrl.ts +13 -4
  528. package/src/iam-policy/GrantAccessForm.tsx +4 -4
  529. package/src/iam-policy/OrgMembersPanel.tsx +10 -8
  530. package/src/iam-policy/PeopleWithAccess.tsx +3 -3
  531. package/src/iam-policy/PrincipalPicker.tsx +3 -3
  532. package/src/iam-policy/SharePanel.tsx +4 -4
  533. package/src/iam-policy/useCheckPermission.ts +4 -1
  534. package/src/iam-policy/useCreateIamPolicy.ts +1 -1
  535. package/src/iam-policy/useDeleteIamPolicy.ts +1 -1
  536. package/src/iam-policy/useGrantableRoles.ts +1 -1
  537. package/src/iam-policy/useGranteeCandidates.ts +3 -3
  538. package/src/iam-policy/useOwnerAssignment.ts +3 -3
  539. package/src/iam-policy/usePrincipalsCount.ts +7 -7
  540. package/src/iam-policy/useResourceAccess.ts +1 -1
  541. package/src/iam-policy/useRevokeOrgAccess.ts +13 -11
  542. package/src/identity-account/AccountPreferencesPanel.tsx +60 -13
  543. package/src/identity-account/useAccountExecutionDefaults.ts +2 -5
  544. package/src/identity-provider/IdentityProviderDetailPanel.tsx +3 -9
  545. package/src/identity-provider/IdentityProviderListPanel.tsx +4 -4
  546. package/src/identity-provider/IdentityProviderWizard.tsx +1 -1
  547. package/src/identity-provider/SsoLoginPrompt.tsx +6 -5
  548. package/src/identity-provider/useIdentityProviderList.ts +2 -2
  549. package/src/index.ts +10 -5
  550. package/src/inline-edit/InlineEditImage.tsx +13 -11
  551. package/src/inline-edit/InlineEditText.tsx +13 -11
  552. package/src/inline-edit/InlineEditTextarea.tsx +12 -16
  553. package/src/inline-edit/useInlineDraft.ts +85 -0
  554. package/src/internal/DialogShell.tsx +80 -3
  555. package/src/internal/LoadingRegion.tsx +46 -0
  556. package/src/internal/UnknownPublicAddressNotice.tsx +31 -0
  557. package/src/internal/features.ts +2 -2
  558. package/src/internal/loading-region-markup.json +71 -0
  559. package/src/internal/markdown-components.tsx +15 -4
  560. package/src/internal/trim.ts +10 -0
  561. package/src/invitation/InvitationManager.tsx +4 -4
  562. package/src/invitation/InvitationRedemption.tsx +7 -7
  563. package/src/invitation/useInvitationPreview.ts +1 -1
  564. package/src/library/InstanceVisibilitySelector.tsx +1 -1
  565. package/src/library/ResourceVisibilityControl.tsx +7 -4
  566. package/src/library/VisibilitySelector.tsx +2 -2
  567. package/src/licenses/LicenseDetail.tsx +8 -6
  568. package/src/licenses/LicenseIssueForm.tsx +7 -7
  569. package/src/licenses/license-draft.ts +4 -4
  570. package/src/licenses/license-format.ts +12 -8
  571. package/src/mcp-server/McpServerConnectDialog.tsx +4 -6
  572. package/src/mcp-server/McpServerDetailView.tsx +7 -10
  573. package/src/mcp-server/McpServerPicker.tsx +2 -12
  574. package/src/mcp-server/McpToolSelector.tsx +1 -1
  575. package/src/mcp-server/useMcpServerConnect.ts +14 -33
  576. package/src/mcp-server/useMcpServerOAuthConnect.ts +7 -23
  577. package/src/memory/MemoryListPanel.tsx +4 -4
  578. package/src/models/HarnessSelector.tsx +1 -3
  579. package/src/models/ModelSelector.tsx +2 -7
  580. package/src/models/harness.ts +41 -39
  581. package/src/models/index.ts +1 -1
  582. package/src/oauth-app/OAuthAppListPanel.tsx +4 -4
  583. package/src/organization/OrgPreferencesPanel.tsx +28 -10
  584. package/src/organization/OrgProfilePanel.tsx +12 -12
  585. package/src/organization/index.ts +1 -0
  586. package/src/organization/useFollowSessionOrganization.ts +54 -0
  587. package/src/plan-catalog/plan-draft.ts +3 -3
  588. package/src/platform-client/PlatformClientListPanel.tsx +4 -4
  589. package/src/plugin/PluginDetailView.tsx +3 -2
  590. package/src/plugin/useMcpServerReadiness.ts +2 -2
  591. package/src/portal-container.ts +8 -0
  592. package/src/provider-standing/ProviderStandingConsole.tsx +1 -1
  593. package/src/provider.tsx +60 -27
  594. package/src/public-base-url-context.ts +71 -0
  595. package/src/resource-workbench/components/SelectionCheckbox.tsx +1 -1
  596. package/src/schedule/ScheduleDetailView.tsx +4 -4
  597. package/src/session/SessionViewer.tsx +13 -3
  598. package/src/session/useLocalSessionWorker.ts +35 -4
  599. package/src/session/useSessionConversation.ts +14 -3
  600. package/src/settings/ChannelAppsSection.tsx +4 -4
  601. package/src/settings/EnvironmentsSection.tsx +3 -2
  602. package/src/settings/MembersSection.tsx +3 -3
  603. package/src/settings/OrgPreferencesSection.tsx +1 -1
  604. package/src/settings/OrgProfileSection.tsx +1 -1
  605. package/src/settings/ProviderKeysSection.tsx +4 -0
  606. package/src/settings/TeamsSection.tsx +1 -1
  607. package/src/settings/UsageSection.tsx +1 -1
  608. package/src/settings/index.ts +2 -0
  609. package/src/settings/settings-nav.ts +2 -0
  610. package/src/sharing/ShareAgentDialog.tsx +32 -15
  611. package/src/sharing/SharedAgentChat.tsx +4 -4
  612. package/src/sharing/useCanCreateAgentShare.ts +6 -4
  613. package/src/sharing/useSaveAgentShare.ts +1 -1
  614. package/src/sidebar/WorkspaceSidebar.tsx +3 -2
  615. package/src/skill/SkillDetailView.tsx +4 -4
  616. package/src/skill/SkillDiffDialog.tsx +4 -4
  617. package/src/skill/SkillFileBrowser.tsx +4 -4
  618. package/src/styles.css +14 -4
  619. package/src/team/TeamDetailPanel.tsx +3 -3
  620. package/src/team/TeamListPanel.tsx +3 -2
  621. package/src/team/TeamMembersPanel.tsx +3 -3
  622. package/src/usage/OrgUsagePanel.tsx +9 -9
  623. package/src/usage/useExportCSV.ts +9 -9
  624. package/src/usage/useOrgUsageReport.ts +7 -7
  625. package/src/version-history/VersionTimeline.tsx +4 -4
  626. package/src/workflow/WorkflowTaskApprovalSummary.tsx +14 -7
  627. package/src/workflow/WorkflowVersionDiffViewer.tsx +4 -4
  628. package/src/workflow/WorkflowVersionTimeline.tsx +4 -4
  629. package/src/workflow/inspector/tabs/BranchesTab.tsx +2 -2
  630. package/src/workflow/inspector/tabs/CatchTab.tsx +1 -1
  631. package/src/workflow/inspector/tabs/IterationTab.tsx +1 -1
  632. package/src/workflow/instance/WorkflowInstanceDetailPanel.tsx +7 -6
  633. package/src/workflow/task-detail/task-approval.ts +20 -13
  634. package/src/workflow/useDiagnoseExecutionFlow.ts +23 -18
  635. package/src/workflow/useExplainWorkflowFlow.ts +7 -3
  636. package/src/workflow/useRefineWorkflowFlow.ts +17 -10
  637. package/src/workflow/useWorkflowArchitectFlow.ts +7 -3
  638. package/src/workspace/ExplorerTree.tsx +4 -8
  639. package/src/workspace/FileViewer.tsx +4 -5
  640. package/styles.css +1 -1
  641. package/team/TeamDetailPanel.d.ts +2 -2
  642. package/team/TeamDetailPanel.d.ts.map +1 -1
  643. package/team/TeamDetailPanel.js +2 -2
  644. package/team/TeamDetailPanel.js.map +1 -1
  645. package/team/TeamListPanel.d.ts.map +1 -1
  646. package/team/TeamListPanel.js +2 -1
  647. package/team/TeamListPanel.js.map +1 -1
  648. package/team/TeamMembersPanel.d.ts +2 -2
  649. package/team/TeamMembersPanel.d.ts.map +1 -1
  650. package/team/TeamMembersPanel.js +2 -2
  651. package/team/TeamMembersPanel.js.map +1 -1
  652. package/usage/OrgUsagePanel.d.ts +3 -3
  653. package/usage/OrgUsagePanel.d.ts.map +1 -1
  654. package/usage/OrgUsagePanel.js +6 -5
  655. package/usage/OrgUsagePanel.js.map +1 -1
  656. package/usage/useExportCSV.d.ts +2 -2
  657. package/usage/useExportCSV.d.ts.map +1 -1
  658. package/usage/useExportCSV.js +9 -9
  659. package/usage/useExportCSV.js.map +1 -1
  660. package/usage/useOrgUsageReport.d.ts +4 -4
  661. package/usage/useOrgUsageReport.d.ts.map +1 -1
  662. package/usage/useOrgUsageReport.js +7 -7
  663. package/usage/useOrgUsageReport.js.map +1 -1
  664. package/version-history/VersionTimeline.d.ts.map +1 -1
  665. package/version-history/VersionTimeline.js +2 -1
  666. package/version-history/VersionTimeline.js.map +1 -1
  667. package/workflow/WorkflowTaskApprovalSummary.d.ts +7 -4
  668. package/workflow/WorkflowTaskApprovalSummary.d.ts.map +1 -1
  669. package/workflow/WorkflowTaskApprovalSummary.js +8 -3
  670. package/workflow/WorkflowTaskApprovalSummary.js.map +1 -1
  671. package/workflow/WorkflowVersionDiffViewer.d.ts.map +1 -1
  672. package/workflow/WorkflowVersionDiffViewer.js +2 -1
  673. package/workflow/WorkflowVersionDiffViewer.js.map +1 -1
  674. package/workflow/WorkflowVersionTimeline.d.ts.map +1 -1
  675. package/workflow/WorkflowVersionTimeline.js +2 -1
  676. package/workflow/WorkflowVersionTimeline.js.map +1 -1
  677. package/workflow/inspector/tabs/BranchesTab.js +1 -1
  678. package/workflow/inspector/tabs/BranchesTab.js.map +1 -1
  679. package/workflow/inspector/tabs/CatchTab.js +1 -1
  680. package/workflow/inspector/tabs/CatchTab.js.map +1 -1
  681. package/workflow/inspector/tabs/IterationTab.js +1 -1
  682. package/workflow/inspector/tabs/IterationTab.js.map +1 -1
  683. package/workflow/instance/WorkflowInstanceDetailPanel.d.ts.map +1 -1
  684. package/workflow/instance/WorkflowInstanceDetailPanel.js +6 -5
  685. package/workflow/instance/WorkflowInstanceDetailPanel.js.map +1 -1
  686. package/workflow/task-detail/task-approval.d.ts +13 -11
  687. package/workflow/task-detail/task-approval.d.ts.map +1 -1
  688. package/workflow/task-detail/task-approval.js +8 -4
  689. package/workflow/task-detail/task-approval.js.map +1 -1
  690. package/workflow/useDiagnoseExecutionFlow.d.ts.map +1 -1
  691. package/workflow/useDiagnoseExecutionFlow.js +23 -18
  692. package/workflow/useDiagnoseExecutionFlow.js.map +1 -1
  693. package/workflow/useExplainWorkflowFlow.d.ts.map +1 -1
  694. package/workflow/useExplainWorkflowFlow.js +7 -3
  695. package/workflow/useExplainWorkflowFlow.js.map +1 -1
  696. package/workflow/useRefineWorkflowFlow.d.ts.map +1 -1
  697. package/workflow/useRefineWorkflowFlow.js +14 -10
  698. package/workflow/useRefineWorkflowFlow.js.map +1 -1
  699. package/workflow/useWorkflowArchitectFlow.d.ts.map +1 -1
  700. package/workflow/useWorkflowArchitectFlow.js +7 -3
  701. package/workflow/useWorkflowArchitectFlow.js.map +1 -1
  702. package/workspace/ExplorerTree.d.ts.map +1 -1
  703. package/workspace/ExplorerTree.js +2 -5
  704. package/workspace/ExplorerTree.js.map +1 -1
  705. package/workspace/FileViewer.d.ts.map +1 -1
  706. package/workspace/FileViewer.js +2 -1
  707. package/workspace/FileViewer.js.map +1 -1
@@ -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
 
@@ -496,7 +496,9 @@ function RemoveCopy({
496
496
  case "member":
497
497
  return (
498
498
  <>
499
- Remove {name} from this organization? This revokes all their access.
499
+ Remove {name} from this organization? They lose access to everything
500
+ in it, including what was shared with them and their teams. What
501
+ they created stays with the organization.
500
502
  </>
501
503
  );
502
504
  case "productUser":
@@ -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
  );
@@ -69,7 +69,10 @@ interface SettledCheck {
69
69
  * `false` (so operator-only navigation never appears where the seat
70
70
  * does not exist), `can_grant_access` on a resource the edition does not
71
71
  * share per person is `false` (open source grants roles on organizations
72
- * only), and everything else is the edition's authorizer's answer. By
72
+ * only), and everything else is the edition's authorizer's answer. So a
73
+ * control that changes who reaches a resource (its visibility, a share, a
74
+ * channel) asks `can_manage_audience`, never `can_grant_access`: the owner
75
+ * holds it in every edition. By
73
76
  * default the hook *fails open* while the check is in flight or when the
74
77
  * RPC fails, so a transient error never hides a control the server would
75
78
  * honor. Pass `{ fail: "closed" }` for surfaces that must stay hidden
@@ -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
  * ```
@@ -26,7 +26,7 @@ export interface UseGrantableRolesReturn {
26
26
  * @example
27
27
  * ```tsx
28
28
  * const { roles, hasRoles } = useGrantableRoles(ApiResourceKind.agent);
29
- * // roles = [IamRole.owner, IamRole.viewer]
29
+ * // roles = [IamRole.owner, IamRole.editor, IamRole.viewer]
30
30
  * // hasRoles = true
31
31
  * ```
32
32
  */
@@ -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
  * ```
@@ -9,13 +9,15 @@ import { toError } from "../internal/toError.js";
9
9
  /** Return value of {@link useRevokeOrgAccess}. */
10
10
  export interface UseRevokeOrgAccessReturn {
11
11
  /**
12
- * Remove all of a user's access to an organization.
12
+ * Remove a person from an organization.
13
13
  *
14
- * Deletes every IAM policy granting the identity account access
15
- * to the organization and its child resources (agents, environments,
16
- * etc.) in a single operation.
14
+ * Revokes their roles on the organization and everything they hold on
15
+ * its resources: what was shared with them (agents, environments,
16
+ * sessions and the rest) and their team memberships, in a single
17
+ * operation. What they created stays with the organization; it is
18
+ * theirs again only if they are invited back.
17
19
  */
18
- readonly revoke: (accountId: string, orgId: string) => Promise<void>;
20
+ readonly revoke: (accountId: string, org: string) => Promise<void>;
19
21
  /** `true` while the revoke request is in flight. */
20
22
  readonly isRevoking: boolean;
21
23
  /** Error from the last failed revoke, or `null` when healthy. */
@@ -28,10 +30,10 @@ export interface UseRevokeOrgAccessReturn {
28
30
  * Behavior hook that wraps `iamPolicy.revokeOrgAccess()` with
29
31
  * loading/error state.
30
32
  *
31
- * Removes all IAM policy bindings for a specific identity account
32
- * within an organization — including bindings on child resources
33
- * (agents, environments, etc.). This is the "remove member from org"
34
- * operation.
33
+ * Removes a person from an organization: their roles on it, what was
34
+ * shared with them on its resources and their team memberships. From
35
+ * then on they reach nothing in the organization; what they created
36
+ * stays with it. This is the "remove member from org" operation.
35
37
  *
36
38
  * @example
37
39
  * ```tsx
@@ -49,7 +51,7 @@ export function useRevokeOrgAccess(): UseRevokeOrgAccessReturn {
49
51
  const clearError = useCallback(() => setError(null), []);
50
52
 
51
53
  const revoke = useCallback(
52
- async (accountId: string, orgId: string): Promise<void> => {
54
+ async (accountId: string, org: string): Promise<void> => {
53
55
  setIsRevoking(true);
54
56
  setError(null);
55
57
 
@@ -57,7 +59,7 @@ export function useRevokeOrgAccess(): UseRevokeOrgAccessReturn {
57
59
  await stigmer.iamPolicy.revokeOrgAccess(
58
60
  create(RevokeOrgAccessInputSchema, {
59
61
  identityAccountId: accountId,
60
- organizationId: orgId,
62
+ org,
61
63
  }),
62
64
  );
63
65
  } catch (err) {
@@ -15,11 +15,13 @@ import type { IdentityAccount } from "@stigmer/protos/ai/stigmer/iam/identityacc
15
15
  import { useMyIdentityAccount } from "./useMyIdentityAccount.js";
16
16
  import { useUpdateIdentityAccount } from "./useUpdateIdentityAccount.js";
17
17
  import { useModelRegistry } from "../models/index.js";
18
+ import { useServerInfo } from "../server-info.js";
18
19
  import { HARNESS_META, type HarnessOption } from "../models/harness.js";
19
20
  import { MemoryEnabledRow } from "../internal/MemoryEnabledRow.js";
20
21
  import { StandingContextField } from "../internal/StandingContextField.js";
21
22
  import { SpinnerIcon } from "../internal/SpinnerIcon.js";
22
23
  import { Switch } from "../switch/Switch.js";
24
+ import { LoadingRegion } from "../internal/LoadingRegion.js";
23
25
 
24
26
  /** Props for {@link AccountPreferencesPanel}. */
25
27
  export interface AccountPreferencesPanelProps {
@@ -49,6 +51,12 @@ export interface AccountPreferencesPanelProps {
49
51
  * answer with. A server that cannot answer surfaces its error through the
50
52
  * fetch-error state below, never a hidden branch.
51
53
  *
54
+ * The one posture question it does ask is about memory. The person's own
55
+ * memory switch is honoured only by a server that authenticates its
56
+ * callers; on a server that trusts every request (the single-operator
57
+ * laptop), memory is the organization's switch alone, so the panel says
58
+ * that in the switch's place rather than offering one that does nothing.
59
+ *
52
60
  * All visual properties flow through `--stgm-*` design tokens. Zero
53
61
  * dependencies on Console routing, auth context, or layout — platform
54
62
  * builders can embed it directly:
@@ -86,6 +94,8 @@ export function AccountPreferencesPanel({
86
94
  error: memoryFlagError,
87
95
  } = useUpdateIdentityAccount();
88
96
 
97
+ const memoryGovernance = useMemoryGovernance();
98
+
89
99
  const [standingContext, setStandingContext] = useState("");
90
100
  const [defaultHarness, setDefaultHarness] = useState("");
91
101
  const [defaultNativeModel, setDefaultNativeModel] = useState("");
@@ -223,14 +233,13 @@ export function AccountPreferencesPanel({
223
233
 
224
234
  if (isFetching && !account) {
225
235
  return (
226
- <div
236
+ <LoadingRegion
227
237
  className={cn("stg:space-y-4", className)}
228
- aria-busy="true"
229
- aria-label="Loading account preferences"
238
+ label="Loading account preferences"
230
239
  >
231
240
  <div className="stg:bg-muted-subtle stg:h-28 stg:animate-pulse stg:rounded" />
232
241
  <div className="stg:bg-muted-subtle stg:h-8 stg:w-32 stg:animate-pulse stg:rounded" />
233
- </div>
242
+ </LoadingRegion>
234
243
  );
235
244
  }
236
245
 
@@ -377,14 +386,17 @@ export function AccountPreferencesPanel({
377
386
  </div>
378
387
  </div>
379
388
 
380
- <MemoryEnabledRow
381
- id={`${baseId}-memory-enabled`}
382
- checked={account.spec?.preferences?.memoryEnabled ?? false}
383
- onToggle={(next) => void handleMemoryToggle(next)}
384
- saving={isSavingMemoryFlag}
385
- error={memoryFlagError}
386
- helperText="When on, agents may propose facts to remember about you; only facts you confirm are stored. Confirmed memories are shared with your future sessions and appear on those executions' records; once you have many, each conversation recalls the most relevant ones, shown on the execution. Requires your organization to have memory enabled. Changes apply immediately."
387
- />
389
+ {memoryGovernance === "organization" && <OrganizationGovernedMemory />}
390
+ {memoryGovernance === "person" && (
391
+ <MemoryEnabledRow
392
+ id={`${baseId}-memory-enabled`}
393
+ checked={account.spec?.preferences?.memoryEnabled ?? false}
394
+ onToggle={(next) => void handleMemoryToggle(next)}
395
+ saving={isSavingMemoryFlag}
396
+ error={memoryFlagError}
397
+ helperText="When on, agents may propose facts to remember about you; only facts you confirm are stored. Confirmed memories are shared with your future sessions and appear on those executions' records; once you have many, each conversation recalls the most relevant ones, shown on the execution. Requires your organization to have memory enabled. Changes apply immediately."
398
+ />
399
+ )}
388
400
 
389
401
  {updateError && (
390
402
  <p className="stg:text-destructive stg:text-[0.65rem]" role="alert">
@@ -494,7 +506,7 @@ function HarnessOptionRow({
494
506
  disabled={disabled}
495
507
  aria-labelledby={titleId}
496
508
  aria-describedby={descriptionId}
497
- className="stg:mt-0.5 stg:accent-primary stg:focus-visible:outline-none stg:focus-visible:ring-1 stg:focus-visible:ring-ring"
509
+ className="stg:mt-0.5 stg:focus-visible:outline-none stg:focus-visible:ring-1 stg:focus-visible:ring-ring"
498
510
  />
499
511
  <span className="stg:min-w-0 stg:flex-1">
500
512
  <span
@@ -584,3 +596,38 @@ function DefaultModelSelect({
584
596
  </div>
585
597
  );
586
598
  }
599
+
600
+ /**
601
+ * Who decides memory on the connected server, for the memory row.
602
+ *
603
+ * - `"person"`: the person's own switch counts (a server that authenticates
604
+ * its callers, one too old to report its posture, or one whose answer
605
+ * failed: an unknown posture offers the control and lets the server
606
+ * decide, as `authentication_required`'s contract says).
607
+ * - `"organization"`: the server trusts every request, so its one operator
608
+ * decides memory through the organization's switch alone.
609
+ * - `null`: the server has not answered yet, so the row renders nothing
610
+ * rather than a switch that flashes and disappears.
611
+ */
612
+ function useMemoryGovernance(): "person" | "organization" | null {
613
+ const { serverInfo, error } = useServerInfo();
614
+ if (serverInfo !== null) {
615
+ return serverInfo.authenticationRequired === false ? "organization" : "person";
616
+ }
617
+ return error !== null ? "person" : null;
618
+ }
619
+
620
+ /** The memory row on a server where the organization's switch alone decides. */
621
+ function OrganizationGovernedMemory() {
622
+ return (
623
+ <div className="stg:space-y-1">
624
+ <span className="stg:block stg:text-xs stg:font-medium stg:text-foreground">
625
+ Memory
626
+ </span>
627
+ <p className="stg:text-[0.65rem] stg:leading-snug stg:text-muted-foreground">
628
+ On this server, memory follows your organization&apos;s setting. Turn it
629
+ on or off in the organization&apos;s preferences.
630
+ </p>
631
+ </div>
632
+ );
633
+ }
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { useMemo } from "react";
4
4
  import { useMyIdentityAccount } from "./useMyIdentityAccount.js";
5
- import type { HarnessOption } from "../models/harness.js";
5
+ import { isHarnessOption, type HarnessOption } from "../models/harness.js";
6
6
 
7
7
  /**
8
8
  * The current user's account-level execution defaults, shaped for the
@@ -57,10 +57,7 @@ export function useAccountExecutionDefaults(): AccountExecutionDefaults | undefi
57
57
  // The proto validates default_harness to the shipped set, but a client
58
58
  // must not trust persisted data it did not write — unknown values are
59
59
  // treated as undeclared.
60
- const harness =
61
- prefs.defaultHarness === "native" || prefs.defaultHarness === "cursor"
62
- ? (prefs.defaultHarness satisfies HarnessOption)
63
- : undefined;
60
+ const harness = isHarnessOption(prefs.defaultHarness) ? prefs.defaultHarness : undefined;
64
61
  const nativeModel = prefs.defaultNativeModel || undefined;
65
62
  const cursorModel = prefs.defaultCursorModel || undefined;
66
63
  // Only a declared `true` travels — an unset bool is "no preference",
@@ -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 && (
@@ -10,6 +10,7 @@ import { Tooltip, TooltipContent, TooltipTrigger } from "../internal/tooltip.js"
10
10
  import { useIdentityProviderList } from "./useIdentityProviderList.js";
11
11
  import { useDeleteIdentityProvider } from "./useDeleteIdentityProvider.js";
12
12
  import { SpinnerIcon } from "../internal/SpinnerIcon.js";
13
+ import { LoadingRegion } from "../internal/LoadingRegion.js";
13
14
 
14
15
  /** Props for {@link IdentityProviderListPanel}. */
15
16
  export interface IdentityProviderListPanelProps {
@@ -75,10 +76,9 @@ export function IdentityProviderListPanel({
75
76
 
76
77
  if (isLoading) {
77
78
  return (
78
- <div
79
+ <LoadingRegion
79
80
  className={cn("stg:space-y-2", className)}
80
- aria-busy="true"
81
- aria-label="Loading identity providers"
81
+ label="Loading identity providers"
82
82
  >
83
83
  {Array.from({ length: 2 }, (_, i) => (
84
84
  <div
@@ -86,7 +86,7 @@ export function IdentityProviderListPanel({
86
86
  className="stg:bg-muted-subtle stg:h-14 stg:animate-pulse stg:rounded-lg"
87
87
  />
88
88
  ))}
89
- </div>
89
+ </LoadingRegion>
90
90
  );
91
91
  }
92
92
 
@@ -557,7 +557,7 @@ function ReviewStep({
557
557
  value={userinfoEndpoint}
558
558
  onChange={onUserinfoEndpointChange}
559
559
  placeholder="https://example.com/userinfo"
560
- hint="Optional — used to fetch user profile data during token exchange"
560
+ hint="Optional. Read only when Stigmer creates an account from a token with no email claim"
561
561
  disabled={isCreating}
562
562
  />
563
563