@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
@@ -3,6 +3,7 @@
3
3
  import { useCallback } from "react";
4
4
  import { cn } from "@stigmer/theme";
5
5
  import { TruncatedText } from "../internal/truncated-text.js";
6
+ import { UnknownPublicAddressNotice } from "../internal/UnknownPublicAddressNotice.js";
6
7
  import { useCopyFeedback } from "../internal/useCopyFeedback.js";
7
8
 
8
9
  /**
@@ -89,6 +90,26 @@ export function CopyRow({
89
90
  );
90
91
  }
91
92
 
93
+ /**
94
+ * The place of a {@link CopyRow} whose URL cannot be built because the
95
+ * server's public address is unknown: the same label, then the shared
96
+ * notice in place of the value and its copy button.
97
+ */
98
+ export function UnknownAddressRow({
99
+ label,
100
+ subject,
101
+ }: {
102
+ label: string;
103
+ subject: string;
104
+ }) {
105
+ return (
106
+ <div className="stg:space-y-1">
107
+ <p className="stg:text-xs stg:font-medium stg:text-foreground">{label}</p>
108
+ <UnknownPublicAddressNotice subject={subject} />
109
+ </div>
110
+ );
111
+ }
112
+
92
113
  /** A multi-line copyable value (the app manifest) in a scrollable block. */
