@opengeni/react 6.5.2-canary.41607687019001 → 6.7.0

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 (1154) hide show
  1. package/dist/app/app-state.d.ts +4 -0
  2. package/dist/app/app-state.js +19 -14
  3. package/dist/app/components/Composer.js +25 -23
  4. package/dist/app/components/agent/agent-capability-picker.js +10 -8
  5. package/dist/app/components/artifacts/artifact-browse-controls.js +4 -4
  6. package/dist/app/components/artifacts/artifact-library.js +21 -19
  7. package/dist/app/components/artifacts/artifact-page-chrome.js +3 -3
  8. package/dist/app/components/artifacts/artifact-viewer.js +23 -22
  9. package/dist/app/components/artifacts/artifact-viewer.js.map +1 -1
  10. package/dist/app/components/artifacts/chat-interactive-block.js +12 -12
  11. package/dist/app/components/artifacts/copy-artifact-link.js +7 -5
  12. package/dist/app/components/artifacts/file-reach-dialog.js +11 -9
  13. package/dist/app/components/artifacts/inline-chat-image.js +18 -18
  14. package/dist/app/components/artifacts/retained-file-preview.js +24 -23
  15. package/dist/app/components/artifacts/retained-text-preview.js +3 -3
  16. package/dist/app/components/artifacts/site-audience.js +6 -5
  17. package/dist/app/components/artifacts/site-conversations.js +16 -14
  18. package/dist/app/components/artifacts/site-data.js +18 -16
  19. package/dist/app/components/artifacts/site-public-link.js +3 -2
  20. package/dist/app/components/artifacts/site-publishing-page.js +39 -37
  21. package/dist/app/components/artifacts/site-publishing.js +34 -32
  22. package/dist/app/components/artifacts/site-settings.js +38 -36
  23. package/dist/app/components/artifacts/site-version-menu.js +8 -7
  24. package/dist/app/components/billing-class-mark.js +3 -3
  25. package/dist/app/components/bots/bot-launch-strip.js +17 -17
  26. package/dist/app/components/bots/bot-template-dialog.js +30 -28
  27. package/dist/app/components/bots/bot-template-shortcuts.js +19 -19
  28. package/dist/app/components/bots/bot-templates-page.js +38 -36
  29. package/dist/app/components/bots/bot-templates-page.js.map +1 -1
  30. package/dist/app/components/capabilities/capability-detail-sheet.js +13 -11
  31. package/dist/app/components/capabilities/capability-logo-source.js +13 -13
  32. package/dist/app/components/capabilities/capability-logo.js +4 -3
  33. package/dist/app/components/capabilities/connector-tool-permissions.js +8 -6
  34. package/dist/app/components/capabilities/native-connect-setup.js +14 -14
  35. package/dist/app/components/capabilities/own-logins-shared-heads-up.js +7 -6
  36. package/dist/app/components/capabilities/perform-capability-action.js +7 -6
  37. package/dist/app/components/capabilities/prepared-mcp-setup-card.js +17 -17
  38. package/dist/app/components/capabilities/session-capability-card.js +72 -70
  39. package/dist/app/components/capabilities/session-capability-card.js.map +1 -1
  40. package/dist/app/components/capabilities/session-chrome-card.js +28 -26
  41. package/dist/app/components/capabilities/session-connection-accounts.js +4 -3
  42. package/dist/app/components/capabilities/session-custom-mcp-card.js +20 -19
  43. package/dist/app/components/capabilities/session-github-card.js +22 -20
  44. package/dist/app/components/capabilities/session-machine-card.js +27 -25
  45. package/dist/app/components/capabilities/session-personal-github-card.js +16 -16
  46. package/dist/app/components/capabilities/session-plugin-card.js +10 -9
  47. package/dist/app/components/capabilities/use-capabilities-catalog.js +4 -3
  48. package/dist/app/components/capabilities/use-connection-accounts.js +5 -4
  49. package/dist/app/components/command-menu/chat-status.js +15 -13
  50. package/dist/app/components/command-menu/chat-switcher.js +35 -33
  51. package/dist/app/components/command-menu/chat-switcher.js.map +1 -1
  52. package/dist/app/components/command-menu/command-menu.js +53 -50
  53. package/dist/app/components/command-menu/command-menu.js.map +1 -1
  54. package/dist/app/components/command-menu/shortcut-sheet.js +18 -16
  55. package/dist/app/components/command-menu/shortcut-sheet.js.map +1 -1
  56. package/dist/app/components/common.js +4 -3
  57. package/dist/app/components/composer-capabilities-menu-body.js +4 -4
  58. package/dist/app/components/composer-mobile-plus-panel.js +8 -8
  59. package/dist/app/components/composer-mobile-plus.js +1 -1
  60. package/dist/app/components/credit-required-gate.js +3 -3
  61. package/dist/app/components/credit-required-prompt.js +10 -8
  62. package/dist/app/components/credit-required-prompt.js.map +1 -1
  63. package/dist/app/components/credits/checkout-credits-celebration.js +3 -2
  64. package/dist/app/components/credits/checkout-return.js +3 -2
  65. package/dist/app/components/credits/checkout-return.js.map +1 -1
  66. package/dist/app/components/credits/coupon-redeem.js +5 -4
  67. package/dist/app/components/credits/credit-refusal-notice.js +7 -5
  68. package/dist/app/components/cross-slot-deep-link-recovery.js +5 -4
  69. package/dist/app/components/desktop/app-shots.js +13 -11
  70. package/dist/app/components/desktop/computer-use.js +6 -4
  71. package/dist/app/components/desktop/this-computer.js +9 -7
  72. package/dist/app/components/feedback.js +5 -4
  73. package/dist/app/components/follow-up-repository-menu-body.js +8 -6
  74. package/dist/app/components/follow-up-repository-menu-body.js.map +1 -1
  75. package/dist/app/components/follow-up-repository-picker.js +1 -1
  76. package/dist/app/components/github-app-connect-launcher.js +5 -4
  77. package/dist/app/components/in-app-help-link.js +3 -3
  78. package/dist/app/components/knowledge/agent-learning-settings.js +3 -2
  79. package/dist/app/components/knowledge/agent-learning-settings.js.map +1 -1
  80. package/dist/app/components/machines/connect-machine-dialog.js +18 -16
  81. package/dist/app/components/manual-repository-editor.js +3 -2
  82. package/dist/app/components/markdown.js +6 -6
  83. package/dist/app/components/models/models-ui.js +12 -10
  84. package/dist/app/components/my-things.js +12 -10
  85. package/dist/app/components/my-things.js.map +1 -1
  86. package/dist/app/components/new-session-starters.js +3 -3
  87. package/dist/app/components/own-where-it-works.js +9 -7
  88. package/dist/app/components/personal-resource-attachment-surface.js +4 -4
  89. package/dist/app/components/pickers.js +5 -5
  90. package/dist/app/components/rail/channel-create-dialog.js +7 -5
  91. package/dist/app/components/rail/project-glyph.js +17 -17
  92. package/dist/app/components/rail/project-profile.js +31 -29
  93. package/dist/app/components/rail/rail-context.js +3 -3
  94. package/dist/app/components/rail/rail-sections.js +68 -66
  95. package/dist/app/components/rail/session-header.js +59 -57
  96. package/dist/app/components/rail/session-list.js +66 -64
  97. package/dist/app/components/rail/session-row-content.js +4 -4
  98. package/dist/app/components/rail/session-row-hover-details.js +14 -12
  99. package/dist/app/components/rail/session-shell.js +90 -88
  100. package/dist/app/components/rail/site-session-group-heading.js +8 -8
  101. package/dist/app/components/repository-picker.js +8 -6
  102. package/dist/app/components/secrets/session-secrets-panel.js +4 -3
  103. package/dist/app/components/secrets/vault-model.js +3 -2
  104. package/dist/app/components/session/agent-configuration-panel.js +25 -23
  105. package/dist/app/components/session/agent-configuration-panel.js.map +1 -1
  106. package/dist/app/components/session/artifact-link-boundary.js +3 -3
  107. package/dist/app/components/session/artifact-session-page.js +11 -9
  108. package/dist/app/components/session/banners.js +8 -8
  109. package/dist/app/components/session/codex-usage-notice.js +5 -3
  110. package/dist/app/components/session/console-new-conversation.js +42 -40
  111. package/dist/app/components/session/context-text-reader.js +3 -2
  112. package/dist/app/components/session/descendant-requests.js +39 -37
  113. package/dist/app/components/session/descendant-requests.js.map +1 -1
  114. package/dist/app/components/session/editable-artifacts-workspace.js +36 -34
  115. package/dist/app/components/session/editable-artifacts-workspace.js.map +1 -1
  116. package/dist/app/components/session/failed-session-banner.js +13 -11
  117. package/dist/app/components/session/failed-session-banner.js.map +1 -1
  118. package/dist/app/components/session/failure-recovery-boundary.js +3 -3
  119. package/dist/app/components/session/human-input-delegation-record.js +2 -2
  120. package/dist/app/components/session/human-input.js +33 -31
  121. package/dist/app/components/session/inspector.js +57 -55
  122. package/dist/app/components/session/inspector.js.map +1 -1
  123. package/dist/app/components/session/message-actions.js +5 -4
  124. package/dist/app/components/session/message-actions.js.map +1 -1
  125. package/dist/app/components/session/message-resource-attachments.js +12 -11
  126. package/dist/app/components/session/message-resource-attachments.js.map +1 -1
  127. package/dist/app/components/session/model-context-inspector.js +6 -4
  128. package/dist/app/components/session/model-recovery-notice.js +3 -3
  129. package/dist/app/components/session/new-session-settings-menu.js +11 -9
  130. package/dist/app/components/session/new-session-setup-strip.js +18 -18
  131. package/dist/app/components/session/sandbox-recovery-actions.js +3 -3
  132. package/dist/app/components/session/sandbox-switcher.js +10 -9
  133. package/dist/app/components/session/sandbox-workspace.js +47 -46
  134. package/dist/app/components/session/search-markdown-highlight.js +7 -7
  135. package/dist/app/components/session/search-results-view.js +8 -8
  136. package/dist/app/components/session/session-admin-access.js +13 -11
  137. package/dist/app/components/session/session-admission-notice.js +7 -5
  138. package/dist/app/components/session/session-avatar-picker.js +22 -20
  139. package/dist/app/components/session/session-avatar.js +16 -16
  140. package/dist/app/components/session/session-machine-access-notice.js +7 -5
  141. package/dist/app/components/session/session-profile-dialog.js +29 -27
  142. package/dist/app/components/session/session-profile-editor.js +30 -28
  143. package/dist/app/components/session/session-retention.js +10 -8
  144. package/dist/app/components/session/session-search-dialog.js +10 -10
  145. package/dist/app/components/session/session-skill-reviews.js +2 -1
  146. package/dist/app/components/session/session-skill-reviews.js.map +1 -1
  147. package/dist/app/components/session/session-tenancy-control.js +13 -11
  148. package/dist/app/components/session/session-tenancy-control.js.map +1 -1
  149. package/dist/app/components/session/session-unattended-setting.js +7 -5
  150. package/dist/app/components/session/session-usage-limit-section.js +11 -9
  151. package/dist/app/components/session/share-chat-dialog.js +9 -7
  152. package/dist/app/components/session/site-origin-link.js +3 -3
  153. package/dist/app/components/session/subagents.js +8 -8
  154. package/dist/app/components/session/subscription-account-indicator.js +6 -6
  155. package/dist/app/components/session-connectors-menu-body.js +4 -3
  156. package/dist/app/components/session-connectors-menu-body.js.map +1 -1
  157. package/dist/app/components/settings/row-select.js +7 -5
  158. package/dist/app/components/toaster.js +3 -2
  159. package/dist/app/components/transcription-settings.js +11 -9
  160. package/dist/app/components/ui/destructive-confirm.js +11 -9
  161. package/dist/app/components/usage/usage-entry.js +5 -5
  162. package/dist/app/components/window-bar.js +16 -14
  163. package/dist/app/components/workspace-composer-plus.js +22 -21
  164. package/dist/app/components/workspace-reach.js +6 -4
  165. package/dist/app/components/workspace-tenant-boundary.js +5 -4
  166. package/dist/app/embed/memory-navigation.js +3 -3
  167. package/dist/app/embed/session-app.js +211 -209
  168. package/dist/app/lib/actions/actions-provider.js +15 -13
  169. package/dist/app/lib/agent-capabilities.js +3 -3
  170. package/dist/app/lib/app-surfaces.js +7 -6
  171. package/dist/app/lib/archive-session.d.ts +9 -4
  172. package/dist/app/lib/archive-session.js +4 -2
  173. package/dist/app/lib/bot-templates.js +3 -2
  174. package/dist/app/lib/capabilities.js +3 -2
  175. package/dist/app/lib/codex-usage-query.js +2 -2
  176. package/dist/app/lib/composer-connectors.js +17 -16
  177. package/dist/app/lib/console-site.js +2 -2
  178. package/dist/app/lib/console-text.js +2 -2
  179. package/dist/app/lib/events.js +9 -9
  180. package/dist/app/lib/failed-session-copy.js +3 -3
  181. package/dist/app/lib/inbox.js +4 -2
  182. package/dist/app/lib/model-access-onboarding.js +3 -3
  183. package/dist/app/lib/move-chat-to-machine.js +3 -3
  184. package/dist/app/lib/navigation.js +2 -2
  185. package/dist/app/lib/session-branch-cache.js +6 -6
  186. package/dist/app/lib/session-create.js +4 -4
  187. package/dist/app/lib/session-group-pagination.js +6 -6
  188. package/dist/app/lib/session-hover-facts.js +13 -11
  189. package/dist/app/lib/session-model.js +2 -2
  190. package/dist/app/lib/session-rail.js +3 -3
  191. package/dist/app/lib/session-rename.js +3 -3
  192. package/dist/app/lib/session-restart-operation-controller.js +4 -3
  193. package/dist/app/lib/session-tenancy.js +3 -2
  194. package/dist/app/lib/session-usage-limit.js +3 -2
  195. package/dist/app/lib/sessions-group.js +5 -5
  196. package/dist/app/lib/site-publishing.js +3 -2
  197. package/dist/app/lib/site-tool-consent-dialog.js +9 -7
  198. package/dist/app/lib/site-tool-consent-dialog.js.map +1 -1
  199. package/dist/app/lib/site-tool-consent.js +1 -1
  200. package/dist/app/lib/subscription-plans.js +3 -2
  201. package/dist/app/lib/toast.js +2 -1
  202. package/dist/app/lib/turn-failure-analytics.js +4 -4
  203. package/dist/app/lib/use-duplicate-site.js +6 -5
  204. package/dist/app/lib/use-follow-up-repositories.js +6 -5
  205. package/dist/app/lib/use-workspace-integrations.js +4 -3
  206. package/dist/app/lib/use-workspace-machines.js +4 -4
  207. package/dist/app/lib/use-workspace-model-catalog.js +5 -4
  208. package/dist/app/lib/use-workspace-rigs.js +2 -2
  209. package/dist/app/lib/workspace-navigation-preference.js +4 -4
  210. package/dist/app/lib/workspace-scope-context.js +3 -3
  211. package/dist/app/routes/artifacts.js +67 -66
  212. package/dist/app/routes/artifacts.js.map +1 -1
  213. package/dist/app/routes/retained-artifact.js +42 -40
  214. package/dist/app/routes/retained-artifact.js.map +1 -1
  215. package/dist/app/routes/session-unavailable.js +8 -7
  216. package/dist/app/routes/session.js +119 -117
  217. package/dist/app/routes/sessions-index-hydration.js +5 -5
  218. package/dist/app/routes/sessions-index.js +104 -102
  219. package/dist/app/routes/site-view.js +67 -65
  220. package/dist/app/routes/site-view.js.map +1 -1
  221. package/dist/artifacts-document.js +4 -4
  222. package/dist/artifacts-presentation.js +4 -4
  223. package/dist/artifacts-spreadsheet.js +4 -4
  224. package/dist/artifacts.js +10 -10
  225. package/dist/automations.js +17 -15
  226. package/dist/automations.js.map +1 -1
  227. package/dist/browser-viewer-TC27OCIP.js +23 -0
  228. package/dist/chat-interactive-block-RWPQBHVS.js +18 -0
  229. package/dist/chunk-2BDT3UZQ.js +229 -0
  230. package/dist/chunk-2CLNIEK4.js +373 -0
  231. package/dist/chunk-2FSBSCZJ.js +451 -0
  232. package/dist/chunk-2I7HDP53.js +199 -0
  233. package/dist/chunk-2INLDVK3.js +15 -0
  234. package/dist/chunk-2KALVELR.js +126 -0
  235. package/dist/chunk-2M3J7ZWQ.js +418 -0
  236. package/dist/chunk-2OP6WLGV.js +708 -0
  237. package/dist/chunk-2RG7NIAS.js +2936 -0
  238. package/dist/chunk-2STUPWEL.js +135 -0
  239. package/dist/chunk-2YUOVM3G.js +271 -0
  240. package/dist/chunk-2Z3NQNTM.js +3670 -0
  241. package/dist/chunk-3CPWWGNK.js +920 -0
  242. package/dist/chunk-3ED2U6XE.js +37 -0
  243. package/dist/chunk-3GZA4BUW.js +216 -0
  244. package/dist/chunk-3IK6UYO6.js +1022 -0
  245. package/dist/chunk-3PZ7JZI2.js +431 -0
  246. package/dist/chunk-4DVJ6ONS.js +50 -0
  247. package/dist/chunk-4DVNUCRR.js +2386 -0
  248. package/dist/chunk-4DVNUCRR.js.map +1 -0
  249. package/dist/chunk-4E3ZJRTZ.js +41 -0
  250. package/dist/chunk-4SAWSRAA.js +141 -0
  251. package/dist/chunk-53AGXXZM.js +307 -0
  252. package/dist/chunk-54YW6SZZ.js +818 -0
  253. package/dist/chunk-57AZS3IE.js +2317 -0
  254. package/dist/chunk-5CPEEAFD.js +143 -0
  255. package/dist/chunk-5EWSRZ2Y.js +340 -0
  256. package/dist/chunk-5IE76VCY.js +387 -0
  257. package/dist/chunk-5NWEKLDZ.js +170 -0
  258. package/dist/chunk-5O2FCCHZ.js +198 -0
  259. package/dist/chunk-5QAY6K77.js +399 -0
  260. package/dist/chunk-5YKW2K6I.js +625 -0
  261. package/dist/chunk-5YKW2K6I.js.map +1 -0
  262. package/dist/chunk-6BCXNDEI.js +4116 -0
  263. package/dist/chunk-6BCXNDEI.js.map +1 -0
  264. package/dist/chunk-6DK6Z4UN.js +2599 -0
  265. package/dist/chunk-6DVCC7QS.js +702 -0
  266. package/dist/chunk-6JHU2UBS.js +2058 -0
  267. package/dist/chunk-6PZ7OBYU.js +490 -0
  268. package/dist/chunk-6WD2INST.js +539 -0
  269. package/dist/chunk-6WD2INST.js.map +1 -0
  270. package/dist/chunk-6WGRDRMA.js +163 -0
  271. package/dist/chunk-77WAKEAH.js +186 -0
  272. package/dist/chunk-7T2ZE3VT.js +5558 -0
  273. package/dist/chunk-7T2ZE3VT.js.map +1 -0
  274. package/dist/chunk-7TDO3CUM.js +393 -0
  275. package/dist/chunk-7TIX2UAR.js +247 -0
  276. package/dist/chunk-7V5REBCP.js +148 -0
  277. package/dist/chunk-7VMZGLYI.js +339 -0
  278. package/dist/chunk-7W37NS3I.js +236 -0
  279. package/dist/chunk-7X6SDK2C.js +111 -0
  280. package/dist/chunk-7ZNUHRP5.js +95 -0
  281. package/dist/chunk-A36PZALD.js +84 -0
  282. package/dist/chunk-AUI6VA63.js +107 -0
  283. package/dist/chunk-AW2MQB37.js +24 -0
  284. package/dist/chunk-AWKES45Y.js +198 -0
  285. package/dist/chunk-AXHZYXUV.js +132 -0
  286. package/dist/chunk-BHNSJVBC.js +129 -0
  287. package/dist/chunk-BJEJFISW.js +50 -0
  288. package/dist/chunk-BJFH6JI5.js +422 -0
  289. package/dist/chunk-BMICEQZQ.js +960 -0
  290. package/dist/chunk-BTLBYBLU.js +29 -0
  291. package/dist/chunk-BXBDYNRP.js +89 -0
  292. package/dist/chunk-C372BFOV.js +357 -0
  293. package/dist/chunk-C43KRXGA.js +234 -0
  294. package/dist/chunk-C43KRXGA.js.map +1 -0
  295. package/dist/chunk-CMKGILJK.js +4824 -0
  296. package/dist/chunk-CRAOSVHC.js +50 -0
  297. package/dist/chunk-CRU35QQH.js +281 -0
  298. package/dist/chunk-CUIWCGMA.js +172 -0
  299. package/dist/chunk-D5TWNFFE.js +38 -0
  300. package/dist/chunk-DF5EAHDN.js +4461 -0
  301. package/dist/chunk-DJAXC5OK.js +56 -0
  302. package/dist/chunk-DXBYWSL5.js +3550 -0
  303. package/dist/chunk-DXR5PDFP.js +84 -0
  304. package/dist/chunk-DZWARC4M.js +267 -0
  305. package/dist/chunk-DZXEDSQI.js +106 -0
  306. package/dist/chunk-E7XERZWC.js +48 -0
  307. package/dist/chunk-ECJBYNLJ.js +79 -0
  308. package/dist/chunk-EDI6SJ2N.js +43 -0
  309. package/dist/chunk-EWSOC6WF.js +114 -0
  310. package/dist/chunk-F2OPHAUN.js +103 -0
  311. package/dist/chunk-F4ISQGGM.js +81 -0
  312. package/dist/chunk-FO4LYKJL.js +197 -0
  313. package/dist/chunk-FPXASDG5.js +73 -0
  314. package/dist/chunk-FSOQDUCG.js +117 -0
  315. package/dist/chunk-FSOQDUCG.js.map +1 -0
  316. package/dist/chunk-FVXBNBHO.js +157 -0
  317. package/dist/chunk-FYWT2O76.js +34 -0
  318. package/dist/chunk-FYWT2O76.js.map +1 -0
  319. package/dist/chunk-FZC5N55X.js +981 -0
  320. package/dist/chunk-GAVYGBFI.js +99 -0
  321. package/dist/chunk-GFIMOUDT.js +846 -0
  322. package/dist/chunk-GFIMOUDT.js.map +1 -0
  323. package/dist/chunk-GKVJIDHF.js +33 -0
  324. package/dist/chunk-GVN5SZLX.js +212 -0
  325. package/dist/chunk-H3T7IWNA.js +134 -0
  326. package/dist/chunk-HAX4LCR5.js +261 -0
  327. package/dist/chunk-HC4JFZVU.js +121 -0
  328. package/dist/chunk-HEFPPMBQ.js +581 -0
  329. package/dist/chunk-HGKTHF2U.js +1356 -0
  330. package/dist/chunk-HGKTHF2U.js.map +1 -0
  331. package/dist/chunk-HNLR7Q4Z.js +83 -0
  332. package/dist/chunk-HSOXMJOT.js +12 -0
  333. package/dist/chunk-I4MRDSUF.js +281 -0
  334. package/dist/chunk-I4QEJ62Y.js +202 -0
  335. package/dist/chunk-I5B5L6Q4.js +56 -0
  336. package/dist/chunk-I5QZJODL.js +264 -0
  337. package/dist/chunk-I7ITSXSJ.js +603 -0
  338. package/dist/chunk-I7XIZRFD.js +390 -0
  339. package/dist/chunk-IDANQPRH.js +82 -0
  340. package/dist/chunk-IFB3WJ36.js +212 -0
  341. package/dist/chunk-IHTAKKTK.js +264 -0
  342. package/dist/chunk-IKXNLWAL.js +205 -0
  343. package/dist/chunk-IKXNLWAL.js.map +1 -0
  344. package/dist/chunk-ILDXWY37.js +173 -0
  345. package/dist/chunk-IMDQUHBJ.js +570 -0
  346. package/dist/chunk-IMZCQBOT.js +119 -0
  347. package/dist/chunk-IXPTECSC.js +403 -0
  348. package/dist/chunk-J255A3N5.js +71 -0
  349. package/dist/chunk-J5F5HPPW.js +141 -0
  350. package/dist/chunk-JDTGRRNU.js +5045 -0
  351. package/dist/chunk-JDTGRRNU.js.map +1 -0
  352. package/dist/chunk-JEA3QDX7.js +2469 -0
  353. package/dist/chunk-JEUPAVYY.js +156 -0
  354. package/dist/chunk-JKHKLL5W.js +194 -0
  355. package/dist/chunk-JQL7ZH6C.js +650 -0
  356. package/dist/chunk-JWB44UGJ.js +57 -0
  357. package/dist/chunk-JZ4NLCAP.js +333 -0
  358. package/dist/chunk-K2A5PXQ5.js +412 -0
  359. package/dist/chunk-K56XV3C3.js +623 -0
  360. package/dist/chunk-K6GAXXVA.js +23 -0
  361. package/dist/chunk-KCBMFSMS.js +199 -0
  362. package/dist/chunk-KF2FV3ZJ.js +268 -0
  363. package/dist/chunk-KJD65EJP.js +278 -0
  364. package/dist/chunk-KLEUWIMZ.js +386 -0
  365. package/dist/chunk-KODELWYT.js +309 -0
  366. package/dist/chunk-KRDR5RJD.js +83 -0
  367. package/dist/chunk-KUDGXAF7.js +914 -0
  368. package/dist/chunk-KY2R73CG.js +171 -0
  369. package/dist/chunk-KY2R73CG.js.map +1 -0
  370. package/dist/chunk-KYS77RPN.js +85 -0
  371. package/dist/chunk-L7YTNTIK.js +368 -0
  372. package/dist/chunk-LHPNABDH.js +686 -0
  373. package/dist/chunk-MFROMEKA.js +401 -0
  374. package/dist/chunk-MIHN76LX.js +2656 -0
  375. package/dist/chunk-MIYFS2XN.js +42 -0
  376. package/dist/chunk-MJUCFQMS.js +65 -0
  377. package/dist/chunk-MM4FNWI4.js +3064 -0
  378. package/dist/chunk-MNZG4OHU.js +790 -0
  379. package/dist/chunk-MVW6HNPI.js +250 -0
  380. package/dist/chunk-MVW6HNPI.js.map +1 -0
  381. package/dist/chunk-N6AACDUW.js +200 -0
  382. package/dist/chunk-NC55IFN3.js +781 -0
  383. package/dist/chunk-NC7PVOEK.js +98 -0
  384. package/dist/chunk-NCYMNCJO.js +70 -0
  385. package/dist/chunk-ND2BXV3P.js +259 -0
  386. package/dist/chunk-NDBTFUO6.js +272 -0
  387. package/dist/chunk-NDQJZ7HF.js +206 -0
  388. package/dist/chunk-NGJJJPZZ.js +162 -0
  389. package/dist/chunk-NJTSNNE7.js +251 -0
  390. package/dist/chunk-NPGISCU6.js +4159 -0
  391. package/dist/chunk-NPGISCU6.js.map +1 -0
  392. package/dist/chunk-NRTE7DNV.js +1270 -0
  393. package/dist/chunk-NULUNM7H.js +290 -0
  394. package/dist/chunk-NUNZS36W.js +227 -0
  395. package/dist/chunk-NW53H5RW.js +2424 -0
  396. package/dist/chunk-NXCMHIKI.js +263 -0
  397. package/dist/chunk-O3LKCBP5.js +159 -0
  398. package/dist/chunk-O4EA4F3W.js +103 -0
  399. package/dist/chunk-O4EA4F3W.js.map +1 -0
  400. package/dist/chunk-O4OOG3D6.js +116 -0
  401. package/dist/chunk-O4OOG3D6.js.map +1 -0
  402. package/dist/chunk-O6N4ABCA.js +376 -0
  403. package/dist/chunk-O732GAFC.js +112 -0
  404. package/dist/chunk-OF4TIKYC.js +690 -0
  405. package/dist/chunk-OMPVOMPP.js +70 -0
  406. package/dist/chunk-OPJJSKUK.js +118 -0
  407. package/dist/chunk-OPWCMA4D.js +196 -0
  408. package/dist/chunk-ORJPS5VN.js +1193 -0
  409. package/dist/chunk-OSY5K7L7.js +187 -0
  410. package/dist/chunk-OV6QJRT4.js +45 -0
  411. package/dist/chunk-OVKYVZMW.js +108 -0
  412. package/dist/chunk-OZCBM3UC.js +171 -0
  413. package/dist/chunk-P3A2EINJ.js +61 -0
  414. package/dist/chunk-PTAG4PDC.js +27 -0
  415. package/dist/chunk-PTF5B7TJ.js +298 -0
  416. package/dist/chunk-Q3DPEYX4.js +848 -0
  417. package/dist/chunk-Q6CGOPJD.js +215 -0
  418. package/dist/chunk-Q6CGOPJD.js.map +1 -0
  419. package/dist/chunk-QB2KMIDP.js +100 -0
  420. package/dist/chunk-QCSJ4CWE.js +1067 -0
  421. package/dist/chunk-QIOQ2NPQ.js +414 -0
  422. package/dist/chunk-QK5EFEUT.js +353 -0
  423. package/dist/chunk-QPQBLYQJ.js +41 -0
  424. package/dist/chunk-QPSGCC5D.js +184 -0
  425. package/dist/chunk-QZAAUQRN.js +474 -0
  426. package/dist/chunk-QZM6YDJW.js +489 -0
  427. package/dist/chunk-QZM6YDJW.js.map +1 -0
  428. package/dist/chunk-RGBI63KJ.js +188 -0
  429. package/dist/chunk-RLBKLAEY.js +138 -0
  430. package/dist/chunk-RMFKVOM7.js +304 -0
  431. package/dist/chunk-ROKQU7WG.js +258 -0
  432. package/dist/chunk-RPVREAU7.js +251 -0
  433. package/dist/chunk-RQKLF42C.js +723 -0
  434. package/dist/chunk-SC6RRD2D.js +38 -0
  435. package/dist/chunk-SC6RRD2D.js.map +1 -0
  436. package/dist/chunk-SEO7TICN.js +94 -0
  437. package/dist/chunk-SHHJCL7X.js +432 -0
  438. package/dist/chunk-SIRLACNZ.js +114 -0
  439. package/dist/chunk-SKPHMYAA.js +237 -0
  440. package/dist/chunk-SODC7T6L.js +1583 -0
  441. package/dist/chunk-SQJIKMN3.js +366 -0
  442. package/dist/chunk-SVINDKVW.js +26 -0
  443. package/dist/chunk-SYCDHPZF.js +335 -0
  444. package/dist/chunk-T2QX3FDP.js +133 -0
  445. package/dist/chunk-T3OWFVMS.js +1187 -0
  446. package/dist/chunk-T6XI5FLY.js +61 -0
  447. package/dist/chunk-T7OXJZCX.js +62 -0
  448. package/dist/chunk-TAT5USZN.js +353 -0
  449. package/dist/chunk-TPQTRNER.js +172 -0
  450. package/dist/chunk-TUIN4MB7.js +266 -0
  451. package/dist/chunk-TX3VECZU.js +71 -0
  452. package/dist/chunk-TXLIEOJX.js +9624 -0
  453. package/dist/chunk-U3DN4HEY.js +27 -0
  454. package/dist/chunk-U7XM7CB4.js +191 -0
  455. package/dist/chunk-UJK53QFL.js +140 -0
  456. package/dist/chunk-UMTXA2TH.js +319 -0
  457. package/dist/chunk-UPDSXFK5.js +199 -0
  458. package/dist/chunk-UTIAXH52.js +269 -0
  459. package/dist/chunk-UVN5TMHU.js +1184 -0
  460. package/dist/chunk-V4Z4B2E3.js +52 -0
  461. package/dist/chunk-V4Z4B2E3.js.map +1 -0
  462. package/dist/chunk-VGYXW3VG.js +246 -0
  463. package/dist/chunk-VS7AHPCZ.js +255 -0
  464. package/dist/chunk-VTTAJOQ7.js +121 -0
  465. package/dist/chunk-VWPOLUAO.js +99 -0
  466. package/dist/chunk-X3MWB2QU.js +3851 -0
  467. package/dist/chunk-X6KAJI3V.js +211 -0
  468. package/dist/chunk-XBLRHV5R.js +50 -0
  469. package/dist/chunk-XDFP2LMW.js +605 -0
  470. package/dist/chunk-XEQMZB3C.js +525 -0
  471. package/dist/chunk-XEYLT5VA.js +223 -0
  472. package/dist/chunk-XHIQ5I6N.js +918 -0
  473. package/dist/chunk-XLH7QY2R.js +378 -0
  474. package/dist/chunk-XWFAMUZQ.js +113 -0
  475. package/dist/chunk-Y4BB2KS2.js +294 -0
  476. package/dist/chunk-Y4BB2KS2.js.map +1 -0
  477. package/dist/chunk-Y4OBB2VN.js +84 -0
  478. package/dist/chunk-YCVD6CI3.js +234 -0
  479. package/dist/chunk-YENLNISG.js +270 -0
  480. package/dist/chunk-YIRVLKAX.js +351 -0
  481. package/dist/chunk-YL73CVNK.js +390 -0
  482. package/dist/chunk-YLS6QE5G.js +288 -0
  483. package/dist/chunk-YNF2OC54.js +366 -0
  484. package/dist/chunk-YNF2OC54.js.map +1 -0
  485. package/dist/chunk-YPWU5KPE.js +147 -0
  486. package/dist/chunk-YQXTDZSU.js +2984 -0
  487. package/dist/chunk-YSJEAAOL.js +178 -0
  488. package/dist/chunk-YWIFM7D7.js +499 -0
  489. package/dist/chunk-YWVI6ZMK.js +103 -0
  490. package/dist/chunk-Z4FMAFNH.js +847 -0
  491. package/dist/chunk-Z654FWNU.js +136 -0
  492. package/dist/chunk-Z7Y523PS.js +130 -0
  493. package/dist/chunk-ZD67RM6G.js +60 -0
  494. package/dist/chunk-ZEG4VPBL.js +187 -0
  495. package/dist/chunk-ZHDFQITM.js +283 -0
  496. package/dist/chunk-ZHDFQITM.js.map +1 -0
  497. package/dist/chunk-ZLYCOBHW.js +75 -0
  498. package/dist/chunk-ZNJ5MTXV.js +89 -0
  499. package/dist/chunk-ZSGY3H53.js +155 -0
  500. package/dist/chunk-ZTPXACWB.js +1788 -0
  501. package/dist/chunk-ZUA3JMI6.js +107 -0
  502. package/dist/chunk-ZYAZUPPV.js +559 -0
  503. package/dist/composer.js +8 -8
  504. package/dist/computer-viewer-TDDO25AV.js +21 -0
  505. package/dist/connect.js +12 -12
  506. package/dist/desktop-dictation.js +12 -10
  507. package/dist/desktop-dictation.js.map +1 -1
  508. package/dist/desktop.js +2 -2
  509. package/dist/editor.js +2 -2
  510. package/dist/embedded-new-voice-2G3VLPVQ.js +24 -0
  511. package/dist/embedded-voice-T5IWOWGD.js +24 -0
  512. package/dist/fleet-decision-row-WM64KXP3.js +361 -0
  513. package/dist/in-chat-connect-model.js +5 -5
  514. package/dist/index.js +51 -51
  515. package/dist/interaction.js +5 -5
  516. package/dist/machines.js +3 -3
  517. package/dist/meetings-recorder.js +1 -1
  518. package/dist/meetings.js +40 -32
  519. package/dist/meetings.js.map +1 -1
  520. package/dist/messages/en.d.ts +3 -0
  521. package/dist/messages.js +1 -1
  522. package/dist/model-policy-picker-menu-SMC6J6QN.js +22 -0
  523. package/dist/payment-page-card-G4U63KUV.js +223 -0
  524. package/dist/platform-activity-row-BUZGZAKZ.js +128 -0
  525. package/dist/queue-surface-implementation-4KUZ4PJV.js +908 -0
  526. package/dist/realtime.js +4 -4
  527. package/dist/recorder-host-WF2RRR56.js +69 -0
  528. package/dist/recorder-host-WF2RRR56.js.map +1 -0
  529. package/dist/recordings.js +3 -3
  530. package/dist/sandbox-files-ESDMOFSD.js +27 -0
  531. package/dist/session-app.js +211 -209
  532. package/dist/session-connect-cards-Q53KMMYY.js +25 -0
  533. package/dist/session-list-model.js +2 -2
  534. package/dist/session-realtime-CF3I35WJ.js +30 -0
  535. package/dist/session-realtime.js +2 -2
  536. package/dist/session-ui.js +33 -31
  537. package/dist/session.js +5 -5
  538. package/dist/sites.js +2 -2
  539. package/dist/terminal.js +2 -2
  540. package/dist/this-computer.js +3 -3
  541. package/dist/timeline-annotation-markers-CJK4RYZ4.js +157 -0
  542. package/dist/timeline-annotation-selection-67GF5H26.js +208 -0
  543. package/dist/timeline-annotations-dialog-ONJPQDJQ.js +283 -0
  544. package/dist/ui/access-list.js +11 -9
  545. package/dist/ui/access-list.js.map +1 -1
  546. package/dist/ui/api-error.d.ts +6 -3
  547. package/dist/ui/api-error.js +2 -1
  548. package/dist/ui/cadence-picker.js +6 -4
  549. package/dist/ui/choice-cards.js +5 -3
  550. package/dist/ui/confirm-dialog.js +2 -2
  551. package/dist/ui/copy-field.js +5 -3
  552. package/dist/ui/detail-page.js +2 -2
  553. package/dist/ui/detail-sheet.js +2 -2
  554. package/dist/ui/diff-view.js +4 -3
  555. package/dist/ui/disclosure.js +3 -3
  556. package/dist/ui/email-chips-input.js +5 -3
  557. package/dist/ui/error-message.js +2 -1
  558. package/dist/ui/error-reference.d.ts +15 -0
  559. package/dist/ui/error-text.d.ts +10 -0
  560. package/dist/ui/error-text.js +9 -0
  561. package/dist/ui/error-text.js.map +1 -0
  562. package/dist/ui/field.js +4 -2
  563. package/dist/ui/flush-form-page.js +8 -6
  564. package/dist/ui/form-dialog.js +7 -5
  565. package/dist/ui/list-row.js +3 -3
  566. package/dist/ui/load-failure.js +3 -2
  567. package/dist/ui/load-failure.js.map +1 -1
  568. package/dist/ui/notice.js +3 -1
  569. package/dist/ui/relative-time.js +2 -2
  570. package/dist/ui/revision-history.js +9 -7
  571. package/dist/ui/revision-history.js.map +1 -1
  572. package/dist/ui/role-select.js +10 -8
  573. package/dist/ui/segmented-control.js +4 -2
  574. package/dist/ui/select-menu.js +5 -3
  575. package/dist/ui/setting-row.js +3 -1
  576. package/dist/ui/switch.js +4 -2
  577. package/dist/ui/usage-meter.js +3 -3
  578. package/dist/ui/word-list-row.js +4 -2
  579. package/dist/usage.js +2 -2
  580. package/dist/workbench.js +4 -4
  581. package/package.json +5 -6
  582. package/src/app/app-state.tsx +126 -14
  583. package/src/app/components/artifacts/site-data.tsx +2 -2
  584. package/src/app/components/artifacts/site-settings.tsx +2 -2
  585. package/src/app/components/rail/session-list.tsx +7 -8
  586. package/src/app/components/rail/session-shell.tsx +3 -3
  587. package/src/app/components/repository-picker.tsx +8 -1
  588. package/src/app/components/session/model-context-inspector.tsx +2 -1
  589. package/src/app/components/session/session-admin-access.tsx +2 -2
  590. package/src/app/lib/actions/chat-operations.ts +4 -4
  591. package/src/app/lib/archive-session.test.tsx +265 -2
  592. package/src/app/lib/archive-session.tsx +175 -9
  593. package/src/app/lib/copy-link.ts +2 -2
  594. package/src/app/lib/inbox.tsx +2 -2
  595. package/src/app/lib/session-failure-toasts.ts +3 -2
  596. package/src/app/lib/toast.test.tsx +215 -0
  597. package/src/app/lib/toast.tsx +67 -2
  598. package/src/app/personal-github-reconnect.test.tsx +356 -0
  599. package/src/app/routes/artifacts.tsx +1 -2
  600. package/src/components/tool-action-review.tsx +14 -1
  601. package/src/meetings/delete-meeting-dialog.tsx +2 -1
  602. package/src/meetings/meeting-ask.tsx +2 -1
  603. package/src/meetings/meeting-detail-page.tsx +2 -1
  604. package/src/meetings/meeting-notes.tsx +2 -1
  605. package/src/meetings/meeting-settings.tsx +4 -1
  606. package/src/meetings/meeting-transcript.tsx +4 -1
  607. package/src/meetings/recorder-context.tsx +10 -0
  608. package/src/meetings/recorder-host.test.tsx +60 -2
  609. package/src/meetings/recorder-host.tsx +16 -3
  610. package/src/meetings/recorder-panel.tsx +2 -1
  611. package/src/meetings/recorder-workspace.test.tsx +26 -1
  612. package/src/messages/en.ts +6 -0
  613. package/src/ui/api-error.test.ts +29 -5
  614. package/src/ui/api-error.tsx +10 -4
  615. package/src/ui/error-message.tsx +8 -0
  616. package/src/ui/error-reference.test.ts +54 -0
  617. package/src/ui/error-reference.ts +51 -0
  618. package/src/ui/error-text.test.tsx +66 -0
  619. package/src/ui/error-text.tsx +49 -0
  620. package/src/ui/field.tsx +4 -1
  621. package/src/ui/notice.tsx +7 -2
  622. package/src/ui/setting-row.tsx +4 -1
  623. package/styles/app.css +12 -0
  624. package/styles/compiled.css +9 -0
  625. package/dist/browser-viewer-NOP5EAUO.js +0 -23
  626. package/dist/chat-interactive-block-G7O44JHR.js +0 -18
  627. package/dist/chunk-26RWVLRD.js +0 -135
  628. package/dist/chunk-2AHTY7OT.js +0 -247
  629. package/dist/chunk-2GDNWKSC.js +0 -3670
  630. package/dist/chunk-2JENKGCE.js +0 -339
  631. package/dist/chunk-2KYQC4T5.js +0 -155
  632. package/dist/chunk-2RREGDQH.js +0 -708
  633. package/dist/chunk-2T7DX6KR.js +0 -353
  634. package/dist/chunk-2VB2O4FQ.js +0 -920
  635. package/dist/chunk-2VTTKH23.js +0 -94
  636. package/dist/chunk-2XNG2KNT.js +0 -172
  637. package/dist/chunk-2YC6JQRO.js +0 -399
  638. package/dist/chunk-2ZVRJRXC.js +0 -27
  639. package/dist/chunk-35737UT4.js +0 -162
  640. package/dist/chunk-366XZ4PM.js +0 -41
  641. package/dist/chunk-36MIDGAH.js +0 -199
  642. package/dist/chunk-3FD76LXM.js +0 -212
  643. package/dist/chunk-3OVIXY4O.js +0 -213
  644. package/dist/chunk-3OVIXY4O.js.map +0 -1
  645. package/dist/chunk-3QNRBEYH.js +0 -432
  646. package/dist/chunk-3QX55WLC.js +0 -15
  647. package/dist/chunk-3USJPT2S.js +0 -1022
  648. package/dist/chunk-42CMQ5VR.js +0 -251
  649. package/dist/chunk-4LPOWQJY.js +0 -42
  650. package/dist/chunk-4NBTZRKT.js +0 -79
  651. package/dist/chunk-4OXI6HCV.js +0 -118
  652. package/dist/chunk-4SZZAFYQ.js +0 -2317
  653. package/dist/chunk-4TQL3WP2.js +0 -140
  654. package/dist/chunk-4Y6BK7IU.js +0 -196
  655. package/dist/chunk-4YD7YZC5.js +0 -373
  656. package/dist/chunk-5DTST3TP.js +0 -81
  657. package/dist/chunk-5FH5LQVS.js +0 -130
  658. package/dist/chunk-5KWMYPJV.js +0 -847
  659. package/dist/chunk-5MUJDC6C.js +0 -84
  660. package/dist/chunk-5QM2WPKV.js +0 -41
  661. package/dist/chunk-5WUN7XPD.js +0 -1184
  662. package/dist/chunk-64PO2WXU.js +0 -1067
  663. package/dist/chunk-6AHATAAY.js +0 -431
  664. package/dist/chunk-6ED2YWBT.js +0 -56
  665. package/dist/chunk-6GXVYAGR.js +0 -170
  666. package/dist/chunk-6H4SJBPE.js +0 -85
  667. package/dist/chunk-6MT3HHUB.js +0 -84
  668. package/dist/chunk-6UHCBH4G.js +0 -198
  669. package/dist/chunk-6WLX3NR3.js +0 -198
  670. package/dist/chunk-73NXYYWE.js +0 -112
  671. package/dist/chunk-76ERNKIZ.js +0 -603
  672. package/dist/chunk-776QZ573.js +0 -57
  673. package/dist/chunk-7BYWOFVH.js +0 -171
  674. package/dist/chunk-7O5CGGIQ.js +0 -108
  675. package/dist/chunk-7QOHRZ67.js +0 -251
  676. package/dist/chunk-7WIDB4PL.js +0 -2058
  677. package/dist/chunk-7WKP3DYJ.js +0 -37
  678. package/dist/chunk-7XOVTPDI.js +0 -227
  679. package/dist/chunk-AB5MBIXY.js +0 -281
  680. package/dist/chunk-ADNMXBCX.js +0 -1193
  681. package/dist/chunk-AFBJTUFK.js +0 -202
  682. package/dist/chunk-ALVRWCXE.js +0 -61
  683. package/dist/chunk-AOHU6O3M.js +0 -247
  684. package/dist/chunk-AOHU6O3M.js.map +0 -1
  685. package/dist/chunk-APW4T4SW.js +0 -270
  686. package/dist/chunk-AXBSYWKX.js +0 -2656
  687. package/dist/chunk-B2I5ZW35.js +0 -422
  688. package/dist/chunk-B3LMRTRF.js +0 -223
  689. package/dist/chunk-BE2XENG2.js +0 -292
  690. package/dist/chunk-BE2XENG2.js.map +0 -1
  691. package/dist/chunk-BF4SADKX.js +0 -29
  692. package/dist/chunk-BKP43KK4.js +0 -1788
  693. package/dist/chunk-BM3NEZ6X.js +0 -781
  694. package/dist/chunk-BT3BAGB5.js +0 -216
  695. package/dist/chunk-BTSYDIVJ.js +0 -357
  696. package/dist/chunk-BUBNGKWG.js +0 -70
  697. package/dist/chunk-BVUJV5WR.js +0 -126
  698. package/dist/chunk-BZO5ZMUP.js +0 -27
  699. package/dist/chunk-C3HUF3M2.js +0 -157
  700. package/dist/chunk-C5QCAOES.js +0 -264
  701. package/dist/chunk-CGK6ALQU.js +0 -159
  702. package/dist/chunk-CPYGO76Q.js +0 -335
  703. package/dist/chunk-CQH4FWYA.js +0 -490
  704. package/dist/chunk-CZP5QXNB.js +0 -234
  705. package/dist/chunk-D2TOWEYH.js +0 -266
  706. package/dist/chunk-D6L4GHRH.js +0 -340
  707. package/dist/chunk-DKT3N37I.js +0 -50
  708. package/dist/chunk-DMMJIFKA.js +0 -84
  709. package/dist/chunk-DO74DQC7.js +0 -26
  710. package/dist/chunk-DOFJZ2JU.js +0 -83
  711. package/dist/chunk-DSXVY5WZ.js +0 -119
  712. package/dist/chunk-E337C2VK.js +0 -82
  713. package/dist/chunk-E6NRSRBE.js +0 -114
  714. package/dist/chunk-E6SQKHAU.js +0 -114
  715. package/dist/chunk-E7UIVD7F.js +0 -236
  716. package/dist/chunk-EGBII4CP.js +0 -229
  717. package/dist/chunk-EILSAQVJ.js +0 -200
  718. package/dist/chunk-ELL6HSYR.js +0 -307
  719. package/dist/chunk-EUBGLFFR.js +0 -73
  720. package/dist/chunk-EW6RNWSH.js +0 -212
  721. package/dist/chunk-EYUT5Y6V.js +0 -2599
  722. package/dist/chunk-F7U3QPZ3.js +0 -304
  723. package/dist/chunk-FBTJKSTM.js +0 -1270
  724. package/dist/chunk-FC2FTSK3.js +0 -2424
  725. package/dist/chunk-FOGNA3BU.js +0 -148
  726. package/dist/chunk-FQFKHNC7.js +0 -650
  727. package/dist/chunk-FTCHM755.js +0 -50
  728. package/dist/chunk-FXSHP4JZ.js +0 -3550
  729. package/dist/chunk-G6ZZC543.js +0 -818
  730. package/dist/chunk-G7FU6PUA.js +0 -100
  731. package/dist/chunk-GA4YEAMX.js +0 -3851
  732. package/dist/chunk-GE33BGB7.js +0 -12
  733. package/dist/chunk-GQ67HSJY.js +0 -570
  734. package/dist/chunk-GXXZ3WAK.js +0 -106
  735. package/dist/chunk-H2TCRX3H.js +0 -237
  736. package/dist/chunk-HLL4PBO7.js +0 -60
  737. package/dist/chunk-HLOEPV5C.js +0 -259
  738. package/dist/chunk-HUAGBS4O.js +0 -56
  739. package/dist/chunk-I36GSRUJ.js +0 -211
  740. package/dist/chunk-I6VBHT7S.js +0 -261
  741. package/dist/chunk-ICNNNOXE.js +0 -333
  742. package/dist/chunk-ICX64J4U.js +0 -172
  743. package/dist/chunk-ID36Y46W.js +0 -5046
  744. package/dist/chunk-ID36Y46W.js.map +0 -1
  745. package/dist/chunk-IGVVXLKJ.js +0 -559
  746. package/dist/chunk-IKJLSBUI.js +0 -2984
  747. package/dist/chunk-IKMUFDVS.js +0 -50
  748. package/dist/chunk-IKUNOX7F.js +0 -255
  749. package/dist/chunk-ILKDYBON.js +0 -288
  750. package/dist/chunk-IVYJX3OY.js +0 -187
  751. package/dist/chunk-JCY4CMDH.js +0 -107
  752. package/dist/chunk-JJZPLGIP.js +0 -474
  753. package/dist/chunk-JW33RV4V.js +0 -143
  754. package/dist/chunk-JWPA6ZPZ.js +0 -351
  755. package/dist/chunk-JZ4QXS6D.js +0 -50
  756. package/dist/chunk-K42OUZQ3.js +0 -386
  757. package/dist/chunk-K5TOVX5A.js +0 -206
  758. package/dist/chunk-K63HGHZX.js +0 -99
  759. package/dist/chunk-K6R5T44I.js +0 -75
  760. package/dist/chunk-KHJ5PXFM.js +0 -914
  761. package/dist/chunk-KJZRQ55O.js +0 -2319
  762. package/dist/chunk-KJZRQ55O.js.map +0 -1
  763. package/dist/chunk-KKI55ZMW.js +0 -65
  764. package/dist/chunk-KRPLAAFP.js +0 -199
  765. package/dist/chunk-KVFEZDBO.js +0 -134
  766. package/dist/chunk-L4I665WK.js +0 -45
  767. package/dist/chunk-L4OF77LE.js +0 -110
  768. package/dist/chunk-L4OF77LE.js.map +0 -1
  769. package/dist/chunk-LA5T52RM.js +0 -70
  770. package/dist/chunk-LM2W5YAT.js +0 -401
  771. package/dist/chunk-LQ62ECE6.js +0 -390
  772. package/dist/chunk-LQDUHU3Y.js +0 -71
  773. package/dist/chunk-LRJIYTZW.js +0 -4157
  774. package/dist/chunk-LRJIYTZW.js.map +0 -1
  775. package/dist/chunk-LRN6GYAZ.js +0 -138
  776. package/dist/chunk-M4SDVTKJ.js +0 -790
  777. package/dist/chunk-MA6O7CM6.js +0 -99
  778. package/dist/chunk-MBIBB6GI.js +0 -197
  779. package/dist/chunk-MF3ZFB4H.js +0 -199
  780. package/dist/chunk-MJJGJMYJ.js +0 -98
  781. package/dist/chunk-MLJADQFI.js +0 -4824
  782. package/dist/chunk-MQG7RV3B.js +0 -62
  783. package/dist/chunk-MTTGSQA5.js +0 -186
  784. package/dist/chunk-MW7Y3T55.js +0 -525
  785. package/dist/chunk-MYUFMVCH.js +0 -121
  786. package/dist/chunk-N3OARGH2.js +0 -61
  787. package/dist/chunk-NB2HMRT2.js +0 -353
  788. package/dist/chunk-NFDFYWMV.js +0 -141
  789. package/dist/chunk-NWGNFN3N.js +0 -1187
  790. package/dist/chunk-NWJRPDIO.js +0 -840
  791. package/dist/chunk-NWJRPDIO.js.map +0 -1
  792. package/dist/chunk-NXWBBZJV.js +0 -267
  793. package/dist/chunk-NY2QWROL.js +0 -71
  794. package/dist/chunk-O2IOPP3R.js +0 -848
  795. package/dist/chunk-O2UWH5RG.js +0 -141
  796. package/dist/chunk-O5YWDLYF.js +0 -393
  797. package/dist/chunk-OBMCZO7E.js +0 -121
  798. package/dist/chunk-OD3DCCCB.js +0 -132
  799. package/dist/chunk-OMH7R6I3.js +0 -390
  800. package/dist/chunk-OSA5EQG5.js +0 -113
  801. package/dist/chunk-OSJ3MUTZ.js +0 -2936
  802. package/dist/chunk-OWAYJ2OV.js +0 -368
  803. package/dist/chunk-OYXBFSGK.js +0 -269
  804. package/dist/chunk-PC2EBA5G.js +0 -4116
  805. package/dist/chunk-PC2EBA5G.js.map +0 -1
  806. package/dist/chunk-PC2MVXIP.js +0 -363
  807. package/dist/chunk-PC2MVXIP.js.map +0 -1
  808. package/dist/chunk-PENGLDR5.js +0 -309
  809. package/dist/chunk-PSMAWRPL.js +0 -191
  810. package/dist/chunk-PW4IMTYR.js +0 -702
  811. package/dist/chunk-PW54V7T5.js +0 -387
  812. package/dist/chunk-Q2EXYSMO.js +0 -24
  813. package/dist/chunk-Q2XJK5I4.js +0 -51
  814. package/dist/chunk-Q2XJK5I4.js.map +0 -1
  815. package/dist/chunk-Q4EFRI6X.js +0 -258
  816. package/dist/chunk-Q52CXW6C.js +0 -48
  817. package/dist/chunk-Q6XQ2R37.js +0 -184
  818. package/dist/chunk-QAJ53XBW.js +0 -23
  819. package/dist/chunk-QDTKECT4.js +0 -129
  820. package/dist/chunk-QE3ZFGI3.js +0 -43
  821. package/dist/chunk-QHHSUR2Y.js +0 -298
  822. package/dist/chunk-QHNVNR7B.js +0 -173
  823. package/dist/chunk-QIK2Q6N5.js +0 -376
  824. package/dist/chunk-QWL4L366.js +0 -38
  825. package/dist/chunk-R3J2PTVQ.js +0 -690
  826. package/dist/chunk-RBRX5ZS3.js +0 -319
  827. package/dist/chunk-REX6JIC7.js +0 -33
  828. package/dist/chunk-RGZ7EEC3.js +0 -537
  829. package/dist/chunk-RGZ7EEC3.js.map +0 -1
  830. package/dist/chunk-RIPS7GFR.js +0 -960
  831. package/dist/chunk-RTBZNFNV.js +0 -1354
  832. package/dist/chunk-RTBZNFNV.js.map +0 -1
  833. package/dist/chunk-SKMNW4SW.js +0 -187
  834. package/dist/chunk-SRFARKXC.js +0 -623
  835. package/dist/chunk-SWIHWCTW.js +0 -4461
  836. package/dist/chunk-TA5CFTO4.js +0 -103
  837. package/dist/chunk-TF4ZVJLI.js +0 -156
  838. package/dist/chunk-TG7DADJR.js +0 -9624
  839. package/dist/chunk-TI4R2ZD5.js +0 -623
  840. package/dist/chunk-TI4R2ZD5.js.map +0 -1
  841. package/dist/chunk-TNKWOUWP.js +0 -412
  842. package/dist/chunk-TNUSPXPW.js +0 -5555
  843. package/dist/chunk-TNUSPXPW.js.map +0 -1
  844. package/dist/chunk-TNYFHKVV.js +0 -366
  845. package/dist/chunk-TPMZBOFH.js +0 -178
  846. package/dist/chunk-TW3LKRJF.js +0 -263
  847. package/dist/chunk-TZAO65I4.js +0 -83
  848. package/dist/chunk-U5EFEMYU.js +0 -89
  849. package/dist/chunk-U6M4LS3M.js +0 -378
  850. package/dist/chunk-UI4HI5QK.js +0 -918
  851. package/dist/chunk-UJDOWCQ3.js +0 -272
  852. package/dist/chunk-UJUQ2QOX.js +0 -581
  853. package/dist/chunk-UQ3IM6FY.js +0 -133
  854. package/dist/chunk-UYE47LO6.js +0 -246
  855. package/dist/chunk-VADHIT26.js +0 -89
  856. package/dist/chunk-VFQ3H6CO.js +0 -163
  857. package/dist/chunk-VGUN6VB2.js +0 -188
  858. package/dist/chunk-VGWWEVSD.js +0 -723
  859. package/dist/chunk-VIEFJ2DM.js +0 -2469
  860. package/dist/chunk-VLXM36VS.js +0 -268
  861. package/dist/chunk-W3BFRR2G.js +0 -499
  862. package/dist/chunk-W5MPXR3A.js +0 -981
  863. package/dist/chunk-W5OWKVZG.js +0 -136
  864. package/dist/chunk-W6FRORMX.js +0 -486
  865. package/dist/chunk-W6FRORMX.js.map +0 -1
  866. package/dist/chunk-W7XROSZO.js +0 -232
  867. package/dist/chunk-W7XROSZO.js.map +0 -1
  868. package/dist/chunk-WEZ5PXZP.js +0 -403
  869. package/dist/chunk-WHWUWN2X.js +0 -197
  870. package/dist/chunk-WHWUWN2X.js.map +0 -1
  871. package/dist/chunk-WLEDGIVS.js +0 -114
  872. package/dist/chunk-WLEDGIVS.js.map +0 -1
  873. package/dist/chunk-WNDAKLHG.js +0 -281
  874. package/dist/chunk-WTJ4PLMU.js +0 -103
  875. package/dist/chunk-WV2KPJUW.js +0 -107
  876. package/dist/chunk-X3VY5EGY.js +0 -277
  877. package/dist/chunk-X3VY5EGY.js.map +0 -1
  878. package/dist/chunk-XDBYWVCW.js +0 -418
  879. package/dist/chunk-XF7MA4U5.js +0 -36
  880. package/dist/chunk-XF7MA4U5.js.map +0 -1
  881. package/dist/chunk-XOSQP3YA.js +0 -605
  882. package/dist/chunk-XYBV4ZJQ.js +0 -271
  883. package/dist/chunk-YBKVGLQR.js +0 -147
  884. package/dist/chunk-YDCUBUWH.js +0 -1583
  885. package/dist/chunk-YG6NARQY.js +0 -51
  886. package/dist/chunk-YG6NARQY.js.map +0 -1
  887. package/dist/chunk-YSVD5HI4.js +0 -278
  888. package/dist/chunk-YT3WGNG6.js +0 -290
  889. package/dist/chunk-YYICQDK4.js +0 -414
  890. package/dist/chunk-YYLMZLI6.js +0 -686
  891. package/dist/chunk-ZAMTKG5U.js +0 -95
  892. package/dist/chunk-ZDLYSXKN.js +0 -111
  893. package/dist/chunk-ZG447FSS.js +0 -194
  894. package/dist/chunk-ZIT5KD4Q.js +0 -264
  895. package/dist/chunk-ZUDOVDKR.js +0 -3064
  896. package/dist/chunk-ZW2ECJ3A.js +0 -451
  897. package/dist/computer-viewer-LPZ763KF.js +0 -21
  898. package/dist/embedded-new-voice-YVMKSLKJ.js +0 -24
  899. package/dist/embedded-voice-BJPQFXSU.js +0 -24
  900. package/dist/fleet-decision-row-AA4H5CDT.js +0 -361
  901. package/dist/model-policy-picker-menu-HSMWVO4P.js +0 -22
  902. package/dist/payment-page-card-3LTSFJGN.js +0 -223
  903. package/dist/platform-activity-row-5VYV6TX4.js +0 -128
  904. package/dist/queue-surface-implementation-NXHZUKD2.js +0 -908
  905. package/dist/recorder-host-ZKRWTDBM.js +0 -57
  906. package/dist/recorder-host-ZKRWTDBM.js.map +0 -1
  907. package/dist/sandbox-files-YCMLQUFU.js +0 -27
  908. package/dist/session-connect-cards-KSQLMRM5.js +0 -25
  909. package/dist/session-realtime-ZR6JLG3Y.js +0 -30
  910. package/dist/timeline-annotation-markers-YAHDPWVG.js +0 -157
  911. package/dist/timeline-annotation-selection-KHXNCEJP.js +0 -208
  912. package/dist/timeline-annotations-dialog-Y4XD3N7B.js +0 -283
  913. /package/dist/{browser-viewer-NOP5EAUO.js.map → browser-viewer-TC27OCIP.js.map} +0 -0
  914. /package/dist/{chat-interactive-block-G7O44JHR.js.map → chat-interactive-block-RWPQBHVS.js.map} +0 -0
  915. /package/dist/{chunk-EGBII4CP.js.map → chunk-2BDT3UZQ.js.map} +0 -0
  916. /package/dist/{chunk-4YD7YZC5.js.map → chunk-2CLNIEK4.js.map} +0 -0
  917. /package/dist/{chunk-ZW2ECJ3A.js.map → chunk-2FSBSCZJ.js.map} +0 -0
  918. /package/dist/{chunk-KRPLAAFP.js.map → chunk-2I7HDP53.js.map} +0 -0
  919. /package/dist/{chunk-3QX55WLC.js.map → chunk-2INLDVK3.js.map} +0 -0
  920. /package/dist/{chunk-BVUJV5WR.js.map → chunk-2KALVELR.js.map} +0 -0
  921. /package/dist/{chunk-XDBYWVCW.js.map → chunk-2M3J7ZWQ.js.map} +0 -0
  922. /package/dist/{chunk-2RREGDQH.js.map → chunk-2OP6WLGV.js.map} +0 -0
  923. /package/dist/{chunk-OSJ3MUTZ.js.map → chunk-2RG7NIAS.js.map} +0 -0
  924. /package/dist/{chunk-26RWVLRD.js.map → chunk-2STUPWEL.js.map} +0 -0
  925. /package/dist/{chunk-XYBV4ZJQ.js.map → chunk-2YUOVM3G.js.map} +0 -0
  926. /package/dist/{chunk-2GDNWKSC.js.map → chunk-2Z3NQNTM.js.map} +0 -0
  927. /package/dist/{chunk-2VB2O4FQ.js.map → chunk-3CPWWGNK.js.map} +0 -0
  928. /package/dist/{chunk-7WKP3DYJ.js.map → chunk-3ED2U6XE.js.map} +0 -0
  929. /package/dist/{chunk-BT3BAGB5.js.map → chunk-3GZA4BUW.js.map} +0 -0
  930. /package/dist/{chunk-3USJPT2S.js.map → chunk-3IK6UYO6.js.map} +0 -0
  931. /package/dist/{chunk-6AHATAAY.js.map → chunk-3PZ7JZI2.js.map} +0 -0
  932. /package/dist/{chunk-JZ4QXS6D.js.map → chunk-4DVJ6ONS.js.map} +0 -0
  933. /package/dist/{chunk-5QM2WPKV.js.map → chunk-4E3ZJRTZ.js.map} +0 -0
  934. /package/dist/{chunk-NFDFYWMV.js.map → chunk-4SAWSRAA.js.map} +0 -0
  935. /package/dist/{chunk-ELL6HSYR.js.map → chunk-53AGXXZM.js.map} +0 -0
  936. /package/dist/{chunk-G6ZZC543.js.map → chunk-54YW6SZZ.js.map} +0 -0
  937. /package/dist/{chunk-4SZZAFYQ.js.map → chunk-57AZS3IE.js.map} +0 -0
  938. /package/dist/{chunk-JW33RV4V.js.map → chunk-5CPEEAFD.js.map} +0 -0
  939. /package/dist/{chunk-D6L4GHRH.js.map → chunk-5EWSRZ2Y.js.map} +0 -0
  940. /package/dist/{chunk-PW54V7T5.js.map → chunk-5IE76VCY.js.map} +0 -0
  941. /package/dist/{chunk-6GXVYAGR.js.map → chunk-5NWEKLDZ.js.map} +0 -0
  942. /package/dist/{chunk-6UHCBH4G.js.map → chunk-5O2FCCHZ.js.map} +0 -0
  943. /package/dist/{chunk-2YC6JQRO.js.map → chunk-5QAY6K77.js.map} +0 -0
  944. /package/dist/{chunk-EYUT5Y6V.js.map → chunk-6DK6Z4UN.js.map} +0 -0
  945. /package/dist/{chunk-PW4IMTYR.js.map → chunk-6DVCC7QS.js.map} +0 -0
  946. /package/dist/{chunk-7WIDB4PL.js.map → chunk-6JHU2UBS.js.map} +0 -0
  947. /package/dist/{chunk-CQH4FWYA.js.map → chunk-6PZ7OBYU.js.map} +0 -0
  948. /package/dist/{chunk-VFQ3H6CO.js.map → chunk-6WGRDRMA.js.map} +0 -0
  949. /package/dist/{chunk-MTTGSQA5.js.map → chunk-77WAKEAH.js.map} +0 -0
  950. /package/dist/{chunk-O5YWDLYF.js.map → chunk-7TDO3CUM.js.map} +0 -0
  951. /package/dist/{chunk-2AHTY7OT.js.map → chunk-7TIX2UAR.js.map} +0 -0
  952. /package/dist/{chunk-FOGNA3BU.js.map → chunk-7V5REBCP.js.map} +0 -0
  953. /package/dist/{chunk-2JENKGCE.js.map → chunk-7VMZGLYI.js.map} +0 -0
  954. /package/dist/{chunk-E7UIVD7F.js.map → chunk-7W37NS3I.js.map} +0 -0
  955. /package/dist/{chunk-ZDLYSXKN.js.map → chunk-7X6SDK2C.js.map} +0 -0
  956. /package/dist/{chunk-ZAMTKG5U.js.map → chunk-7ZNUHRP5.js.map} +0 -0
  957. /package/dist/{chunk-DMMJIFKA.js.map → chunk-A36PZALD.js.map} +0 -0
  958. /package/dist/{chunk-WV2KPJUW.js.map → chunk-AUI6VA63.js.map} +0 -0
  959. /package/dist/{chunk-Q2EXYSMO.js.map → chunk-AW2MQB37.js.map} +0 -0
  960. /package/dist/{chunk-6WLX3NR3.js.map → chunk-AWKES45Y.js.map} +0 -0
  961. /package/dist/{chunk-OD3DCCCB.js.map → chunk-AXHZYXUV.js.map} +0 -0
  962. /package/dist/{chunk-QDTKECT4.js.map → chunk-BHNSJVBC.js.map} +0 -0
  963. /package/dist/{chunk-FTCHM755.js.map → chunk-BJEJFISW.js.map} +0 -0
  964. /package/dist/{chunk-B2I5ZW35.js.map → chunk-BJFH6JI5.js.map} +0 -0
  965. /package/dist/{chunk-RIPS7GFR.js.map → chunk-BMICEQZQ.js.map} +0 -0
  966. /package/dist/{chunk-BF4SADKX.js.map → chunk-BTLBYBLU.js.map} +0 -0
  967. /package/dist/{chunk-U5EFEMYU.js.map → chunk-BXBDYNRP.js.map} +0 -0
  968. /package/dist/{chunk-BTSYDIVJ.js.map → chunk-C372BFOV.js.map} +0 -0
  969. /package/dist/{chunk-MLJADQFI.js.map → chunk-CMKGILJK.js.map} +0 -0
  970. /package/dist/{chunk-DKT3N37I.js.map → chunk-CRAOSVHC.js.map} +0 -0
  971. /package/dist/{chunk-WNDAKLHG.js.map → chunk-CRU35QQH.js.map} +0 -0
  972. /package/dist/{chunk-2XNG2KNT.js.map → chunk-CUIWCGMA.js.map} +0 -0
  973. /package/dist/{chunk-QWL4L366.js.map → chunk-D5TWNFFE.js.map} +0 -0
  974. /package/dist/{chunk-SWIHWCTW.js.map → chunk-DF5EAHDN.js.map} +0 -0
  975. /package/dist/{chunk-HUAGBS4O.js.map → chunk-DJAXC5OK.js.map} +0 -0
  976. /package/dist/{chunk-FXSHP4JZ.js.map → chunk-DXBYWSL5.js.map} +0 -0
  977. /package/dist/{chunk-5MUJDC6C.js.map → chunk-DXR5PDFP.js.map} +0 -0
  978. /package/dist/{chunk-NXWBBZJV.js.map → chunk-DZWARC4M.js.map} +0 -0
  979. /package/dist/{chunk-GXXZ3WAK.js.map → chunk-DZXEDSQI.js.map} +0 -0
  980. /package/dist/{chunk-Q52CXW6C.js.map → chunk-E7XERZWC.js.map} +0 -0
  981. /package/dist/{chunk-4NBTZRKT.js.map → chunk-ECJBYNLJ.js.map} +0 -0
  982. /package/dist/{chunk-QE3ZFGI3.js.map → chunk-EDI6SJ2N.js.map} +0 -0
  983. /package/dist/{chunk-E6NRSRBE.js.map → chunk-EWSOC6WF.js.map} +0 -0
  984. /package/dist/{chunk-TA5CFTO4.js.map → chunk-F2OPHAUN.js.map} +0 -0
  985. /package/dist/{chunk-5DTST3TP.js.map → chunk-F4ISQGGM.js.map} +0 -0
  986. /package/dist/{chunk-MBIBB6GI.js.map → chunk-FO4LYKJL.js.map} +0 -0
  987. /package/dist/{chunk-EUBGLFFR.js.map → chunk-FPXASDG5.js.map} +0 -0
  988. /package/dist/{chunk-C3HUF3M2.js.map → chunk-FVXBNBHO.js.map} +0 -0
  989. /package/dist/{chunk-W5MPXR3A.js.map → chunk-FZC5N55X.js.map} +0 -0
  990. /package/dist/{chunk-MA6O7CM6.js.map → chunk-GAVYGBFI.js.map} +0 -0
  991. /package/dist/{chunk-REX6JIC7.js.map → chunk-GKVJIDHF.js.map} +0 -0
  992. /package/dist/{chunk-EW6RNWSH.js.map → chunk-GVN5SZLX.js.map} +0 -0
  993. /package/dist/{chunk-KVFEZDBO.js.map → chunk-H3T7IWNA.js.map} +0 -0
  994. /package/dist/{chunk-I6VBHT7S.js.map → chunk-HAX4LCR5.js.map} +0 -0
  995. /package/dist/{chunk-OBMCZO7E.js.map → chunk-HC4JFZVU.js.map} +0 -0
  996. /package/dist/{chunk-UJUQ2QOX.js.map → chunk-HEFPPMBQ.js.map} +0 -0
  997. /package/dist/{chunk-DOFJZ2JU.js.map → chunk-HNLR7Q4Z.js.map} +0 -0
  998. /package/dist/{chunk-GE33BGB7.js.map → chunk-HSOXMJOT.js.map} +0 -0
  999. /package/dist/{chunk-AB5MBIXY.js.map → chunk-I4MRDSUF.js.map} +0 -0
  1000. /package/dist/{chunk-AFBJTUFK.js.map → chunk-I4QEJ62Y.js.map} +0 -0
  1001. /package/dist/{chunk-6ED2YWBT.js.map → chunk-I5B5L6Q4.js.map} +0 -0
  1002. /package/dist/{chunk-C5QCAOES.js.map → chunk-I5QZJODL.js.map} +0 -0
  1003. /package/dist/{chunk-76ERNKIZ.js.map → chunk-I7ITSXSJ.js.map} +0 -0
  1004. /package/dist/{chunk-OMH7R6I3.js.map → chunk-I7XIZRFD.js.map} +0 -0
  1005. /package/dist/{chunk-E337C2VK.js.map → chunk-IDANQPRH.js.map} +0 -0
  1006. /package/dist/{chunk-3FD76LXM.js.map → chunk-IFB3WJ36.js.map} +0 -0
  1007. /package/dist/{chunk-ZIT5KD4Q.js.map → chunk-IHTAKKTK.js.map} +0 -0
  1008. /package/dist/{chunk-QHNVNR7B.js.map → chunk-ILDXWY37.js.map} +0 -0
  1009. /package/dist/{chunk-GQ67HSJY.js.map → chunk-IMDQUHBJ.js.map} +0 -0
  1010. /package/dist/{chunk-DSXVY5WZ.js.map → chunk-IMZCQBOT.js.map} +0 -0
  1011. /package/dist/{chunk-WEZ5PXZP.js.map → chunk-IXPTECSC.js.map} +0 -0
  1012. /package/dist/{chunk-NY2QWROL.js.map → chunk-J255A3N5.js.map} +0 -0
  1013. /package/dist/{chunk-O2UWH5RG.js.map → chunk-J5F5HPPW.js.map} +0 -0
  1014. /package/dist/{chunk-VIEFJ2DM.js.map → chunk-JEA3QDX7.js.map} +0 -0
  1015. /package/dist/{chunk-TF4ZVJLI.js.map → chunk-JEUPAVYY.js.map} +0 -0
  1016. /package/dist/{chunk-ZG447FSS.js.map → chunk-JKHKLL5W.js.map} +0 -0
  1017. /package/dist/{chunk-FQFKHNC7.js.map → chunk-JQL7ZH6C.js.map} +0 -0
  1018. /package/dist/{chunk-776QZ573.js.map → chunk-JWB44UGJ.js.map} +0 -0
  1019. /package/dist/{chunk-ICNNNOXE.js.map → chunk-JZ4NLCAP.js.map} +0 -0
  1020. /package/dist/{chunk-TNKWOUWP.js.map → chunk-K2A5PXQ5.js.map} +0 -0
  1021. /package/dist/{chunk-SRFARKXC.js.map → chunk-K56XV3C3.js.map} +0 -0
  1022. /package/dist/{chunk-QAJ53XBW.js.map → chunk-K6GAXXVA.js.map} +0 -0
  1023. /package/dist/{chunk-MF3ZFB4H.js.map → chunk-KCBMFSMS.js.map} +0 -0
  1024. /package/dist/{chunk-VLXM36VS.js.map → chunk-KF2FV3ZJ.js.map} +0 -0
  1025. /package/dist/{chunk-YSVD5HI4.js.map → chunk-KJD65EJP.js.map} +0 -0
  1026. /package/dist/{chunk-K42OUZQ3.js.map → chunk-KLEUWIMZ.js.map} +0 -0
  1027. /package/dist/{chunk-PENGLDR5.js.map → chunk-KODELWYT.js.map} +0 -0
  1028. /package/dist/{chunk-TZAO65I4.js.map → chunk-KRDR5RJD.js.map} +0 -0
  1029. /package/dist/{chunk-KHJ5PXFM.js.map → chunk-KUDGXAF7.js.map} +0 -0
  1030. /package/dist/{chunk-6H4SJBPE.js.map → chunk-KYS77RPN.js.map} +0 -0
  1031. /package/dist/{chunk-OWAYJ2OV.js.map → chunk-L7YTNTIK.js.map} +0 -0
  1032. /package/dist/{chunk-YYLMZLI6.js.map → chunk-LHPNABDH.js.map} +0 -0
  1033. /package/dist/{chunk-LM2W5YAT.js.map → chunk-MFROMEKA.js.map} +0 -0
  1034. /package/dist/{chunk-AXBSYWKX.js.map → chunk-MIHN76LX.js.map} +0 -0
  1035. /package/dist/{chunk-4LPOWQJY.js.map → chunk-MIYFS2XN.js.map} +0 -0
  1036. /package/dist/{chunk-KKI55ZMW.js.map → chunk-MJUCFQMS.js.map} +0 -0
  1037. /package/dist/{chunk-ZUDOVDKR.js.map → chunk-MM4FNWI4.js.map} +0 -0
  1038. /package/dist/{chunk-M4SDVTKJ.js.map → chunk-MNZG4OHU.js.map} +0 -0
  1039. /package/dist/{chunk-EILSAQVJ.js.map → chunk-N6AACDUW.js.map} +0 -0
  1040. /package/dist/{chunk-BM3NEZ6X.js.map → chunk-NC55IFN3.js.map} +0 -0
  1041. /package/dist/{chunk-MJJGJMYJ.js.map → chunk-NC7PVOEK.js.map} +0 -0
  1042. /package/dist/{chunk-LA5T52RM.js.map → chunk-NCYMNCJO.js.map} +0 -0
  1043. /package/dist/{chunk-HLOEPV5C.js.map → chunk-ND2BXV3P.js.map} +0 -0
  1044. /package/dist/{chunk-UJDOWCQ3.js.map → chunk-NDBTFUO6.js.map} +0 -0
  1045. /package/dist/{chunk-K5TOVX5A.js.map → chunk-NDQJZ7HF.js.map} +0 -0
  1046. /package/dist/{chunk-35737UT4.js.map → chunk-NGJJJPZZ.js.map} +0 -0
  1047. /package/dist/{chunk-42CMQ5VR.js.map → chunk-NJTSNNE7.js.map} +0 -0
  1048. /package/dist/{chunk-FBTJKSTM.js.map → chunk-NRTE7DNV.js.map} +0 -0
  1049. /package/dist/{chunk-YT3WGNG6.js.map → chunk-NULUNM7H.js.map} +0 -0
  1050. /package/dist/{chunk-7XOVTPDI.js.map → chunk-NUNZS36W.js.map} +0 -0
  1051. /package/dist/{chunk-FC2FTSK3.js.map → chunk-NW53H5RW.js.map} +0 -0
  1052. /package/dist/{chunk-TW3LKRJF.js.map → chunk-NXCMHIKI.js.map} +0 -0
  1053. /package/dist/{chunk-CGK6ALQU.js.map → chunk-O3LKCBP5.js.map} +0 -0
  1054. /package/dist/{chunk-QIK2Q6N5.js.map → chunk-O6N4ABCA.js.map} +0 -0
  1055. /package/dist/{chunk-73NXYYWE.js.map → chunk-O732GAFC.js.map} +0 -0
  1056. /package/dist/{chunk-R3J2PTVQ.js.map → chunk-OF4TIKYC.js.map} +0 -0
  1057. /package/dist/{chunk-BUBNGKWG.js.map → chunk-OMPVOMPP.js.map} +0 -0
  1058. /package/dist/{chunk-4OXI6HCV.js.map → chunk-OPJJSKUK.js.map} +0 -0
  1059. /package/dist/{chunk-4Y6BK7IU.js.map → chunk-OPWCMA4D.js.map} +0 -0
  1060. /package/dist/{chunk-ADNMXBCX.js.map → chunk-ORJPS5VN.js.map} +0 -0
  1061. /package/dist/{chunk-SKMNW4SW.js.map → chunk-OSY5K7L7.js.map} +0 -0
  1062. /package/dist/{chunk-L4I665WK.js.map → chunk-OV6QJRT4.js.map} +0 -0
  1063. /package/dist/{chunk-7O5CGGIQ.js.map → chunk-OVKYVZMW.js.map} +0 -0
  1064. /package/dist/{chunk-7BYWOFVH.js.map → chunk-OZCBM3UC.js.map} +0 -0
  1065. /package/dist/{chunk-ALVRWCXE.js.map → chunk-P3A2EINJ.js.map} +0 -0
  1066. /package/dist/{chunk-BZO5ZMUP.js.map → chunk-PTAG4PDC.js.map} +0 -0
  1067. /package/dist/{chunk-QHHSUR2Y.js.map → chunk-PTF5B7TJ.js.map} +0 -0
  1068. /package/dist/{chunk-O2IOPP3R.js.map → chunk-Q3DPEYX4.js.map} +0 -0
  1069. /package/dist/{chunk-G7FU6PUA.js.map → chunk-QB2KMIDP.js.map} +0 -0
  1070. /package/dist/{chunk-64PO2WXU.js.map → chunk-QCSJ4CWE.js.map} +0 -0
  1071. /package/dist/{chunk-YYICQDK4.js.map → chunk-QIOQ2NPQ.js.map} +0 -0
  1072. /package/dist/{chunk-NB2HMRT2.js.map → chunk-QK5EFEUT.js.map} +0 -0
  1073. /package/dist/{chunk-366XZ4PM.js.map → chunk-QPQBLYQJ.js.map} +0 -0
  1074. /package/dist/{chunk-Q6XQ2R37.js.map → chunk-QPSGCC5D.js.map} +0 -0
  1075. /package/dist/{chunk-JJZPLGIP.js.map → chunk-QZAAUQRN.js.map} +0 -0
  1076. /package/dist/{chunk-VGUN6VB2.js.map → chunk-RGBI63KJ.js.map} +0 -0
  1077. /package/dist/{chunk-LRN6GYAZ.js.map → chunk-RLBKLAEY.js.map} +0 -0
  1078. /package/dist/{chunk-F7U3QPZ3.js.map → chunk-RMFKVOM7.js.map} +0 -0
  1079. /package/dist/{chunk-Q4EFRI6X.js.map → chunk-ROKQU7WG.js.map} +0 -0
  1080. /package/dist/{chunk-7QOHRZ67.js.map → chunk-RPVREAU7.js.map} +0 -0
  1081. /package/dist/{chunk-VGWWEVSD.js.map → chunk-RQKLF42C.js.map} +0 -0
  1082. /package/dist/{chunk-2VTTKH23.js.map → chunk-SEO7TICN.js.map} +0 -0
  1083. /package/dist/{chunk-3QNRBEYH.js.map → chunk-SHHJCL7X.js.map} +0 -0
  1084. /package/dist/{chunk-E6SQKHAU.js.map → chunk-SIRLACNZ.js.map} +0 -0
  1085. /package/dist/{chunk-H2TCRX3H.js.map → chunk-SKPHMYAA.js.map} +0 -0
  1086. /package/dist/{chunk-YDCUBUWH.js.map → chunk-SODC7T6L.js.map} +0 -0
  1087. /package/dist/{chunk-TNYFHKVV.js.map → chunk-SQJIKMN3.js.map} +0 -0
  1088. /package/dist/{chunk-DO74DQC7.js.map → chunk-SVINDKVW.js.map} +0 -0
  1089. /package/dist/{chunk-CPYGO76Q.js.map → chunk-SYCDHPZF.js.map} +0 -0
  1090. /package/dist/{chunk-UQ3IM6FY.js.map → chunk-T2QX3FDP.js.map} +0 -0
  1091. /package/dist/{chunk-NWGNFN3N.js.map → chunk-T3OWFVMS.js.map} +0 -0
  1092. /package/dist/{chunk-N3OARGH2.js.map → chunk-T6XI5FLY.js.map} +0 -0
  1093. /package/dist/{chunk-MQG7RV3B.js.map → chunk-T7OXJZCX.js.map} +0 -0
  1094. /package/dist/{chunk-2T7DX6KR.js.map → chunk-TAT5USZN.js.map} +0 -0
  1095. /package/dist/{chunk-ICX64J4U.js.map → chunk-TPQTRNER.js.map} +0 -0
  1096. /package/dist/{chunk-D2TOWEYH.js.map → chunk-TUIN4MB7.js.map} +0 -0
  1097. /package/dist/{chunk-LQDUHU3Y.js.map → chunk-TX3VECZU.js.map} +0 -0
  1098. /package/dist/{chunk-TG7DADJR.js.map → chunk-TXLIEOJX.js.map} +0 -0
  1099. /package/dist/{chunk-2ZVRJRXC.js.map → chunk-U3DN4HEY.js.map} +0 -0
  1100. /package/dist/{chunk-PSMAWRPL.js.map → chunk-U7XM7CB4.js.map} +0 -0
  1101. /package/dist/{chunk-4TQL3WP2.js.map → chunk-UJK53QFL.js.map} +0 -0
  1102. /package/dist/{chunk-RBRX5ZS3.js.map → chunk-UMTXA2TH.js.map} +0 -0
  1103. /package/dist/{chunk-36MIDGAH.js.map → chunk-UPDSXFK5.js.map} +0 -0
  1104. /package/dist/{chunk-OYXBFSGK.js.map → chunk-UTIAXH52.js.map} +0 -0
  1105. /package/dist/{chunk-5WUN7XPD.js.map → chunk-UVN5TMHU.js.map} +0 -0
  1106. /package/dist/{chunk-UYE47LO6.js.map → chunk-VGYXW3VG.js.map} +0 -0
  1107. /package/dist/{chunk-IKUNOX7F.js.map → chunk-VS7AHPCZ.js.map} +0 -0
  1108. /package/dist/{chunk-MYUFMVCH.js.map → chunk-VTTAJOQ7.js.map} +0 -0
  1109. /package/dist/{chunk-K63HGHZX.js.map → chunk-VWPOLUAO.js.map} +0 -0
  1110. /package/dist/{chunk-GA4YEAMX.js.map → chunk-X3MWB2QU.js.map} +0 -0
  1111. /package/dist/{chunk-I36GSRUJ.js.map → chunk-X6KAJI3V.js.map} +0 -0
  1112. /package/dist/{chunk-IKMUFDVS.js.map → chunk-XBLRHV5R.js.map} +0 -0
  1113. /package/dist/{chunk-XOSQP3YA.js.map → chunk-XDFP2LMW.js.map} +0 -0
  1114. /package/dist/{chunk-MW7Y3T55.js.map → chunk-XEQMZB3C.js.map} +0 -0
  1115. /package/dist/{chunk-B3LMRTRF.js.map → chunk-XEYLT5VA.js.map} +0 -0
  1116. /package/dist/{chunk-UI4HI5QK.js.map → chunk-XHIQ5I6N.js.map} +0 -0
  1117. /package/dist/{chunk-U6M4LS3M.js.map → chunk-XLH7QY2R.js.map} +0 -0
  1118. /package/dist/{chunk-OSA5EQG5.js.map → chunk-XWFAMUZQ.js.map} +0 -0
  1119. /package/dist/{chunk-6MT3HHUB.js.map → chunk-Y4OBB2VN.js.map} +0 -0
  1120. /package/dist/{chunk-CZP5QXNB.js.map → chunk-YCVD6CI3.js.map} +0 -0
  1121. /package/dist/{chunk-APW4T4SW.js.map → chunk-YENLNISG.js.map} +0 -0
  1122. /package/dist/{chunk-JWPA6ZPZ.js.map → chunk-YIRVLKAX.js.map} +0 -0
  1123. /package/dist/{chunk-LQ62ECE6.js.map → chunk-YL73CVNK.js.map} +0 -0
  1124. /package/dist/{chunk-ILKDYBON.js.map → chunk-YLS6QE5G.js.map} +0 -0
  1125. /package/dist/{chunk-YBKVGLQR.js.map → chunk-YPWU5KPE.js.map} +0 -0
  1126. /package/dist/{chunk-IKJLSBUI.js.map → chunk-YQXTDZSU.js.map} +0 -0
  1127. /package/dist/{chunk-TPMZBOFH.js.map → chunk-YSJEAAOL.js.map} +0 -0
  1128. /package/dist/{chunk-W3BFRR2G.js.map → chunk-YWIFM7D7.js.map} +0 -0
  1129. /package/dist/{chunk-WTJ4PLMU.js.map → chunk-YWVI6ZMK.js.map} +0 -0
  1130. /package/dist/{chunk-5KWMYPJV.js.map → chunk-Z4FMAFNH.js.map} +0 -0
  1131. /package/dist/{chunk-W5OWKVZG.js.map → chunk-Z654FWNU.js.map} +0 -0
  1132. /package/dist/{chunk-5FH5LQVS.js.map → chunk-Z7Y523PS.js.map} +0 -0
  1133. /package/dist/{chunk-HLL4PBO7.js.map → chunk-ZD67RM6G.js.map} +0 -0
  1134. /package/dist/{chunk-IVYJX3OY.js.map → chunk-ZEG4VPBL.js.map} +0 -0
  1135. /package/dist/{chunk-K6R5T44I.js.map → chunk-ZLYCOBHW.js.map} +0 -0
  1136. /package/dist/{chunk-VADHIT26.js.map → chunk-ZNJ5MTXV.js.map} +0 -0
  1137. /package/dist/{chunk-2KYQC4T5.js.map → chunk-ZSGY3H53.js.map} +0 -0
  1138. /package/dist/{chunk-BKP43KK4.js.map → chunk-ZTPXACWB.js.map} +0 -0
  1139. /package/dist/{chunk-JCY4CMDH.js.map → chunk-ZUA3JMI6.js.map} +0 -0
  1140. /package/dist/{chunk-IGVVXLKJ.js.map → chunk-ZYAZUPPV.js.map} +0 -0
  1141. /package/dist/{computer-viewer-LPZ763KF.js.map → computer-viewer-TDDO25AV.js.map} +0 -0
  1142. /package/dist/{embedded-new-voice-YVMKSLKJ.js.map → embedded-new-voice-2G3VLPVQ.js.map} +0 -0
  1143. /package/dist/{embedded-voice-BJPQFXSU.js.map → embedded-voice-T5IWOWGD.js.map} +0 -0
  1144. /package/dist/{fleet-decision-row-AA4H5CDT.js.map → fleet-decision-row-WM64KXP3.js.map} +0 -0
  1145. /package/dist/{model-policy-picker-menu-HSMWVO4P.js.map → model-policy-picker-menu-SMC6J6QN.js.map} +0 -0
  1146. /package/dist/{payment-page-card-3LTSFJGN.js.map → payment-page-card-G4U63KUV.js.map} +0 -0
  1147. /package/dist/{platform-activity-row-5VYV6TX4.js.map → platform-activity-row-BUZGZAKZ.js.map} +0 -0
  1148. /package/dist/{queue-surface-implementation-NXHZUKD2.js.map → queue-surface-implementation-4KUZ4PJV.js.map} +0 -0
  1149. /package/dist/{sandbox-files-YCMLQUFU.js.map → sandbox-files-ESDMOFSD.js.map} +0 -0
  1150. /package/dist/{session-connect-cards-KSQLMRM5.js.map → session-connect-cards-Q53KMMYY.js.map} +0 -0
  1151. /package/dist/{session-realtime-ZR6JLG3Y.js.map → session-realtime-CF3I35WJ.js.map} +0 -0
  1152. /package/dist/{timeline-annotation-markers-YAHDPWVG.js.map → timeline-annotation-markers-CJK4RYZ4.js.map} +0 -0
  1153. /package/dist/{timeline-annotation-selection-KHXNCEJP.js.map → timeline-annotation-selection-67GF5H26.js.map} +0 -0
  1154. /package/dist/{timeline-annotations-dialog-Y4XD3N7B.js.map → timeline-annotations-dialog-ONJPQDJQ.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/app/components/session/session-tenancy-control.tsx"],"sourcesContent":["import type { OpenGeniBrowserClient } from \"@opengeni/sdk/browser\";\nimport { isTransientRequestError } from \"@opengeni/sdk\";\nimport type {\n Session,\n SessionEvent,\n SessionVisibility,\n SessionVisibilityWork,\n} from \"@opengeni/sdk\";\nimport { useNavigate } from \"../../lib/navigation\";\nimport {\n ChevronDownIcon,\n CircleAlertIcon,\n CopyPlusIcon,\n Loader2Icon,\n LockKeyholeIcon,\n UsersIcon,\n} from \"lucide-react\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { toast } from \"../../lib/toast\";\n\nimport { Button } from \"../../../ui/button\";\nimport { ConfirmDialog } from \"../../../ui/confirm-dialog\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"../../../ui/dropdown-menu\";\nimport { Notice } from \"../../../ui/notice\";\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"../../../ui/tooltip\";\nimport { ProblemPanel } from \"../common\";\nimport { useAppContext } from \"../../app-context\";\nimport { isApiErrorStatus } from \"../../lib/app-api\";\nimport { isPersonalWorkspace } from \"../../lib/managed-self-context\";\nimport { workspaceSessionsPath } from \"../../lib/routes\";\nimport { SessionUnavailableRoute } from \"../../routes/session-unavailable\";\nimport {\n classifySessionTenancyFailure,\n isCurrentSessionTenancyTarget,\n isStoppingSessionWorkError,\n normalizeSessionVisibilityWork,\n privateSessionSandboxNote,\n retryableSessionTenancyReconciliationFailure,\n sessionVisibilityWorkIsEmpty,\n sessionVisibilityWorkStopsWork,\n sessionVisibilityWorkSummary,\n type SessionTenancyTarget,\n} from \"../../lib/session-tenancy\";\nimport {\n sessionTenancyOperationController,\n type SessionTenancyOperationController,\n type SessionTenancyOperationScope,\n} from \"../../lib/session-tenancy-operation-controller\";\nimport {\n runCurrentTransitionInvocation,\n type WorkspaceTransitionIdentity,\n} from \"../../lib/workspace-transition\";\n\ntype Confirmation =\n | { kind: \"visibility\"; visibility: SessionVisibility }\n | { kind: \"fork\"; visibility: SessionVisibility };\n\n/**\n * What a change to Only me would stop or drop, read before anything is shown.\n * Nothing in the way: the change just happens. `unavailable` (an older server\n * or a failed read) opens the plain confirmation; the server answers\n * `active_work` with the same summary if something is in the way.\n */\ntype VisibilityChangePreview =\n | { status: \"ready\"; work: SessionVisibilityWork }\n | { status: \"unavailable\" };\n\n/** Each request already waits for the stop to settle; a few more cover a slow worker. */\nconst STOPPING_WORK_RETRIES = 3;\n\nexport default function SessionRouteAuxiliary(\n props:\n | {\n session: Session;\n events: SessionEvent[];\n workspaceId?: never | undefined;\n sessionId?: never | undefined;\n }\n | {\n workspaceId: string;\n sessionId: string;\n loadError: unknown;\n /** Retry the session read now (it also keeps retrying in the background). */\n onRetry?: (() => void) | undefined;\n session?: never | undefined;\n events?: never | undefined;\n },\n) {\n return props.session ? (\n <SessionTenancyRouteControl session={props.session} events={props.events} />\n ) : isTransientRequestError(props.loadError) ? (\n // The session read has failed transiently for a while (an outage outlasting\n // a rolling deploy). The read keeps retrying and the page opens the session\n // on its own when it succeeds.\n <ProblemPanel\n title=\"Temporarily unavailable\"\n description=\"Retrying automatically.\"\n action={\n props.onRetry ? (\n <Button type=\"button\" variant=\"outline\" onClick={props.onRetry}>\n Try again\n </Button>\n ) : undefined\n }\n />\n ) : !isApiErrorStatus(props.loadError, 404) ? (\n <ProblemPanel\n title=\"Unable to open session\"\n description={\n props.loadError instanceof Error ? props.loadError.message : String(props.loadError)\n }\n action={\n <Button asChild type=\"button\" variant=\"outline\">\n <a href={workspaceSessionsPath(props.workspaceId)}>Back to sessions</a>\n </Button>\n }\n />\n ) : (\n <SessionUnavailableRoute workspaceId={props.workspaceId} sessionId={props.sessionId} />\n );\n}\n\n/** Route adapter kept inside the activation-gated lazy chunk. */\n/**\n * A private fork lands in the SOURCE workspace, so it is the same product\n * decision migration 0323 makes for a private create: an organization whose\n * owner has not enabled private sessions gets no private destination in a\n * shared workspace. Migration 0336's fork lifecycle routine fails that closed\n * with SQLSTATE 55000, and this hook keeps the dialog from offering a choice\n * the database will refuse. A personal workspace is exempt, exactly as on the create path,\n * and an unknown answer fails closed rather than offering Private optimistically.\n */\nfunction usePrivateForkCapability(options: {\n client: OpenGeniBrowserClient;\n workspaceId: string;\n personalWorkspace: boolean;\n managedSession: boolean;\n}): boolean {\n const { client, workspaceId, personalWorkspace, managedSession } = options;\n const [canForkPrivately, setCanForkPrivately] = useState(personalWorkspace);\n useEffect(() => {\n if (personalWorkspace) {\n setCanForkPrivately(true);\n return;\n }\n setCanForkPrivately(false);\n if (!managedSession) return;\n let current = true;\n void client\n .getSessionTenancyCreateCapabilities(workspaceId)\n .then((capabilities) => {\n if (current) setCanForkPrivately(capabilities.canCreatePrivate === true);\n })\n .catch(() => {\n if (current) setCanForkPrivately(false);\n });\n return () => {\n current = false;\n };\n }, [client, managedSession, personalWorkspace, workspaceId]);\n return canForkPrivately;\n}\n\nexport function SessionTenancyRouteControl({\n session,\n events,\n sourceEventId,\n onForkClose,\n}: {\n session: Session;\n events: SessionEvent[];\n sourceEventId?: string | undefined;\n onForkClose?: (() => void) | undefined;\n}) {\n const context = useAppContext();\n const navigate = useNavigate();\n const workspace = context.workspaces.find((candidate) => candidate.id === session.workspaceId);\n const personalWorkspace = isPersonalWorkspace(workspace ?? null, context.managedSelfContext);\n const managedSession =\n context.clientConfig.auth.mode === \"managedSession\" && context.authSession !== null;\n const canForkPrivately = usePrivateForkCapability({\n client: context.client,\n workspaceId: session.workspaceId,\n personalWorkspace,\n managedSession,\n });\n const transition = context.captureWorkspaceInvocation(session.workspaceId);\n if (!transition) return null;\n const scopeLabel = personalWorkspace\n ? `${workspace?.name ?? \"this workspace\"} Personal workspace`\n : (workspace?.name ?? \"this workspace\");\n\n return (\n <SessionTenancyControl\n key={`${context.accessContext.subjectId}:${transition.revision}:${session.workspaceId}:${session.id}`}\n session={session}\n events={events}\n sourceEventId={sourceEventId}\n onForkClose={onForkClose}\n client={context.client}\n managedSession={managedSession}\n canForkPrivately={canForkPrivately}\n scopeLabel={scopeLabel}\n captureWorkspaceInvocation={context.captureWorkspaceInvocation}\n ownsWorkspaceInvocation={context.ownsWorkspaceInvocation}\n operationController={sessionTenancyOperationController}\n operationScope={{\n principalId: context.accessContext.subjectId,\n workspaceId: session.workspaceId,\n sessionId: session.id,\n workspaceTransitionRevision: transition.revision,\n }}\n onOpenSession={(workspaceId, sessionId) =>\n void navigate({\n to: \"/workspaces/$workspaceId/sessions/$sessionId\",\n params: { workspaceId, sessionId },\n })\n }\n />\n );\n}\n\nexport function SessionTenancyControl({\n sourceEventId,\n onForkClose,\n session,\n events,\n client,\n managedSession,\n canForkPrivately,\n scopeLabel,\n captureWorkspaceInvocation,\n ownsWorkspaceInvocation,\n operationController,\n operationScope,\n onOpenSession,\n}: {\n session: Session;\n events?: SessionEvent[] | undefined;\n sourceEventId?: string | undefined;\n onForkClose?: (() => void) | undefined;\n client: OpenGeniBrowserClient;\n managedSession: boolean;\n /** False also covers \"not yet known\": a private fork is never offered on a\n * guess, because the database refuses it under the 0323 product decision. */\n canForkPrivately: boolean;\n scopeLabel: string;\n captureWorkspaceInvocation: (workspaceId: string) => WorkspaceTransitionIdentity | null;\n ownsWorkspaceInvocation: (workspaceId: string, accepted: WorkspaceTransitionIdentity) => boolean;\n operationController: SessionTenancyOperationController;\n operationScope: SessionTenancyOperationScope;\n onRefreshSession?: (() => Promise<void>) | undefined;\n onOpenSession: (workspaceId: string, sessionId: string) => void;\n}) {\n const target = useMemo<SessionTenancyTarget>(\n () => ({ workspaceId: session.workspaceId, sessionId: session.id }),\n [session.id, session.workspaceId],\n );\n const targetRef = useRef(target);\n targetRef.current = target;\n const mountedRef = useRef(false);\n const operationSequenceRef = useRef(0);\n const visibilityEventSequenceRef = useRef(0);\n const operationSnapshot = operationController.snapshot(operationScope);\n const pendingVisibility = operationSnapshot.visibility;\n const pendingFork = operationSnapshot.fork;\n const [override, setOverride] = useState(session.tenancy);\n const [confirmation, setConfirmation] = useState<Confirmation | null>(() =>\n sourceEventId\n ? {\n kind: \"fork\",\n visibility:\n operationSnapshot.fork?.visibility ??\n (canForkPrivately ? (session.tenancy?.visibility ?? \"workspace\") : \"workspace\"),\n }\n : null,\n );\n const [busy, setBusy] = useState(false);\n const [failure, setFailure] = useState<string | null>(null);\n const [visibilityPreview, setVisibilityPreview] = useState<VisibilityChangePreview | null>(null);\n const [announcement, setAnnouncement] = useState(\"\");\n const [, setControllerRevision] = useState(0);\n const accessTriggerRef = useRef<HTMLButtonElement>(null);\n\n useEffect(() => {\n mountedRef.current = true;\n return () => {\n mountedRef.current = false;\n };\n }, []);\n\n useEffect(() => {\n operationSequenceRef.current += 1;\n setBusy(false);\n setFailure(null);\n if (!sourceEventId) setConfirmation(null);\n }, [session.id, session.workspaceId, sourceEventId]);\n\n useEffect(() => {\n if (!session.tenancy) {\n setOverride(undefined);\n return;\n }\n setOverride((current) =>\n !current || session.tenancy!.authorityEpoch >= current.authorityEpoch\n ? session.tenancy\n : current,\n );\n }, [session.tenancy]);\n\n useEffect(() => {\n if (\n pendingVisibility &&\n (!session.tenancy ||\n session.tenancy.authorityEpoch > pendingVisibility.expectedAuthorityEpoch)\n ) {\n operationController.settleVisibility(operationScope, pendingVisibility);\n setControllerRevision((current) => current + 1);\n }\n }, [operationController, operationScope, pendingVisibility, session.tenancy]);\n\n const displayedTenancy = override;\n const mayManage = Boolean(displayedTenancy?.ownedByCurrentUser && managedSession);\n\n const mayFork = Boolean(\n displayedTenancy &&\n managedSession &&\n (displayedTenancy.visibility === \"workspace\" || displayedTenancy.ownedByCurrentUser),\n );\n const isCurrentInvocation = useCallback(\n (\n acceptedTarget: SessionTenancyTarget,\n acceptedTransition: WorkspaceTransitionIdentity,\n operationSequence: number,\n ) =>\n mountedRef.current &&\n operationSequenceRef.current === operationSequence &&\n isCurrentSessionTenancyTarget(targetRef.current, acceptedTarget) &&\n ownsWorkspaceInvocation(acceptedTarget.workspaceId, acceptedTransition),\n [ownsWorkspaceInvocation],\n );\n\n const reconcileSource = useCallback(\n async (\n acceptedTarget: SessionTenancyTarget,\n acceptedTransition: WorkspaceTransitionIdentity,\n operationSequence: number,\n ): Promise<Session | null> => {\n const result = await runCurrentTransitionInvocation({\n isCurrent: () => isCurrentInvocation(acceptedTarget, acceptedTransition, operationSequence),\n request: async () =>\n await client.getSession(acceptedTarget.workspaceId, acceptedTarget.sessionId, {\n fresh: true,\n }),\n });\n if (result.status === \"stale\") return null;\n setOverride(result.value.tenancy);\n return result.value;\n },\n [client, isCurrentInvocation],\n );\n\n const latestVisibilitySequence = events?.reduce(\n (latest, event) =>\n event.type === \"session.visibility.changed\" ? Math.max(latest, event.sequence) : latest,\n 0,\n );\n useEffect(() => {\n if (\n !latestVisibilitySequence ||\n latestVisibilitySequence <= visibilityEventSequenceRef.current\n ) {\n return;\n }\n visibilityEventSequenceRef.current = latestVisibilitySequence;\n const acceptedTransition = captureWorkspaceInvocation(target.workspaceId);\n if (!acceptedTransition) return;\n let cancelled = false;\n void client\n .getSession(target.workspaceId, target.sessionId, { fresh: true })\n .then((current) => {\n if (\n cancelled ||\n !mountedRef.current ||\n !isCurrentSessionTenancyTarget(targetRef.current, target) ||\n !ownsWorkspaceInvocation(target.workspaceId, acceptedTransition)\n ) {\n return;\n }\n setOverride(current.tenancy);\n const retained = operationController.snapshot(operationScope).visibility;\n if (\n retained &&\n (!current.tenancy || current.tenancy.authorityEpoch > retained.expectedAuthorityEpoch)\n ) {\n operationController.settleVisibility(operationScope, retained);\n setControllerRevision((revision) => revision + 1);\n }\n setAnnouncement(\n !current.tenancy\n ? \"Session access controls are no longer available.\"\n : current.tenancy.visibility === \"private\"\n ? \"Session is private to you.\"\n : `Session is visible to ${scopeLabel}.`,\n );\n })\n .catch(() => undefined);\n return () => {\n cancelled = true;\n };\n }, [\n captureWorkspaceInvocation,\n client,\n latestVisibilitySequence,\n operationController,\n operationScope,\n ownsWorkspaceInvocation,\n scopeLabel,\n target,\n ]);\n\n const changeVisibility = useCallback(\n async (visibility: SessionVisibility, stopActiveWork: boolean): Promise<boolean> => {\n if (!displayedTenancy || !mayManage || visibility === displayedTenancy.visibility) {\n return true;\n }\n const acceptedTransition = captureWorkspaceInvocation(target.workspaceId);\n if (!acceptedTransition) return true;\n const operationSequence = operationSequenceRef.current + 1;\n operationSequenceRef.current = operationSequence;\n const attempt = operationController.prepareVisibility(\n operationScope,\n { visibility, expectedAuthorityEpoch: displayedTenancy.authorityEpoch },\n () => crypto.randomUUID(),\n );\n setBusy(true);\n setFailure(null);\n let receiptConfirmed = false;\n\n try {\n const result = await runCurrentTransitionInvocation({\n isCurrent: () => isCurrentInvocation(target, acceptedTransition, operationSequence),\n request: async () => {\n for (let retry = 0; ; retry += 1) {\n try {\n return await client.updateSessionVisibility(target.workspaceId, target.sessionId, {\n visibility: attempt.visibility,\n expectedAuthorityEpoch: attempt.expectedAuthorityEpoch,\n idempotencyKey: attempt.idempotencyKey,\n ...(stopActiveWork ? { stopActiveWork: true } : {}),\n });\n } catch (error) {\n // Same key, same consent: the server resumes the stop it began.\n if (\n retry < STOPPING_WORK_RETRIES &&\n isStoppingSessionWorkError(error) &&\n isCurrentInvocation(target, acceptedTransition, operationSequence)\n ) {\n continue;\n }\n throw error;\n }\n }\n },\n });\n if (result.status === \"stale\") return true;\n receiptConfirmed = true;\n\n if (result.value.replay) {\n const authoritative = await reconcileSource(\n target,\n acceptedTransition,\n operationSequence,\n );\n if (!authoritative) return true;\n operationController.settleVisibility(operationScope, attempt);\n if (authoritative.tenancy) {\n const message =\n authoritative.tenancy.visibility === \"private\"\n ? \"Session is private to you.\"\n : `Session is visible to ${scopeLabel}.`;\n setAnnouncement(message);\n toast.info(\"Session access refreshed\", { description: message });\n } else {\n const message = \"Session access controls are no longer available.\";\n setAnnouncement(message);\n toast.info(\"Session access refreshed\", { description: message });\n }\n return true;\n } else {\n setOverride({\n ...displayedTenancy,\n visibility: result.value.visibility,\n authorityEpoch: result.value.authorityEpoch,\n });\n }\n operationController.settleVisibility(operationScope, attempt);\n const message =\n result.value.visibility === \"private\"\n ? \"Session is private to you.\"\n : `Session is visible to ${scopeLabel}.`;\n setAnnouncement(message);\n toast.success(\"Session access updated\", { description: message });\n return true;\n } catch (error) {\n if (!isCurrentInvocation(target, acceptedTransition, operationSequence)) return true;\n const classified = classifySessionTenancyFailure(error);\n if (classified.kind === \"active_work\" && classified.work) {\n // Something appeared after the preview: show what it is and ask once.\n setVisibilityPreview({ status: \"ready\", work: classified.work });\n setConfirmation({ kind: \"visibility\", visibility });\n }\n let authoritative: Session | null = null;\n if (classified.reconcile) {\n authoritative = await reconcileSource(\n target,\n acceptedTransition,\n operationSequence,\n ).catch(() => null);\n }\n if (!isCurrentInvocation(target, acceptedTransition, operationSequence)) return true;\n if (\n authoritative &&\n (!authoritative.tenancy ||\n authoritative.tenancy.authorityEpoch > attempt.expectedAuthorityEpoch)\n ) {\n operationController.settleVisibility(operationScope, attempt);\n if (classified.kind === \"epoch_conflict\") {\n setFailure(classified.message);\n setAnnouncement(classified.message);\n return true;\n }\n const message = !authoritative.tenancy\n ? \"Session access controls are no longer available.\"\n : authoritative.tenancy.visibility === \"private\"\n ? \"Session is private to you.\"\n : `Session is visible to ${scopeLabel}.`;\n setAnnouncement(message);\n toast.info(\"Session access refreshed\", { description: message });\n return true;\n }\n const retainAttempt =\n classified.retainAttempt ||\n (receiptConfirmed && retryableSessionTenancyReconciliationFailure(error));\n if (!retainAttempt) {\n operationController.settleVisibility(operationScope, attempt);\n }\n setFailure(classified.message);\n setAnnouncement(classified.message);\n return !retainAttempt;\n } finally {\n if (isCurrentInvocation(target, acceptedTransition, operationSequence)) setBusy(false);\n }\n },\n [\n captureWorkspaceInvocation,\n client,\n displayedTenancy,\n isCurrentInvocation,\n mayManage,\n operationController,\n operationScope,\n reconcileSource,\n scopeLabel,\n target,\n ],\n );\n\n /**\n * Sharing always asks. Limiting to me reads what it would stop or drop first:\n * nothing in the way just makes the change; anything else is listed in one\n * confirmation whose single button does it all.\n */\n const startVisibilityChange = useCallback(\n async (visibility: SessionVisibility) => {\n setFailure(null);\n setVisibilityPreview(null);\n if (visibility !== \"private\") {\n setConfirmation({ kind: \"visibility\", visibility });\n return;\n }\n const operationSequence = operationSequenceRef.current;\n setBusy(true);\n let preview: VisibilityChangePreview;\n try {\n const result = await client.previewSessionVisibilityChange(\n target.workspaceId,\n target.sessionId,\n visibility,\n );\n const work = normalizeSessionVisibilityWork(result.work);\n preview = work ? { status: \"ready\", work } : { status: \"unavailable\" };\n } catch {\n preview = { status: \"unavailable\" };\n }\n if (!mountedRef.current || operationSequenceRef.current !== operationSequence) return;\n setBusy(false);\n if (preview.status === \"ready\" && sessionVisibilityWorkIsEmpty(preview.work)) {\n await changeVisibility(visibility, false);\n return;\n }\n setVisibilityPreview(preview);\n setConfirmation({ kind: \"visibility\", visibility });\n },\n [changeVisibility, client, target],\n );\n\n const forkSession = useCallback(\n async (visibility: SessionVisibility): Promise<boolean> => {\n if (!displayedTenancy || !mayFork) return true;\n if (sourceEventId && pendingFork && pendingFork.sourceEventId !== sourceEventId) {\n setFailure(\n \"A previous fork still needs a retry. Resolve it from the session menu before choosing another message.\",\n );\n return false;\n }\n const acceptedTransition = captureWorkspaceInvocation(target.workspaceId);\n if (!acceptedTransition) return true;\n const operationSequence = operationSequenceRef.current + 1;\n operationSequenceRef.current = operationSequence;\n const workspaceSharedAcknowledged =\n displayedTenancy.visibility === \"private\" && visibility === \"workspace\";\n const attempt = operationController.prepareFork(\n operationScope,\n { visibility, workspaceSharedAcknowledged, ...(sourceEventId ? { sourceEventId } : {}) },\n () => crypto.randomUUID(),\n );\n setBusy(true);\n setFailure(null);\n let receiptConfirmed = false;\n try {\n const result = await runCurrentTransitionInvocation({\n isCurrent: () => isCurrentInvocation(target, acceptedTransition, operationSequence),\n request: async () =>\n await client.forkSession(target.workspaceId, target.sessionId, {\n ...(attempt.sourceEventId ? { sourceEventId: attempt.sourceEventId } : {}),\n visibility: attempt.visibility,\n workspaceSharedAcknowledged: attempt.workspaceSharedAcknowledged,\n idempotencyKey: attempt.idempotencyKey,\n }),\n });\n if (result.status === \"stale\") return true;\n receiptConfirmed = true;\n const destination = await runCurrentTransitionInvocation({\n isCurrent: () => isCurrentInvocation(target, acceptedTransition, operationSequence),\n request: async () =>\n await client.getSession(result.value.workspaceId, result.value.sessionId, {\n fresh: true,\n }),\n });\n if (destination.status === \"stale\") return true;\n if (\n destination.value.workspaceId !== target.workspaceId ||\n destination.value.tenancy?.visibility !== result.value.visibility ||\n !destination.value.tenancy.ownedByCurrentUser\n ) {\n throw new Error(\"The fork receipt did not resolve to the expected owned session.\");\n }\n operationController.settleFork(operationScope, attempt);\n const description =\n result.value.visibility === \"private\"\n ? \"The independent copy is private to you.\"\n : `The independent copy is visible to ${scopeLabel}.`;\n setAnnouncement(description);\n toast.success(result.value.replay ? \"Session fork recovered\" : \"Session fork created\", {\n description,\n });\n onOpenSession(result.value.workspaceId, result.value.sessionId);\n return true;\n } catch (error) {\n if (!isCurrentInvocation(target, acceptedTransition, operationSequence)) return true;\n const classified = classifySessionTenancyFailure(error);\n const retainAttempt =\n classified.retainAttempt ||\n (receiptConfirmed && retryableSessionTenancyReconciliationFailure(error));\n if (!retainAttempt) operationController.settleFork(operationScope, attempt);\n const message = classified.message;\n setFailure(message);\n setAnnouncement(message);\n return sourceEventId ? false : !retainAttempt;\n } finally {\n if (isCurrentInvocation(target, acceptedTransition, operationSequence)) setBusy(false);\n }\n },\n [\n captureWorkspaceInvocation,\n client,\n displayedTenancy,\n isCurrentInvocation,\n mayFork,\n sourceEventId,\n pendingFork,\n onOpenSession,\n operationController,\n operationScope,\n scopeLabel,\n target,\n ],\n );\n\n if (!displayedTenancy) return null;\n\n const privateSession = displayedTenancy.visibility === \"private\";\n const alternateVisibility: SessionVisibility = privateSession ? \"workspace\" : \"private\";\n const retryingVisibility =\n pendingVisibility?.visibility === alternateVisibility &&\n pendingVisibility.expectedAuthorityEpoch === displayedTenancy.authorityEpoch;\n const visibilityAction = privateSession\n ? \"Share this session with workspace…\"\n : \"Limit this session to me\";\n const readyPreview = visibilityPreview?.status === \"ready\" ? visibilityPreview : null;\n // What the one confirmation also stops or drops; null when nothing is listed.\n const workToStop =\n readyPreview && !sessionVisibilityWorkIsEmpty(readyPreview.work) ? readyPreview.work : null;\n const stopsWork = workToStop !== null && sessionVisibilityWorkStopsWork(workToStop);\n const visibilityConfirmLabel = privateSession\n ? retryingVisibility\n ? \"Retry share with workspace\"\n : \"Share with workspace\"\n : stopsWork\n ? \"Stop work and limit to me\"\n : retryingVisibility\n ? \"Retry limit to me\"\n : \"Limit to me\";\n const stateLabel = privateSession ? \"Private\" : \"Workspace\";\n const stateDescription = privateSession\n ? \"Only you can open this session.\"\n : `Visible to people in ${scopeLabel}.`;\n const retryingFork = pendingFork !== null;\n const stateChip = (\n // Phones show just the icon (a 44px target, no chip chrome); the labelled\n // chip with its chevron returns from sm. A narrow title bar (a small app\n // window beside the sidebar) also gets just the icon, so the title keeps\n // its room.\n <span className=\"inline-flex min-h-8 min-w-0 items-center gap-1.5 rounded-full text-xs font-medium text-fg pointer-coarse:min-h-11 max-sm:min-w-8 max-sm:justify-center max-sm:pointer-coarse:min-w-11 sm:border sm:border-border sm:bg-surface/55 sm:px-2.5 @max-[34rem]/titlebar:min-w-8! @max-[34rem]/titlebar:pointer-coarse:min-w-11! @max-[34rem]/titlebar:justify-center @max-[34rem]/titlebar:border-0! @max-[34rem]/titlebar:bg-transparent! @max-[34rem]/titlebar:px-0!\">\n {privateSession ? (\n <LockKeyholeIcon className=\"size-3.5 shrink-0 text-brand\" aria-hidden=\"true\" />\n ) : (\n <UsersIcon className=\"size-3.5 shrink-0 text-fg-muted\" aria-hidden=\"true\" />\n )}\n <span className=\"hidden sm:inline @max-[34rem]/titlebar:hidden!\">{stateLabel}</span>\n {failure ? <CircleAlertIcon className=\"size-3.5 text-status-waiting\" aria-hidden /> : null}\n {mayFork ? (\n <ChevronDownIcon\n className=\"hidden size-3.5 text-fg-muted sm:block @max-[34rem]/titlebar:hidden!\"\n aria-hidden\n />\n ) : null}\n </span>\n );\n\n return (\n <TooltipProvider delayDuration={300}>\n <section\n aria-label=\"Session access\"\n className={sourceEventId ? \"hidden\" : \"flex shrink-0 items-center\"}\n >\n {mayFork ? (\n <DropdownMenu>\n <DropdownMenuTrigger asChild disabled={busy}>\n <button\n ref={accessTriggerRef}\n type=\"button\"\n aria-label={\n mayManage\n ? `${stateLabel} session access. Manage session access`\n : `${stateLabel} session access. Session actions`\n }\n aria-busy={busy}\n className=\"rounded-full focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring\"\n >\n {busy ? (\n <span className=\"inline-flex min-h-8 items-center justify-center gap-1.5 rounded-full border border-border bg-surface/55 px-2.5 text-xs font-medium pointer-coarse:min-h-11 pointer-coarse:min-w-11\">\n <Loader2Icon className=\"size-3.5 animate-spin motion-reduce:animate-none\" />\n <span className=\"hidden sm:inline\">Updating</span>\n </span>\n ) : (\n stateChip\n )}\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-72\">\n <div className=\"px-2.5 py-1.5\">\n <p className=\"text-sm font-medium text-fg\">{stateLabel} session</p>\n <p className=\"mt-0.5 text-xs leading-4.5 text-fg-muted\">{stateDescription}</p>\n </div>\n {mayManage ? (\n <>\n <DropdownMenuSeparator />\n <DropdownMenuItem\n onSelect={() => void startVisibilityChange(alternateVisibility)}\n >\n {privateSession ? <UsersIcon /> : <LockKeyholeIcon />}\n {retryingVisibility ? `Retry: ${visibilityAction}` : visibilityAction}\n </DropdownMenuItem>\n </>\n ) : null}\n <DropdownMenuSeparator />\n <DropdownMenuItem\n onSelect={() =>\n setConfirmation({\n kind: \"fork\",\n visibility:\n pendingFork?.visibility ??\n (canForkPrivately ? displayedTenancy.visibility : \"workspace\"),\n })\n }\n >\n <CopyPlusIcon />\n {retryingFork ? \"Retry session fork\" : \"Fork session\"}\n </DropdownMenuItem>\n {failure ? (\n <>\n <DropdownMenuSeparator />\n <div className=\"px-2.5 py-1.5 text-xs leading-4.5 text-status-waiting\">\n <span className=\"font-medium\">Access change needs attention.</span> {failure}\n </div>\n </>\n ) : null}\n </DropdownMenuContent>\n </DropdownMenu>\n ) : (\n <Tooltip>\n <TooltipTrigger asChild>\n <span\n role=\"img\"\n tabIndex={0}\n aria-label={`${stateLabel} session access. ${stateDescription}`}\n >\n {stateChip}\n </span>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\">{stateDescription}</TooltipContent>\n </Tooltip>\n )}\n <span className=\"sr-only\" aria-live=\"polite\" aria-atomic=\"true\">\n {announcement}\n </span>\n </section>\n\n <ConfirmDialog\n open={confirmation !== null}\n onOpenChange={(open) => {\n if (!open) {\n setConfirmation(null);\n setVisibilityPreview(null);\n onForkClose?.();\n }\n }}\n title={\n confirmation?.kind === \"fork\"\n ? confirmation.visibility === \"workspace\"\n ? `Fork a workspace-visible copy?`\n : \"Fork a private copy?\"\n : confirmation?.visibility === \"workspace\"\n ? `Share this session with ${scopeLabel}?`\n : \"Limit this session to you?\"\n }\n description={\n (pendingFork ? pendingFork.sourceEventId : sourceEventId)\n ? `Copy the conversation through the selected message${confirmation?.visibility === \"workspace\" ? ` into a session visible to people in ${scopeLabel}` : \" into a session visible only to you\"}. Later messages are excluded. Live credentials, tools, goals, and processes are not copied.`\n : confirmation?.kind === \"fork\" &&\n displayedTenancy.visibility === \"private\" &&\n confirmation.visibility === \"workspace\"\n ? `This private session's complete conversation will be copied into a new session visible to people in ${scopeLabel}. Live credentials, connections, tools, goals, and processes are not copied.`\n : confirmation?.kind === \"fork\"\n ? confirmation.visibility === \"workspace\"\n ? `Create an independent copy visible to people in ${scopeLabel}. Live credentials, connections, tools, goals, and processes are not copied.`\n : \"Create an independent copy visible only to you. Live credentials, connections, tools, goals, and processes are not copied.\"\n : confirmation?.visibility === \"workspace\"\n ? \"People who can access this workspace will be able to open and continue the session. Current work keeps running with its existing identity and connections.\"\n : `Only you will be able to open the session.${privateSessionSandboxNote(session.sandboxBackend)}`\n }\n confirmLabel={\n confirmation?.kind === \"fork\"\n ? retryingFork\n ? \"Retry fork\"\n : confirmation.visibility === \"workspace\"\n ? \"Fork for workspace\"\n : \"Fork privately\"\n : visibilityConfirmLabel\n }\n pendingLabel={\n confirmation?.kind === \"visibility\" && stopsWork ? \"Stopping work…\" : \"Working…\"\n }\n // A fork only widens exposure when a private source is copied into the\n // workspace. Changing an existing session to workspace visibility always\n // does, and making it private destroys the work and access it drops.\n // A shared-to-shared fork exposes nothing new.\n destructive={\n confirmation?.kind === \"fork\"\n ? displayedTenancy.visibility === \"private\" && confirmation.visibility === \"workspace\"\n : confirmation?.visibility === \"workspace\" || workToStop !== null\n }\n cancelAutoFocus\n restoreFocusRef={sourceEventId ? undefined : accessTriggerRef}\n onConfirm={() => {\n if (!confirmation) return true;\n return confirmation.kind === \"visibility\"\n ? changeVisibility(confirmation.visibility, workToStop !== null)\n : forkSession(confirmation.visibility);\n }}\n >\n {confirmation?.kind === \"visibility\" && workToStop ? (\n <Notice tone=\"waiting\" title=\"This will also\">\n <ul className=\"list-disc space-y-0.5 pl-4\">\n {sessionVisibilityWorkSummary(workToStop).map((line) => (\n <li key={line}>{line}</li>\n ))}\n </ul>\n </Notice>\n ) : null}\n {confirmation?.kind === \"fork\" && !retryingFork ? (\n <div\n className={canForkPrivately ? \"grid grid-cols-2 gap-2\" : \"grid gap-2\"}\n role=\"radiogroup\"\n aria-label=\"Fork visibility\"\n >\n {canForkPrivately ? (\n <Button\n type=\"button\"\n variant={confirmation.visibility === \"private\" ? \"secondary\" : \"outline\"}\n className=\"aria-checked:text-fg\"\n role=\"radio\"\n aria-checked={confirmation.visibility === \"private\"}\n onClick={() => setConfirmation({ kind: \"fork\", visibility: \"private\" })}\n >\n <LockKeyholeIcon /> Private\n </Button>\n ) : null}\n <Button\n type=\"button\"\n variant={confirmation.visibility === \"workspace\" ? \"secondary\" : \"outline\"}\n className=\"aria-checked:text-fg\"\n role=\"radio\"\n aria-checked={confirmation.visibility === \"workspace\"}\n onClick={() => setConfirmation({ kind: \"fork\", visibility: \"workspace\" })}\n >\n <UsersIcon /> Workspace\n </Button>\n </div>\n ) : null}\n {failure ? (\n <Notice tone=\"waiting\" title=\"Access change needs attention\">\n {failure}\n </Notice>\n ) : null}\n </ConfirmDialog>\n </TooltipProvider>\n );\n}\n"],"mappings":"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","names":["message"]}
