@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
@@ -15,7 +15,7 @@ export interface UseCreateBillingPortalSessionReturn {
15
15
  * portal returns to `redirect.returnUrl` when given, else to the page
16
16
  * the person is on.
17
17
  */
18
- readonly openPortal: (orgId: string) => Promise<void>;
18
+ readonly openPortal: (org: string) => Promise<void>;
19
19
  /** `true` while the portal session is being created. */
20
20
  readonly isLoading: boolean;
21
21
  /** Error from the last failed attempt, or `null` when healthy. */
@@ -36,7 +36,7 @@ export interface UseCreateBillingPortalSessionReturn {
36
36
  * ```tsx
37
37
  * const { openPortal, isLoading } = useCreateBillingPortalSession();
38
38
  *
39
- * <button onClick={() => openPortal(orgId)} disabled={isLoading}>
39
+ * <button onClick={() => openPortal(org)} disabled={isLoading}>
40
40
  * Manage payment methods
41
41
  * </button>
42
42
  * ```
@@ -53,7 +53,7 @@ export function useCreateBillingPortalSession(
53
53
  const clearError = useCallback(() => setError(null), []);
54
54
 
55
55
  const openPortal = useCallback(
56
- async (orgId: string): Promise<void> => {
56
+ async (org: string): Promise<void> => {
57
57
  setIsLoading(true);
58
58
  setError(null);
59
59
 
@@ -66,7 +66,7 @@ export function useCreateBillingPortalSession(
66
66
  : "";
67
67
 
68
68
  const response = await stigmer.billing.createBillingPortalSession({
69
- orgId,
69
+ org,
70
70
  returnUrl,
71
71
  });
72
72
 
@@ -9,7 +9,7 @@ import { leaveForStripe, type BillingRedirect } from "./redirect.js";
9
9
  /** Parameters for {@link useCreateCheckoutSession}'s `createSession` callback. */
10
10
  export interface CreateCheckoutSessionInput {
11
11
  /** Organization purchasing credits. */
12
- readonly orgId: string;
12
+ readonly org: string;
13
13
  /** Credit pack to purchase: its id, e.g. "starter", "growth" or "team" (the pack named Scale). */
14
14
  readonly packId: string;
15
15
  /** URL to redirect to after successful payment. */
@@ -54,7 +54,7 @@ export interface UseCreateCheckoutSessionReturn {
54
54
  *
55
55
  * const handleBuy = () => {
56
56
  * createSession({
57
- * orgId,
57
+ * org,
58
58
  * packId: "growth",
59
59
  * successUrl: `${window.location.origin}/settings/billing?checkout=success`,
60
60
  * cancelUrl: `${window.location.origin}/settings/billing`,
@@ -81,7 +81,7 @@ export function useCreateCheckoutSession(
81
81
 
82
82
  try {
83
83
  const response = await stigmer.billing.createCreditCheckoutSession({
84
- orgId: input.orgId,
84
+ org: input.org,
85
85
  packId: input.packId,
86
86
  successUrl: input.successUrl,
87
87
  cancelUrl: input.cancelUrl,
@@ -14,7 +14,7 @@ export interface UseCreatePaymentMethodSetupSessionReturn {
14
14
  * page can reopen that choice), or without a query when they leave.
15
15
  * The saved card becomes the organization's default for every invoice.
16
16
  */
17
- readonly addPaymentMethod: (orgId: string, planId?: string) => Promise<void>;
17
+ readonly addPaymentMethod: (org: string, planId?: string) => Promise<void>;
18
18
  /** `true` while the setup session is being created. */
19
19
  readonly isSubmitting: boolean;
20
20
  /** Error from the last failed attempt, or `null` when healthy. */
@@ -41,7 +41,7 @@ export function useCreatePaymentMethodSetupSession(
41
41
  const [error, setError] = useState<Error | null>(null);
42
42
 
43
43
  const addPaymentMethod = useCallback(
44
- async (orgId: string, planId?: string): Promise<void> => {
44
+ async (org: string, planId?: string): Promise<void> => {
45
45
  setIsSubmitting(true);
46
46
  setError(null);
47
47
  try {
@@ -51,7 +51,7 @@ export function useCreatePaymentMethodSetupSession(
51
51
  success.set("plan", planId);
52
52
  }
53
53
  const response = await stigmer.billing.createPaymentMethodSetupSession({
54
- orgId,
54
+ org,
55
55
  successUrl: `${billingPage}?${success.toString()}`,
56
56
  cancelUrl: billingPage,
57
57
  });
@@ -48,14 +48,14 @@ export interface UseCreditLedgerOptions {
48
48
  * filtering. Returns the entries and total page count for building
49
49
  * pagination controls.
50
50
  *
51
- * Pass `null` as `orgId` to skip fetching (stable no-op).
51
+ * Pass `null` as `org` to skip fetching (stable no-op).
52
52
  *
53
- * @param orgId - Organization ID, or `null` to skip.
53
+ * @param org - Organization ID, or `null` to skip.
54
54
  * @param options - Pagination and filter options.
55
55
  *
56
56
  * @example
57
57
  * ```tsx
58
- * const { ledger, isLoading } = useCreditLedger(orgId, { pageNum: 1 });
58
+ * const { ledger, isLoading } = useCreditLedger(org, { pageNum: 1 });
59
59
  *
60
60
  * if (isLoading) return <Skeleton />;
61
61
  * if (!ledger) return null;
@@ -64,7 +64,7 @@ export interface UseCreditLedgerOptions {
64
64
  * ```
65
65
  */
66
66
  export function useCreditLedger(
67
- orgId: string | null,
67
+ org: string | null,
68
68
  options: UseCreditLedgerOptions = {},
69
69
  ): UseCreditLedgerReturn {
70
70
  const stigmer = useStigmer();
@@ -73,10 +73,10 @@ export function useCreditLedger(
73
73
  const typeFilterKey = typeFilter?.join(",") ?? "";
74
74
 
75
75
  const { data: ledger, isLoading, isRefetching, error, refetch } = useFetch(
76
- orgId
76
+ org
77
77
  ? () =>
78
78
  stigmer.billing.getCreditLedger({
79
- orgId,
79
+ org,
80
80
  // The SDK page number is 0-based (matches the proto/backend); the
81
81
  // hook's pageNum is 1-based for ergonomic UI controls.
82
82
  page: { num: pageNum - 1, size: pageSize },
@@ -84,7 +84,7 @@ export function useCreditLedger(
84
84
  view,
85
85
  })
86
86
  : null,
87
- [orgId, pageNum, pageSize, typeFilterKey, view, stigmer],
87
+ [org, pageNum, pageSize, typeFilterKey, view, stigmer],
88
88
  null as CreditLedgerResponse | null,
89
89
  );
90
90
 
@@ -27,15 +27,15 @@ export interface UseCustomerModelPricingReturn {
27
27
  * billing policy markup already applied, organized by harness
28
28
  * and cost tier.
29
29
  *
30
- * Pass `null` as `orgId` to skip fetching (stable no-op).
30
+ * Pass `null` as `org` to skip fetching (stable no-op).
31
31
  * Pass `undefined` to fetch default pricing (no org override).
32
32
  *
33
- * @param orgId - Organization ID for org-specific overrides,
33
+ * @param org - Organization ID for org-specific overrides,
34
34
  * `undefined` for default pricing, or `null` to skip.
35
35
  *
36
36
  * @example
37
37
  * ```tsx
38
- * const { pricing, isLoading } = useCustomerModelPricing(orgId);
38
+ * const { pricing, isLoading } = useCustomerModelPricing(org);
39
39
  *
40
40
  * if (isLoading) return <Skeleton />;
41
41
  * if (!pricing) return null;
@@ -46,20 +46,20 @@ export interface UseCustomerModelPricingReturn {
46
46
  * ```
47
47
  */
48
48
  export function useCustomerModelPricing(
49
- orgId: string | undefined | null,
49
+ org: string | undefined | null,
50
50
  ): UseCustomerModelPricingReturn {
51
51
  const stigmer = useStigmer();
52
52
 
53
- const skip = orgId === null;
53
+ const skip = org === null;
54
54
 
55
55
  const { data: pricing, isLoading, isRefetching, error, refetch } = useFetch(
56
56
  skip
57
57
  ? null
58
58
  : () =>
59
59
  stigmer.billing.getCustomerModelPricing(
60
- orgId ? { orgId } : undefined,
60
+ org ? { org } : undefined,
61
61
  ),
62
- [orgId, stigmer],
62
+ [org, stigmer],
63
63
  null as CustomerModelPricingResponse | null,
64
64
  );
65
65
 
@@ -50,19 +50,19 @@ export interface UseEntitlementsReturn {
50
50
  *
51
51
  * @example
52
52
  * ```tsx
53
- * const { allows } = useEntitlements(orgId);
53
+ * const { allows } = useEntitlements(org);
54
54
  * if (allows(Feature.teams) === false) return <UpgradeNotice feature={Feature.teams} />;
55
55
  * ```
56
56
  */
57
57
  export function useEntitlements(
58
- orgId: string | null,
58
+ org: string | null,
59
59
  options?: UseEntitlementsOptions,
60
60
  ): UseEntitlementsReturn {
61
61
  const stigmer = useStigmer();
62
- const enabled = (options?.enabled ?? true) && orgId !== null && orgId !== "";
62
+ const enabled = (options?.enabled ?? true) && org !== null && org !== "";
63
63
  const { data: entitlements, isLoading, error, refetch } = useFetch(
64
- enabled && orgId ? () => stigmer.subscription.getEntitlements(create(GetEntitlementsInputSchema, { orgId })) : null,
65
- [enabled, orgId, stigmer],
64
+ enabled && org ? () => stigmer.subscription.getEntitlements(create(GetEntitlementsInputSchema, { org })) : null,
65
+ [enabled, org, stigmer],
66
66
  null as GetEntitlementsOutput | null,
67
67
  { refetchOnWindowFocus: true },
68
68
  );
@@ -44,14 +44,14 @@ export interface UsePeriodEstimateReturn {
44
44
  * Cloud-only; the caller needs `can_view_billing` on the organization.
45
45
  */
46
46
  export function usePeriodEstimate(
47
- orgId: string | null,
47
+ org: string | null,
48
48
  options?: UsePeriodEstimateOptions,
49
49
  ): UsePeriodEstimateReturn {
50
50
  const stigmer = useStigmer();
51
- const enabled = (options?.enabled ?? true) && orgId !== null && orgId !== "";
51
+ const enabled = (options?.enabled ?? true) && org !== null && org !== "";
52
52
  const { data: estimate, isLoading, error, refetch } = useFetch(
53
- enabled && orgId ? () => stigmer.subscription.getPeriodEstimate(create(GetPeriodEstimateInputSchema, { orgId })) : null,
54
- [enabled, orgId, stigmer],
53
+ enabled && org ? () => stigmer.subscription.getPeriodEstimate(create(GetPeriodEstimateInputSchema, { org })) : null,
54
+ [enabled, org, stigmer],
55
55
  null as PeriodEstimate | null,
56
56
  { refetchOnWindowFocus: true },
57
57
  );
@@ -0,0 +1,129 @@
1
+ "use client";
2
+
3
+ import { useCallback, useMemo, useState } from "react";
4
+ import { create } from "@bufbuild/protobuf";
5
+ import type { ProviderKey } from "@stigmer/protos/ai/stigmer/billing/providerkey/v1/api_pb";
6
+ import {
7
+ DeleteProviderKeyInputSchema,
8
+ ListProviderKeysInputSchema,
9
+ SetProviderKeyInputSchema,
10
+ } from "@stigmer/protos/ai/stigmer/billing/providerkey/v1/io_pb";
11
+ import { useStigmer } from "../hooks.js";
12
+ import { toError } from "../internal/toError.js";
13
+ import { useFetch } from "../internal/useFetch.js";
14
+
15
+ /** The providers an organization may bring its own key for, by their wire names. */
16
+ export type ProviderKeyProvider = "anthropic" | "openai";
17
+
18
+ /** Options for {@link useProviderKeys}. */
19
+ export interface UseProviderKeysOptions {
20
+ /** Skip fetching while `false` (stable no-op). Default `true`. */
21
+ readonly enabled?: boolean;
22
+ }
23
+
24
+ /** Return value of {@link useProviderKeys}. */
25
+ export interface UseProviderKeysReturn {
26
+ /**
27
+ * The keys that serve the organization, its own and any it inherits from
28
+ * its integrator, without their secrets; `null` before the first
29
+ * successful fetch.
30
+ */
31
+ readonly keys: readonly ProviderKey[] | null;
32
+ /** `true` while the initial fetch is in flight. */
33
+ readonly isLoading: boolean;
34
+ /** Error from the last failed request, or `null` when healthy. */
35
+ readonly error: Error | null;
36
+ /** Discard cached data and re-fetch from the server. */
37
+ readonly refetch: () => void;
38
+ }
39
+
40
+ /**
41
+ * Data hook that lists an organization's own LLM provider keys.
42
+ *
43
+ * No answer carries a key: each row names the provider, the key's last
44
+ * four characters, who saved it and when, when it last served a call, and
45
+ * whether the organization's plan still lets it be used. A managed
46
+ * organization's list includes its integrator's keys for the providers it
47
+ * holds none of (`inheritedFromOrg`). Every member may read it
48
+ * (`can_view_billing`).
49
+ *
50
+ * Cloud-only.
51
+ *
52
+ * @example
53
+ * ```tsx
54
+ * const { keys } = useProviderKeys(org);
55
+ * ```
56
+ */
57
+ export function useProviderKeys(org: string | null, options?: UseProviderKeysOptions): UseProviderKeysReturn {
58
+ const stigmer = useStigmer();
59
+ const enabled = (options?.enabled ?? true) && org !== null && org !== "";
60
+ const { data, isLoading, error, refetch } = useFetch(
61
+ enabled && org ? () => stigmer.providerkey.list(create(ListProviderKeysInputSchema, { org })) : null,
62
+ [enabled, org, stigmer],
63
+ null as { readonly keys: readonly ProviderKey[] } | null,
64
+ );
65
+ const keys = data?.keys ?? null;
66
+ return useMemo(() => ({ keys, isLoading, error, refetch }), [keys, isLoading, error, refetch]);
67
+ }
68
+
69
+ /** Return value of {@link useProviderKeyActions}. */
70
+ export interface UseProviderKeyActionsReturn {
71
+ /**
72
+ * Save the organization's key for a provider, replacing any it holds.
73
+ * The provider is asked about the key once first, and a key it rejects is
74
+ * refused. Refused with the `PLAN_UPGRADE_REQUIRED` reason when the
75
+ * organization's plan does not include bring-your-own provider keys.
76
+ * Resolves with the saved key, without its secret.
77
+ */
78
+ readonly setKey: (org: string, provider: ProviderKeyProvider, apiKey: string) => Promise<ProviderKey>;
79
+ /** Remove the organization's key for a provider; allowed on every plan. */
80
+ readonly removeKey: (org: string, provider: ProviderKeyProvider) => Promise<ProviderKey>;
81
+ /** `true` while a save or a removal is in flight. */
82
+ readonly isSubmitting: boolean;
83
+ /** Error from the last failed attempt, or `null` when healthy. */
84
+ readonly error: Error | null;
85
+ /** Reset `error` to `null`. */
86
+ readonly clearError: () => void;
87
+ }
88
+
89
+ /**
90
+ * Behaviour hook that saves and removes an organization's own provider
91
+ * keys. The caller needs `can_manage_billing` on the organization (its
92
+ * admins). Refetch {@link useProviderKeys} after a change.
93
+ */
94
+ export function useProviderKeyActions(): UseProviderKeyActionsReturn {
95
+ const stigmer = useStigmer();
96
+ const [isSubmitting, setIsSubmitting] = useState(false);
97
+ const [error, setError] = useState<Error | null>(null);
98
+
99
+ const run = useCallback(async (call: () => Promise<ProviderKey>): Promise<ProviderKey> => {
100
+ setIsSubmitting(true);
101
+ setError(null);
102
+ try {
103
+ return await call();
104
+ } catch (e) {
105
+ const err = toError(e);
106
+ setError(err);
107
+ throw err;
108
+ } finally {
109
+ setIsSubmitting(false);
110
+ }
111
+ }, []);
112
+
113
+ const setKey = useCallback(
114
+ (org: string, provider: ProviderKeyProvider, apiKey: string) =>
115
+ run(() => stigmer.providerkey.set(create(SetProviderKeyInputSchema, { org, provider, apiKey }))),
116
+ [run, stigmer.providerkey],
117
+ );
118
+ const removeKey = useCallback(
119
+ (org: string, provider: ProviderKeyProvider) =>
120
+ run(() => stigmer.providerkey.delete(create(DeleteProviderKeyInputSchema, { org, provider }))),
121
+ [run, stigmer.providerkey],
122
+ );
123
+ const clearError = useCallback(() => setError(null), []);
124
+
125
+ return useMemo(
126
+ () => ({ setKey, removeKey, isSubmitting, error, clearError }),
127
+ [setKey, removeKey, isSubmitting, error, clearError],
128
+ );
129
+ }
@@ -8,7 +8,7 @@ import type { BillingAccount } from "@stigmer/protos/ai/stigmer/billing/v1/billi
8
8
  /** Input for {@link useSetAutoRechargeConfig}. */
9
9
  export interface SetAutoRechargeConfigInput {
10
10
  /** Organization ID to configure auto-recharge for. */
11
- readonly orgId: string;
11
+ readonly org: string;
12
12
  /** Whether auto-recharge is enabled. */
13
13
  readonly enabled: boolean;
14
14
  /** Trigger threshold in micro-USD. */
@@ -46,7 +46,7 @@ export interface UseSetAutoRechargeConfigReturn {
46
46
  * const { setConfig, isSubmitting, error } = useSetAutoRechargeConfig();
47
47
  *
48
48
  * await setConfig({
49
- * orgId,
49
+ * org,
50
50
  * enabled: true,
51
51
  * thresholdMicros: BigInt(5_000_000),
52
52
  * rechargeAmountMicros: BigInt(50_000_000),
@@ -68,7 +68,7 @@ export function useSetAutoRechargeConfig(): UseSetAutoRechargeConfigReturn {
68
68
 
69
69
  try {
70
70
  const account = await stigmer.billing.setAutoRechargeConfig({
71
- orgId: input.orgId,
71
+ org: input.org,
72
72
  enabled: input.enabled,
73
73
  thresholdMicros: input.thresholdMicros,
74
74
  rechargeAmountMicros: input.rechargeAmountMicros,
@@ -4,7 +4,7 @@ import { useMemo } from "react";
4
4
  import { create } from "@bufbuild/protobuf";
5
5
  import { isNotFound } from "@stigmer/sdk";
6
6
  import type { Subscription } from "@stigmer/protos/ai/stigmer/billing/subscription/v1/api_pb";
7
- import { GetSubscriptionForOrganizationInputSchema } from "@stigmer/protos/ai/stigmer/billing/subscription/v1/io_pb";
7
+ import { GetSubscriptionForOrgInputSchema } from "@stigmer/protos/ai/stigmer/billing/subscription/v1/io_pb";
8
8
  import { useStigmer } from "../hooks.js";
9
9
  import { useFetch } from "../internal/useFetch.js";
10
10
 
@@ -34,7 +34,7 @@ export interface UseSubscriptionReturn {
34
34
  * this hook reads that as `null`, because never subscribed is a state (the
35
35
  * Free plan), not a failure.
36
36
  *
37
- * Pass `null` as `orgId` to skip fetching. Refetches when the window
37
+ * Pass `null` as `org` to skip fetching. Refetches when the window
38
38
  * regains focus, so a plan changed in another window, or a card saved in
39
39
  * the system browser, shows on return.
40
40
  *
@@ -42,16 +42,16 @@ export interface UseSubscriptionReturn {
42
42
  *
43
43
  * @example
44
44
  * ```tsx
45
- * const { subscription } = useSubscription(orgId);
45
+ * const { subscription } = useSubscription(org);
46
46
  * ```
47
47
  */
48
- export function useSubscription(orgId: string | null): UseSubscriptionReturn {
48
+ export function useSubscription(org: string | null): UseSubscriptionReturn {
49
49
  const stigmer = useStigmer();
50
50
  const { data: subscription, isLoading, isRefetching, error, refetch } = useFetch(
51
- orgId
51
+ org
52
52
  ? () =>
53
53
  stigmer.subscription
54
- .getForOrganization(create(GetSubscriptionForOrganizationInputSchema, { orgId }))
54
+ .getForOrg(create(GetSubscriptionForOrgInputSchema, { org }))
55
55
  .catch((err: unknown) => {
56
56
  if (isNotFound(err)) {
57
57
  return null;
@@ -59,7 +59,7 @@ export function useSubscription(orgId: string | null): UseSubscriptionReturn {
59
59
  throw err;
60
60
  })
61
61
  : null,
62
- [orgId, stigmer],
62
+ [org, stigmer],
63
63
  null as Subscription | null,
64
64
  { refetchOnWindowFocus: true },
65
65
  );
@@ -119,19 +119,21 @@ export function AgentChannelsPanel({
119
119
  // label worth showing.
120
120
  const { channelApps } = useChannelAppList(agent.metadata?.org || null);
121
121
 
122
- // Mirrors the server's create bar (agent can_edit — the permission the
123
- // create/apply handlers enforce on the referenced agent) so the connect
124
- // affordance never appears to a viewer whose create would be refused.
122
+ // Mirrors the server's create bar (agent can_manage_audience — the
123
+ // permission the create/apply handlers enforce on the referenced agent:
124
+ // a channel puts the agent in front of a wider audience, the owner's
125
+ // decision, not an editor's) so the connect affordance never appears to
126
+ // someone whose create would be refused.
125
127
  const { allowed: canCreate } = useCheckPermission(
126
128
  agentId ? { kind: "agent", id: agentId } : null,
127
- "can_edit",
129
+ "can_manage_audience",
128
130
  );
129
131
 
130
- // Installs go through the shared platform Slack/WhatsApp apps, a
131
- // cloud-only facility (editions program, DD-001); CRUD is not. Outside
132
- // Cloud the cards render and toggles work, but connect affordances give
133
- // way to the notice. Installs through a customer's own ChannelApp in
134
- // Enterprise are that edition's work, not assumed here.
132
+ // Installs need a channel delivery runtime, and only Stigmer Cloud
133
+ // composes one today; CRUD needs none. Outside Cloud the cards render and
134
+ // toggles work, but connect affordances give way to the notice. When a
135
+ // self-hosted edition composes a runtime, this becomes a probe of that
136
+ // runtime rather than an edition compare.
135
137
  const installsAvailable = useDeploymentMode() === "cloud";
136
138
 
137
139
  const { deleteChannel } = useDeleteAgentChannel();
@@ -175,7 +175,7 @@ function ServingAppOption({
175
175
  checked={checked}
176
176
  onChange={onSelect}
177
177
  disabled={disabled}
178
- className="stg:mt-0.5 stg:accent-current"
178
+ className="stg:mt-0.5"
179
179
  />
180
180
  <span className="stg:min-w-0">
181
181
  <span className="stg:block stg:text-xs stg:font-medium stg:text-foreground">{label}</span>
@@ -4,7 +4,7 @@ import { type FormEvent, useCallback, useId, useMemo, useState } from "react";
4
4
  import { cn } from "@stigmer/theme";
5
5
  import { getUserMessage, toChannelAppUpdateInput } from "@stigmer/sdk";
6
6
  import type { ChannelApp } from "@stigmer/protos/ai/stigmer/agentic/channelapp/v1/api_pb";
7
- import { useStigmer } from "../hooks.js";
7
+ import { usePublicBaseUrl } from "../public-base-url-context.js";
8
8
  import { useUpdateChannelApp } from "./useUpdateChannelApp.js";
9
9
  import { useDeleteChannelApp } from "./useDeleteChannelApp.js";
10
10
  import type { ChannelAppCreateHandoff } from "./CreateChannelAppForm.js";
@@ -17,7 +17,7 @@ import {
17
17
  WHATSAPP_CHANNEL_APP_WEBHOOK_FIELDS,
18
18
  whatsappChannelAppWebhookUrl,
19
19
  } from "./whatsappAppSetup.js";
20
- import { CopyBlock, CopyRow, FormField } from "./internal.js";
20
+ import { CopyBlock, CopyRow, FormField, UnknownAddressRow } from "./internal.js";
21
21
  import { PermissionGate } from "../iam-policy/PermissionGate.js";
22
22
  import { SpinnerIcon } from "../internal/SpinnerIcon.js";
23
23
 
@@ -70,8 +70,8 @@ export interface ChannelAppDetailPanelProps {
70
70
  *
71
71
  * The credentials form is offered to a caller who may edit the app
72
72
  * (`can_edit`) and the deletion section to one who may delete it
73
- * (`can_delete`): its creator and the organization's admins. Someone
74
- * granted viewer on an app sees its setup values with no actions.
73
+ * (`can_delete`): the organization's admins. Someone granted viewer on an
74
+ * app sees its setup values with no actions.
75
75
  */
76
76
  export function ChannelAppDetailPanel({
77
77
  channelApp,
@@ -200,7 +200,7 @@ function SlackAppDetail({
200
200
  readonly onUpdated?: (app: ChannelApp) => void;
201
201
  }) {
202
202
  const baseId = useId();
203
- const stigmer = useStigmer();
203
+ const publicBaseUrl = usePublicBaseUrl();
204
204
  const { update, isUpdating, error: updateError, clearError } = useUpdateChannelApp();
205
205
 
206
206
  const slack = channelApp.spec?.providerConfig?.case === "slack"
@@ -214,9 +214,14 @@ function SlackAppDetail({
214
214
  const appId = channelApp.metadata?.id ?? "";
215
215
  const name = channelApp.metadata?.name ?? "";
216
216
 
217
+ // `undefined` while the server's public address is unknown: the row
218
+ // says so, and the manifest leaves out its event subscriptions.
217
219
  const webhookUrl = useMemo(
218
- () => slackChannelAppWebhookUrl(stigmer.baseUrl, appId),
219
- [stigmer.baseUrl, appId],
220
+ () =>
221
+ publicBaseUrl === null
222
+ ? undefined
223
+ : slackChannelAppWebhookUrl(publicBaseUrl, appId),
224
+ [publicBaseUrl, appId],
220
225
  );
221
226
  const redirectUrl = useMemo(
222
227
  () => slackChannelAppRedirectUrl(consoleOrigin),
@@ -271,11 +276,15 @@ function SlackAppDetail({
271
276
  below (Slack verifies it immediately). The completed manifest is
272
277
  also available for review or re-paste.
273
278
  </p>
274
- <CopyRow
275
- label="Events request URL"
276
- value={webhookUrl}
277
- copyTargetId="stgm-chapp-webhook-copy"
278
- />
279
+ {webhookUrl !== undefined ? (
280
+ <CopyRow
281
+ label="Events request URL"
282
+ value={webhookUrl}
283
+ copyTargetId="stgm-chapp-webhook-copy"
284
+ />
285
+ ) : (
286
+ <UnknownAddressRow label="Events request URL" subject="the events request URL" />
287
+ )}
279
288
  <CopyRow label="OAuth redirect URL" value={redirectUrl} />
280
289
  <CopyBlock label="Completed app manifest" value={manifest} />
281
290
  </section>
@@ -361,7 +370,7 @@ function WhatsAppAppDetail({
361
370
  readonly onUpdated?: (app: ChannelApp) => void;
362
371
  }) {
363
372
  const baseId = useId();
364
- const stigmer = useStigmer();
373
+ const publicBaseUrl = usePublicBaseUrl();
365
374
  const { update, isUpdating, error: updateError, clearError } = useUpdateChannelApp();
366
375
 
367
376
  const whatsapp = channelApp.spec?.providerConfig?.case === "whatsapp"
@@ -376,9 +385,13 @@ function WhatsAppAppDetail({
376
385
  const appId = channelApp.metadata?.id ?? "";
377
386
  const name = channelApp.metadata?.name ?? "";
378
387
 
388
+ // `undefined` while the server's public address is unknown: the row says so.
379
389
  const webhookUrl = useMemo(
380
- () => whatsappChannelAppWebhookUrl(stigmer.baseUrl, appId),
381
- [stigmer.baseUrl, appId],
390
+ () =>
391
+ publicBaseUrl === null
392
+ ? undefined
393
+ : whatsappChannelAppWebhookUrl(publicBaseUrl, appId),
394
+ [publicBaseUrl, appId],
382
395
  );
383
396
 
384
397
  const canSave =
@@ -432,11 +445,15 @@ function WhatsAppAppDetail({
432
445
  </span>{" "}
433
446
  webhook field.
434
447
  </p>
435
- <CopyRow
436
- label="Callback URL"
437
- value={webhookUrl}
438
- copyTargetId="stgm-chapp-webhook-copy"
439
- />
448
+ {webhookUrl !== undefined ? (
449
+ <CopyRow
450
+ label="Callback URL"
451
+ value={webhookUrl}
452
+ copyTargetId="stgm-chapp-webhook-copy"
453
+ />
454
+ ) : (
455
+ <UnknownAddressRow label="Callback URL" subject="the callback URL" />
456
+ )}
440
457
  {createHandoff?.verifyToken ? (
441
458
  <CopyRow
442
459
  label="Verify token"
@@ -7,6 +7,7 @@ import { timestampDate } from "@bufbuild/protobuf/wkt";
7
7
  import type { ChannelApp } from "@stigmer/protos/ai/stigmer/agentic/channelapp/v1/api_pb";
8
8
  import { channelProviderOf } from "../channel/providers.js";
9
9
  import { useChannelAppList } from "./useChannelAppList.js";
10
+ import { LoadingRegion } from "../internal/LoadingRegion.js";
10
11
 
11
12
  // ---------------------------------------------------------------------------
12
13
  // Public API
@@ -25,8 +26,8 @@ export interface ChannelAppListPanelProps {
25
26
  readonly onRefetchRef?: (refetch: () => void) => void;
26
27
  /**
27
28
  * Shown when the list is empty. Defaults to "No channel apps registered
28
- * yet." The list holds only the apps the caller may view (their creator,
29
- * anyone granted viewer on one, and the organization's admins), so a host
29
+ * yet." The list holds only the apps the caller may view (the
30
+ * organization's admins, and anyone granted viewer on an app), so a host
30
31
  * that knows the caller may not manage channel apps should say who does
31
32
  * instead.
32
33
  */
@@ -69,15 +70,14 @@ export function ChannelAppListPanel({
69
70
 
70
71
  if (isLoading) {
71
72
  return (
72
- <div
73
+ <LoadingRegion
73
74
  className={cn("stg:space-y-2", className)}
74
- aria-busy="true"
75
- aria-label="Loading channel apps"
75
+ label="Loading channel apps"
76
76
  >
77
77
  {Array.from({ length: 2 }, (_, i) => (
78
78
  <div key={i} className="stg:bg-muted-subtle stg:h-14 stg:animate-pulse stg:rounded-lg" />
79
79
  ))}
80
- </div>
80
+ </LoadingRegion>
81
81
  );
82
82
  }
83
83
 
@@ -311,7 +311,6 @@ function ProviderPicker({
311
311
  checked={checked}
312
312
  onChange={() => onChange(p.id)}
313
313
  disabled={disabled}
314
- className="stg:accent-current"
315
314
  />
316
315
  <p.Icon className="stg:size-3.5 stg:shrink-0 stg:text-foreground" />
317
316
  <span className="stg:text-xs stg:font-medium stg:text-foreground">{p.label}</span>
@@ -4,9 +4,9 @@
4
4
  * thing.
5
5
  *
6
6
  * A channel app carries its organization's Slack or Meta app secrets, so the
7
- * model shows it to its creator, anyone granted viewer on it and the
8
- * organization's admins, and plain members and viewers may not see it at all
9
- * (stigmer/stigmer#1384). An empty list is therefore not evidence that none
7
+ * model shows it to the organization's admins and anyone granted viewer on
8
+ * it, and plain members and viewers may not see it at all
9
+ * (stigmer/stigmer#1384, #1409). An empty list is therefore not evidence that none
10
10
  * is registered, so a caller who may not create channel apps is told who
11
11
  * manages them instead of being told that nothing exists.
12
12
  */