93
114
  export function CopyBlock({
94
115
  label,
@@ -21,6 +21,7 @@
21
21
  * the webhook URL — paste it into the app's Event Subscriptions (or
22
22
  * re-apply the completed manifest).
23
23
  */
24
+ import { trimTrailing } from "../internal/trim.js";
24
25
 
25
26
  /**
26
27
  * The bot scopes every Stigmer channel app requests — the platform app's
@@ -53,14 +54,16 @@ export const SLACK_CHANNEL_APP_BOT_EVENTS = [
53
54
  * The events webhook URL for one ChannelApp: the per-app route the
54
55
  * receiver resolves the app's signing secret by.
55
56
  *
56
- * @param apiBaseUrl the Stigmer API origin (`stigmer.baseUrl`)
57
+ * @param apiBaseUrl the server's public base URL, absolute (the one
58
+ * `StigmerProvider`'s `publicBaseUrl` names, or the
59
+ * client's `baseUrl` when that is absolute)
57
60
  * @param channelAppId the ChannelApp resource id (`chapp_...`)
58
61
  */
59
62
  export function slackChannelAppWebhookUrl(
60
63
  apiBaseUrl: string,
61
64
  channelAppId: string,
62
65
  ): string {
63
- return `${apiBaseUrl.replace(/\/+$/, "")}/webhook/slack/${channelAppId}`;
66
+ return `${trimTrailing(apiBaseUrl, "/")}/webhook/slack/${channelAppId}`;
64
67
  }
65
68
 
66
69
  /**
@@ -77,7 +80,7 @@ export function slackChannelAppRedirectUrl(consoleOrigin?: string): string {
77
80
  const origin =
78
81
  consoleOrigin ??
79
82
  (typeof window !== "undefined" ? window.location.origin : "");
80
- return `${origin.replace(/\/+$/, "")}/oauth/slack/callback`;
83
+ return `${trimTrailing(origin, "/")}/oauth/slack/callback`;
81
84
  }
82
85
 
83
86
  /** Inputs for {@link buildSlackChannelAppManifest}. */
@@ -24,6 +24,7 @@
24
24
  * show the webhook URL — paste it and the verify token into the
25
25
  * app's WhatsApp webhook configuration.
26
26
  */
27
+ import { trimTrailing } from "../internal/trim.js";
27
28
 
28
29
  /**
29
30
  * The webhook fields every Stigmer WhatsApp channel app subscribes to —
@@ -36,14 +37,16 @@ export const WHATSAPP_CHANNEL_APP_WEBHOOK_FIELDS = ["messages"] as const;
36
37
  * The events webhook URL for one ChannelApp: the per-app route the
37
38
  * receiver resolves the app's secret and verify token by.
38
39
  *
39
- * @param apiBaseUrl the Stigmer API origin (`stigmer.baseUrl`)
40
+ * @param apiBaseUrl the server's public base URL, absolute (the one
41
+ * `StigmerProvider`'s `publicBaseUrl` names, or the
42
+ * client's `baseUrl` when that is absolute)
40
43
  * @param channelAppId the ChannelApp resource id (`chapp_...`)
41
44
  */
42
45
  export function whatsappChannelAppWebhookUrl(
43
46
  apiBaseUrl: string,
44
47
  channelAppId: string,
45
48
  ): string {
46
- return `${apiBaseUrl.replace(/\/+$/, "")}/webhook/whatsapp/${channelAppId}`;
49
+ return `${trimTrailing(apiBaseUrl, "/")}/webhook/whatsapp/${channelAppId}`;
47
50
  }
48
51
 
49
52
  /**
@@ -39,11 +39,7 @@ import { FileReferenceChipList } from "../file-reference/FileReferenceChipList.j
39
39
  import { FILE_REF_MIME } from "../internal/file-tree/index.js";
40
40
  import { useSessionEnvPool } from "../environment/useSessionEnvPool.js";
41
41
  import { usePersonalEnvironment } from "../environment/usePersonalEnvironment.js";
42
- import { useStigmer } from "../hooks.js";
43
- import {
44
- SYSTEM_ENV_VAR_KEYS,
45
- resolveSystemEnvVarValues,
46
- } from "../environment/systemEnvVars.js";
42
+ import { SYSTEM_ENV_VAR_KEYS } from "../environment/systemEnvVars.js";
47
43
  import { useRenderTracer } from "../internal/dev/index.js";
48
44
  import { Tooltip, TooltipContent, TooltipTrigger } from "../internal/tooltip.js";
49
45
  import {
@@ -714,8 +710,6 @@ const SessionComposerInner = forwardRef<SessionComposerHandle, SessionComposerPr
714
710
  [personalEnv.environment],
715
711
  );
716
712
 
717
- const stigmer = useStigmer();
718
-
719
713
  const pool = useSessionEnvPool({
720
714
  personalEnvKeys,
721
715
  manualSecrets: sessionVariables?.entries,
@@ -1025,14 +1019,11 @@ const SessionComposerInner = forwardRef<SessionComposerHandle, SessionComposerPr
1025
1019
  }
1026
1020
  }
1027
1021
 
1022
+ // Only what the page collected for this run: the platform's own keys
1023
+ // are filled in the runner, below every value a user saved
1024
+ // (systemEnvVars.ts header, stigmer/stigmer#1446).
1028
1025
  const env: Record<string, EnvVarInput> = {};
1029
1026
 
1030
- // System env vars first (lowest priority) — auto-resolved from
1031
- // the Stigmer client's connection context so MCP servers and
1032
- // agents can reach the backend without manual user input.
1033
- const systemVars = await resolveSystemEnvVarValues(stigmer);
1034
- Object.assign(env, systemVars);
1035
-
1036
1027
  if (
1037
1028
  agentSetup.state.status === "ready" &&
1038
1029
  agentSetup.state.resolution.mode === "oneTime"
@@ -1108,7 +1099,7 @@ const SessionComposerInner = forwardRef<SessionComposerHandle, SessionComposerPr
1108
1099
  fileRefs.clear();
1109
1100
  }
1110
1101
  },
1111
- [onSubmit, effective, stigmer, agentSetup.state, mcpSetup.pendingRuntimeEnv, sessionVariables, enableAttachments, attachments, personalEnv, showInteractionModePicker, interactionMode],
1102
+ [onSubmit, effective, agentSetup.state, mcpSetup.pendingRuntimeEnv, sessionVariables, enableAttachments, attachments, personalEnv, showInteractionModePicker, interactionMode],
1112
1103
  );
1113
1104
 
1114
1105
  const composer = useComposer({
@@ -68,7 +68,7 @@ export function CursorAccountEditor({
68
68
  !(initial?.onDemandUsageDisabled ?? false),
69
69
  );
70
70
  const [orgIdsText, setOrgIdsText] = useState(
71
- (initial?.orgIds ?? []).join("\n"),
71
+ (initial?.orgs ?? []).join("\n"),
72
72
  );
73
73
  // Unlike the admin key, the invite link round-trips readable (the
74
74
  // server decrypts it on read — operators must be able to copy it), so
@@ -90,10 +90,10 @@ export function CursorAccountEditor({
90
90
  adminApiKey: adminApiKey.trim(),
91
91
  enabled,
92
92
  // is_platform_default is deprecated (DD-008): the shared pool is
93
- // derived from empty org_ids, so current clients never write it.
93
+ // derived from empty orgs, so current clients never write it.
94
94
  onDemandUsageDisabled: !onDemandEnabled,
95
95
  teamInviteLink: teamInviteLink.trim(),
96
- orgIds: orgIdsText
96
+ orgs: orgIdsText
97
97
  .split(/[\s,]+/)
98
98
  .map((s) => s.trim())
99
99
  .filter((s) => s !== ""),
@@ -224,16 +224,16 @@ function AccountRow({
224
224
  <span className="stg:block stg:truncate stg:font-medium stg:text-foreground">
225
225
  {account.displayName}
226
226
  </span>
227
- {/* Account class is DERIVED from org_ids (DD-008): no org
227
+ {/* Account class is DERIVED from orgs: no org
228
228
  assignment means the account belongs to the shared pool. */}