1
+ {"version":3,"sources":["../../../../src/app/components/session/session-tenancy-control.tsx"],"sourcesContent":["import type { OpenGeniBrowserClient } from \"@opengeni/sdk/browser\";\nimport { isTransientRequestError } from \"@opengeni/sdk\";\nimport type {\n Session,\n SessionEvent,\n SessionVisibility,\n SessionVisibilityWork,\n} from \"@opengeni/sdk\";\nimport { useNavigate } from \"../../lib/navigation\";\nimport {\n ChevronDownIcon,\n CircleAlertIcon,\n CopyPlusIcon,\n Loader2Icon,\n LockKeyholeIcon,\n UsersIcon,\n} from \"lucide-react\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { toast } from \"../../lib/toast\";\n\nimport { Button } from \"../../../ui/button\";\nimport { ConfirmDialog } from \"../../../ui/confirm-dialog\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"../../../ui/dropdown-menu\";\nimport { Notice } from \"../../../ui/notice\";\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"../../../ui/tooltip\";\nimport { ProblemPanel } from \"../common\";\nimport { useAppContext } from \"../../app-context\";\nimport { isApiErrorStatus } from \"../../lib/app-api\";\nimport { isPersonalWorkspace } from \"../../lib/managed-self-context\";\nimport { workspaceSessionsPath } from \"../../lib/routes\";\nimport { SessionUnavailableRoute } from \"../../routes/session-unavailable\";\nimport {\n classifySessionTenancyFailure,\n isCurrentSessionTenancyTarget,\n isStoppingSessionWorkError,\n normalizeSessionVisibilityWork,\n privateSessionSandboxNote,\n retryableSessionTenancyReconciliationFailure,\n sessionVisibilityWorkIsEmpty,\n sessionVisibilityWorkStopsWork,\n sessionVisibilityWorkSummary,\n type SessionTenancyTarget,\n} from \"../../lib/session-tenancy\";\nimport {\n sessionTenancyOperationController,\n type SessionTenancyOperationController,\n type SessionTenancyOperationScope,\n} from \"../../lib/session-tenancy-operation-controller\";\nimport {\n runCurrentTransitionInvocation,\n type WorkspaceTransitionIdentity,\n} from \"../../lib/workspace-transition\";\n\ntype Confirmation =\n | { kind: \"visibility\"; visibility: SessionVisibility }\n | { kind: \"fork\"; visibility: SessionVisibility };\n\n/**\n * What a change to Only me would stop or drop, read before anything is shown.\n * Nothing in the way: the change just happens. `unavailable` (an older server\n * or a failed read) opens the plain confirmation; the server answers\n * `active_work` with the same summary if something is in the way.\n */\ntype VisibilityChangePreview =\n | { status: \"ready\"; work: SessionVisibilityWork }\n | { status: \"unavailable\" };\n\n/** Each request already waits for the stop to settle; a few more cover a slow worker. */\nconst STOPPING_WORK_RETRIES = 3;\n\nexport default function SessionRouteAuxiliary(\n props:\n | {\n session: Session;\n events: SessionEvent[];\n workspaceId?: never | undefined;\n sessionId?: never | undefined;\n }\n | {\n workspaceId: string;\n sessionId: string;\n loadError: unknown;\n /** Retry the session read now (it also keeps retrying in the background). */\n onRetry?: (() => void) | undefined;\n session?: never | undefined;\n events?: never | undefined;\n },\n) {\n return props.session ? (\n <SessionTenancyRouteControl session={props.session} events={props.events} />\n ) : isTransientRequestError(props.loadError) ? (\n // The session read has failed transiently for a while (an outage outlasting\n // a rolling deploy). The read keeps retrying and the page opens the session\n // on its own when it succeeds.\n <ProblemPanel\n title=\"Temporarily unavailable\"\n description=\"Retrying automatically.\"\n action={\n props.onRetry ? (\n <Button type=\"button\" variant=\"outline\" onClick={props.onRetry}>\n Try again\n </Button>\n ) : undefined\n }\n />\n ) : !isApiErrorStatus(props.loadError, 404) ? (\n <ProblemPanel\n title=\"Unable to open session\"\n description={\n props.loadError instanceof Error ? props.loadError.message : String(props.loadError)\n }\n action={\n <Button asChild type=\"button\" variant=\"outline\">\n <a href={workspaceSessionsPath(props.workspaceId)}>Back to sessions</a>\n </Button>\n }\n />\n ) : (\n <SessionUnavailableRoute workspaceId={props.workspaceId} sessionId={props.sessionId} />\n );\n}\n\n/** Route adapter kept inside the activation-gated lazy chunk. */\n/**\n * A private fork lands in the SOURCE workspace, so it is the same product\n * decision migration 0323 makes for a private create: an organization whose\n * owner has not enabled private sessions gets no private destination in a\n * shared workspace. Migration 0336's fork lifecycle routine fails that closed\n * with SQLSTATE 55000, and this hook keeps the dialog from offering a choice\n * the database will refuse. A personal workspace is exempt, exactly as on the create path,\n * and an unknown answer fails closed rather than offering Private optimistically.\n */\nfunction usePrivateForkCapability(options: {\n client: OpenGeniBrowserClient;\n workspaceId: string;\n personalWorkspace: boolean;\n managedSession: boolean;\n}): boolean {\n const { client, workspaceId, personalWorkspace, managedSession } = options;\n const [canForkPrivately, setCanForkPrivately] = useState(personalWorkspace);\n useEffect(() => {\n if (personalWorkspace) {\n setCanForkPrivately(true);\n return;\n }\n setCanForkPrivately(false);\n if (!managedSession) return;\n let current = true;\n void client\n .getSessionTenancyCreateCapabilities(workspaceId)\n .then((capabilities) => {\n if (current) setCanForkPrivately(capabilities.canCreatePrivate === true);\n })\n .catch(() => {\n if (current) setCanForkPrivately(false);\n });\n return () => {\n current = false;\n };\n }, [client, managedSession, personalWorkspace, workspaceId]);\n return canForkPrivately;\n}\n\nexport function SessionTenancyRouteControl({\n session,\n events,\n sourceEventId,\n onForkClose,\n}: {\n session: Session;\n events: SessionEvent[];\n sourceEventId?: string | undefined;\n onForkClose?: (() => void) | undefined;\n}) {\n const context = useAppContext();\n const navigate = useNavigate();\n const workspace = context.workspaces.find((candidate) => candidate.id === session.workspaceId);\n const personalWorkspace = isPersonalWorkspace(workspace ?? null, context.managedSelfContext);\n const managedSession =\n context.clientConfig.auth.mode === \"managedSession\" && context.authSession !== null;\n const canForkPrivately = usePrivateForkCapability({\n client: context.client,\n workspaceId: session.workspaceId,\n personalWorkspace,\n managedSession,\n });\n const transition = context.captureWorkspaceInvocation(session.workspaceId);\n if (!transition) return null;\n const scopeLabel = personalWorkspace\n ? `${workspace?.name ?? \"this workspace\"} Personal workspace`\n : (workspace?.name ?? \"this workspace\");\n\n return (\n <SessionTenancyControl\n key={`${context.accessContext.subjectId}:${transition.revision}:${session.workspaceId}:${session.id}`}\n session={session}\n events={events}\n sourceEventId={sourceEventId}\n onForkClose={onForkClose}\n client={context.client}\n managedSession={managedSession}\n canForkPrivately={canForkPrivately}\n scopeLabel={scopeLabel}\n captureWorkspaceInvocation={context.captureWorkspaceInvocation}\n ownsWorkspaceInvocation={context.ownsWorkspaceInvocation}\n operationController={sessionTenancyOperationController}\n operationScope={{\n principalId: context.accessContext.subjectId,\n workspaceId: session.workspaceId,\n sessionId: session.id,\n workspaceTransitionRevision: transition.revision,\n }}\n onOpenSession={(workspaceId, sessionId) =>\n void navigate({\n to: \"/workspaces/$workspaceId/sessions/$sessionId\",\n params: { workspaceId, sessionId },\n })\n }\n />\n );\n}\n\nexport function SessionTenancyControl({\n sourceEventId,\n onForkClose,\n session,\n events,\n client,\n managedSession,\n canForkPrivately,\n scopeLabel,\n captureWorkspaceInvocation,\n ownsWorkspaceInvocation,\n operationController,\n operationScope,\n onOpenSession,\n}: {\n session: Session;\n events?: SessionEvent[] | undefined;\n sourceEventId?: string | undefined;\n onForkClose?: (() => void) | undefined;\n client: OpenGeniBrowserClient;\n managedSession: boolean;\n /** False also covers \"not yet known\": a private fork is never offered on a\n * guess, because the database refuses it under the 0323 product decision. */\n canForkPrivately: boolean;\n scopeLabel: string;\n captureWorkspaceInvocation: (workspaceId: string) => WorkspaceTransitionIdentity | null;\n ownsWorkspaceInvocation: (workspaceId: string, accepted: WorkspaceTransitionIdentity) => boolean;\n operationController: SessionTenancyOperationController;\n operationScope: SessionTenancyOperationScope;\n onRefreshSession?: (() => Promise<void>) | undefined;\n onOpenSession: (workspaceId: string, sessionId: string) => void;\n}) {\n const target = useMemo<SessionTenancyTarget>(\n () => ({ workspaceId: session.workspaceId, sessionId: session.id }),\n [session.id, session.workspaceId],\n );\n const targetRef = useRef(target);\n targetRef.current = target;\n const mountedRef = useRef(false);\n const operationSequenceRef = useRef(0);\n const visibilityEventSequenceRef = useRef(0);\n const operationSnapshot = operationController.snapshot(operationScope);\n const pendingVisibility = operationSnapshot.visibility;\n const pendingFork = operationSnapshot.fork;\n const [override, setOverride] = useState(session.tenancy);\n const [confirmation, setConfirmation] = useState<Confirmation | null>(() =>\n sourceEventId\n ? {\n kind: \"fork\",\n visibility:\n operationSnapshot.fork?.visibility ??\n (canForkPrivately ? (session.tenancy?.visibility ?? \"workspace\") : \"workspace\"),\n }\n : null,\n );\n const [busy, setBusy] = useState(false);\n const [failure, setFailure] = useState<string | null>(null);\n const [visibilityPreview, setVisibilityPreview] = useState<VisibilityChangePreview | null>(null);\n const [announcement, setAnnouncement] = useState(\"\");\n const [, setControllerRevision] = useState(0);\n const accessTriggerRef = useRef<HTMLButtonElement>(null);\n\n useEffect(() => {\n mountedRef.current = true;\n return () => {\n mountedRef.current = false;\n };\n }, []);\n\n useEffect(() => {\n operationSequenceRef.current += 1;\n setBusy(false);\n setFailure(null);\n if (!sourceEventId) setConfirmation(null);\n }, [session.id, session.workspaceId, sourceEventId]);\n\n useEffect(() => {\n if (!session.tenancy) {\n setOverride(undefined);\n return;\n }\n setOverride((current) =>\n !current || session.tenancy!.authorityEpoch >= current.authorityEpoch\n ? session.tenancy\n : current,\n );\n }, [session.tenancy]);\n\n useEffect(() => {\n if (\n pendingVisibility &&\n (!session.tenancy ||\n session.tenancy.authorityEpoch > pendingVisibility.expectedAuthorityEpoch)\n ) {\n operationController.settleVisibility(operationScope, pendingVisibility);\n setControllerRevision((current) => current + 1);\n }\n }, [operationController, operationScope, pendingVisibility, session.tenancy]);\n\n const displayedTenancy = override;\n const mayManage = Boolean(displayedTenancy?.ownedByCurrentUser && managedSession);\n\n const mayFork = Boolean(\n displayedTenancy &&\n managedSession &&\n (displayedTenancy.visibility === \"workspace\" || displayedTenancy.ownedByCurrentUser),\n );\n const isCurrentInvocation = useCallback(\n (\n acceptedTarget: SessionTenancyTarget,\n acceptedTransition: WorkspaceTransitionIdentity,\n operationSequence: number,\n ) =>\n mountedRef.current &&\n operationSequenceRef.current === operationSequence &&\n isCurrentSessionTenancyTarget(targetRef.current, acceptedTarget) &&\n ownsWorkspaceInvocation(acceptedTarget.workspaceId, acceptedTransition),\n [ownsWorkspaceInvocation],\n );\n\n const reconcileSource = useCallback(\n async (\n acceptedTarget: SessionTenancyTarget,\n acceptedTransition: WorkspaceTransitionIdentity,\n operationSequence: number,\n ): Promise<Session | null> => {\n const result = await runCurrentTransitionInvocation({\n isCurrent: () => isCurrentInvocation(acceptedTarget, acceptedTransition, operationSequence),\n request: async () =>\n await client.getSession(acceptedTarget.workspaceId, acceptedTarget.sessionId, {\n fresh: true,\n }),\n });\n if (result.status === \"stale\") return null;\n setOverride(result.value.tenancy);\n return result.value;\n },\n [client, isCurrentInvocation],\n );\n\n const latestVisibilitySequence = events?.reduce(\n (latest, event) =>\n event.type === \"session.visibility.changed\" ? Math.max(latest, event.sequence) : latest,\n 0,\n );\n useEffect(() => {\n if (\n !latestVisibilitySequence ||\n latestVisibilitySequence <= visibilityEventSequenceRef.current\n ) {\n return;\n }\n visibilityEventSequenceRef.current = latestVisibilitySequence;\n const acceptedTransition = captureWorkspaceInvocation(target.workspaceId);\n if (!acceptedTransition) return;\n let cancelled = false;\n void client\n .getSession(target.workspaceId, target.sessionId, { fresh: true })\n .then((current) => {\n if (\n cancelled ||\n !mountedRef.current ||\n !isCurrentSessionTenancyTarget(targetRef.current, target) ||\n !ownsWorkspaceInvocation(target.workspaceId, acceptedTransition)\n ) {\n return;\n }\n setOverride(current.tenancy);\n const retained = operationController.snapshot(operationScope).visibility;\n if (\n retained &&\n (!current.tenancy || current.tenancy.authorityEpoch > retained.expectedAuthorityEpoch)\n ) {\n operationController.settleVisibility(operationScope, retained);\n setControllerRevision((revision) => revision + 1);\n }\n setAnnouncement(\n !current.tenancy\n ? \"Session access controls are no longer available.\"\n : current.tenancy.visibility === \"private\"\n ? \"Session is private to you.\"\n : `Session is visible to ${scopeLabel}.`,\n );\n })\n .catch(() => undefined);\n return () => {\n cancelled = true;\n };\n }, [\n captureWorkspaceInvocation,\n client,\n latestVisibilitySequence,\n operationController,\n operationScope,\n ownsWorkspaceInvocation,\n scopeLabel,\n target,\n ]);\n\n const changeVisibility = useCallback(\n async (visibility: SessionVisibility, stopActiveWork: boolean): Promise<boolean> => {\n if (!displayedTenancy || !mayManage || visibility === displayedTenancy.visibility) {\n return true;\n }\n const acceptedTransition = captureWorkspaceInvocation(target.workspaceId);\n if (!acceptedTransition) return true;\n const operationSequence = operationSequenceRef.current + 1;\n operationSequenceRef.current = operationSequence;\n const attempt = operationController.prepareVisibility(\n operationScope,\n { visibility, expectedAuthorityEpoch: displayedTenancy.authorityEpoch },\n () => crypto.randomUUID(),\n );\n setBusy(true);\n setFailure(null);\n let receiptConfirmed = false;\n\n try {\n const result = await runCurrentTransitionInvocation({\n isCurrent: () => isCurrentInvocation(target, acceptedTransition, operationSequence),\n request: async () => {\n for (let retry = 0; ; retry += 1) {\n try {\n return await client.updateSessionVisibility(target.workspaceId, target.sessionId, {\n visibility: attempt.visibility,\n expectedAuthorityEpoch: attempt.expectedAuthorityEpoch,\n idempotencyKey: attempt.idempotencyKey,\n ...(stopActiveWork ? { stopActiveWork: true } : {}),\n });\n } catch (error) {\n // Same key, same consent: the server resumes the stop it began.\n if (\n retry < STOPPING_WORK_RETRIES &&\n isStoppingSessionWorkError(error) &&\n isCurrentInvocation(target, acceptedTransition, operationSequence)\n ) {\n continue;\n }\n throw error;\n }\n }\n },\n });\n if (result.status === \"stale\") return true;\n receiptConfirmed = true;\n\n if (result.value.replay) {\n const authoritative = await reconcileSource(\n target,\n acceptedTransition,\n operationSequence,\n );\n if (!authoritative) return true;\n operationController.settleVisibility(operationScope, attempt);\n if (authoritative.tenancy) {\n const message =\n authoritative.tenancy.visibility === \"private\"\n ? \"Session is private to you.\"\n : `Session is visible to ${scopeLabel}.`;\n setAnnouncement(message);\n toast.info(\"Session access refreshed\", { description: message });\n } else {\n const message = \"Session access controls are no longer available.\";\n setAnnouncement(message);\n toast.info(\"Session access refreshed\", { description: message });\n }\n return true;\n } else {\n setOverride({\n ...displayedTenancy,\n visibility: result.value.visibility,\n authorityEpoch: result.value.authorityEpoch,\n });\n }\n operationController.settleVisibility(operationScope, attempt);\n const message =\n result.value.visibility === \"private\"\n ? \"Session is private to you.\"\n : `Session is visible to ${scopeLabel}.`;\n setAnnouncement(message);\n toast.success(\"Session access updated\", { description: message });\n return true;\n } catch (error) {\n if (!isCurrentInvocation(target, acceptedTransition, operationSequence)) return true;\n const classified = classifySessionTenancyFailure(error);\n if (classified.kind === \"active_work\" && classified.work) {\n // Something appeared after the preview: show what it is and ask once.\n setVisibilityPreview({ status: \"ready\", work: classified.work });\n setConfirmation({ kind: \"visibility\", visibility });\n }\n let authoritative: Session | null = null;\n if (classified.reconcile) {\n authoritative = await reconcileSource(\n target,\n acceptedTransition,\n operationSequence,\n ).catch(() => null);\n }\n if (!isCurrentInvocation(target, acceptedTransition, operationSequence)) return true;\n if (\n authoritative &&\n (!authoritative.tenancy ||\n authoritative.tenancy.authorityEpoch > attempt.expectedAuthorityEpoch)\n ) {\n operationController.settleVisibility(operationScope, attempt);\n if (classified.kind === \"epoch_conflict\") {\n setFailure(classified.message);\n setAnnouncement(classified.message);\n return true;\n }\n const message = !authoritative.tenancy\n ? \"Session access controls are no longer available.\"\n : authoritative.tenancy.visibility === \"private\"\n ? \"Session is private to you.\"\n : `Session is visible to ${scopeLabel}.`;\n setAnnouncement(message);\n toast.info(\"Session access refreshed\", { description: message });\n return true;\n }\n const retainAttempt =\n classified.retainAttempt ||\n (receiptConfirmed && retryableSessionTenancyReconciliationFailure(error));\n if (!retainAttempt) {\n operationController.settleVisibility(operationScope, attempt);\n }\n setFailure(classified.message);\n setAnnouncement(classified.message);\n return !retainAttempt;\n } finally {\n if (isCurrentInvocation(target, acceptedTransition, operationSequence)) setBusy(false);\n }\n },\n [\n captureWorkspaceInvocation,\n client,\n displayedTenancy,\n isCurrentInvocation,\n mayManage,\n operationController,\n operationScope,\n reconcileSource,\n scopeLabel,\n target,\n ],\n );\n\n /**\n * Sharing always asks. Limiting to me reads what it would stop or drop first:\n * nothing in the way just makes the change; anything else is listed in one\n * confirmation whose single button does it all.\n */\n const startVisibilityChange = useCallback(\n async (visibility: SessionVisibility) => {\n setFailure(null);\n setVisibilityPreview(null);\n if (visibility !== \"private\") {\n setConfirmation({ kind: \"visibility\", visibility });\n return;\n }\n const operationSequence = operationSequenceRef.current;\n setBusy(true);\n let preview: VisibilityChangePreview;\n try {\n const result = await client.previewSessionVisibilityChange(\n target.workspaceId,\n target.sessionId,\n visibility,\n );\n const work = normalizeSessionVisibilityWork(result.work);\n preview = work ? { status: \"ready\", work } : { status: \"unavailable\" };\n } catch {\n preview = { status: \"unavailable\" };\n }\n if (!mountedRef.current || operationSequenceRef.current !== operationSequence) return;\n setBusy(false);\n if (preview.status === \"ready\" && sessionVisibilityWorkIsEmpty(preview.work)) {\n await changeVisibility(visibility, false);\n return;\n }\n setVisibilityPreview(preview);\n setConfirmation({ kind: \"visibility\", visibility });\n },\n [changeVisibility, client, target],\n );\n\n const forkSession = useCallback(\n async (visibility: SessionVisibility): Promise<boolean> => {\n if (!displayedTenancy || !mayFork) return true;\n if (sourceEventId && pendingFork && pendingFork.sourceEventId !== sourceEventId) {\n setFailure(\n \"A previous fork still needs a retry. Resolve it from the session menu before choosing another message.\",\n );\n return false;\n }\n const acceptedTransition = captureWorkspaceInvocation(target.workspaceId);\n if (!acceptedTransition) return true;\n const operationSequence = operationSequenceRef.current + 1;\n operationSequenceRef.current = operationSequence;\n const workspaceSharedAcknowledged =\n displayedTenancy.visibility === \"private\" && visibility === \"workspace\";\n const attempt = operationController.prepareFork(\n operationScope,\n { visibility, workspaceSharedAcknowledged, ...(sourceEventId ? { sourceEventId } : {}) },\n () => crypto.randomUUID(),\n );\n setBusy(true);\n setFailure(null);\n let receiptConfirmed = false;\n try {\n const result = await runCurrentTransitionInvocation({\n isCurrent: () => isCurrentInvocation(target, acceptedTransition, operationSequence),\n request: async () =>\n await client.forkSession(target.workspaceId, target.sessionId, {\n ...(attempt.sourceEventId ? { sourceEventId: attempt.sourceEventId } : {}),\n visibility: attempt.visibility,\n workspaceSharedAcknowledged: attempt.workspaceSharedAcknowledged,\n idempotencyKey: attempt.idempotencyKey,\n }),\n });\n if (result.status === \"stale\") return true;\n receiptConfirmed = true;\n const destination = await runCurrentTransitionInvocation({\n isCurrent: () => isCurrentInvocation(target, acceptedTransition, operationSequence),\n request: async () =>\n await client.getSession(result.value.workspaceId, result.value.sessionId, {\n fresh: true,\n }),\n });\n if (destination.status === \"stale\") return true;\n if (\n destination.value.workspaceId !== target.workspaceId ||\n destination.value.tenancy?.visibility !== result.value.visibility ||\n !destination.value.tenancy.ownedByCurrentUser\n ) {\n throw new Error(\"The fork receipt did not resolve to the expected owned session.\");\n }\n operationController.settleFork(operationScope, attempt);\n const description =\n result.value.visibility === \"private\"\n ? \"The independent copy is private to you.\"\n : `The independent copy is visible to ${scopeLabel}.`;\n setAnnouncement(description);\n toast.success(result.value.replay ? \"Session fork recovered\" : \"Session fork created\", {\n description,\n });\n onOpenSession(result.value.workspaceId, result.value.sessionId);\n return true;\n } catch (error) {\n if (!isCurrentInvocation(target, acceptedTransition, operationSequence)) return true;\n const classified = classifySessionTenancyFailure(error);\n const retainAttempt =\n classified.retainAttempt ||\n (receiptConfirmed && retryableSessionTenancyReconciliationFailure(error));\n if (!retainAttempt) operationController.settleFork(operationScope, attempt);\n const message = classified.message;\n setFailure(message);\n setAnnouncement(message);\n return sourceEventId ? false : !retainAttempt;\n } finally {\n if (isCurrentInvocation(target, acceptedTransition, operationSequence)) setBusy(false);\n }\n },\n [\n captureWorkspaceInvocation,\n client,\n displayedTenancy,\n isCurrentInvocation,\n mayFork,\n sourceEventId,\n pendingFork,\n onOpenSession,\n operationController,\n operationScope,\n scopeLabel,\n target,\n ],\n );\n\n if (!displayedTenancy) return null;\n\n const privateSession = displayedTenancy.visibility === \"private\";\n const alternateVisibility: SessionVisibility = privateSession ? \"workspace\" : \"private\";\n const retryingVisibility =\n pendingVisibility?.visibility === alternateVisibility &&\n pendingVisibility.expectedAuthorityEpoch === displayedTenancy.authorityEpoch;\n const visibilityAction = privateSession\n ? \"Share this session with workspace…\"\n : \"Limit this session to me\";\n const readyPreview = visibilityPreview?.status === \"ready\" ? visibilityPreview : null;\n // What the one confirmation also stops or drops; null when nothing is listed.\n const workToStop =\n readyPreview && !sessionVisibilityWorkIsEmpty(readyPreview.work) ? readyPreview.work : null;\n const stopsWork = workToStop !== null && sessionVisibilityWorkStopsWork(workToStop);\n const visibilityConfirmLabel = privateSession\n ? retryingVisibility\n ? \"Retry share with workspace\"\n : \"Share with workspace\"\n : stopsWork\n ? \"Stop work and limit to me\"\n : retryingVisibility\n ? \"Retry limit to me\"\n : \"Limit to me\";\n const stateLabel = privateSession ? \"Private\" : \"Workspace\";\n const stateDescription = privateSession\n ? \"Only you can open this session.\"\n : `Visible to people in ${scopeLabel}.`;\n const retryingFork = pendingFork !== null;\n const stateChip = (\n // Phones show just the icon (a 44px target, no chip chrome); the labelled\n // chip with its chevron returns from sm. A narrow title bar (a small app\n // window beside the sidebar) also gets just the icon, so the title keeps\n // its room.\n <span className=\"inline-flex min-h-8 min-w-0 items-center gap-1.5 rounded-full text-xs font-medium text-fg pointer-coarse:min-h-11 max-sm:min-w-8 max-sm:justify-center max-sm:pointer-coarse:min-w-11 sm:border sm:border-border sm:bg-surface/55 sm:px-2.5 @max-[34rem]/titlebar:min-w-8! @max-[34rem]/titlebar:pointer-coarse:min-w-11! @max-[34rem]/titlebar:justify-center @max-[34rem]/titlebar:border-0! @max-[34rem]/titlebar:bg-transparent! @max-[34rem]/titlebar:px-0!\">\n {privateSession ? (\n <LockKeyholeIcon className=\"size-3.5 shrink-0 text-brand\" aria-hidden=\"true\" />\n ) : (\n <UsersIcon className=\"size-3.5 shrink-0 text-fg-muted\" aria-hidden=\"true\" />\n )}\n <span className=\"hidden sm:inline @max-[34rem]/titlebar:hidden!\">{stateLabel}</span>\n {failure ? <CircleAlertIcon className=\"size-3.5 text-status-waiting\" aria-hidden /> : null}\n {mayFork ? (\n <ChevronDownIcon\n className=\"hidden size-3.5 text-fg-muted sm:block @max-[34rem]/titlebar:hidden!\"\n aria-hidden\n />\n ) : null}\n </span>\n );\n\n return (\n <TooltipProvider delayDuration={300}>\n <section\n aria-label=\"Session access\"\n className={sourceEventId ? \"hidden\" : \"flex shrink-0 items-center\"}\n >\n {mayFork ? (\n <DropdownMenu>\n <DropdownMenuTrigger asChild disabled={busy}>\n <button\n ref={accessTriggerRef}\n type=\"button\"\n aria-label={\n mayManage\n ? `${stateLabel} session access. Manage session access`\n : `${stateLabel} session access. Session actions`\n }\n aria-busy={busy}\n className=\"rounded-full focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring\"\n >\n {busy ? (\n <span className=\"inline-flex min-h-8 items-center justify-center gap-1.5 rounded-full border border-border bg-surface/55 px-2.5 text-xs font-medium pointer-coarse:min-h-11 pointer-coarse:min-w-11\">\n <Loader2Icon className=\"size-3.5 animate-spin motion-reduce:animate-none\" />\n <span className=\"hidden sm:inline\">Updating</span>\n </span>\n ) : (\n stateChip\n )}\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-72\">\n <div className=\"px-2.5 py-1.5\">\n <p className=\"text-sm font-medium text-fg\">{stateLabel} session</p>\n <p className=\"mt-0.5 text-xs leading-4.5 text-fg-muted\">{stateDescription}</p>\n </div>\n {mayManage ? (\n <>\n <DropdownMenuSeparator />\n <DropdownMenuItem\n onSelect={() => void startVisibilityChange(alternateVisibility)}\n >\n {privateSession ? <UsersIcon /> : <LockKeyholeIcon />}\n {retryingVisibility ? `Retry: ${visibilityAction}` : visibilityAction}\n </DropdownMenuItem>\n </>\n ) : null}\n <DropdownMenuSeparator />\n <DropdownMenuItem\n onSelect={() =>\n setConfirmation({\n kind: \"fork\",\n visibility:\n pendingFork?.visibility ??\n (canForkPrivately ? displayedTenancy.visibility : \"workspace\"),\n })\n }\n >\n <CopyPlusIcon />\n {retryingFork ? \"Retry session fork\" : \"Fork session\"}\n </DropdownMenuItem>\n {failure ? (\n <>\n <DropdownMenuSeparator />\n <div className=\"px-2.5 py-1.5 text-xs leading-4.5 text-status-waiting\">\n <span className=\"font-medium\">Access change needs attention.</span> {failure}\n </div>\n </>\n ) : null}\n </DropdownMenuContent>\n </DropdownMenu>\n ) : (\n <Tooltip>\n <TooltipTrigger asChild>\n <span\n role=\"img\"\n tabIndex={0}\n aria-label={`${stateLabel} session access. ${stateDescription}`}\n >\n {stateChip}\n </span>\n </TooltipTrigger>\n <TooltipContent side=\"bottom\">{stateDescription}</TooltipContent>\n </Tooltip>\n )}\n <span className=\"sr-only\" aria-live=\"polite\" aria-atomic=\"true\">\n {announcement}\n </span>\n </section>\n\n <ConfirmDialog\n open={confirmation !== null}\n onOpenChange={(open) => {\n if (!open) {\n setConfirmation(null);\n setVisibilityPreview(null);\n onForkClose?.();\n }\n }}\n title={\n confirmation?.kind === \"fork\"\n ? confirmation.visibility === \"workspace\"\n ? `Fork a workspace-visible copy?`\n : \"Fork a private copy?\"\n : confirmation?.visibility === \"workspace\"\n ? `Share this session with ${scopeLabel}?`\n : \"Limit this session to you?\"\n }\n description={\n (pendingFork ? pendingFork.sourceEventId : sourceEventId)\n ? `Copy the conversation through the selected message${confirmation?.visibility === \"workspace\" ? ` into a session visible to people in ${scopeLabel}` : \" into a session visible only to you\"}. Later messages are excluded. Live credentials, tools, goals, and processes are not copied.`\n : confirmation?.kind === \"fork\" &&\n displayedTenancy.visibility === \"private\" &&\n confirmation.visibility === \"workspace\"\n ? `This private session's complete conversation will be copied into a new session visible to people in ${scopeLabel}. Live credentials, connections, tools, goals, and processes are not copied.`\n : confirmation?.kind === \"fork\"\n ? confirmation.visibility === \"workspace\"\n ? `Create an independent copy visible to people in ${scopeLabel}. Live credentials, connections, tools, goals, and processes are not copied.`\n : \"Create an independent copy visible only to you. Live credentials, connections, tools, goals, and processes are not copied.\"\n : confirmation?.visibility === \"workspace\"\n ? \"People who can access this workspace will be able to open and continue the session. Current work keeps running with its existing identity and connections.\"\n : `Only you will be able to open the session.${privateSessionSandboxNote(session.sandboxBackend)}`\n }\n confirmLabel={\n confirmation?.kind === \"fork\"\n ? retryingFork\n ? \"Retry fork\"\n : confirmation.visibility === \"workspace\"\n ? \"Fork for workspace\"\n : \"Fork privately\"\n : visibilityConfirmLabel\n }\n pendingLabel={\n confirmation?.kind === \"visibility\" && stopsWork ? \"Stopping work…\" : \"Working…\"\n }\n // A fork only widens exposure when a private source is copied into the\n // workspace. Changing an existing session to workspace visibility always\n // does, and making it private destroys the work and access it drops.\n // A shared-to-shared fork exposes nothing new.\n destructive={\n confirmation?.kind === \"fork\"\n ? displayedTenancy.visibility === \"private\" && confirmation.visibility === \"workspace\"\n : confirmation?.visibility === \"workspace\" || workToStop !== null\n }\n cancelAutoFocus\n restoreFocusRef={sourceEventId ? undefined : accessTriggerRef}\n onConfirm={() => {\n if (!confirmation) return true;\n return confirmation.kind === \"visibility\"\n ? changeVisibility(confirmation.visibility, workToStop !== null)\n : forkSession(confirmation.visibility);\n }}\n >\n {confirmation?.kind === \"visibility\" && workToStop ? (\n <Notice tone=\"waiting\" title=\"This will also\">\n <ul className=\"list-disc space-y-0.5 pl-4\">\n {sessionVisibilityWorkSummary(workToStop).map((line) => (\n <li key={line}>{line}</li>\n ))}\n </ul>\n </Notice>\n ) : null}\n {confirmation?.kind === \"fork\" && !retryingFork ? (\n <div\n className={canForkPrivately ? \"grid grid-cols-2 gap-2\" : \"grid gap-2\"}\n role=\"radiogroup\"\n aria-label=\"Fork visibility\"\n >\n {canForkPrivately ? (\n <Button\n type=\"button\"\n variant={confirmation.visibility === \"private\" ? \"secondary\" : \"outline\"}\n className=\"aria-checked:text-fg\"\n role=\"radio\"\n aria-checked={confirmation.visibility === \"private\"}\n onClick={() => setConfirmation({ kind: \"fork\", visibility: \"private\" })}\n >\n <LockKeyholeIcon /> Private\n </Button>\n ) : null}\n <Button\n type=\"button\"\n variant={confirmation.visibility === \"workspace\" ? \"secondary\" : \"outline\"}\n className=\"aria-checked:text-fg\"\n role=\"radio\"\n aria-checked={confirmation.visibility === \"workspace\"}\n onClick={() => setConfirmation({ kind: \"fork\", visibility: \"workspace\" })}\n >\n <UsersIcon /> Workspace\n </Button>\n </div>\n ) : null}\n {failure ? (\n <Notice tone=\"waiting\" title=\"Access change needs attention\">\n {failure}\n </Notice>\n ) : null}\n </ConfirmDialog>\n </TooltipProvider>\n );\n}\n"],"mappings":"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","names":["message"]}
@@ -1,16 +1,18 @@
1
1
  "use client";
2
2
  import {
3
3
  UnattendedSetting
4
- } from "../../../chunk-VADHIT26.js";
4
+ } from "../../../chunk-ZNJ5MTXV.js";
5
5
  import "../../../chunk-H2ALCTWC.js";
6
6
  import "../../../chunk-LBSXJVHD.js";
7
- import "../../../chunk-YG6NARQY.js";
7
+ import "../../../chunk-O4EA4F3W.js";
8
8
  import "../../../chunk-JDFDPMKX.js";
9
- import "../../../chunk-L4OF77LE.js";
10
- import "../../../chunk-FOGNA3BU.js";
11
- import "../../../chunk-PC2MVXIP.js";
9
+ import "../../../chunk-O4OOG3D6.js";
10
+ import "../../../chunk-7V5REBCP.js";
11
+ import "../../../chunk-YNF2OC54.js";
12
12
  import "../../../chunk-UX3XHFRX.js";
13
13
  import "../../../chunk-NRP4REXE.js";
14
+ import "../../../chunk-V4Z4B2E3.js";
15
+ import "../../../chunk-FYWT2O76.js";
14
16
  import "../../../chunk-EDYVC3U3.js";
15
17
  import "../../../chunk-UD6AAZSC.js";
16
18
  import "../../../chunk-XEA5BCMA.js";