229
- {account.orgIds.length === 0 && (
229
+ {account.orgs.length === 0 && (
230
230
  <span className="stg:block stg:text-[11px] stg:text-muted-foreground">
231
231
  shared pool
232
232
  </span>
233
233
  )}
234
234
  </span>
235
235
  <span className="stg:text-muted-foreground">
236
- {account.orgIds.length > 0 ? account.orgIds.length : "—"}
236
+ {account.orgs.length > 0 ? account.orgs.length : "—"}
237
237
  </span>
238
238
  <span>
239
239
  <StateBadge
@@ -408,8 +408,8 @@ function AccountDetail({
408
408
  {account.displayName}
409
409
  </h3>
410
410
  <p className="stg:text-[11px] stg:text-muted-foreground">
411
- {account.orgIds.length > 0
412
- ? `Dedicated to ${account.orgIds.length} org(s): ${account.orgIds.join(", ")}`
411
+ {account.orgs.length > 0
412
+ ? `Dedicated to ${account.orgs.length} org(s): ${account.orgs.join(", ")}`
413
413
  : "Shared pool — serves every org with no dedicated account"}
414
414
  {" · "}
415
415
  {account.enabled ? "enabled" : "disabled"}
@@ -11,10 +11,8 @@ import { DashboardFailedRuns } from "./DashboardFailedRuns.js";
11
11
  import type { DashboardFailedRun } from "./types.js";
12
12
 
13
13
  export interface OperationalDashboardProps {
14
- /** Organization slug for execution summaries and pending approvals. */
14
+ /** The organization whose executions, approvals and usage the dashboard shows. */
15
15
  readonly org: string | null | undefined;
16
- /** Organization ID (metadata.id) for the usage report. */
17
- readonly orgId: string | null | undefined;
18
16
  /** Called when the user clicks "Review" on a pending approval. */
19
17
  readonly onApprovalClick?: (executionId: string) => void;
20
18
  /** Called when the user clicks "View" on a failed execution. */
@@ -37,7 +35,6 @@ export interface OperationalDashboardProps {
37
35
  * ```tsx
38
36
  * <OperationalDashboard
39
37
  * org="acme"
40
- * orgId={activeOrg?.metadata?.id}
41
38
  * onApprovalClick={(id) => navigate(`/executions/${id}`)}
42
39
  * onFailedRunClick={(id, type) => navigate(`/executions/${id}`)}
43
40
  * />
@@ -47,14 +44,12 @@ export interface OperationalDashboardProps {
47
44
  */
48
45
  export const OperationalDashboard = memo(function OperationalDashboard({
49
46
  org,
50
- orgId,
51
47
  onApprovalClick,
52
48
  onFailedRunClick,
53
49
  className,
54
50
  }: OperationalDashboardProps) {
55
51
  const summaryOptions: UseDashboardSummaryOptions = {
56
52
  org,
57
- orgId,
58
53
  refetchInterval: 60_000,
59
54
  };
60
55
  const { summary, isLoading: summaryLoading } = useDashboardSummary(summaryOptions);
@@ -17,10 +17,8 @@ import type { DashboardSummary } from "./types.js";
17
17
 
18
18
  /** Options for {@link useDashboardSummary}. */
19
19
  export interface UseDashboardSummaryOptions {
20
- /** Organization slug for execution summaries. */
20
+ /** The organization whose execution summaries and usage report to read. */
21
21
  readonly org: string | null | undefined;
22
- /** Organization ID (metadata.id) for the usage report. */
23
- readonly orgId: string | null | undefined;
24
22
  /** Refetch interval in milliseconds. @default 60_000 */
25
23
  readonly refetchInterval?: number;
26
24
  }
@@ -66,7 +64,7 @@ export function useDashboardSummary(
66
64
 
67
65
  const dateRange = useMemo(() => dateRangeFromPreset("7d"), []);
68
66
  const { report: orgUsage, isLoading: usageLoading, error: usageError, refetch: usageRefetch } =
69
- useOrgUsageReport(options.orgId ?? null, dateRange);
67
+ useOrgUsageReport(options.org ?? null, dateRange);
70
68
 
71
69
  const isLoading = wfLoading || agLoading || usageLoading;
72
70
  const error = wfError ?? agError ?? usageError;
@@ -10,6 +10,7 @@ import { EditResourceYamlDialog } from "../manifest/EditResourceYamlDialog.js";
10
10
  import { useEnvironmentList } from "./useEnvironmentList.js";
11
11
  import { EnvironmentVariableEditor } from "./EnvironmentVariableEditor.js";
12
12
  import { isShareRestrictedEnvironment } from "./shareRestriction.js";
13
+ import { LoadingRegion } from "../internal/LoadingRegion.js";
13
14
 
14
15
  // ---------------------------------------------------------------------------
15
16
  // Public API
@@ -132,10 +133,9 @@ export function EnvironmentListPanel({
132
133
 
133
134
  if (isLoading) {
134
135
  return (
135
- <div
136
+ <LoadingRegion
136
137
  className={cn("stg:space-y-2", className)}
137
- aria-busy="true"
138
- aria-label="Loading environments"
138
+ label="Loading environments"
139
139
  >
140
140
  {Array.from({ length: 2 }, (_, i) => (
141
141
  <div
@@ -143,7 +143,7 @@ export function EnvironmentListPanel({
143
143
  className="stg:bg-muted-subtle stg:h-14 stg:animate-pulse stg:rounded-lg"
144
144
  />
145
145
  ))}
146
- </div>
146
+ </LoadingRegion>
147
147
  );
148
148
  }
149
149
 
@@ -18,6 +18,7 @@ import { useUpdateEnvironmentVariables } from "./useUpdateEnvironmentVariables.j
18
18
  import { useRemoveEnvironmentVariables } from "./useRemoveEnvironmentVariables.js";
19
19
  import { useRevealSecretValue } from "./useRevealSecretValue.js";
20
20
  import { SpinnerIcon } from "../internal/SpinnerIcon.js";
21
+ import { LoadingRegion } from "../internal/LoadingRegion.js";
21
22
 
22
23
  // ---------------------------------------------------------------------------
23
24
  // Public API
@@ -152,10 +153,9 @@ export function EnvironmentVariableEditor({
152
153
 
153
154
  if (isLoading) {
154
155
  return (
155
- <div
156
+ <LoadingRegion
156
157
  className={cn("stg:space-y-2", className)}
157
- aria-busy="true"
158
- aria-label="Loading variables"
158
+ label="Loading variables"
159
159
  >
160
160
  {Array.from({ length: 3 }, (_, i) => (
161
161
  <div
@@ -164,7 +164,7 @@ export function EnvironmentVariableEditor({
164
164
  style={{ width: `${85 - i * 10}%` }}
165
165
  />
166
166
  ))}
167
- </div>
167
+ </LoadingRegion>
168
168
  );
169
169
  }
170
170
 
@@ -586,7 +586,7 @@ function AddVariableForm({
586
586
  checked={isSecret}
587
587
  onChange={(e) => setIsSecret(e.target.checked)}
588
588
  disabled={isAdding}
589
- className="stg:accent-primary stg:size-3"
589
+ className="stg:size-3"
590
590
  />
591
591
  Secret
592
592
  </label>
@@ -41,13 +41,7 @@ export type {
41
41
  SessionEnvPoolInput,
42
42
  UseSessionEnvPoolReturn,
43
43
  } from "./useSessionEnvPool.js";
44
- export {
45
- SYSTEM_ENV_VAR_KEYS,
46
- toGrpcAddress,
47
- buildSystemEnvVars,
48
- resolveSystemEnvVarValues,
49
- resolveDeclaredSystemEnvVars,
50
- } from "./systemEnvVars.js";
44
+ export { SYSTEM_ENV_VAR_KEYS } from "./systemEnvVars.js";
51
45
  export { EnvironmentPicker } from "./EnvironmentPicker.js";
52
46
  export type { EnvironmentPickerProps } from "./EnvironmentPicker.js";
53
47
  export { useToolCredentialsReadiness } from "./useToolCredentialsReadiness.js";
@@ -1,143 +1,31 @@
1
- import type { EnvVarInput, Stigmer } from "@stigmer/sdk";
2
-
3
1
  // ---------------------------------------------------------------------------
4
2
  // Well-known Stigmer platform environment variable keys
5
3
  //
6
- // These env vars configure MCP server subprocesses (and agents) to
7
- // communicate back to the Stigmer backend. Because the SDK client
8
- // already knows the server address and auth credential, the setup
9
- // hooks can skip prompting users for these values and inject them
10
- // automatically at session creation time.
4
+ // A platform value comes from the component that knows it, fills only a key
5
+ // that is still missing, and reaches only a server that declares it
6
+ // (stigmer/stigmer#1446). The page is not that component for any key, so
7
+ // this SDK supplies none: a value it wrote into a run's runtime env would
8
+ // sit in the top merge layer, above every value a user saved, and a run
9
+ // whose agent declares no env would carry it into the agent's shell.
10
+ //
11
+ // STIGMER_SERVER_ADDRESS is the one key the platform fills. The runner
12
+ // writes it for a server that declares it and holds no value: from the
13
+ // server's public address, which the server hands every sandbox it
14
+ // provisions, or for a stdio child from the endpoint the runner dials
15
+ // itself (backend/services/runner, the platform-server-address module).
16
+ //
17
+ // STIGMER_API_KEY is not a platform key. A server that calls the Stigmer
18
+ // API declares it like any other secret, and its user saves an API key for
19
+ // it; nothing hands a user-defined server the signed-in user's bearer.
11
20
  // ---------------------------------------------------------------------------
12
21
 
13
- const STIGMER_SERVER_ADDRESS = "STIGMER_SERVER_ADDRESS";
14
- const STIGMER_API_KEY = "STIGMER_API_KEY";
15
-
16
22
  /**
17
- * Environment variable keys that the SDK can resolve automatically
18
- * from the current {@link Stigmer} client context.
23
+ * Environment variable keys the platform fills itself, so the setup hooks
24
+ * never prompt a user for them and the credential forms never ask for them.
19
25
  *
20
- * Used by setup hooks to exclude these keys from the "missing
21
- * variables" prompt and by the session composer to inject their
22
- * values into runtime env at submit time.
23
- *
24
- * Platform builders who manage setup hooks directly can use this
25
- * set to extend their own `poolKeys`.
26
+ * Platform builders who manage setup hooks directly can use this set to
27
+ * extend their own `poolKeys`.
26
28
  */
27
29
  export const SYSTEM_ENV_VAR_KEYS: ReadonlySet<string> = new Set([
28
- STIGMER_SERVER_ADDRESS,
29
- STIGMER_API_KEY,
30
+ "STIGMER_SERVER_ADDRESS",
30
31
  ]);
31
-
32
- /**
33
- * Convert an HTTP(S) base URL to a gRPC host:port address.
34
- *
35
- * The Stigmer server serves both gRPC and gRPC-Web on the same
36
- * endpoint, so stripping the protocol and extracting host:port
37
- * produces a valid gRPC dial target.
38
- *
39
- * @example
40
- * ```ts
41
- * toGrpcAddress("http://localhost:7234") // "localhost:7234"
42
- * toGrpcAddress("https://api.stigmer.ai") // "api.stigmer.ai:443"
43
- * toGrpcAddress("https://api.stigmer.ai:8443") // "api.stigmer.ai:8443"
44
- * ```
45
- */
46
- export function toGrpcAddress(httpUrl: string): string {
47
- try {
48
- const url = new URL(httpUrl);
49
- const host = url.hostname;
50
- const port =
51
- url.port || (url.protocol === "https:" ? "443" : "80");
52
- return `${host}:${port}`;
53
- } catch {
54
- return httpUrl;
55
- }
56
- }
57
-
58
- /**
59
- * Build system env var entries from raw connection parameters.
60
- *
61
- * Pure function — no side effects, no async. Suitable for unit
62
- * testing without a live Stigmer client.
63
- *
64
- * @param baseUrl - The Stigmer client's base URL (HTTP).
65
- * @param credential - Current auth credential, or `null` for
66
- * unauthenticated (OSS) backends. When `null`, a placeholder
67
- * value is used so the MCP server env var is always populated.
68
- */
69
- export function buildSystemEnvVars(
70
- baseUrl: string,
71
- credential: string | null,
72
- ): Record<string, EnvVarInput> {
73
- return {
74
- [STIGMER_SERVER_ADDRESS]: {
75
- value: toGrpcAddress(baseUrl),
76
- isSecret: false,
77
- description:
78
- "Auto-resolved from the current Stigmer connection.",
79
- },
80
- [STIGMER_API_KEY]: {
81
- value: credential || "unused",
82
- isSecret: true,
83
- description:
84
- "Auto-resolved from the current Stigmer auth context.",
85
- },
86
- };
87
- }
88
-
89
- /**
90
- * Resolve system env var values from a live {@link Stigmer} client.
91
- *
92
- * Calls {@link Stigmer.getAuthCredential} to obtain the current
93
- * credential, then delegates to {@link buildSystemEnvVars}.
94
- *
95
- * Intended for use at session submit time — the returned values
96
- * are injected into `runtimeEnv` at the **lowest priority** so
97
- * any user-provided values (personal env, manual secrets) win.
98
- */
99
- export async function resolveSystemEnvVarValues(
100
- stigmer: Stigmer,
101
- ): Promise<Record<string, EnvVarInput>> {
102
- const credential = await stigmer.getAuthCredential();
103
- return buildSystemEnvVars(stigmer.baseUrl, credential);
104
- }
105
-
106
- /**
107
- * Resolve only the system env vars that the target resource actually
108
- * declares in its environment specification.
109
- *
110
- * System vars (`STIGMER_SERVER_ADDRESS`, `STIGMER_API_KEY`) should
111
- * only be injected when the resource needs them — blindly injecting
112
- * them causes `runtime_env` to be non-empty on the wire, which
113
- * changes the backend's missing-credential tolerance semantics.
114
- *
115
- * @param stigmer - Live Stigmer client for credential resolution.
116
- * @param declaredEnvKeys - The set of env var keys the target
117
- * resource declares (e.g., `Object.keys(mcpServer.spec.env)`).
118
- * Only system vars whose keys appear here are included.
119
- * @returns Filtered system env vars (may be empty).
120
- */
121
- export async function resolveDeclaredSystemEnvVars(
122
- stigmer: Stigmer,
123
- declaredEnvKeys: ReadonlySet<string> | readonly string[],
124
- ): Promise<Record<string, EnvVarInput>> {
125
- const keys =
126
- declaredEnvKeys instanceof Set
127
- ? declaredEnvKeys
128
- : new Set(declaredEnvKeys);
129
-
130
- const hasDeclared = [...SYSTEM_ENV_VAR_KEYS].some((k) => keys.has(k));
131
- if (!hasDeclared) {
132
- return {};
133
- }
134
-
135
- const all = await resolveSystemEnvVarValues(stigmer);
136
- const filtered: Record<string, EnvVarInput> = {};
137
- for (const [key, value] of Object.entries(all)) {
138
- if (keys.has(key)) {
139
- filtered[key] = value;
140
- }
141
- }
142
- return filtered;
143
- }
@@ -4,6 +4,7 @@
4
4
  // unavailable / text). Domain: execution (data-model-agnostic).
5
5
 
6
6
  import { ArtifactContentRenderer } from "./ArtifactContentRenderer.js";
7
+ import { LoadingRegion } from "../internal/LoadingRegion.js";
7
8
 
8
9
  /** Props for {@link ArtifactFileContent}. */
9
10
  export interface ArtifactFileContentProps {
@@ -44,7 +45,7 @@ export function ArtifactFileContent({
44
45
  }: ArtifactFileContentProps) {
45
46
  if (isLoading) {
46
47
  return (
47
- <div className="stg:space-y-2 stg:p-4" aria-busy="true" aria-label="Loading content">
48
+ <LoadingRegion className="stg:space-y-2 stg:p-4" label="Loading content">
48
49
  {SKELETON_LINE_WIDTHS.map((width, i) => (
49
50
  <div
50
51
  key={i}
@@ -53,7 +54,7 @@ export function ArtifactFileContent({
53
54
  aria-hidden="true"
54
55
  />
55
56
  ))}
56
- </div>
57
+ </LoadingRegion>
57
58
  );
58
59
  }
59
60
 
@@ -19,6 +19,7 @@ import { execIdFromStorageKey } from "./useFileChangeContent.js";
19
19
  import { useArtifactDownloadUrl } from "./useArtifactDownloadUrl.js";
20
20
  import { useArtifactDownload } from "./useArtifactDownload.js";
21
21
  import { useToolOutputContent } from "./useToolOutputContent.js";
22
+ import { LoadingRegion } from "../internal/LoadingRegion.js";
22
23
 
23
24
  /** Props for {@link McpToolDetail}. */
24
25
  export interface McpToolDetailProps {
@@ -115,10 +116,9 @@ function McpOffloadedImage({ storageKey }: { readonly storageKey: string }) {
115
116
  }
116
117
  if (!url) {
117
118
  return (
118
- <div
119
+ <LoadingRegion
119
120
  className="stg:h-40 stg:w-64 stg:animate-pulse stg:rounded-md stg:border stg:border-border stg:bg-muted"
120
- aria-busy="true"
121
- aria-label="Loading image output"
121
+ label="Loading image output"
122
122
  />
123
123
  );
124
124
  }
@@ -90,7 +90,7 @@ export const RecalledMemoriesCard = memo(function RecalledMemoriesCard({
90
90
  onClick={() => setExpanded((prev) => !prev)}
91
91
  className={cn(
92
92
  "stg:flex stg:w-full stg:items-center stg:gap-3 stg:px-3 stg:py-2 stg:text-left",
93
- "stg:text-xs stg:text-muted-foreground hover:stg:text-foreground",
93
+ "stg:text-xs stg:text-muted-foreground stg:hover:text-foreground",
94
94
  )}
95
95
  >
96
96
  <MemoryIcon />
@@ -25,6 +25,7 @@ import { execIdFromStorageKey } from "./useFileChangeContent.js";
25
25
  import { useArtifactDownloadUrl } from "./useArtifactDownloadUrl.js";
26
26
  import { useArtifactDownload } from "./useArtifactDownload.js";
27
27
  import { useToolOutputContent } from "./useToolOutputContent.js";
28
+ import { LoadingRegion } from "../internal/LoadingRegion.js";
28
29
 
29
30
  /** Props for {@link ResultView}. */
30
31
  export interface ResultViewProps {
@@ -509,10 +510,9 @@ function OutputRefImage({ storageKey, className }: { storageKey: string; classNa
509
510
  }
510
511
  if (!url) {
511
512
  return (
512
- <div
513
+ <LoadingRegion
513
514
  className={cn("stg:h-40 stg:w-64 stg:animate-pulse stg:rounded-md stg:border stg:border-border stg:bg-muted", className)}
514
- aria-busy="true"
515
- aria-label="Loading image output"
515
+ label="Loading image output"
516
516
  />
517
517
  );
518
518
  }
@@ -128,7 +128,7 @@ export function TerminalTail({
128
128
  const combined = [stdout, stderr]
129
129
  .filter((s): s is string => Boolean(s))
130
130
  .join("\n")
131
- .replace(/\s+$/, "");
131
+ .trimEnd();
132
132
  const lines = combined ? normalize(combined).split("\n") : [];
133
133
  const tail = lines.slice(-TAIL_LINE_LIMIT);
134
134
  const hiddenCount = lines.length - tail.length;
@@ -1,6 +1,7 @@
1
1
  "use client";
2
2
 
3
3
  import { cn } from "@stigmer/theme";
4
+ import { LoadingRegion } from "../internal/LoadingRegion.js";
4
5
 
5
6
  /** Props for {@link ThreadSkeleton}. */
6
7
  export interface ThreadSkeletonProps {
@@ -30,10 +31,9 @@ const AI_LINE_WIDTHS = [
30
31
  */
31
32
  export function ThreadSkeleton({ className }: ThreadSkeletonProps) {
32
33
  return (
33
- <div
34
+ <LoadingRegion
34
35
  className={cn("stg:flex stg:flex-col stg:gap-4 stg:pt-6 stg:pb-4", className)}
35
- aria-busy="true"
36
- aria-label="Loading conversation"
36
+ label="Loading conversation"
37
37
  >
38
38
  <div className="stg:animate-pulse stg:space-y-4">
39
39
  {/* Turn 1: Human bubble */}
@@ -68,6 +68,6 @@ export function ThreadSkeleton({ className }: ThreadSkeletonProps) {
68
68
  ))}
69
69
  </div>
70
70
  </div>
71
- </div>
71
+ </LoadingRegion>
72
72
  );
73
73
  }
@@ -1,4 +1,5 @@
1
1
  import type { WorkspaceEntry } from "@stigmer/protos/ai/stigmer/agentic/session/v1/workspace_pb";
2
+ import { trimTrailing } from "../internal/trim.js";
2
3
 
3
4
  const PLATFORM_PREFIX = ".stigmer/";
4
5
  const PLATFORM_DIR_NAME = ".stigmer";
@@ -71,7 +72,7 @@ export interface DisplayPath {
71
72
  */
72
73
  export function splitDisplayPath(path: string): DisplayPath {
73
74
  if (!path) return { dir: "", base: "" };
74
- const trimmed = path.replace(/\/+$/, "");
75
+ const trimmed = trimTrailing(path, "/");
75
76
  const idx = trimmed.lastIndexOf("/");
76
77
  if (idx < 0) return { dir: "", base: trimmed };
77
78
  const base = trimmed.slice(idx + 1);
@@ -239,7 +240,7 @@ function matchWorkspaceEntry(
239
240
 
240
241
  function joinLocalPath(base: string, rel: string): string {
241
242
  if (!rel) return base;
242
- const cleanBase = base.replace(/\/+$/, "");
243
+ const cleanBase = trimTrailing(base, "/");
243
244
  const cleanRel = rel.replace(/^\/+/, "");
244
245
  return `${cleanBase}/${cleanRel}`;
245
246
  }