@@ -3,25 +3,27 @@ import {
3
3
  SESSION_USAGE_LIMIT_UNKNOWN_RETRY_MS,
4
4
  SessionUsageLimitSection,
5
5
  sessionHref
6
- } from "../../../chunk-TNKWOUWP.js";
7
- import "../../../chunk-RBRX5ZS3.js";
6
+ } from "../../../chunk-K2A5PXQ5.js";
7
+ import "../../../chunk-UMTXA2TH.js";
8
8
  import "../../../chunk-JM4XEJPM.js";
9
- import "../../../chunk-NWGNFN3N.js";
9
+ import "../../../chunk-T3OWFVMS.js";
10
10
  import "../../../chunk-H2ALCTWC.js";
11
11
  import "../../../chunk-LBSXJVHD.js";
12
- import "../../../chunk-YG6NARQY.js";
12
+ import "../../../chunk-O4EA4F3W.js";
13
13
  import "../../../chunk-JDFDPMKX.js";
14
14
  import "../../../chunk-MWSRT3IQ.js";
15
15
  import "../../../chunk-A3MTTRCX.js";
16
- import "../../../chunk-VGUN6VB2.js";
16
+ import "../../../chunk-RGBI63KJ.js";
17
17
  import "../../../chunk-X6WZOHBI.js";
18
- import "../../../chunk-L4OF77LE.js";
18
+ import "../../../chunk-O4OOG3D6.js";
19
19
  import "../../../chunk-HJO32O7Z.js";
20
20
  import "../../../chunk-WHMKC7OQ.js";
21
- import "../../../chunk-PC2MVXIP.js";
22
- import "../../../chunk-AOHU6O3M.js";
21
+ import "../../../chunk-YNF2OC54.js";
22
+ import "../../../chunk-MVW6HNPI.js";
23
23
  import "../../../chunk-UX3XHFRX.js";
24
24
  import "../../../chunk-NRP4REXE.js";
25
+ import "../../../chunk-V4Z4B2E3.js";
26
+ import "../../../chunk-FYWT2O76.js";
25
27
  import "../../../chunk-4U7SHFQ2.js";
26
28
  import "../../../chunk-7QQN3KNP.js";
27
29
  import "../../../chunk-EDYVC3U3.js";
@@ -31,7 +33,7 @@ import "../../../chunk-RV3O5OCQ.js";
31
33
  import "../../../chunk-CM7LVUKC.js";
32
34
  import "../../../chunk-TVQCDDSZ.js";
33
35
  import "../../../chunk-TXS65BB2.js";
34
- import "../../../chunk-TNUSPXPW.js";
36
+ import "../../../chunk-7T2ZE3VT.js";
35
37
  export {
36
38
  SESSION_USAGE_LIMIT_UNKNOWN_RETRY_MS,
37
39
  SessionUsageLimitSection,
@@ -1,23 +1,25 @@
1
1
  "use client";
2
2
  import {
3
3
  ShareChatDialog
4
- } from "../../../chunk-PSMAWRPL.js";
5
- import "../../../chunk-XYBV4ZJQ.js";
4
+ } from "../../../chunk-U7XM7CB4.js";
5
+ import "../../../chunk-2YUOVM3G.js";
6
6
  import "../../../chunk-ZQCND77P.js";
7
- import "../../../chunk-WHWUWN2X.js";
8
- import "../../../chunk-L4OF77LE.js";
7
+ import "../../../chunk-IKXNLWAL.js";
8
+ import "../../../chunk-O4OOG3D6.js";
9
9
  import "../../../chunk-HJO32O7Z.js";
10
10
  import "../../../chunk-HD5X76TP.js";
11
- import "../../../chunk-ELL6HSYR.js";
12
- import "../../../chunk-AOHU6O3M.js";
11
+ import "../../../chunk-53AGXXZM.js";
12
+ import "../../../chunk-MVW6HNPI.js";
13
13
  import "../../../chunk-ZMBJPN4T.js";
14
14
  import "../../../chunk-UX3XHFRX.js";
15
+ import "../../../chunk-V4Z4B2E3.js";
16
+ import "../../../chunk-FYWT2O76.js";
15
17
  import "../../../chunk-7QQN3KNP.js";
16
18
  import "../../../chunk-EDYVC3U3.js";
17
19
  import "../../../chunk-UD6AAZSC.js";
18
20
  import "../../../chunk-XEA5BCMA.js";
19
21
  import "../../../chunk-TXS65BB2.js";
20
- import "../../../chunk-TNUSPXPW.js";
22
+ import "../../../chunk-7T2ZE3VT.js";
21
23
  export {
22
24
  ShareChatDialog
23
25
  };
@@ -2,13 +2,13 @@
2
2
  import {
3
3
  SiteOriginLink,
4
4
  SiteOriginMenuItem
5
- } from "../../../chunk-ALVRWCXE.js";
5
+ } from "../../../chunk-P3A2EINJ.js";
6
6
  import "../../../chunk-K3TJNJSU.js";
7
- import "../../../chunk-U5EFEMYU.js";
7
+ import "../../../chunk-BXBDYNRP.js";
8
+ import "../../../chunk-ENFLCAR3.js";
8
9
  import "../../../chunk-5QBCQVKZ.js";
9
10
  import "../../../chunk-HUJLWGDR.js";
10
11
  import "../../../chunk-QZKQMEIH.js";
11
- import "../../../chunk-ENFLCAR3.js";
12
12
  import "../../../chunk-GM3LG6BG.js";
13
13
  import "../../../chunk-5OTQA7CM.js";
14
14
  import "../../../chunk-UD6AAZSC.js";
@@ -5,15 +5,15 @@ import {
5
5
  SubagentsLabel,
6
6
  sessionStatusTone,
7
7
  subagentAttentionHint
8
- } from "../../../chunk-YT3WGNG6.js";
9
- import "../../../chunk-JCY4CMDH.js";
10
- import "../../../chunk-EUBGLFFR.js";
11
- import "../../../chunk-GE33BGB7.js";
12
- import "../../../chunk-U5EFEMYU.js";
8
+ } from "../../../chunk-NULUNM7H.js";
9
+ import "../../../chunk-ZUA3JMI6.js";
10
+ import "../../../chunk-FPXASDG5.js";
11
+ import "../../../chunk-HSOXMJOT.js";
12
+ import "../../../chunk-BXBDYNRP.js";
13
+ import "../../../chunk-ENFLCAR3.js";
13
14
  import "../../../chunk-5QBCQVKZ.js";
14
15
  import "../../../chunk-HUJLWGDR.js";
15
16
  import "../../../chunk-QZKQMEIH.js";
16
- import "../../../chunk-ENFLCAR3.js";
17
17
  import "../../../chunk-6XKJZSDE.js";
18
18
  import "../../../chunk-I5UOUBST.js";
19
19
  import "../../../chunk-GXO7ECQZ.js";
@@ -22,7 +22,7 @@ import "../../../chunk-X6WZOHBI.js";
22
22
  import "../../../chunk-GM3LG6BG.js";
23
23
  import "../../../chunk-5OTQA7CM.js";
24
24
  import "../../../chunk-A3KMTJZS.js";
25
- import "../../../chunk-6AHATAAY.js";
25
+ import "../../../chunk-3PZ7JZI2.js";
26
26
  import "../../../chunk-J3DY5HWQ.js";
27
27
  import "../../../chunk-IZXHMZQ6.js";
28
28
  import "../../../chunk-LJUMYUBO.js";
@@ -43,7 +43,7 @@ import "../../../chunk-AZGAUBKR.js";
43
43
  import "../../../chunk-ZHC47M2B.js";
44
44
  import "../../../chunk-MBSN5HHQ.js";
45
45
  import "../../../chunk-TXS65BB2.js";
46
- import "../../../chunk-TNUSPXPW.js";
46
+ import "../../../chunk-7T2ZE3VT.js";
47
47
  export {
48
48
  SessionAncestryBreadcrumb,
49
49
  SubagentTree,
@@ -6,24 +6,24 @@ import {
6
6
  codexUsage,
7
7
  sharedAccount,
8
8
  sharedAccountState
9
- } from "../../../chunk-3QNRBEYH.js";
9
+ } from "../../../chunk-SHHJCL7X.js";
10
10
  import "../../../chunk-O4JOE3R7.js";
11
11
  import "../../../chunk-5ER2VOAO.js";
12
- import "../../../chunk-REX6JIC7.js";
12
+ import "../../../chunk-GKVJIDHF.js";
13
13
  import "../../../chunk-TFD6JXHN.js";
14
14
  import "../../../chunk-A3MTTRCX.js";
15
15
  import "../../../chunk-GM3LG6BG.js";
16
16
  import "../../../chunk-HJO32O7Z.js";
17
17
  import "../../../chunk-5OTQA7CM.js";
18
- import "../../../chunk-6AHATAAY.js";
18
+ import "../../../chunk-3PZ7JZI2.js";
19
19
  import "../../../chunk-LWNBJHJM.js";
20
20
  import "../../../chunk-TWCYCCDA.js";
21
- import "../../../chunk-PW54V7T5.js";
21
+ import "../../../chunk-5IE76VCY.js";
22
22
  import "../../../chunk-IWUGGOXA.js";
23
23
  import "../../../chunk-TSENLSW6.js";
24
24
  import "../../../chunk-RZLBICR5.js";
25
25
  import "../../../chunk-IGVL3ELX.js";
26
- import "../../../chunk-U6M4LS3M.js";
26
+ import "../../../chunk-XLH7QY2R.js";
27
27
  import "../../../chunk-PNNTR6KP.js";
28
28
  import "../../../chunk-WJPMYXKZ.js";
29
29
  import "../../../chunk-VYT4POBH.js";
@@ -37,7 +37,7 @@ import "../../../chunk-AMHRWKKH.js";
37
37
  import "../../../chunk-ZHC47M2B.js";
38
38
  import "../../../chunk-MBSN5HHQ.js";
39
39
  import "../../../chunk-TXS65BB2.js";
40
- import "../../../chunk-TNUSPXPW.js";
40
+ import "../../../chunk-7T2ZE3VT.js";
41
41
  export {
42
42
  SubscriptionAccountControl,
43
43
  SubscriptionAccountIndicator,
@@ -5,8 +5,8 @@ import {
5
5
  import "../../chunk-HUSXCRHR.js";
6
6
  import {
7
7
  CapabilityLogo
8
- } from "../../chunk-QWL4L366.js";
9
- import "../../chunk-XOSQP3YA.js";
8
+ } from "../../chunk-D5TWNFFE.js";
9
+ import "../../chunk-XDFP2LMW.js";
10
10
  import {
11
11
  ComposerMenuHeader,
12
12
  ComposerMenuRowsSkeleton,
@@ -24,7 +24,7 @@ import {
24
24
  cn
25
25
  } from "../../chunk-A3MTTRCX.js";
26
26
  import "../../chunk-GM3LG6BG.js";
27
- import "../../chunk-L4OF77LE.js";
27
+ import "../../chunk-O4OOG3D6.js";
28
28
  import "../../chunk-K4DHWGCT.js";
29
29
  import {
30
30
  MENU_BACK_BUTTON_CLASS,
@@ -33,6 +33,7 @@ import {
33
33
  MENU_NOTE_CLASS
34
34
  } from "../../chunk-5OTQA7CM.js";
35
35
  import "../../chunk-X5NTDJIO.js";
36
+ import "../../chunk-FYWT2O76.js";
36
37
  import "../../chunk-UD6AAZSC.js";
37
38
  import "../../chunk-XEA5BCMA.js";
38
39
  import "../../chunk-TXS65BB2.js";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/app/components/session-connectors-menu-body.tsx"],"sourcesContent":["import {\n CheckIcon,\n ChevronLeftIcon,\n PlugIcon,\n RefreshCwIcon,\n Loader2Icon,\n Settings2Icon,\n} from \"lucide-react\";\nimport { useState, type ReactNode } from \"react\";\nimport {\n ConnectionAccountPicker,\n type ConnectionAccountControls,\n} from \"./capabilities/connection-account-picker\";\nimport type { FirstPartyMcpToolName } from \"@opengeni/contracts\";\nimport { CapabilityLogo } from \"./capabilities/capability-logo\";\nimport { ConnectorAction } from \"../../ui/composer-menu-action\";\nimport {\n ComposerMenuHeader,\n ComposerMenuSwitch,\n ComposerMenuSwitchIndicator,\n ComposerMenuRowsSkeleton,\n} from \"../../ui/composer-menu\";\nimport {\n MENU_BACK_BUTTON_CLASS,\n MENU_CHECK_CLASS,\n MENU_LABEL_CLASS,\n MENU_NOTE_CLASS,\n} from \"../../ui/menu-styles\";\nimport { cn } from \"../lib/utils\";\nimport type { SessionToolSelection } from \"./pickers\";\nimport { isComposerConnector, type McpServerOption } from \"../lib/session-tools\";\n\nexport type SessionConnectorsMenuProps = {\n presentation?: \"menu\" | \"dialog\" | undefined;\n servers: McpServerOption[];\n firstPartyTools: ReadonlyArray<{ id: FirstPartyMcpToolName; name: string }>;\n selection: SessionToolSelection;\n onChange: (selection: SessionToolSelection) => void;\n /** Header switch. Off = read-only workspace list; on = row toggles. */\n customizing?: boolean | undefined;\n onCustomizingChange?: ((customizing: boolean) => void) | undefined;\n leading?: ReactNode | undefined;\n onReconnect?: ((serverId: string) => void) | undefined;\n loading?: boolean | undefined;\n error?: string | null | undefined;\n busyId?: string | null | undefined;\n accountControls?: ConnectionAccountControls | undefined;\n};\n\n/** Connected apps for one chat. Built-in tools follow the agent's capabilities (+ > Capabilities). */\nexport function SessionConnectorsMenuBody(props: SessionConnectorsMenuProps) {\n const connectors = props.servers.filter(isComposerConnector);\n const customizing = props.customizing === true;\n const [settingsId, setSettingsId] = useState<string | null>(null);\n const settingsServer = connectors.find((server) => server.id === settingsId);\n const accounts = props.accountControls;\n const changeConnector = (serverId: string, enabled: boolean) => {\n const next = new Set(props.selection.mcpServerIds);\n if (enabled) next.add(serverId);\n else next.delete(serverId);\n props.onCustomizingChange?.(true);\n props.onChange({\n mcpServerIds: next,\n firstPartyToolIds: new Set(props.selection.firstPartyToolIds),\n });\n };\n if (settingsServer && accounts) {\n return (\n <>\n <ComposerMenuHeader\n title={settingsServer.name}\n leading={\n <ConnectorAction\n presentation={props.presentation}\n keepOpen\n label=\"Back to connectors\"\n className={`${MENU_BACK_BUTTON_CLASS} w-8 gap-0 p-0`}\n onAction={() => setSettingsId(null)}\n >\n <ChevronLeftIcon aria-hidden=\"true\" className=\"size-4\" />\n </ConnectorAction>\n }\n />\n <div className=\"min-h-0 overflow-y-auto overscroll-contain\">\n <p className={MENU_LABEL_CLASS}>Connected accounts</p>\n {accounts.loading &&\n !accounts.groups.some((group) => group.serverId === settingsServer.id) ? (\n <ComposerMenuRowsSkeleton rows={2} label=\"Loading accounts\" />\n ) : null}\n <ConnectionAccountPicker\n {...accounts}\n groups={accounts.groups.filter((group) => group.serverId === settingsServer.id)}\n choices={\n props.selection.mcpServerIds.has(settingsServer.id)\n ? accounts.choices\n : { ...accounts.choices, [settingsServer.id]: [] }\n }\n onChoose={(serverId, ids) => {\n accounts.onChoose(serverId, ids);\n if (props.selection.mcpServerIds.has(serverId) !== ids.length > 0) {\n changeConnector(serverId, ids.length > 0);\n }\n }}\n presentation={props.presentation}\n disabled={accounts.disabled || accounts.loading || Boolean(accounts.error)}\n />\n {accounts.error ? (\n <p role=\"alert\" className={cn(MENU_NOTE_CLASS, \"text-status-failed\")}>\n {accounts.error}\n </p>\n ) : null}\n {accounts.error && !accounts.accessDenied && accounts.onRefresh ? (\n <ConnectorAction\n presentation={props.presentation}\n keepOpen\n label=\"Retry accounts\"\n onAction={accounts.onRefresh}\n disabled={accounts.loading}\n >\n <RefreshCwIcon className=\"size-4\" /> Retry accounts\n </ConnectorAction>\n ) : null}\n </div>\n </>\n );\n }\n return (\n <>\n <ComposerMenuHeader\n title=\"Connectors\"\n leading={props.leading}\n trailing={\n <div className=\"flex items-center gap-2\">\n <span aria-hidden className=\"text-xs text-fg-muted\">\n Customize\n </span>\n {props.presentation === \"dialog\" ? (\n <ComposerMenuSwitch\n label=\"Customize connectors\"\n checked={customizing}\n onCheckedChange={(next) => props.onCustomizingChange?.(next)}\n />\n ) : (\n // Inside a menu the toggle is a checkable menu item.\n <ConnectorAction\n presentation=\"menu\"\n keepOpen\n checked={customizing}\n label=\"Customize connectors\"\n className=\"inline-flex size-9 shrink-0 items-center justify-end rounded-md p-0 pointer-coarse:size-11\"\n onAction={() => props.onCustomizingChange?.(!customizing)}\n >\n <ComposerMenuSwitchIndicator checked={customizing} />\n </ConnectorAction>\n )}\n </div>\n }\n />\n <div\n role=\"group\"\n tabIndex={0}\n className=\"min-h-0 shrink overflow-y-auto overscroll-contain focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-brand/55\"\n >\n {accounts?.error ? (\n <p role=\"alert\" className={cn(MENU_NOTE_CLASS, \"text-status-failed\")}>\n {accounts.error}\n </p>\n ) : null}\n {props.loading && !connectors.length ? (\n <ComposerMenuRowsSkeleton rows={4} size=\"tile\" label=\"Loading connectors\" />\n ) : null}\n {!props.loading && !connectors.length ? (\n <p className={MENU_NOTE_CLASS}>Connect an app to use it in your conversations.</p>\n ) : null}\n {connectors.map((server) => {\n const selected = props.selection.mcpServerIds.has(server.id);\n const repair = server.connectionStatus === \"reconnect\";\n const connect = server.connectionStatus === \"connect\";\n const unavailable = server.connectionStatus === \"unavailable\";\n const busy = props.busyId === server.id;\n const setupAction = (connect || repair || unavailable) && !(customizing && selected);\n const accountGroup = accounts?.groups.find((group) => group.serverId === server.id);\n const setupLabel = connect\n ? `Connect your ${server.name} account`\n : repair\n ? `Reconnect ${server.name}`\n : `${server.name} unavailable`;\n return (\n <div\n key={server.id}\n className=\"flex min-h-14 items-center gap-1 rounded-[10px] py-1.5 pl-2.5\"\n >\n <div className=\"flex min-w-0 flex-1 items-center gap-3 pr-2\">\n <CapabilityLogo\n src={server.logoSrc ?? null}\n name={server.name}\n size=\"sm\"\n className=\"size-8 rounded-lg [&_img]:p-1\"\n />\n <span className=\"min-w-0 flex-1\">\n <span className=\"block truncate text-sm font-medium\">{server.name}</span>\n {server.detail ? (\n <span className=\"mt-1 block truncate text-xs text-fg-muted\">\n {server.detail}\n </span>\n ) : null}\n {connect || repair || unavailable ? (\n <span className=\"block text-2xs text-status-waiting\">\n {connect\n ? \"No connected account\"\n : repair\n ? \"Reconnect required\"\n : \"Unavailable\"}\n </span>\n ) : null}\n {server.connectionStatus === \"unknown\" ? (\n <span className=\"block text-2xs text-fg-subtle\">Status unavailable</span>\n ) : null}\n </span>\n </div>\n <span className=\"flex size-11 shrink-0 items-center justify-center\">\n {accounts &&\n accountGroup &&\n (accountGroup.accounts.length > 0 ||\n (accounts.choices[server.id]?.length ?? 0) > 0) ? (\n <ConnectorAction\n presentation={props.presentation}\n keepOpen\n label={`${server.name} account settings`}\n disabled={busy || accounts.disabled}\n className=\"connector-control flex size-11 shrink-0 items-center justify-center rounded-md p-2\"\n onAction={() => setSettingsId(server.id)}\n >\n <Settings2Icon className=\"size-4 text-fg-muted\" />\n </ConnectorAction>\n ) : null}\n </span>\n {customizing || setupAction ? (\n <ConnectorAction\n presentation={props.presentation}\n keepOpen\n checked={setupAction ? undefined : selected}\n label={setupAction ? setupLabel : server.name}\n disabled={busy || accounts?.disabled || (!selected && accounts?.loading)}\n className=\"connector-control flex size-11 shrink-0 items-center justify-center rounded-md p-2\"\n onAction={() => {\n if (setupAction) {\n props.onReconnect?.(server.id);\n return;\n }\n if (!selected && accounts?.choices[server.id]?.length === 0) {\n accounts.onChoose(\n server.id,\n accountGroup?.accounts.map((account) => account.id) ?? [],\n );\n }\n changeConnector(server.id, !selected);\n }}\n >\n {busy ? (\n <Loader2Icon className=\"size-4 animate-spin\" />\n ) : setupAction ? (\n connect ? (\n <PlugIcon className=\"size-4 text-fg-muted\" />\n ) : (\n <RefreshCwIcon className=\"size-4 text-fg-muted\" />\n )\n ) : (\n <ComposerMenuSwitchIndicator checked={selected} />\n )}\n </ConnectorAction>\n ) : (\n <span className=\"flex size-11 shrink-0 items-center justify-center\">\n {selected ? <CheckIcon className={MENU_CHECK_CLASS} aria-hidden /> : null}\n <span className=\"sr-only\">{`${server.name}, ${selected ? \"on\" : \"off\"} for this session`}</span>\n </span>\n )}\n </div>\n );\n })}\n </div>\n {props.error ? (\n <p role=\"alert\" className={cn(MENU_NOTE_CLASS, \"text-status-failed\")}>\n {props.error}\n </p>\n ) : null}\n {accounts?.error && !accounts.accessDenied && accounts.onRefresh ? (\n <ConnectorAction presentation={props.presentation} keepOpen onAction={accounts.onRefresh}>\n Retry accounts\n </ConnectorAction>\n ) : null}\n </>\n );\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/app/components/session-connectors-menu-body.tsx"],"sourcesContent":["import {\n CheckIcon,\n ChevronLeftIcon,\n PlugIcon,\n RefreshCwIcon,\n Loader2Icon,\n Settings2Icon,\n} from \"lucide-react\";\nimport { useState, type ReactNode } from \"react\";\nimport {\n ConnectionAccountPicker,\n type ConnectionAccountControls,\n} from \"./capabilities/connection-account-picker\";\nimport type { FirstPartyMcpToolName } from \"@opengeni/contracts\";\nimport { CapabilityLogo } from \"./capabilities/capability-logo\";\nimport { ConnectorAction } from \"../../ui/composer-menu-action\";\nimport {\n ComposerMenuHeader,\n ComposerMenuSwitch,\n ComposerMenuSwitchIndicator,\n ComposerMenuRowsSkeleton,\n} from \"../../ui/composer-menu\";\nimport {\n MENU_BACK_BUTTON_CLASS,\n MENU_CHECK_CLASS,\n MENU_LABEL_CLASS,\n MENU_NOTE_CLASS,\n} from \"../../ui/menu-styles\";\nimport { cn } from \"../lib/utils\";\nimport type { SessionToolSelection } from \"./pickers\";\nimport { isComposerConnector, type McpServerOption } from \"../lib/session-tools\";\n\nexport type SessionConnectorsMenuProps = {\n presentation?: \"menu\" | \"dialog\" | undefined;\n servers: McpServerOption[];\n firstPartyTools: ReadonlyArray<{ id: FirstPartyMcpToolName; name: string }>;\n selection: SessionToolSelection;\n onChange: (selection: SessionToolSelection) => void;\n /** Header switch. Off = read-only workspace list; on = row toggles. */\n customizing?: boolean | undefined;\n onCustomizingChange?: ((customizing: boolean) => void) | undefined;\n leading?: ReactNode | undefined;\n onReconnect?: ((serverId: string) => void) | undefined;\n loading?: boolean | undefined;\n error?: string | null | undefined;\n busyId?: string | null | undefined;\n accountControls?: ConnectionAccountControls | undefined;\n};\n\n/** Connected apps for one chat. Built-in tools follow the agent's capabilities (+ > Capabilities). */\nexport function SessionConnectorsMenuBody(props: SessionConnectorsMenuProps) {\n const connectors = props.servers.filter(isComposerConnector);\n const customizing = props.customizing === true;\n const [settingsId, setSettingsId] = useState<string | null>(null);\n const settingsServer = connectors.find((server) => server.id === settingsId);\n const accounts = props.accountControls;\n const changeConnector = (serverId: string, enabled: boolean) => {\n const next = new Set(props.selection.mcpServerIds);\n if (enabled) next.add(serverId);\n else next.delete(serverId);\n props.onCustomizingChange?.(true);\n props.onChange({\n mcpServerIds: next,\n firstPartyToolIds: new Set(props.selection.firstPartyToolIds),\n });\n };\n if (settingsServer && accounts) {\n return (\n <>\n <ComposerMenuHeader\n title={settingsServer.name}\n leading={\n <ConnectorAction\n presentation={props.presentation}\n keepOpen\n label=\"Back to connectors\"\n className={`${MENU_BACK_BUTTON_CLASS} w-8 gap-0 p-0`}\n onAction={() => setSettingsId(null)}\n >\n <ChevronLeftIcon aria-hidden=\"true\" className=\"size-4\" />\n </ConnectorAction>\n }\n />\n <div className=\"min-h-0 overflow-y-auto overscroll-contain\">\n <p className={MENU_LABEL_CLASS}>Connected accounts</p>\n {accounts.loading &&\n !accounts.groups.some((group) => group.serverId === settingsServer.id) ? (\n <ComposerMenuRowsSkeleton rows={2} label=\"Loading accounts\" />\n ) : null}\n <ConnectionAccountPicker\n {...accounts}\n groups={accounts.groups.filter((group) => group.serverId === settingsServer.id)}\n choices={\n props.selection.mcpServerIds.has(settingsServer.id)\n ? accounts.choices\n : { ...accounts.choices, [settingsServer.id]: [] }\n }\n onChoose={(serverId, ids) => {\n accounts.onChoose(serverId, ids);\n if (props.selection.mcpServerIds.has(serverId) !== ids.length > 0) {\n changeConnector(serverId, ids.length > 0);\n }\n }}\n presentation={props.presentation}\n disabled={accounts.disabled || accounts.loading || Boolean(accounts.error)}\n />\n {accounts.error ? (\n <p role=\"alert\" className={cn(MENU_NOTE_CLASS, \"text-status-failed\")}>\n {accounts.error}\n </p>\n ) : null}\n {accounts.error && !accounts.accessDenied && accounts.onRefresh ? (\n <ConnectorAction\n presentation={props.presentation}\n keepOpen\n label=\"Retry accounts\"\n onAction={accounts.onRefresh}\n disabled={accounts.loading}\n >\n <RefreshCwIcon className=\"size-4\" /> Retry accounts\n </ConnectorAction>\n ) : null}\n </div>\n </>\n );\n }\n return (\n <>\n <ComposerMenuHeader\n title=\"Connectors\"\n leading={props.leading}\n trailing={\n <div className=\"flex items-center gap-2\">\n <span aria-hidden className=\"text-xs text-fg-muted\">\n Customize\n </span>\n {props.presentation === \"dialog\" ? (\n <ComposerMenuSwitch\n label=\"Customize connectors\"\n checked={customizing}\n onCheckedChange={(next) => props.onCustomizingChange?.(next)}\n />\n ) : (\n // Inside a menu the toggle is a checkable menu item.\n <ConnectorAction\n presentation=\"menu\"\n keepOpen\n checked={customizing}\n label=\"Customize connectors\"\n className=\"inline-flex size-9 shrink-0 items-center justify-end rounded-md p-0 pointer-coarse:size-11\"\n onAction={() => props.onCustomizingChange?.(!customizing)}\n >\n <ComposerMenuSwitchIndicator checked={customizing} />\n </ConnectorAction>\n )}\n </div>\n }\n />\n <div\n role=\"group\"\n tabIndex={0}\n className=\"min-h-0 shrink overflow-y-auto overscroll-contain focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-brand/55\"\n >\n {accounts?.error ? (\n <p role=\"alert\" className={cn(MENU_NOTE_CLASS, \"text-status-failed\")}>\n {accounts.error}\n </p>\n ) : null}\n {props.loading && !connectors.length ? (\n <ComposerMenuRowsSkeleton rows={4} size=\"tile\" label=\"Loading connectors\" />\n ) : null}\n {!props.loading && !connectors.length ? (\n <p className={MENU_NOTE_CLASS}>Connect an app to use it in your conversations.</p>\n ) : null}\n {connectors.map((server) => {\n const selected = props.selection.mcpServerIds.has(server.id);\n const repair = server.connectionStatus === \"reconnect\";\n const connect = server.connectionStatus === \"connect\";\n const unavailable = server.connectionStatus === \"unavailable\";\n const busy = props.busyId === server.id;\n const setupAction = (connect || repair || unavailable) && !(customizing && selected);\n const accountGroup = accounts?.groups.find((group) => group.serverId === server.id);\n const setupLabel = connect\n ? `Connect your ${server.name} account`\n : repair\n ? `Reconnect ${server.name}`\n : `${server.name} unavailable`;\n return (\n <div\n key={server.id}\n className=\"flex min-h-14 items-center gap-1 rounded-[10px] py-1.5 pl-2.5\"\n >\n <div className=\"flex min-w-0 flex-1 items-center gap-3 pr-2\">\n <CapabilityLogo\n src={server.logoSrc ?? null}\n name={server.name}\n size=\"sm\"\n className=\"size-8 rounded-lg [&_img]:p-1\"\n />\n <span className=\"min-w-0 flex-1\">\n <span className=\"block truncate text-sm font-medium\">{server.name}</span>\n {server.detail ? (\n <span className=\"mt-1 block truncate text-xs text-fg-muted\">\n {server.detail}\n </span>\n ) : null}\n {connect || repair || unavailable ? (\n <span className=\"block text-2xs text-status-waiting\">\n {connect\n ? \"No connected account\"\n : repair\n ? \"Reconnect required\"\n : \"Unavailable\"}\n </span>\n ) : null}\n {server.connectionStatus === \"unknown\" ? (\n <span className=\"block text-2xs text-fg-subtle\">Status unavailable</span>\n ) : null}\n </span>\n </div>\n <span className=\"flex size-11 shrink-0 items-center justify-center\">\n {accounts &&\n accountGroup &&\n (accountGroup.accounts.length > 0 ||\n (accounts.choices[server.id]?.length ?? 0) > 0) ? (\n <ConnectorAction\n presentation={props.presentation}\n keepOpen\n label={`${server.name} account settings`}\n disabled={busy || accounts.disabled}\n className=\"connector-control flex size-11 shrink-0 items-center justify-center rounded-md p-2\"\n onAction={() => setSettingsId(server.id)}\n >\n <Settings2Icon className=\"size-4 text-fg-muted\" />\n </ConnectorAction>\n ) : null}\n </span>\n {customizing || setupAction ? (\n <ConnectorAction\n presentation={props.presentation}\n keepOpen\n checked={setupAction ? undefined : selected}\n label={setupAction ? setupLabel : server.name}\n disabled={busy || accounts?.disabled || (!selected && accounts?.loading)}\n className=\"connector-control flex size-11 shrink-0 items-center justify-center rounded-md p-2\"\n onAction={() => {\n if (setupAction) {\n props.onReconnect?.(server.id);\n return;\n }\n if (!selected && accounts?.choices[server.id]?.length === 0) {\n accounts.onChoose(\n server.id,\n accountGroup?.accounts.map((account) => account.id) ?? [],\n );\n }\n changeConnector(server.id, !selected);\n }}\n >\n {busy ? (\n <Loader2Icon className=\"size-4 animate-spin\" />\n ) : setupAction ? (\n connect ? (\n <PlugIcon className=\"size-4 text-fg-muted\" />\n ) : (\n <RefreshCwIcon className=\"size-4 text-fg-muted\" />\n )\n ) : (\n <ComposerMenuSwitchIndicator checked={selected} />\n )}\n </ConnectorAction>\n ) : (\n <span className=\"flex size-11 shrink-0 items-center justify-center\">\n {selected ? <CheckIcon className={MENU_CHECK_CLASS} aria-hidden /> : null}\n <span className=\"sr-only\">{`${server.name}, ${selected ? \"on\" : \"off\"} for this session`}</span>\n </span>\n )}\n </div>\n );\n })}\n </div>\n {props.error ? (\n <p role=\"alert\" className={cn(MENU_NOTE_CLASS, \"text-status-failed\")}>\n {props.error}\n </p>\n ) : null}\n {accounts?.error && !accounts.accessDenied && accounts.onRefresh ? (\n <ConnectorAction presentation={props.presentation} keepOpen onAction={accounts.onRefresh}>\n Retry accounts\n </ConnectorAction>\n ) : null}\n </>\n );\n}\n"],"mappings":"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","names":[]}