@opengeni/react 4.4.1 → 4.5.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 (700) hide show
  1. package/dist/app/app-state.js +25 -25
  2. package/dist/app/components/Composer.js +27 -27
  3. package/dist/app/components/agent/agent-capability-picker.js +4 -4
  4. package/dist/app/components/artifacts/artifact-browse-controls.js +3 -3
  5. package/dist/app/components/artifacts/artifact-library.js +19 -19
  6. package/dist/app/components/artifacts/artifact-page-chrome.js +2 -2
  7. package/dist/app/components/artifacts/chat-interactive-block.js +15 -15
  8. package/dist/app/components/artifacts/inline-chat-image.js +30 -29
  9. package/dist/app/components/artifacts/retained-file-preview.js +34 -33
  10. package/dist/app/components/artifacts/retained-text-preview.js +5 -5
  11. package/dist/app/components/artifacts/site-audience.js +4 -4
  12. package/dist/app/components/artifacts/site-conversations.js +20 -19
  13. package/dist/app/components/artifacts/site-data.js +18 -18
  14. package/dist/app/components/artifacts/site-publishing.js +39 -39
  15. package/dist/app/components/artifacts/site-settings.js +46 -46
  16. package/dist/app/components/billing-class-mark.js +5 -5
  17. package/dist/app/components/capabilities/capability-detail-sheet.js +8 -8
  18. package/dist/app/components/capabilities/capability-logo-source.js +11 -11
  19. package/dist/app/components/capabilities/connector-tool-permissions.js +4 -4
  20. package/dist/app/components/capabilities/native-connect-setup.js +14 -14
  21. package/dist/app/components/capabilities/perform-capability-action.js +1 -1
  22. package/dist/app/components/capabilities/prepared-mcp-setup-card.js +15 -15
  23. package/dist/app/components/capabilities/session-capability-card.js +77 -75
  24. package/dist/app/components/capabilities/session-capability-card.js.map +1 -1
  25. package/dist/app/components/capabilities/session-chrome-card.js +35 -33
  26. package/dist/app/components/capabilities/session-custom-mcp-card.js +19 -19
  27. package/dist/app/components/capabilities/session-github-card.js +22 -22
  28. package/dist/app/components/capabilities/session-machine-card.js +34 -32
  29. package/dist/app/components/capabilities/use-capabilities-catalog.js +3 -3
  30. package/dist/app/components/capabilities/use-connection-accounts.js +1 -1
  31. package/dist/app/components/command-menu/chat-status.js +15 -14
  32. package/dist/app/components/command-menu/chat-switcher.js +16 -15
  33. package/dist/app/components/command-menu/chat-switcher.js.map +1 -1
  34. package/dist/app/components/command-menu/command-menu.js +32 -110
  35. package/dist/app/components/command-menu/command-menu.js.map +1 -1
  36. package/dist/app/components/command-menu/shortcut-sheet.js +15 -15
  37. package/dist/app/components/composer-capabilities-menu-body.js +3 -3
  38. package/dist/app/components/composer-mobile-plus-panel.js +17 -17
  39. package/dist/app/components/composer-mobile-plus.js +1 -1
  40. package/dist/app/components/credit-required-gate.js +1 -1
  41. package/dist/app/components/credit-required-prompt.js +9 -9
  42. package/dist/app/components/credits/coupon-redeem.js +2 -2
  43. package/dist/app/components/credits/credit-refusal-notice.js +2 -2
  44. package/dist/app/components/desktop/app-shots.js +6 -6
  45. package/dist/app/components/desktop/this-computer.js +4 -4
  46. package/dist/app/components/feedback.js +4 -4
  47. package/dist/app/components/follow-up-repository-menu-body.js +4 -4
  48. package/dist/app/components/follow-up-repository-picker.js +1 -1
  49. package/dist/app/components/github-app-connect-launcher.js +2 -2
  50. package/dist/app/components/in-app-help-link.js +2 -2
  51. package/dist/app/components/knowledge/agent-learning-settings.js +3 -3
  52. package/dist/app/components/machines/connect-machine-dialog.js +18 -18
  53. package/dist/app/components/markdown.js +8 -8
  54. package/dist/app/components/message-context-pills.js +2 -2
  55. package/dist/app/components/models/models-ui.js +8 -8
  56. package/dist/app/components/new-session-starters.js +2 -2
  57. package/dist/app/components/pickers.js +8 -8
  58. package/dist/app/components/rail/rail-context.js +3 -3
  59. package/dist/app/components/rail/rail-sections.js +65 -62
  60. package/dist/app/components/rail/session-header.js +48 -47
  61. package/dist/app/components/rail/session-list.js +64 -61
  62. package/dist/app/components/rail/session-row-content.d.ts +6 -2
  63. package/dist/app/components/rail/session-row-content.js +1 -1
  64. package/dist/app/components/rail/session-row-hover-details.js +20 -19
  65. package/dist/app/components/rail/session-shell.js +104 -101
  66. package/dist/app/components/rail/site-session-group-heading.d.ts +7 -1
  67. package/dist/app/components/rail/site-session-group-heading.js +20 -3
  68. package/dist/app/components/repository-picker.js +4 -4
  69. package/dist/app/components/secrets/session-secrets-panel.js +3 -3
  70. package/dist/app/components/session/agent-configuration-panel.js +33 -33
  71. package/dist/app/components/session/artifact-link-boundary.js +2 -2
  72. package/dist/app/components/session/artifact-session-page.js +5 -5
  73. package/dist/app/components/session/banners.js +10 -10
  74. package/dist/app/components/session/codex-account-indicator.js +11 -11
  75. package/dist/app/components/session/editable-artifacts-workspace.js +44 -44
  76. package/dist/app/components/session/failed-session-banner.js +10 -10
  77. package/dist/app/components/session/human-input.js +57 -53
  78. package/dist/app/components/session/inspector.js +94 -90
  79. package/dist/app/components/session/inspector.js.map +1 -1
  80. package/dist/app/components/session/message-actions.js +4 -4
  81. package/dist/app/components/session/message-resource-attachments.js +20 -19
  82. package/dist/app/components/session/message-resource-attachments.js.map +1 -1
  83. package/dist/app/components/session/model-account-indicator.js +11 -11
  84. package/dist/app/components/session/model-context-inspector.js +2 -2
  85. package/dist/app/components/session/model-recovery-notice.js +3 -3
  86. package/dist/app/components/session/new-session-settings-menu.js +9 -9
  87. package/dist/app/components/session/sandbox-switcher.js +16 -16
  88. package/dist/app/components/session/sandbox-workspace.js +81 -77
  89. package/dist/app/components/session/search-markdown-highlight.js +9 -9
  90. package/dist/app/components/session/search-results-view.js +10 -10
  91. package/dist/app/components/session/session-admin-access.js +8 -8
  92. package/dist/app/components/session/session-admission-notice.js +6 -6
  93. package/dist/app/components/session/session-machine-access-notice.js +6 -6
  94. package/dist/app/components/session/session-retention.js +4 -4
  95. package/dist/app/components/session/session-search-dialog.js +11 -11
  96. package/dist/app/components/session/session-skill-reviews.js +1 -1
  97. package/dist/app/components/session/session-tenancy-control.d.ts +2 -0
  98. package/dist/app/components/session/session-tenancy-control.js +40 -25
  99. package/dist/app/components/session/session-tenancy-control.js.map +1 -1
  100. package/dist/app/components/session/session-usage-limit-section.js +11 -11
  101. package/dist/app/components/session/session-wait-status.js +9 -8
  102. package/dist/app/components/session/session-wait-status.js.map +1 -1
  103. package/dist/app/components/session/site-origin-link.d.ts +1 -0
  104. package/dist/app/components/session/site-origin-link.js +2 -2
  105. package/dist/app/components/session/subagents.js +16 -15
  106. package/dist/app/components/session-connectors-menu-body.js +5 -5
  107. package/dist/app/components/settings/row-select.js +3 -3
  108. package/dist/app/components/transcription-settings.js +4 -4
  109. package/dist/app/components/ui/destructive-confirm.js +6 -6
  110. package/dist/app/components/usage/usage-entry.js +8 -8
  111. package/dist/app/components/workspace-composer-plus.js +21 -21
  112. package/dist/app/embed/memory-navigation.js +2 -2
  113. package/dist/app/embed/session-app.js +256 -250
  114. package/dist/app/lib/actions/actions-provider.js +15 -15
  115. package/dist/app/lib/actions/held-modifier.d.ts +11 -0
  116. package/dist/app/lib/app-surfaces.js +2 -2
  117. package/dist/app/lib/codex-usage-query.js +6 -6
  118. package/dist/app/lib/composer-connectors.js +12 -12
  119. package/dist/app/lib/console-site.d.ts +6 -0
  120. package/dist/app/lib/console-site.js +14 -0
  121. package/dist/app/lib/console-text.js +2 -2
  122. package/dist/app/lib/events.js +17 -16
  123. package/dist/app/lib/failed-session-copy.js +3 -3
  124. package/dist/app/lib/model-access-onboarding.js +3 -3
  125. package/dist/app/lib/move-chat-to-machine.js +3 -3
  126. package/dist/app/lib/navigation.d.ts +5 -0
  127. package/dist/app/lib/navigation.js +1 -1
  128. package/dist/app/lib/routes.d.ts +17 -0
  129. package/dist/app/lib/routes.js +9 -3
  130. package/dist/app/lib/session-branch-cache.js +13 -12
  131. package/dist/app/lib/session-deep-link.js +2 -2
  132. package/dist/app/lib/session-failure-toasts.d.ts +8 -0
  133. package/dist/app/lib/session-group-pagination.js +13 -12
  134. package/dist/app/lib/session-hover-facts.js +14 -13
  135. package/dist/app/lib/session-model.js +3 -3
  136. package/dist/app/lib/session-rail.js +9 -8
  137. package/dist/app/lib/session-rename.js +3 -3
  138. package/dist/app/lib/session-ui-features.d.ts +6 -1
  139. package/dist/app/lib/session-ui-features.js +1 -1
  140. package/dist/app/lib/sessions-group.d.ts +43 -3
  141. package/dist/app/lib/sessions-group.js +21 -14
  142. package/dist/app/lib/shared-query.js +3 -3
  143. package/dist/app/lib/site-opened.d.ts +6 -0
  144. package/dist/app/lib/site-opened.js +10 -0
  145. package/dist/app/lib/turn-failure-analytics.js +4 -4
  146. package/dist/app/lib/use-duplicate-site.js +3 -3
  147. package/dist/app/lib/use-follow-up-repositories.js +4 -4
  148. package/dist/app/lib/use-session-list-hint-refresh.d.ts +20 -2
  149. package/dist/app/lib/use-session-list-hint-refresh.js +5 -1
  150. package/dist/app/lib/use-workspace-machines.js +6 -6
  151. package/dist/app/lib/use-workspace-model-catalog.js +7 -7
  152. package/dist/app/lib/use-workspace-rigs.js +8 -8
  153. package/dist/app/lib/workspace-navigation-preference.js +5 -5
  154. package/dist/app/lib/workspace-scope-context.js +4 -4
  155. package/dist/app/routes/artifacts.js +132 -149
  156. package/dist/app/routes/artifacts.js.map +1 -1
  157. package/dist/app/routes/retained-artifact.js +63 -62
  158. package/dist/app/routes/retained-artifact.js.map +1 -1
  159. package/dist/app/routes/session-unavailable.js +7 -5
  160. package/dist/app/routes/session.js +170 -166
  161. package/dist/app/routes/sessions-index.js +110 -108
  162. package/dist/app/routes/site-view.d.ts +11 -0
  163. package/dist/app/routes/site-view.js +597 -0
  164. package/dist/app/routes/site-view.js.map +1 -0
  165. package/dist/artifacts-document.js +4 -4
  166. package/dist/artifacts-presentation.js +4 -4
  167. package/dist/artifacts-spreadsheet.js +4 -4
  168. package/dist/artifacts.js +39 -39
  169. package/dist/{browser-viewer-RYYQSRTC.js → browser-viewer-QMCNV4RI.js} +9 -7
  170. package/dist/{chat-interactive-block-ABCRKXJ4.js → chat-interactive-block-PMIAUXSO.js} +6 -6
  171. package/dist/{chunk-TGVVEGZG.js → chunk-22FFOHPT.js} +9 -9
  172. package/dist/chunk-22GTC4MZ.js +15 -0
  173. package/dist/chunk-22GTC4MZ.js.map +1 -0
  174. package/dist/{chunk-Z5WMLJKI.js → chunk-22JFMNMF.js} +92 -4
  175. package/dist/chunk-22JFMNMF.js.map +1 -0
  176. package/dist/{chunk-UHFWF6ZU.js → chunk-2FPS5H2D.js} +2 -2
  177. package/dist/{chunk-NAWXARTY.js → chunk-2KO2G3RI.js} +72 -6
  178. package/dist/chunk-2KO2G3RI.js.map +1 -0
  179. package/dist/{chunk-5POTDNQT.js → chunk-2NC7NZCE.js} +6 -6
  180. package/dist/{chunk-ZKYYZH6L.js → chunk-2QBYDGWO.js} +9 -9
  181. package/dist/{chunk-TWXIFWBD.js → chunk-34EU25RL.js} +2 -2
  182. package/dist/{chunk-R63QEVPK.js → chunk-35BC2FU2.js} +16 -16
  183. package/dist/{chunk-PTGRFAMH.js → chunk-3ABPIUCK.js} +2 -2
  184. package/dist/{chunk-S4SC5SSV.js → chunk-3GU7AWG7.js} +18 -18
  185. package/dist/{chunk-722UO6YQ.js → chunk-3PEXVG4D.js} +2 -2
  186. package/dist/{chunk-63VGE4OH.js → chunk-3RMKPHBL.js} +3 -3
  187. package/dist/{chunk-6JKZILLF.js → chunk-3RQUWFZT.js} +67 -67
  188. package/dist/{chunk-6JKZILLF.js.map → chunk-3RQUWFZT.js.map} +1 -1
  189. package/dist/{chunk-RQDFYQHA.js → chunk-3STBLX4O.js} +9 -9
  190. package/dist/{chunk-S4EZ3JUB.js → chunk-3X5FKDYQ.js} +23 -23
  191. package/dist/{chunk-KTRKZRID.js → chunk-4GLLWX33.js} +11 -11
  192. package/dist/{chunk-ROQOVH4N.js → chunk-4HEXNAFI.js} +20 -20
  193. package/dist/chunk-4HEXNAFI.js.map +1 -0
  194. package/dist/{chunk-SD2K5ZN5.js → chunk-4LPA25NQ.js} +4 -4
  195. package/dist/{chunk-KWKGBGAF.js → chunk-4RMN4E2Y.js} +9 -9
  196. package/dist/{chunk-X7ASQHR6.js → chunk-4SAGYEVB.js} +2 -2
  197. package/dist/{chunk-HTT3FB7T.js → chunk-4VK2R5QC.js} +3 -3
  198. package/dist/{chunk-DDK4WFJ3.js → chunk-4XQC7VLT.js} +9 -9
  199. package/dist/{chunk-IVOA3DXA.js → chunk-4YXAQMTD.js} +12 -12
  200. package/dist/{chunk-HOJGAJAB.js → chunk-52WK2GGK.js} +8 -8
  201. package/dist/{chunk-NYZQ7LO7.js → chunk-552UYIQ7.js} +20 -20
  202. package/dist/{chunk-LEXPBQ56.js → chunk-5DSKMG2I.js} +4 -4
  203. package/dist/{chunk-WNG757ID.js → chunk-5FA455GR.js} +4 -4
  204. package/dist/{chunk-HWDGJFM4.js → chunk-5FEN3KYH.js} +11 -11
  205. package/dist/{chunk-OSVHU2WU.js → chunk-5JHRMUAZ.js} +12 -12
  206. package/dist/{chunk-PM3OSANE.js → chunk-5MJHH72T.js} +14 -3
  207. package/dist/chunk-5MJHH72T.js.map +1 -0
  208. package/dist/{chunk-RKB2Z457.js → chunk-5VGJXWQ2.js} +2 -2
  209. package/dist/{chunk-GFUUFM2O.js → chunk-5W6ZDKRR.js} +6 -6
  210. package/dist/{chunk-6PQNLL4E.js → chunk-5W7KJ5NQ.js} +37 -37
  211. package/dist/{chunk-Q35YZVDZ.js → chunk-5Y2FPLZE.js} +9 -9
  212. package/dist/{chunk-6W3LF3DB.js → chunk-5YFY4SFC.js} +2 -12
  213. package/dist/chunk-5YFY4SFC.js.map +1 -0
  214. package/dist/{chunk-F3NERYBQ.js → chunk-62VER7O4.js} +6 -6
  215. package/dist/{chunk-FBMU3VK5.js → chunk-6DCEDIF6.js} +2 -2
  216. package/dist/{chunk-LE2EDBXU.js → chunk-73WI7FL2.js} +18 -18
  217. package/dist/chunk-756MKA2J.js +45 -0
  218. package/dist/chunk-756MKA2J.js.map +1 -0
  219. package/dist/{chunk-ZRJCGBVV.js → chunk-7FJMRJDG.js} +2 -2
  220. package/dist/{chunk-7KGKDWWR.js → chunk-7HFLYNWN.js} +2 -2
  221. package/dist/{chunk-72J6C2AJ.js → chunk-7KIENXRE.js} +2 -2
  222. package/dist/{chunk-CBY5CXBD.js → chunk-7NPCEBZE.js} +5 -5
  223. package/dist/{chunk-46VBQG2D.js → chunk-7P4AQMGA.js} +13 -13
  224. package/dist/{chunk-X7L4H4VG.js → chunk-7TCT7KPQ.js} +742 -644
  225. package/dist/chunk-7TCT7KPQ.js.map +1 -0
  226. package/dist/{chunk-CVG4FILQ.js → chunk-7XO7YKPC.js} +280 -1035
  227. package/dist/chunk-7XO7YKPC.js.map +1 -0
  228. package/dist/{chunk-S7PVL7XH.js → chunk-A4BD4ZVB.js} +4 -4
  229. package/dist/{chunk-EF5SYXAY.js → chunk-ACL2V2KE.js} +30 -22
  230. package/dist/chunk-ACL2V2KE.js.map +1 -0
  231. package/dist/{chunk-73SOCVLS.js → chunk-AIEXYO2X.js} +3 -3
  232. package/dist/{chunk-U7TC2XJQ.js → chunk-AJPW3SV4.js} +3 -3
  233. package/dist/{chunk-HRJQAFKR.js → chunk-AX6YJA5U.js} +2 -2
  234. package/dist/{chunk-P5WABK2H.js → chunk-BCM7C3MJ.js} +9 -9
  235. package/dist/{chunk-DT7BORXG.js → chunk-BMJTNPWK.js} +2 -2
  236. package/dist/{chunk-HIHO2QE7.js → chunk-BT2MVGHT.js} +2 -2
  237. package/dist/{chunk-3XOISKZC.js → chunk-BXQYAAVE.js} +4 -4
  238. package/dist/{chunk-IBTXYLBW.js → chunk-CCFWY4GF.js} +2 -2
  239. package/dist/{chunk-ZOC3OP6F.js → chunk-CCR33J7L.js} +2 -2
  240. package/dist/{chunk-GTQ3SNEI.js → chunk-CD3MO3IC.js} +2 -2
  241. package/dist/{chunk-WSMYOLHG.js → chunk-CDEXRJB6.js} +5 -5
  242. package/dist/{chunk-3GLAPCVI.js → chunk-CFFNT2OY.js} +8 -8
  243. package/dist/{chunk-HO5Y2OOX.js → chunk-CMLJSF2F.js} +10 -10
  244. package/dist/{chunk-RA3FNMWF.js → chunk-CP7ZQHBW.js} +10 -10
  245. package/dist/{chunk-IOKSNX74.js → chunk-D5OWJZQR.js} +2 -2
  246. package/dist/{chunk-SQGXMHJO.js → chunk-DGLRZMXL.js} +3 -3
  247. package/dist/{chunk-GNEHAPKV.js → chunk-DJFTH2DI.js} +3 -3
  248. package/dist/{chunk-HQG4SLTE.js → chunk-DYJGYGPB.js} +2 -2
  249. package/dist/{chunk-4EAF3HSD.js → chunk-EJ7WARW7.js} +2 -2
  250. package/dist/{chunk-3AA6RNGE.js → chunk-ENS6E4RZ.js} +2 -2
  251. package/dist/{chunk-OOEO4MKY.js → chunk-EPWD4KRA.js} +2 -2
  252. package/dist/{chunk-PN66T6JA.js → chunk-EQE3MNQN.js} +5 -5
  253. package/dist/{chunk-TSBE4KOQ.js → chunk-EWL6NDOO.js} +3 -3
  254. package/dist/{chunk-OO2T63BY.js → chunk-EYS4ZOF5.js} +2 -2
  255. package/dist/{chunk-7CZTKBTI.js → chunk-FDAV72IX.js} +5 -5
  256. package/dist/{chunk-AG7VGUIW.js → chunk-FFNPUSVO.js} +7 -7
  257. package/dist/{chunk-P5T36BA3.js → chunk-FRP64DEK.js} +2 -2
  258. package/dist/{chunk-KBF3SE7G.js → chunk-FSP334UU.js} +2 -2
  259. package/dist/{chunk-BSX2R4CW.js → chunk-FTX5CNHA.js} +4 -4
  260. package/dist/{chunk-O756O2I7.js → chunk-FWOBNL2A.js} +1 -1
  261. package/dist/{chunk-6NIB2KGJ.js → chunk-FWYEZ3LE.js} +33 -33
  262. package/dist/{chunk-DLOYMWUQ.js → chunk-G4HQUBO4.js} +7 -7
  263. package/dist/{chunk-CSHBR2IZ.js → chunk-GDLDBR6B.js} +2 -2
  264. package/dist/chunk-GGV4NSG3.js +792 -0
  265. package/dist/chunk-GGV4NSG3.js.map +1 -0
  266. package/dist/{chunk-U36PO27Q.js → chunk-GHHM6WN4.js} +3 -3
  267. package/dist/{chunk-OANSIX34.js → chunk-GRSODLVO.js} +4 -4
  268. package/dist/{chunk-4R3JCVID.js → chunk-GT7JFQ4E.js} +410 -153
  269. package/dist/chunk-GT7JFQ4E.js.map +1 -0
  270. package/dist/{chunk-EU6XSQFM.js → chunk-GXW2I2M2.js} +2 -2
  271. package/dist/{chunk-5JEIDFPD.js → chunk-GZS37O3G.js} +1 -1
  272. package/dist/{chunk-XFNLU7EW.js → chunk-H5M33DAL.js} +15 -6
  273. package/dist/chunk-H5M33DAL.js.map +1 -0
  274. package/dist/{chunk-HNYJEAES.js → chunk-HQWVDQXW.js} +7 -7
  275. package/dist/{chunk-YXOKAG66.js → chunk-HU6JTNWF.js} +2 -2
  276. package/dist/{chunk-QRVNI5V6.js → chunk-I6KIQKU6.js} +3 -3
  277. package/dist/{chunk-APU42QDI.js → chunk-IBA5FMRE.js} +115 -111
  278. package/dist/chunk-IBA5FMRE.js.map +1 -0
  279. package/dist/{chunk-BNUPYHHZ.js → chunk-IDXTASGN.js} +4 -4
  280. package/dist/{chunk-KF3MF6FP.js → chunk-IECRGM6K.js} +3 -2
  281. package/dist/chunk-IECRGM6K.js.map +1 -0
  282. package/dist/chunk-IJYL5BZM.js +38 -0
  283. package/dist/chunk-IJYL5BZM.js.map +1 -0
  284. package/dist/{chunk-L6RXRRN3.js → chunk-ILDOW2IQ.js} +3 -3
  285. package/dist/{chunk-VUHPA3XQ.js → chunk-ITX2TB4K.js} +6 -6
  286. package/dist/{chunk-BXRIQZAH.js → chunk-J22HD2PB.js} +5 -5
  287. package/dist/{chunk-U47YDYLQ.js → chunk-J5MEDX7C.js} +8 -8
  288. package/dist/{chunk-F6LBGYS6.js → chunk-J7FBBLHF.js} +35 -35
  289. package/dist/{chunk-5JZYPZ72.js → chunk-JFK7NTEA.js} +4 -4
  290. package/dist/chunk-JFK7NTEA.js.map +1 -0
  291. package/dist/{chunk-QZRDCFHI.js → chunk-JM4HQPAI.js} +5 -5
  292. package/dist/{chunk-PIVGX42P.js → chunk-JNY5MT3I.js} +2 -2
  293. package/dist/{chunk-XWWXIZFP.js → chunk-JO6R5EXF.js} +7 -7
  294. package/dist/{chunk-NWZW2WHN.js → chunk-JQCGPTZ6.js} +9 -9
  295. package/dist/chunk-JRSNCSZN.js +37 -0
  296. package/dist/chunk-JRSNCSZN.js.map +1 -0
  297. package/dist/{chunk-OR37STQZ.js → chunk-KEXYBG7Q.js} +3 -3
  298. package/dist/{chunk-AZVANYMB.js → chunk-KUNFUSZ7.js} +2 -2
  299. package/dist/{chunk-DXZNDKQD.js → chunk-LEEJBZ5B.js} +2 -2
  300. package/dist/{chunk-STUCI6QA.js → chunk-LEKBNKLD.js} +1 -1
  301. package/dist/{chunk-STUCI6QA.js.map → chunk-LEKBNKLD.js.map} +1 -1
  302. package/dist/{chunk-AOLE4IRZ.js → chunk-LF5CBAOS.js} +5 -5
  303. package/dist/{chunk-BJIZ7PL7.js → chunk-LHLK7FUA.js} +145 -29
  304. package/dist/chunk-LHLK7FUA.js.map +1 -0
  305. package/dist/{chunk-RIMKJBCD.js → chunk-LMPTC4CX.js} +2 -2
  306. package/dist/{chunk-3KVWXKD6.js → chunk-LQ47YL6E.js} +2 -2
  307. package/dist/{chunk-RSNYGEVZ.js → chunk-LT4J7RHI.js} +13 -13
  308. package/dist/{chunk-U3HSFCON.js → chunk-MCTTONOW.js} +28 -28
  309. package/dist/{chunk-7DU35P5J.js → chunk-MIECLOQC.js} +9 -9
  310. package/dist/{chunk-FM4OUCC2.js → chunk-MOKYT3X3.js} +3 -3
  311. package/dist/{chunk-GZ64CASI.js → chunk-MVZYNZXE.js} +5 -4
  312. package/dist/chunk-MVZYNZXE.js.map +1 -0
  313. package/dist/{chunk-L7YURQI2.js → chunk-MXLKI7BI.js} +3 -3
  314. package/dist/{chunk-XRRSFQEV.js → chunk-NAZZLAWX.js} +2 -2
  315. package/dist/{chunk-UWJ5P5CU.js → chunk-NEK4WB5P.js} +3 -3
  316. package/dist/{chunk-6L7U46Y2.js → chunk-NKNVIO66.js} +2 -2
  317. package/dist/{chunk-JKUICTLM.js → chunk-NLAFNMPK.js} +2 -2
  318. package/dist/{chunk-4LKNIGHB.js → chunk-O2SBHS2N.js} +2 -2
  319. package/dist/{chunk-DWPOQ3S5.js → chunk-OTMWHZBY.js} +2 -2
  320. package/dist/{chunk-JTN3T4QN.js → chunk-PCFK7HKD.js} +14 -14
  321. package/dist/{chunk-VVCDB2T7.js → chunk-PCJLH45G.js} +3 -3
  322. package/dist/{chunk-PZ24CYDO.js → chunk-PFAUGEV5.js} +2 -2
  323. package/dist/{chunk-HGMWMK5K.js → chunk-PO3BH3KQ.js} +2 -2
  324. package/dist/{chunk-B74GSYR6.js → chunk-PUTS4DYW.js} +2 -2
  325. package/dist/{chunk-JSIDLTTG.js → chunk-PZ2V2XIK.js} +2 -2
  326. package/dist/{chunk-TMEQPODK.js → chunk-PZ37VDB5.js} +2 -2
  327. package/dist/{chunk-Q35DT6I6.js → chunk-QFMLAT7L.js} +234 -225
  328. package/dist/chunk-QFMLAT7L.js.map +1 -0
  329. package/dist/{chunk-LVONK3YQ.js → chunk-QRKTESVE.js} +2 -2
  330. package/dist/{chunk-HT5WSUC7.js → chunk-QXEDIDBZ.js} +3 -3
  331. package/dist/{chunk-WURSS6MP.js → chunk-R66YMYJU.js} +2 -2
  332. package/dist/{chunk-HDHK3SXK.js → chunk-RFLYID6H.js} +5 -5
  333. package/dist/{chunk-ADJJQSYC.js → chunk-RIYZFKIM.js} +39 -37
  334. package/dist/chunk-RIYZFKIM.js.map +1 -0
  335. package/dist/{chunk-JK7C5A4I.js → chunk-RQNZDTKT.js} +19 -19
  336. package/dist/{chunk-EHCUFCXM.js → chunk-RYSRFAHN.js} +32 -22
  337. package/dist/chunk-RYSRFAHN.js.map +1 -0
  338. package/dist/{chunk-I6VUUEXH.js → chunk-S2U4CDAC.js} +150 -150
  339. package/dist/chunk-S2U4CDAC.js.map +1 -0
  340. package/dist/{chunk-ST22GONV.js → chunk-S37GP7LX.js} +19 -19
  341. package/dist/{chunk-A2EWJQXX.js → chunk-SM5QX6UK.js} +4 -4
  342. package/dist/{chunk-FBE6AIIW.js → chunk-SOKNCW5U.js} +2 -2
  343. package/dist/{chunk-4W7VISE7.js → chunk-SSOO4GWN.js} +193 -194
  344. package/dist/chunk-SSOO4GWN.js.map +1 -0
  345. package/dist/{chunk-UP4BE32Y.js → chunk-SY2AAZNB.js} +5 -5
  346. package/dist/{chunk-33TPANCR.js → chunk-TFK4KFKA.js} +4 -4
  347. package/dist/{chunk-4432A3HQ.js → chunk-TIQPKOFW.js} +4 -4
  348. package/dist/{chunk-HPPKLBTJ.js → chunk-TJQDL3JH.js} +2 -2
  349. package/dist/chunk-TL7BOFFL.js +89 -0
  350. package/dist/chunk-TL7BOFFL.js.map +1 -0
  351. package/dist/{chunk-FD4Q5KFL.js → chunk-TLL22FFO.js} +2 -2
  352. package/dist/{chunk-QM5H4FPT.js → chunk-TV6BWONY.js} +3 -3
  353. package/dist/{chunk-4VKA5O7T.js → chunk-U6MPB3K6.js} +4 -4
  354. package/dist/{chunk-XOFUXMPP.js → chunk-ULJAOMJA.js} +2 -2
  355. package/dist/chunk-ULYQEFNH.js +529 -0
  356. package/dist/chunk-ULYQEFNH.js.map +1 -0
  357. package/dist/{chunk-H5EVWF6L.js → chunk-UNNJUJVD.js} +2 -2
  358. package/dist/{chunk-RGW24ZZM.js → chunk-UP7I3W6O.js} +51 -49
  359. package/dist/chunk-UP7I3W6O.js.map +1 -0
  360. package/dist/{chunk-5MZTJMZ3.js → chunk-UUGR3X5I.js} +17 -11
  361. package/dist/chunk-UUGR3X5I.js.map +1 -0
  362. package/dist/{chunk-Z6DKXQG7.js → chunk-UXXFMF4X.js} +2 -2
  363. package/dist/{chunk-OBQVTCTW.js → chunk-UYNCMZX5.js} +4 -4
  364. package/dist/{chunk-RGPYMHKI.js → chunk-V3K4RQO7.js} +9 -3
  365. package/dist/chunk-V3K4RQO7.js.map +1 -0
  366. package/dist/{chunk-KZHW27BV.js → chunk-V4QZ7UBK.js} +2 -2
  367. package/dist/{chunk-SUVEDKE2.js → chunk-VH5EGTH2.js} +3 -3
  368. package/dist/{chunk-MYNUBDU7.js → chunk-VYKW6TB2.js} +1 -1
  369. package/dist/chunk-VYKW6TB2.js.map +1 -0
  370. package/dist/{chunk-QEJTQTF5.js → chunk-W6T5HR3Z.js} +3 -3
  371. package/dist/{chunk-VP62LPLW.js → chunk-WCMG4HYI.js} +10 -10
  372. package/dist/{chunk-GZLLDA6P.js → chunk-WEFN327U.js} +2 -2
  373. package/dist/{chunk-7BST7BA6.js → chunk-WKHUZIOW.js} +1 -1
  374. package/dist/{chunk-ANHUMDJX.js → chunk-WNDTLK44.js} +2 -2
  375. package/dist/{chunk-2DS4UOYQ.js → chunk-WSZQNTVN.js} +2 -2
  376. package/dist/{chunk-GALB2G3W.js → chunk-X2AH4DRF.js} +2 -2
  377. package/dist/{chunk-Z2DAWUO3.js → chunk-XMNUZUUA.js} +6 -6
  378. package/dist/{chunk-GAIM5RNE.js → chunk-XN7NSPE6.js} +3 -3
  379. package/dist/chunk-XV6ZYRHK.js +59 -0
  380. package/dist/chunk-XV6ZYRHK.js.map +1 -0
  381. package/dist/{chunk-FLGUVRR7.js → chunk-Y5BSA3I7.js} +5 -5
  382. package/dist/{chunk-WRLWLGEF.js → chunk-Y5E3XQ2S.js} +25 -2
  383. package/dist/{chunk-WRLWLGEF.js.map → chunk-Y5E3XQ2S.js.map} +1 -1
  384. package/dist/{chunk-QCD5Y7K5.js → chunk-YEROLKOA.js} +16 -16
  385. package/dist/{chunk-NDF3SH3X.js → chunk-YJPKDRI2.js} +15 -15
  386. package/dist/{chunk-TQGJN5UZ.js → chunk-YV56F4UP.js} +318 -700
  387. package/dist/chunk-YV56F4UP.js.map +1 -0
  388. package/dist/{chunk-VAIESMPY.js → chunk-YVBHGMKC.js} +4 -4
  389. package/dist/{chunk-AD22P5X3.js → chunk-YXA2EKV3.js} +3 -3
  390. package/dist/{chunk-FDNJVZRE.js → chunk-YYCOSTUU.js} +17 -17
  391. package/dist/{chunk-NLMTNEWW.js → chunk-Z6E6TUAE.js} +2 -2
  392. package/dist/{chunk-BJW7G6EF.js → chunk-Z7IGO5EA.js} +3 -3
  393. package/dist/{chunk-NCX5SAQY.js → chunk-ZEIFJ6PX.js} +5 -5
  394. package/dist/{chunk-JRXHSVD5.js → chunk-ZS2UQ3DV.js} +65 -8
  395. package/dist/chunk-ZS2UQ3DV.js.map +1 -0
  396. package/dist/{chunk-4EONHNJU.js → chunk-ZVVT72MT.js} +2 -2
  397. package/dist/components/browser-viewer.d.ts +1 -1
  398. package/dist/composer.js +13 -13
  399. package/dist/{computer-viewer-KEDVLD42.js → computer-viewer-25AJIDYA.js} +9 -9
  400. package/dist/connect.js +10 -10
  401. package/dist/desktop.js +2 -2
  402. package/dist/editor.js +2 -2
  403. package/dist/{embedded-new-voice-LFHWWYD2.js → embedded-new-voice-RZZEJT6M.js} +7 -7
  404. package/dist/{embedded-voice-6QS4ANNX.js → embedded-voice-6OKSSPLW.js} +7 -7
  405. package/dist/{fleet-decision-row-QNSTP3VX.js → fleet-decision-row-NN2HXDX3.js} +2 -2
  406. package/dist/hooks/internal.d.ts +38 -0
  407. package/dist/hooks/use-client-config-flags.d.ts +12 -0
  408. package/dist/hooks/use-workspace-sessions.d.ts +10 -1
  409. package/dist/index.js +233 -227
  410. package/dist/interaction.js +11 -9
  411. package/dist/interaction.js.map +1 -1
  412. package/dist/{latest-question-AW3PPDUM.js → latest-question-2PFWQSSG.js} +4 -3
  413. package/dist/{latest-question-AW3PPDUM.js.map → latest-question-2PFWQSSG.js.map} +1 -1
  414. package/dist/machines.js +5 -5
  415. package/dist/messages/en.d.ts +3 -3
  416. package/dist/messages.js +1 -1
  417. package/dist/{model-policy-picker-menu-CURJ247L.js → model-policy-picker-menu-VVFGGAI6.js} +6 -6
  418. package/dist/native-previews.js +3 -3
  419. package/dist/{platform-activity-row-BMXXNZKX.js → platform-activity-row-ENQVIFTL.js} +2 -2
  420. package/dist/{queue-surface-implementation-2X5AXB6I.js → queue-surface-implementation-4SHOQPQQ.js} +10 -8
  421. package/dist/{queue-surface-implementation-2X5AXB6I.js.map → queue-surface-implementation-4SHOQPQQ.js.map} +1 -1
  422. package/dist/realtime.js +6 -6
  423. package/dist/{sandbox-files-4FBG3GS2.js → sandbox-files-CCOTGXXA.js} +11 -11
  424. package/dist/sandbox-files-CCOTGXXA.js.map +1 -0
  425. package/dist/session-app.js +258 -252
  426. package/dist/session-list-model.d.ts +1 -0
  427. package/dist/session-list-model.js +8 -2
  428. package/dist/{session-realtime-2XIB254N.js → session-realtime-JNKDSGH7.js} +3 -3
  429. package/dist/session-realtime-JNKDSGH7.js.map +1 -0
  430. package/dist/session-realtime.js +2 -2
  431. package/dist/session-ui.js +76 -71
  432. package/dist/session.js +24 -22
  433. package/dist/sites.js +2 -2
  434. package/dist/terminal.js +2 -2
  435. package/dist/this-computer.js +3 -3
  436. package/dist/timeline/invoked-tool.d.ts +5 -0
  437. package/dist/timeline/tool-display-name.d.ts +2 -2
  438. package/dist/timeline/tool-icon.d.ts +14 -0
  439. package/dist/timeline/tool-presentation.d.ts +8 -3
  440. package/dist/{timeline-annotation-markers-X4K2IEOO.js → timeline-annotation-markers-KHNYNY2J.js} +5 -5
  441. package/dist/{timeline-annotation-selection-MEHBW676.js → timeline-annotation-selection-AXEDJHBP.js} +7 -7
  442. package/dist/{timeline-annotations-dialog-U2FPQ3UY.js → timeline-annotations-dialog-AV4ZBXRC.js} +9 -9
  443. package/dist/timeline-model.js +25 -23
  444. package/dist/ui/access-list.js +18 -18
  445. package/dist/ui/cadence-picker.js +2 -2
  446. package/dist/ui/choice-cards.js +2 -2
  447. package/dist/ui/detail-page.js +2 -2
  448. package/dist/ui/detail-sheet.js +2 -2
  449. package/dist/ui/diff-view.js +2 -2
  450. package/dist/ui/disclosure.js +4 -4
  451. package/dist/ui/flush-form-page.js +3 -3
  452. package/dist/ui/form-dialog.js +2 -2
  453. package/dist/ui/list-row.js +4 -4
  454. package/dist/ui/revision-history.js +11 -11
  455. package/dist/ui/role-select.js +7 -7
  456. package/dist/ui/select-menu.js +2 -2
  457. package/dist/ui/settings-nav.js +3 -3
  458. package/dist/usage.js +3 -3
  459. package/dist/workbench.js +11 -11
  460. package/package.json +4 -4
  461. package/src/app/app-state.tsx +3 -1
  462. package/src/app/components/capabilities/session-machine-card.tsx +9 -2
  463. package/src/app/components/rail/session-list.tsx +254 -44
  464. package/src/app/components/rail/session-row-content.tsx +24 -2
  465. package/src/app/components/rail/session-shell.tsx +14 -9
  466. package/src/app/components/rail/site-session-group-heading.tsx +59 -20
  467. package/src/app/components/session/session-tenancy-control.tsx +18 -0
  468. package/src/app/components/session/site-origin-link.test.tsx +73 -0
  469. package/src/app/components/session/site-origin-link.tsx +4 -2
  470. package/src/app/embed/memory-navigation.tsx +1 -0
  471. package/src/app/lib/actions/held-modifier.test.ts +101 -0
  472. package/src/app/lib/actions/held-modifier.ts +108 -0
  473. package/src/app/lib/console-site.tsx +38 -0
  474. package/src/app/lib/navigation.tsx +4 -0
  475. package/src/app/lib/routes.tsx +42 -0
  476. package/src/app/lib/session-failure-toasts.ts +26 -0
  477. package/src/app/lib/session-ui-features.tsx +18 -4
  478. package/src/app/lib/sessions-group.tsx +219 -30
  479. package/src/app/lib/site-opened.tsx +48 -0
  480. package/src/app/lib/site-session-groups.test.ts +173 -6
  481. package/src/app/lib/site-view-routes.test.ts +55 -0
  482. package/src/app/lib/use-session-list-hint-refresh.tsx +44 -4
  483. package/src/app/routes/artifacts.tsx +2 -29
  484. package/src/app/routes/session-transient-failures.test.tsx +343 -0
  485. package/src/app/routes/session-unavailable.tsx +74 -3
  486. package/src/app/routes/session.tsx +4 -13
  487. package/src/app/routes/sessions-index.tsx +13 -9
  488. package/src/app/routes/site-view.test.tsx +476 -0
  489. package/src/app/routes/site-view.tsx +583 -0
  490. package/src/components/browser-viewer.tsx +16 -2
  491. package/src/hooks/internal.ts +129 -6
  492. package/src/hooks/use-client-config-flags.ts +8 -0
  493. package/src/hooks/use-session-events.ts +83 -9
  494. package/src/hooks/use-workspace-sessions.ts +21 -1
  495. package/src/messages/en.ts +3 -3
  496. package/src/session-list-model.ts +4 -0
  497. package/src/timeline/activity-rail.tsx +3 -2
  498. package/src/timeline/invoked-tool.ts +14 -4
  499. package/src/timeline/projection.ts +11 -6
  500. package/src/timeline/rolling-activity.tsx +6 -2
  501. package/src/timeline/tool-display-name.ts +2 -2
  502. package/src/timeline/tool-icon.tsx +165 -0
  503. package/src/timeline/tool-presentation.ts +207 -48
  504. package/src/timeline/tool-renderers.tsx +1 -70
  505. package/styles/compiled.css +38 -0
  506. package/dist/chunk-22ZBT6CN.js +0 -50
  507. package/dist/chunk-22ZBT6CN.js.map +0 -1
  508. package/dist/chunk-4R3JCVID.js.map +0 -1
  509. package/dist/chunk-4W7VISE7.js.map +0 -1
  510. package/dist/chunk-5JZYPZ72.js.map +0 -1
  511. package/dist/chunk-5MZTJMZ3.js.map +0 -1
  512. package/dist/chunk-6W3LF3DB.js.map +0 -1
  513. package/dist/chunk-ADJJQSYC.js.map +0 -1
  514. package/dist/chunk-APU42QDI.js.map +0 -1
  515. package/dist/chunk-BJIZ7PL7.js.map +0 -1
  516. package/dist/chunk-CVG4FILQ.js.map +0 -1
  517. package/dist/chunk-EF5SYXAY.js.map +0 -1
  518. package/dist/chunk-EHCUFCXM.js.map +0 -1
  519. package/dist/chunk-GZ64CASI.js.map +0 -1
  520. package/dist/chunk-I6VUUEXH.js.map +0 -1
  521. package/dist/chunk-JRXHSVD5.js.map +0 -1
  522. package/dist/chunk-KF3MF6FP.js.map +0 -1
  523. package/dist/chunk-MYNUBDU7.js.map +0 -1
  524. package/dist/chunk-NAWXARTY.js.map +0 -1
  525. package/dist/chunk-PM3OSANE.js.map +0 -1
  526. package/dist/chunk-Q35DT6I6.js.map +0 -1
  527. package/dist/chunk-R25ZKOZR.js +0 -24
  528. package/dist/chunk-R25ZKOZR.js.map +0 -1
  529. package/dist/chunk-RGPYMHKI.js.map +0 -1
  530. package/dist/chunk-RGW24ZZM.js.map +0 -1
  531. package/dist/chunk-ROQOVH4N.js.map +0 -1
  532. package/dist/chunk-TQGJN5UZ.js.map +0 -1
  533. package/dist/chunk-X7L4H4VG.js.map +0 -1
  534. package/dist/chunk-XFNLU7EW.js.map +0 -1
  535. package/dist/chunk-Z5WMLJKI.js.map +0 -1
  536. /package/dist/{browser-viewer-RYYQSRTC.js.map → app/lib/console-site.js.map} +0 -0
  537. /package/dist/{chat-interactive-block-ABCRKXJ4.js.map → app/lib/site-opened.js.map} +0 -0
  538. /package/dist/{computer-viewer-KEDVLD42.js.map → browser-viewer-QMCNV4RI.js.map} +0 -0
  539. /package/dist/{embedded-new-voice-LFHWWYD2.js.map → chat-interactive-block-PMIAUXSO.js.map} +0 -0
  540. /package/dist/{chunk-TGVVEGZG.js.map → chunk-22FFOHPT.js.map} +0 -0
  541. /package/dist/{chunk-UHFWF6ZU.js.map → chunk-2FPS5H2D.js.map} +0 -0
  542. /package/dist/{chunk-5POTDNQT.js.map → chunk-2NC7NZCE.js.map} +0 -0
  543. /package/dist/{chunk-ZKYYZH6L.js.map → chunk-2QBYDGWO.js.map} +0 -0
  544. /package/dist/{chunk-TWXIFWBD.js.map → chunk-34EU25RL.js.map} +0 -0
  545. /package/dist/{chunk-R63QEVPK.js.map → chunk-35BC2FU2.js.map} +0 -0
  546. /package/dist/{chunk-PTGRFAMH.js.map → chunk-3ABPIUCK.js.map} +0 -0
  547. /package/dist/{chunk-S4SC5SSV.js.map → chunk-3GU7AWG7.js.map} +0 -0
  548. /package/dist/{chunk-722UO6YQ.js.map → chunk-3PEXVG4D.js.map} +0 -0
  549. /package/dist/{chunk-63VGE4OH.js.map → chunk-3RMKPHBL.js.map} +0 -0
  550. /package/dist/{chunk-RQDFYQHA.js.map → chunk-3STBLX4O.js.map} +0 -0
  551. /package/dist/{chunk-S4EZ3JUB.js.map → chunk-3X5FKDYQ.js.map} +0 -0
  552. /package/dist/{chunk-KTRKZRID.js.map → chunk-4GLLWX33.js.map} +0 -0
  553. /package/dist/{chunk-SD2K5ZN5.js.map → chunk-4LPA25NQ.js.map} +0 -0
  554. /package/dist/{chunk-KWKGBGAF.js.map → chunk-4RMN4E2Y.js.map} +0 -0
  555. /package/dist/{chunk-X7ASQHR6.js.map → chunk-4SAGYEVB.js.map} +0 -0
  556. /package/dist/{chunk-HTT3FB7T.js.map → chunk-4VK2R5QC.js.map} +0 -0
  557. /package/dist/{chunk-DDK4WFJ3.js.map → chunk-4XQC7VLT.js.map} +0 -0
  558. /package/dist/{chunk-IVOA3DXA.js.map → chunk-4YXAQMTD.js.map} +0 -0
  559. /package/dist/{chunk-HOJGAJAB.js.map → chunk-52WK2GGK.js.map} +0 -0
  560. /package/dist/{chunk-NYZQ7LO7.js.map → chunk-552UYIQ7.js.map} +0 -0
  561. /package/dist/{chunk-LEXPBQ56.js.map → chunk-5DSKMG2I.js.map} +0 -0
  562. /package/dist/{chunk-WNG757ID.js.map → chunk-5FA455GR.js.map} +0 -0
  563. /package/dist/{chunk-HWDGJFM4.js.map → chunk-5FEN3KYH.js.map} +0 -0
  564. /package/dist/{chunk-OSVHU2WU.js.map → chunk-5JHRMUAZ.js.map} +0 -0
  565. /package/dist/{chunk-RKB2Z457.js.map → chunk-5VGJXWQ2.js.map} +0 -0
  566. /package/dist/{chunk-GFUUFM2O.js.map → chunk-5W6ZDKRR.js.map} +0 -0
  567. /package/dist/{chunk-6PQNLL4E.js.map → chunk-5W7KJ5NQ.js.map} +0 -0
  568. /package/dist/{chunk-Q35YZVDZ.js.map → chunk-5Y2FPLZE.js.map} +0 -0
  569. /package/dist/{chunk-F3NERYBQ.js.map → chunk-62VER7O4.js.map} +0 -0
  570. /package/dist/{chunk-FBMU3VK5.js.map → chunk-6DCEDIF6.js.map} +0 -0
  571. /package/dist/{chunk-LE2EDBXU.js.map → chunk-73WI7FL2.js.map} +0 -0
  572. /package/dist/{chunk-ZRJCGBVV.js.map → chunk-7FJMRJDG.js.map} +0 -0
  573. /package/dist/{chunk-7KGKDWWR.js.map → chunk-7HFLYNWN.js.map} +0 -0
  574. /package/dist/{chunk-72J6C2AJ.js.map → chunk-7KIENXRE.js.map} +0 -0
  575. /package/dist/{chunk-CBY5CXBD.js.map → chunk-7NPCEBZE.js.map} +0 -0
  576. /package/dist/{chunk-46VBQG2D.js.map → chunk-7P4AQMGA.js.map} +0 -0
  577. /package/dist/{chunk-S7PVL7XH.js.map → chunk-A4BD4ZVB.js.map} +0 -0
  578. /package/dist/{chunk-73SOCVLS.js.map → chunk-AIEXYO2X.js.map} +0 -0
  579. /package/dist/{chunk-U7TC2XJQ.js.map → chunk-AJPW3SV4.js.map} +0 -0
  580. /package/dist/{chunk-HRJQAFKR.js.map → chunk-AX6YJA5U.js.map} +0 -0
  581. /package/dist/{chunk-P5WABK2H.js.map → chunk-BCM7C3MJ.js.map} +0 -0
  582. /package/dist/{chunk-DT7BORXG.js.map → chunk-BMJTNPWK.js.map} +0 -0
  583. /package/dist/{chunk-HIHO2QE7.js.map → chunk-BT2MVGHT.js.map} +0 -0
  584. /package/dist/{chunk-3XOISKZC.js.map → chunk-BXQYAAVE.js.map} +0 -0
  585. /package/dist/{chunk-IBTXYLBW.js.map → chunk-CCFWY4GF.js.map} +0 -0
  586. /package/dist/{chunk-ZOC3OP6F.js.map → chunk-CCR33J7L.js.map} +0 -0
  587. /package/dist/{chunk-GTQ3SNEI.js.map → chunk-CD3MO3IC.js.map} +0 -0
  588. /package/dist/{chunk-WSMYOLHG.js.map → chunk-CDEXRJB6.js.map} +0 -0
  589. /package/dist/{chunk-3GLAPCVI.js.map → chunk-CFFNT2OY.js.map} +0 -0
  590. /package/dist/{chunk-HO5Y2OOX.js.map → chunk-CMLJSF2F.js.map} +0 -0
  591. /package/dist/{chunk-RA3FNMWF.js.map → chunk-CP7ZQHBW.js.map} +0 -0
  592. /package/dist/{chunk-IOKSNX74.js.map → chunk-D5OWJZQR.js.map} +0 -0
  593. /package/dist/{chunk-SQGXMHJO.js.map → chunk-DGLRZMXL.js.map} +0 -0
  594. /package/dist/{chunk-GNEHAPKV.js.map → chunk-DJFTH2DI.js.map} +0 -0
  595. /package/dist/{chunk-HQG4SLTE.js.map → chunk-DYJGYGPB.js.map} +0 -0
  596. /package/dist/{chunk-4EAF3HSD.js.map → chunk-EJ7WARW7.js.map} +0 -0
  597. /package/dist/{chunk-3AA6RNGE.js.map → chunk-ENS6E4RZ.js.map} +0 -0
  598. /package/dist/{chunk-OOEO4MKY.js.map → chunk-EPWD4KRA.js.map} +0 -0
  599. /package/dist/{chunk-PN66T6JA.js.map → chunk-EQE3MNQN.js.map} +0 -0
  600. /package/dist/{chunk-TSBE4KOQ.js.map → chunk-EWL6NDOO.js.map} +0 -0
  601. /package/dist/{chunk-OO2T63BY.js.map → chunk-EYS4ZOF5.js.map} +0 -0
  602. /package/dist/{chunk-7CZTKBTI.js.map → chunk-FDAV72IX.js.map} +0 -0
  603. /package/dist/{chunk-AG7VGUIW.js.map → chunk-FFNPUSVO.js.map} +0 -0
  604. /package/dist/{chunk-P5T36BA3.js.map → chunk-FRP64DEK.js.map} +0 -0
  605. /package/dist/{chunk-KBF3SE7G.js.map → chunk-FSP334UU.js.map} +0 -0
  606. /package/dist/{chunk-BSX2R4CW.js.map → chunk-FTX5CNHA.js.map} +0 -0
  607. /package/dist/{chunk-O756O2I7.js.map → chunk-FWOBNL2A.js.map} +0 -0
  608. /package/dist/{chunk-6NIB2KGJ.js.map → chunk-FWYEZ3LE.js.map} +0 -0
  609. /package/dist/{chunk-DLOYMWUQ.js.map → chunk-G4HQUBO4.js.map} +0 -0
  610. /package/dist/{chunk-CSHBR2IZ.js.map → chunk-GDLDBR6B.js.map} +0 -0
  611. /package/dist/{chunk-U36PO27Q.js.map → chunk-GHHM6WN4.js.map} +0 -0
  612. /package/dist/{chunk-OANSIX34.js.map → chunk-GRSODLVO.js.map} +0 -0
  613. /package/dist/{chunk-EU6XSQFM.js.map → chunk-GXW2I2M2.js.map} +0 -0
  614. /package/dist/{chunk-5JEIDFPD.js.map → chunk-GZS37O3G.js.map} +0 -0
  615. /package/dist/{chunk-HNYJEAES.js.map → chunk-HQWVDQXW.js.map} +0 -0
  616. /package/dist/{chunk-YXOKAG66.js.map → chunk-HU6JTNWF.js.map} +0 -0
  617. /package/dist/{chunk-QRVNI5V6.js.map → chunk-I6KIQKU6.js.map} +0 -0
  618. /package/dist/{chunk-BNUPYHHZ.js.map → chunk-IDXTASGN.js.map} +0 -0
  619. /package/dist/{chunk-L6RXRRN3.js.map → chunk-ILDOW2IQ.js.map} +0 -0
  620. /package/dist/{chunk-VUHPA3XQ.js.map → chunk-ITX2TB4K.js.map} +0 -0
  621. /package/dist/{chunk-BXRIQZAH.js.map → chunk-J22HD2PB.js.map} +0 -0
  622. /package/dist/{chunk-U47YDYLQ.js.map → chunk-J5MEDX7C.js.map} +0 -0
  623. /package/dist/{chunk-F6LBGYS6.js.map → chunk-J7FBBLHF.js.map} +0 -0
  624. /package/dist/{chunk-QZRDCFHI.js.map → chunk-JM4HQPAI.js.map} +0 -0
  625. /package/dist/{chunk-PIVGX42P.js.map → chunk-JNY5MT3I.js.map} +0 -0
  626. /package/dist/{chunk-XWWXIZFP.js.map → chunk-JO6R5EXF.js.map} +0 -0
  627. /package/dist/{chunk-NWZW2WHN.js.map → chunk-JQCGPTZ6.js.map} +0 -0
  628. /package/dist/{chunk-OR37STQZ.js.map → chunk-KEXYBG7Q.js.map} +0 -0
  629. /package/dist/{chunk-AZVANYMB.js.map → chunk-KUNFUSZ7.js.map} +0 -0
  630. /package/dist/{chunk-DXZNDKQD.js.map → chunk-LEEJBZ5B.js.map} +0 -0
  631. /package/dist/{chunk-AOLE4IRZ.js.map → chunk-LF5CBAOS.js.map} +0 -0
  632. /package/dist/{chunk-RIMKJBCD.js.map → chunk-LMPTC4CX.js.map} +0 -0
  633. /package/dist/{chunk-3KVWXKD6.js.map → chunk-LQ47YL6E.js.map} +0 -0
  634. /package/dist/{chunk-RSNYGEVZ.js.map → chunk-LT4J7RHI.js.map} +0 -0
  635. /package/dist/{chunk-U3HSFCON.js.map → chunk-MCTTONOW.js.map} +0 -0
  636. /package/dist/{chunk-7DU35P5J.js.map → chunk-MIECLOQC.js.map} +0 -0
  637. /package/dist/{chunk-FM4OUCC2.js.map → chunk-MOKYT3X3.js.map} +0 -0
  638. /package/dist/{chunk-L7YURQI2.js.map → chunk-MXLKI7BI.js.map} +0 -0
  639. /package/dist/{chunk-XRRSFQEV.js.map → chunk-NAZZLAWX.js.map} +0 -0
  640. /package/dist/{chunk-UWJ5P5CU.js.map → chunk-NEK4WB5P.js.map} +0 -0
  641. /package/dist/{chunk-6L7U46Y2.js.map → chunk-NKNVIO66.js.map} +0 -0
  642. /package/dist/{chunk-JKUICTLM.js.map → chunk-NLAFNMPK.js.map} +0 -0
  643. /package/dist/{chunk-4LKNIGHB.js.map → chunk-O2SBHS2N.js.map} +0 -0
  644. /package/dist/{chunk-DWPOQ3S5.js.map → chunk-OTMWHZBY.js.map} +0 -0
  645. /package/dist/{chunk-JTN3T4QN.js.map → chunk-PCFK7HKD.js.map} +0 -0
  646. /package/dist/{chunk-VVCDB2T7.js.map → chunk-PCJLH45G.js.map} +0 -0
  647. /package/dist/{chunk-PZ24CYDO.js.map → chunk-PFAUGEV5.js.map} +0 -0
  648. /package/dist/{chunk-HGMWMK5K.js.map → chunk-PO3BH3KQ.js.map} +0 -0
  649. /package/dist/{chunk-B74GSYR6.js.map → chunk-PUTS4DYW.js.map} +0 -0
  650. /package/dist/{chunk-JSIDLTTG.js.map → chunk-PZ2V2XIK.js.map} +0 -0
  651. /package/dist/{chunk-TMEQPODK.js.map → chunk-PZ37VDB5.js.map} +0 -0
  652. /package/dist/{chunk-LVONK3YQ.js.map → chunk-QRKTESVE.js.map} +0 -0
  653. /package/dist/{chunk-HT5WSUC7.js.map → chunk-QXEDIDBZ.js.map} +0 -0
  654. /package/dist/{chunk-WURSS6MP.js.map → chunk-R66YMYJU.js.map} +0 -0
  655. /package/dist/{chunk-HDHK3SXK.js.map → chunk-RFLYID6H.js.map} +0 -0
  656. /package/dist/{chunk-JK7C5A4I.js.map → chunk-RQNZDTKT.js.map} +0 -0
  657. /package/dist/{chunk-ST22GONV.js.map → chunk-S37GP7LX.js.map} +0 -0
  658. /package/dist/{chunk-A2EWJQXX.js.map → chunk-SM5QX6UK.js.map} +0 -0
  659. /package/dist/{chunk-FBE6AIIW.js.map → chunk-SOKNCW5U.js.map} +0 -0
  660. /package/dist/{chunk-UP4BE32Y.js.map → chunk-SY2AAZNB.js.map} +0 -0
  661. /package/dist/{chunk-33TPANCR.js.map → chunk-TFK4KFKA.js.map} +0 -0
  662. /package/dist/{chunk-4432A3HQ.js.map → chunk-TIQPKOFW.js.map} +0 -0
  663. /package/dist/{chunk-HPPKLBTJ.js.map → chunk-TJQDL3JH.js.map} +0 -0
  664. /package/dist/{chunk-FD4Q5KFL.js.map → chunk-TLL22FFO.js.map} +0 -0
  665. /package/dist/{chunk-QM5H4FPT.js.map → chunk-TV6BWONY.js.map} +0 -0
  666. /package/dist/{chunk-4VKA5O7T.js.map → chunk-U6MPB3K6.js.map} +0 -0
  667. /package/dist/{chunk-XOFUXMPP.js.map → chunk-ULJAOMJA.js.map} +0 -0
  668. /package/dist/{chunk-H5EVWF6L.js.map → chunk-UNNJUJVD.js.map} +0 -0
  669. /package/dist/{chunk-Z6DKXQG7.js.map → chunk-UXXFMF4X.js.map} +0 -0
  670. /package/dist/{chunk-OBQVTCTW.js.map → chunk-UYNCMZX5.js.map} +0 -0
  671. /package/dist/{chunk-KZHW27BV.js.map → chunk-V4QZ7UBK.js.map} +0 -0
  672. /package/dist/{chunk-SUVEDKE2.js.map → chunk-VH5EGTH2.js.map} +0 -0
  673. /package/dist/{chunk-QEJTQTF5.js.map → chunk-W6T5HR3Z.js.map} +0 -0
  674. /package/dist/{chunk-VP62LPLW.js.map → chunk-WCMG4HYI.js.map} +0 -0
  675. /package/dist/{chunk-GZLLDA6P.js.map → chunk-WEFN327U.js.map} +0 -0
  676. /package/dist/{chunk-7BST7BA6.js.map → chunk-WKHUZIOW.js.map} +0 -0
  677. /package/dist/{chunk-ANHUMDJX.js.map → chunk-WNDTLK44.js.map} +0 -0
  678. /package/dist/{chunk-2DS4UOYQ.js.map → chunk-WSZQNTVN.js.map} +0 -0
  679. /package/dist/{chunk-GALB2G3W.js.map → chunk-X2AH4DRF.js.map} +0 -0
  680. /package/dist/{chunk-Z2DAWUO3.js.map → chunk-XMNUZUUA.js.map} +0 -0
  681. /package/dist/{chunk-GAIM5RNE.js.map → chunk-XN7NSPE6.js.map} +0 -0
  682. /package/dist/{chunk-FLGUVRR7.js.map → chunk-Y5BSA3I7.js.map} +0 -0
  683. /package/dist/{chunk-QCD5Y7K5.js.map → chunk-YEROLKOA.js.map} +0 -0
  684. /package/dist/{chunk-NDF3SH3X.js.map → chunk-YJPKDRI2.js.map} +0 -0
  685. /package/dist/{chunk-VAIESMPY.js.map → chunk-YVBHGMKC.js.map} +0 -0
  686. /package/dist/{chunk-AD22P5X3.js.map → chunk-YXA2EKV3.js.map} +0 -0
  687. /package/dist/{chunk-FDNJVZRE.js.map → chunk-YYCOSTUU.js.map} +0 -0
  688. /package/dist/{chunk-NLMTNEWW.js.map → chunk-Z6E6TUAE.js.map} +0 -0
  689. /package/dist/{chunk-BJW7G6EF.js.map → chunk-Z7IGO5EA.js.map} +0 -0
  690. /package/dist/{chunk-NCX5SAQY.js.map → chunk-ZEIFJ6PX.js.map} +0 -0
  691. /package/dist/{chunk-4EONHNJU.js.map → chunk-ZVVT72MT.js.map} +0 -0
  692. /package/dist/{embedded-voice-6QS4ANNX.js.map → computer-viewer-25AJIDYA.js.map} +0 -0
  693. /package/dist/{model-policy-picker-menu-CURJ247L.js.map → embedded-new-voice-RZZEJT6M.js.map} +0 -0
  694. /package/dist/{sandbox-files-4FBG3GS2.js.map → embedded-voice-6OKSSPLW.js.map} +0 -0
  695. /package/dist/{fleet-decision-row-QNSTP3VX.js.map → fleet-decision-row-NN2HXDX3.js.map} +0 -0
  696. /package/dist/{session-realtime-2XIB254N.js.map → model-policy-picker-menu-VVFGGAI6.js.map} +0 -0
  697. /package/dist/{platform-activity-row-BMXXNZKX.js.map → platform-activity-row-ENQVIFTL.js.map} +0 -0
  698. /package/dist/{timeline-annotation-markers-X4K2IEOO.js.map → timeline-annotation-markers-KHNYNY2J.js.map} +0 -0
  699. /package/dist/{timeline-annotation-selection-MEHBW676.js.map → timeline-annotation-selection-AXEDJHBP.js.map} +0 -0
  700. /package/dist/{timeline-annotations-dialog-U2FPQ3UY.js.map → timeline-annotations-dialog-AV4ZBXRC.js.map} +0 -0
@@ -2,13 +2,13 @@
2
2
  import {
3
3
  useMutationRunner,
4
4
  usePageLiveActivity
5
- } from "./chunk-NAWXARTY.js";
5
+ } from "./chunk-2KO2G3RI.js";
6
6
  import {
7
7
  useOpenGeni
8
8
  } from "./chunk-TVQCDDSZ.js";
9
9
  import {
10
10
  useOpenGeniText
11
- } from "./chunk-5JZYPZ72.js";
11
+ } from "./chunk-JFK7NTEA.js";
12
12
 
13
13
  // src/hooks/use-machines.ts
14
14
  import { useCallback as useCallback2, useRef, useState as useState2 } from "react";
@@ -409,4 +409,4 @@ export {
409
409
  MACHINES_COMPOSER_POLL_MS,
410
410
  useMachines
411
411
  };
412
- //# sourceMappingURL=chunk-HT5WSUC7.js.map
412
+ //# sourceMappingURL=chunk-QXEDIDBZ.js.map
@@ -5,7 +5,7 @@ import {
5
5
  } from "./chunk-L34RE2CE.js";
6
6
  import {
7
7
  Link
8
- } from "./chunk-MYNUBDU7.js";
8
+ } from "./chunk-VYKW6TB2.js";
9
9
  import {
10
10
  Button
11
11
  } from "./chunk-HMU5IELG.js";
@@ -162,4 +162,4 @@ export {
162
162
  ADD_AGENT_DEFAULT_PROMPT,
163
163
  NewSessionStarters
164
164
  };
165
- //# sourceMappingURL=chunk-WURSS6MP.js.map
165
+ //# sourceMappingURL=chunk-R66YMYJU.js.map
@@ -7,13 +7,13 @@ import {
7
7
  } from "./chunk-YG6NARQY.js";
8
8
  import {
9
9
  useNavigate
10
- } from "./chunk-MYNUBDU7.js";
11
- import {
12
- userErrorText
13
- } from "./chunk-L4OF77LE.js";
10
+ } from "./chunk-VYKW6TB2.js";
14
11
  import {
15
12
  useAppContext
16
13
  } from "./chunk-W6KAUGXO.js";
14
+ import {
15
+ userErrorText
16
+ } from "./chunk-L4OF77LE.js";
17
17
 
18
18
  // src/app/lib/use-duplicate-site.tsx
19
19
  import { useRef, useState } from "react";
@@ -58,4 +58,4 @@ function useDuplicateSite(workspaceId) {
58
58
  export {
59
59
  useDuplicateSite
60
60
  };
61
- //# sourceMappingURL=chunk-HDHK3SXK.js.map
61
+ //# sourceMappingURL=chunk-RFLYID6H.js.map
@@ -1,67 +1,67 @@
1
1
  "use client";
2
- import {
3
- CodexAccountIndicator
4
- } from "./chunk-BJW7G6EF.js";
5
2
  import {
6
3
  ModelAccountIndicator
7
- } from "./chunk-GAIM5RNE.js";
4
+ } from "./chunk-XN7NSPE6.js";
5
+ import {
6
+ CodexAccountIndicator
7
+ } from "./chunk-Z7IGO5EA.js";
8
8
  import {
9
9
  PrivateSessionIndicator
10
10
  } from "./chunk-PLIOAQT4.js";
11
+ import {
12
+ SessionHeader
13
+ } from "./chunk-FWYEZ3LE.js";
14
+ import {
15
+ useSessionAdminAccess
16
+ } from "./chunk-CP7ZQHBW.js";
11
17
  import {
12
18
  PrimaryNav,
13
19
  RailHeader,
14
20
  SessionShellSlotsContext
15
- } from "./chunk-DDK4WFJ3.js";
21
+ } from "./chunk-4XQC7VLT.js";
16
22
  import {
17
23
  CollapsedSessionsButton,
18
24
  SessionList
19
- } from "./chunk-4R3JCVID.js";
20
- import {
21
- SessionHeader
22
- } from "./chunk-6NIB2KGJ.js";
25
+ } from "./chunk-GT7JFQ4E.js";
23
26
  import {
24
- useSessionAdminAccess
25
- } from "./chunk-RA3FNMWF.js";
27
+ applySessionArchiveProjection
28
+ } from "./chunk-OSI2QWSL.js";
26
29
  import {
27
30
  notifySessionListChanged
28
31
  } from "./chunk-O5S57N6H.js";
29
- import {
30
- applySessionArchiveProjection
31
- } from "./chunk-OSI2QWSL.js";
32
32
  import {
33
33
  SessionComputeIndicator,
34
34
  sessionSupportsFleetSwitching
35
- } from "./chunk-46VBQG2D.js";
35
+ } from "./chunk-7P4AQMGA.js";
36
36
  import {
37
37
  RAIL_DEFAULT_WIDTH,
38
38
  RAIL_MAX_WIDTH,
39
39
  RAIL_MIN_WIDTH,
40
40
  useRail
41
- } from "./chunk-UP4BE32Y.js";
41
+ } from "./chunk-SY2AAZNB.js";
42
42
  import {
43
43
  useSessionRepliesMute
44
44
  } from "./chunk-TSQCKC34.js";
45
- import {
46
- useSessionUiFeature
47
- } from "./chunk-XFNLU7EW.js";
48
45
  import {
49
46
  useUiEventTarget
50
47
  } from "./chunk-WGPLDFEC.js";
51
48
  import {
52
- requestSessionUsageLimitEditor,
53
- sessionUsageLimitCapability
54
- } from "./chunk-RBRX5ZS3.js";
49
+ useSessionUiFeature
50
+ } from "./chunk-H5M33DAL.js";
55
51
  import {
56
52
  windowControlsInPage
57
53
  } from "./chunk-FABYS4WM.js";
54
+ import {
55
+ requestSessionUsageLimitEditor,
56
+ sessionUsageLimitCapability
57
+ } from "./chunk-RBRX5ZS3.js";
58
58
  import {
59
59
  BrandMark,
60
60
  Wordmark
61
61
  } from "./chunk-Z63GB7JI.js";
62
62
  import {
63
63
  useWorkspaceModelCatalog
64
- } from "./chunk-GFUUFM2O.js";
64
+ } from "./chunk-5W6ZDKRR.js";
65
65
  import {
66
66
  cn
67
67
  } from "./chunk-A3MTTRCX.js";
@@ -71,12 +71,12 @@ import {
71
71
  SheetDescription,
72
72
  SheetTitle
73
73
  } from "./chunk-6KELG2EG.js";
74
+ import {
75
+ TooltipProvider
76
+ } from "./chunk-OLTGED2Q.js";
74
77
  import {
75
78
  isIntelligenceEffort
76
79
  } from "./chunk-L6Y4ALSM.js";
77
- import {
78
- isPersonalWorkspace
79
- } from "./chunk-74JEZLLQ.js";
80
80
  import {
81
81
  toast
82
82
  } from "./chunk-YG6NARQY.js";
@@ -84,28 +84,28 @@ import {
84
84
  Link,
85
85
  useNavigate,
86
86
  useRouterState
87
- } from "./chunk-MYNUBDU7.js";
87
+ } from "./chunk-VYKW6TB2.js";
88
+ import {
89
+ isPersonalWorkspace
90
+ } from "./chunk-74JEZLLQ.js";
88
91
  import {
89
92
  useAppContext
90
93
  } from "./chunk-W6KAUGXO.js";
91
94
  import {
92
- TooltipProvider
93
- } from "./chunk-OLTGED2Q.js";
95
+ isCodexProductModel
96
+ } from "./chunk-22JFMNMF.js";
94
97
  import {
95
98
  useLastStartedTurnPolicy
96
- } from "./chunk-7KGKDWWR.js";
99
+ } from "./chunk-7HFLYNWN.js";
97
100
  import {
98
101
  useSessionLineage
99
- } from "./chunk-QEJTQTF5.js";
102
+ } from "./chunk-W6T5HR3Z.js";
100
103
  import {
101
104
  Button
102
105
  } from "./chunk-HMU5IELG.js";
103
106
  import {
104
107
  SessionStartupProvider
105
108
  } from "./chunk-EMIVOS73.js";
106
- import {
107
- isCodexProductModel
108
- } from "./chunk-Z5WMLJKI.js";
109
109
  import {
110
110
  findPickerRow
111
111
  } from "./chunk-CFEFYPNR.js";
@@ -393,6 +393,7 @@ function SessionShellFrame({ children }) {
393
393
  function CanvasTopStrip({ hamburgerRef }) {
394
394
  const rail = useRail();
395
395
  const chatList = useSessionUiFeature("chatList");
396
+ const brand = useSessionUiFeature("brand");
396
397
  const context = useAppContext();
397
398
  const pathname = useRouterState({
398
399
  select: (state) => state.location.pathname
@@ -449,9 +450,10 @@ function CanvasTopStrip({ hamburgerRef }) {
449
450
  }
450
451
  );
451
452
  }
453
+ if (!brand && !hamburger) return null;
452
454
  return /* @__PURE__ */ jsxs("header", { className: "flex h-12 shrink-0 items-center gap-3 border-b border-border bg-canvas/75 px-3 backdrop-blur sm:px-4", children: [
453
455
  hamburger,
454
- /* @__PURE__ */ jsxs(
456
+ brand ? /* @__PURE__ */ jsxs(
455
457
  Link,
456
458
  {
457
459
  to: "/workspaces/$workspaceId/sessions",
@@ -462,7 +464,7 @@ function CanvasTopStrip({ hamburgerRef }) {
462
464
  /* @__PURE__ */ jsx(Wordmark, { className: "text-[17px]" })
463
465
  ]
464
466
  }
465
- )
467
+ ) : null
466
468
  ] });
467
469
  }
468
470
  function SessionRouteHeader({
@@ -604,4 +606,4 @@ export {
604
606
  RailBody,
605
607
  SessionShell
606
608
  };
607
- //# sourceMappingURL=chunk-ADJJQSYC.js.map
609
+ //# sourceMappingURL=chunk-RIYZFKIM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/app/components/rail/session-shell.tsx"],"sourcesContent":["// The session shell every session surface renders: the left rail (fixed and\n// resizable on desktop, an overlay drawer on phones), the canvas top strip with\n// the session header on session routes, and the canvas itself. Surface-owned\n// sections (workspace switcher, navigation extras, footer, banners) come in as\n// slots, so the web app and embeds share one shell and differ only in what they\n// put in it.\nimport type { SessionSummary } from \"@opengeni/sdk\";\nimport { MenuIcon, MessagesSquareIcon, Settings2Icon } from \"lucide-react\";\nimport {\n useCallback,\n useContext,\n useEffect,\n lazy,\n useId,\n useRef,\n useState,\n useSyncExternalStore,\n Suspense,\n type PointerEvent as ReactPointerEvent,\n type ReactNode,\n type RefObject,\n} from \"react\";\nimport { toast } from \"../../lib/toast\";\n\nimport { findPickerRow } from \"../../../model-policy\";\nimport { useLastStartedTurnPolicy } from \"../../../hooks/use-last-started-turn-policy\";\nimport { useSessionLineage } from \"../../../hooks/use-session-lineage\";\nimport { BrandMark, Wordmark } from \"../brand-mark\";\nimport { SessionHeader } from \"./session-header\";\nimport { SessionStartupProvider } from \"../../../lib/session-startup\";\nimport {\n requestSessionUsageLimitEditor,\n sessionUsageLimitCapability,\n} from \"../../lib/session-usage-limit\";\nimport { RAIL_DEFAULT_WIDTH, RAIL_MAX_WIDTH, RAIL_MIN_WIDTH, useRail } from \"./rail-context\";\nimport { CollapsedSessionsButton, SessionList } from \"./session-list\";\nimport {\n PrimaryNav,\n RailHeader,\n SessionShellSlotsContext,\n type SessionShellSlots,\n} from \"./rail-sections\";\n\nexport {\n PrimaryNav,\n RailHeader,\n SessionShellSlotsProvider,\n type SessionShellSlots,\n} from \"./rail-sections\";\nimport {\n SessionComputeIndicator,\n sessionSupportsFleetSwitching,\n} from \"../session/sandbox-switcher\";\nimport { CodexAccountIndicator } from \"../session/codex-account-indicator\";\nimport { ModelAccountIndicator } from \"../session/model-account-indicator\";\nimport { PrivateSessionIndicator } from \"../session/private-session-indicator\";\nimport { Button } from \"../../../ui/button\";\nimport { Sheet, SheetContent, SheetDescription, SheetTitle } from \"../../../ui/sheet\";\nimport { TooltipProvider } from \"../../../ui/tooltip\";\nimport { Link, useNavigate, useRouterState } from \"../../lib/navigation\";\nimport { useWorkspaceModelCatalog } from \"../../lib/use-workspace-model-catalog\";\nimport { useAppContext } from \"../../app-context\";\nimport { isPersonalWorkspace } from \"../../lib/managed-self-context\";\nimport { isCodexProductModel } from \"../../lib/session-model\";\nimport { isIntelligenceEffort } from \"../../lib/session-tools\";\nimport { useSessionRepliesMute } from \"../../lib/inbox\";\nimport { useSessionAdminAccess } from \"../session/session-admin-access\";\nimport { applySessionArchiveProjection } from \"../../lib/session-pagination\";\nimport { notifySessionListChanged } from \"../../lib/session-list-invalidation\";\nimport type { Session } from \"../../types\";\nimport { cn } from \"../../lib/utils\";\nimport { windowControlsInPage } from \"../../lib/desktop\";\nimport { useSessionUiFeature } from \"../../lib/session-ui-features\";\nimport { useUiEventTarget } from \"../../lib/ui-events\";\n\nconst LazySessionTenancyRouteControl = lazy(() =>\n import(\"../session/session-tenancy-control\").then(({ SessionTenancyRouteControl }) => ({\n default: SessionTenancyRouteControl,\n })),\n);\n\n/** The rail body — shared between the fixed desktop column and the mobile drawer. */\nexport function RailBody() {\n const rail = useRail();\n const { switcher, mobileWorkspacePanel, railFooter } = useContext(SessionShellSlotsContext);\n const [mobileSection, setMobileSection] = useState<\"sessions\" | \"workspace\">(\"sessions\");\n const sessionsTabRef = useRef<HTMLButtonElement>(null);\n const workspaceTabRef = useRef<HTMLButtonElement>(null);\n // Unique per app, so two apps on one page never share these ids.\n const mobileNavId = `mobile-nav-${useId().replaceAll(\":\", \"\")}`;\n useEffect(() => {\n if (rail.drawerOpen) setMobileSection(\"sessions\");\n }, [rail.drawerOpen]);\n const moveMobileTab = (section: \"sessions\" | \"workspace\") => {\n setMobileSection(section);\n window.requestAnimationFrame(() =>\n (section === \"sessions\" ? sessionsTabRef : workspaceTabRef).current?.focus(),\n );\n };\n return (\n <div\n data-rail\n className=\"og-rail-glow isolate flex h-full min-h-0 flex-col overflow-hidden pt-[env(safe-area-inset-top)]\"\n >\n {/* Native macOS controls sit over this row. Keep it outside the clipped\n viewport so navigation cannot scroll underneath them. */}\n {windowControlsInPage ? (\n <div data-rail-window-controls className=\"relative z-10 shrink-0 pb-3\">\n <RailHeader showSwitcher={false} />\n </div>\n ) : null}\n <div\n data-rail-scroll-viewport\n className=\"relative z-0 min-h-0 flex-1 overflow-x-hidden overflow-y-auto overscroll-y-contain\"\n >\n <div className=\"flex min-h-full flex-col\">\n {!windowControlsInPage ? <RailHeader /> : null}\n\n {rail.collapsed || windowControlsInPage ? switcher : null}\n\n {rail.isMobile && mobileWorkspacePanel ? (\n <>\n <div\n role=\"tablist\"\n aria-label=\"Navigation section\"\n onKeyDown={(event) => {\n if (event.key === \"ArrowLeft\" || event.key === \"Home\") {\n event.preventDefault();\n moveMobileTab(\"sessions\");\n } else if (event.key === \"ArrowRight\" || event.key === \"End\") {\n event.preventDefault();\n moveMobileTab(\"workspace\");\n }\n }}\n className=\"mx-3 mt-3 grid shrink-0 grid-cols-2 rounded-lg bg-surface-2/70 p-1\"\n >\n <button\n ref={sessionsTabRef}\n id={`${mobileNavId}-tab-sessions`}\n type=\"button\"\n role=\"tab\"\n aria-selected={mobileSection === \"sessions\"}\n aria-controls={`${mobileNavId}-panel-sessions`}\n tabIndex={mobileSection === \"sessions\" ? 0 : -1}\n onClick={() => setMobileSection(\"sessions\")}\n className={cn(\n \"flex h-10 items-center justify-center gap-2 rounded-md text-sm font-normal transition-colors\",\n mobileSection === \"sessions\"\n ? \"bg-surface-3 text-fg shadow-sm\"\n : \"text-fg-label hover:text-fg\",\n )}\n >\n <MessagesSquareIcon className=\"size-4\" />\n Sessions\n </button>\n <button\n ref={workspaceTabRef}\n id={`${mobileNavId}-tab-workspace`}\n type=\"button\"\n role=\"tab\"\n aria-selected={mobileSection === \"workspace\"}\n aria-controls={`${mobileNavId}-panel-workspace`}\n tabIndex={mobileSection === \"workspace\" ? 0 : -1}\n onClick={() => setMobileSection(\"workspace\")}\n className={cn(\n \"flex h-10 items-center justify-center gap-2 rounded-md text-sm font-normal transition-colors\",\n mobileSection === \"workspace\"\n ? \"bg-surface-3 text-fg shadow-sm\"\n : \"text-fg-label hover:text-fg\",\n )}\n >\n <Settings2Icon className=\"size-4\" />\n Workspace\n </button>\n </div>\n {mobileSection === \"sessions\" ? (\n <div\n id={`${mobileNavId}-panel-sessions`}\n role=\"tabpanel\"\n aria-labelledby={`${mobileNavId}-tab-sessions`}\n className=\"mt-2 flex shrink-0 flex-col\"\n >\n <PrimaryNav />\n <SessionList />\n </div>\n ) : (\n <div\n id={`${mobileNavId}-panel-workspace`}\n role=\"tabpanel\"\n aria-labelledby={`${mobileNavId}-tab-workspace`}\n className=\"mt-2 flex shrink-0 flex-col border-t border-border pt-2\"\n >\n {mobileWorkspacePanel}\n </div>\n )}\n </>\n ) : (\n <>\n {/* Sessions are the primary object. Workspace administration remains\n secondary on desktop and becomes its own screen on phones. */}\n <PrimaryNav />\n <div className=\"mt-2 flex shrink-0 flex-col\">\n {rail.collapsed ? <CollapsedSessionsButton /> : <SessionList />}\n </div>\n </>\n )}\n </div>\n </div>\n {/* Keep the persistent controls above the scroll viewport, including\n session-row actions with their own stacking levels. The footer is a\n sibling of the clipped viewport, so it can stay transparent and let\n the rail glow run to the bottom edge. */}\n {railFooter ? (\n <div data-rail-footer className=\"relative z-10 shrink-0 border-t border-border\">\n {railFooter}\n </div>\n ) : null}\n </div>\n );\n}\n\n/**\n * The drag handle on the expanded rail's right edge. A quiet, wide-ish hit area\n * straddling the border: at rest it's invisible (the border is the only line);\n * on hover it thickens into a stronger line, and while dragging it wears the\n * brand tint. Double-click snaps back to the default width. Keyboard users get\n * the collapse toggle elsewhere; this is a pointer affordance (hidden from the\n * a11y tree beyond its separator role + label).\n */\nfunction RailResizeHandle({\n onStart,\n active,\n}: {\n onStart: (event: ReactPointerEvent) => void;\n active: boolean;\n}) {\n const rail = useRail();\n return (\n <div\n role=\"separator\"\n aria-orientation=\"vertical\"\n aria-label=\"Resize sidebar\"\n onPointerDown={onStart}\n onDoubleClick={() => rail.setWidth(RAIL_DEFAULT_WIDTH)}\n className=\"group absolute inset-y-0 -right-1 z-20 w-2 cursor-col-resize touch-none select-none\"\n >\n <span\n className={cn(\n \"absolute inset-y-0 right-1 w-px transition-[width,background-color] duration-150\",\n active\n ? \"w-0.5 bg-brand/70\"\n : \"bg-transparent group-hover:w-0.5 group-hover:bg-border-strong\",\n )}\n />\n </div>\n );\n}\n\nconst NO_SLOTS: SessionShellSlots = {};\n\nexport function SessionShell({\n children,\n slots = NO_SLOTS,\n}: {\n children: ReactNode;\n slots?: SessionShellSlots | undefined;\n}) {\n return (\n <SessionShellSlotsContext.Provider value={slots}>\n <SessionShellFrame>{children}</SessionShellFrame>\n </SessionShellSlotsContext.Provider>\n );\n}\n\nfunction SessionShellFrame({ children }: { children: ReactNode }) {\n const rail = useRail();\n const chatList = useSessionUiFeature(\"chatList\");\n const context = useAppContext();\n const { canvasBanners } = useContext(SessionShellSlotsContext);\n const pathname = useRouterState({\n select: (state) => state.location.pathname,\n });\n // Focus returns here when the mobile drawer closes (D9.1): the drawer is a\n // controlled Sheet with no in-tree trigger, so radix can't restore focus on\n // its own — we point it back at the hamburger that opened it.\n const hamburgerRef = rail.drawerTriggerRef;\n\n // Live width while the reader drags the resize handle. Held locally (not in\n // context) so we don't write localStorage on every pointer move — the chosen\n // width is committed once on pointer-up. `null` means \"not resizing\".\n const [liveWidth, setLiveWidth] = useState<number | null>(null);\n const resizing = liveWidth !== null;\n // Teardown for an in-progress drag (remove window listeners + reset body\n // styles). Held in a ref so an unmount / route change MID-DRAG can run it —\n // otherwise the listeners and the col-resize cursor / no-select body styles\n // linger until an unrelated pointer release elsewhere.\n const endResizeRef = useRef<(() => void) | null>(null);\n const startResize = useCallback(\n (event: ReactPointerEvent) => {\n // Ignore anything but a primary-button / touch drag.\n if (event.button !== 0) {\n return;\n }\n event.preventDefault();\n const startX = event.clientX;\n const startWidth = rail.width;\n const clamp = (w: number) =>\n Math.min(RAIL_MAX_WIDTH, Math.max(RAIL_MIN_WIDTH, Math.round(w)));\n setLiveWidth(startWidth);\n document.body.style.userSelect = \"none\";\n document.body.style.cursor = \"col-resize\";\n const onMove = (moveEvent: PointerEvent) =>\n setLiveWidth(clamp(startWidth + (moveEvent.clientX - startX)));\n const teardown = () => {\n window.removeEventListener(\"pointermove\", onMove);\n window.removeEventListener(\"pointerup\", onUp);\n document.body.style.userSelect = \"\";\n document.body.style.cursor = \"\";\n endResizeRef.current = null;\n };\n const onUp = (upEvent: PointerEvent) => {\n rail.setWidth(clamp(startWidth + (upEvent.clientX - startX)));\n setLiveWidth(null);\n teardown();\n };\n endResizeRef.current = teardown;\n window.addEventListener(\"pointermove\", onMove);\n window.addEventListener(\"pointerup\", onUp);\n },\n [rail],\n );\n // Unmount / route-change mid-drag: run the drag teardown so listeners and\n // body styles never leak.\n useEffect(() => () => endResizeRef.current?.(), []);\n\n // Close the mobile drawer on route change.\n useEffect(() => {\n if (rail.drawerOpen) {\n rail.setDrawerOpen(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pathname]);\n\n return (\n <TooltipProvider delayDuration={300}>\n <div\n className=\"flex h-full min-h-0 w-full flex-1 overflow-hidden\"\n // Lets page chrome (the desktop title bar) follow the rail without a\n // document-wide `:has()` selector.\n data-rail-collapsed={chatList && !rail.isMobile && rail.collapsed ? \"true\" : undefined}\n >\n {/* Fixed desktop rail — user-resizable when expanded. */}\n {chatList && !rail.isMobile ? (\n <nav\n aria-label=\"Primary\"\n data-collapsed={rail.collapsed}\n style={rail.collapsed ? undefined : { width: resizing ? liveWidth! : rail.width }}\n className={cn(\n \"relative shrink-0 border-r border-border\",\n // Animate the collapse/expand toggle, but never while dragging — a\n // transition there would lag the handle behind the pointer.\n !resizing && \"motion-safe:transition-[width] motion-safe:duration-150\",\n rail.collapsed && \"w-[56px]\",\n )}\n >\n <RailBody />\n {/* The drag handle only exists on the expanded desktop rail; the\n collapsed strip and the mobile drawer are fixed-width. */}\n {!rail.collapsed ? <RailResizeHandle onStart={startResize} active={resizing} /> : null}\n </nav>\n ) : null}\n\n {/* Mobile overlay drawer. */}\n {chatList && rail.isMobile ? (\n <Sheet open={rail.drawerOpen} onOpenChange={rail.setDrawerOpen}>\n <SheetContent\n side=\"left\"\n showCloseButton={false}\n aria-label=\"Session navigation\"\n className=\"w-screen max-w-none gap-0 p-0 sm:w-[380px] sm:max-w-[90vw]\"\n onCloseAutoFocus={(event) => {\n event.preventDefault();\n rail.restoreDrawerFocus();\n }}\n >\n <SheetTitle className=\"sr-only\">Session navigation</SheetTitle>\n <SheetDescription className=\"sr-only\">\n Browse workspace sessions or open Workspace.\n </SheetDescription>\n <nav aria-label=\"Primary\" className=\"h-full\">\n <RailBody />\n </nav>\n </SheetContent>\n </Sheet>\n ) : null}\n\n {/* Main canvas. */}\n <div data-canvas className=\"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden\">\n <SessionStartupProvider session={context.session}>\n <CanvasTopStrip hamburgerRef={hamburgerRef} />\n {canvasBanners}\n <div className=\"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden\">{children}</div>\n </SessionStartupProvider>\n </div>\n </div>\n </TooltipProvider>\n );\n}\n\n/**\n * The slim canvas top strip. On mobile it always shows (hamburger + brand). On\n * session routes it also carries the session title/status, the connection and\n * lock pills, and the inspector toggle — moved here from the old top header.\n */\nfunction CanvasTopStrip({ hamburgerRef }: { hamburgerRef: RefObject<HTMLButtonElement | null> }) {\n const rail = useRail();\n const chatList = useSessionUiFeature(\"chatList\");\n const brand = useSessionUiFeature(\"brand\");\n const context = useAppContext();\n const pathname = useRouterState({\n select: (state) => state.location.pathname,\n });\n const isSessionRoute = /\\/sessions\\/[^/]+/.test(pathname);\n const showSessionActions = Boolean(context.session) && isSessionRoute;\n const sharedFeed = useSyncExternalStore(\n context.sessionEventFeedStore.subscribe,\n context.sessionEventFeedStore.getSnapshot,\n context.sessionEventFeedStore.getSnapshot,\n );\n const sessionEvents =\n sharedFeed && sharedFeed.sessionId === context.session?.id ? sharedFeed.events : [];\n // The route owns the only session stream. An empty shared feed is still an\n // authoritative shared feed, so this header can never fall back to self-streaming.\n const lineage = useSessionLineage(context.session?.id ?? null, {\n events: sessionEvents,\n pollIntervalMs: 30_000,\n });\n const ancestors = lineage.lineage?.ancestors ?? [];\n\n // On desktop, the strip only renders when there is something to show.\n if (!rail.isMobile && !showSessionActions) {\n return null;\n }\n\n const hamburger =\n chatList && rail.isMobile ? (\n <Button\n ref={hamburgerRef}\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label=\"Open navigation\"\n onClick={() => {\n // On phones the workspace inspector is also a full-screen surface.\n // Make the two overlays mutually exclusive instead of stacking one\n // modal beneath another and trapping the navigation out of sight.\n context.setInspectorOpen(false);\n rail.setDrawerOpen(true);\n }}\n className=\"size-11\"\n >\n <MenuIcon className=\"size-4\" />\n </Button>\n ) : null;\n\n // Session route: the full identity + status header (its own bar). The live\n // sandbox switcher and codex indicator flow in as slots so the header stays a\n // pure, screenshot-testable component.\n if (showSessionActions && context.session) {\n // Both schedule facts come from one read, so a newer lineage never pairs\n // with an older session read (an older server sends no upcoming flag).\n const lineageSchedules = lineage.lineage?.sessionHasSchedules;\n return (\n <SessionRouteHeader\n session={{\n ...context.session,\n ...(lineageSchedules === undefined\n ? {}\n : {\n hasSchedules: lineageSchedules,\n hasUpcomingSchedules:\n lineage.lineage?.sessionHasUpcomingSchedules ?? lineageSchedules,\n }),\n }}\n ancestors={ancestors}\n lineageLoading={lineage.loading}\n lineageError={lineage.error}\n events={sessionEvents}\n hamburger={hamburger}\n />\n );\n }\n\n // Mobile, off a session route: the slim brand strip. A host without\n // Opengeni's brand keeps only the menu button, or no strip at all.\n if (!brand && !hamburger) return null;\n return (\n <header className=\"flex h-12 shrink-0 items-center gap-3 border-b border-border bg-canvas/75 px-3 backdrop-blur sm:px-4\">\n {hamburger}\n {brand ? (\n <Link\n to=\"/workspaces/$workspaceId/sessions\"\n params={{ workspaceId: rail.workspaceId }}\n className=\"flex items-center gap-2 text-fg\"\n >\n <BrandMark className=\"w-5\" />\n <Wordmark className=\"text-[17px]\" />\n </Link>\n ) : null}\n </header>\n );\n}\n\n/** Session-route header: last-admitted model·effort, not the composer next pick. */\nfunction SessionRouteHeader({\n session,\n ancestors,\n lineageLoading,\n lineageError,\n events,\n hamburger,\n}: {\n session: Session;\n ancestors: SessionSummary[];\n lineageLoading: boolean;\n lineageError: Error | null;\n events: import(\"@opengeni/sdk\").SessionEvent[];\n hamburger: ReactNode;\n}) {\n const uiEvents = useUiEventTarget(\"document\");\n const rail = useRail();\n const context = useAppContext();\n const lastStarted = useLastStartedTurnPolicy(session.id, {\n events,\n pollIntervalMs: 15_000,\n includeServingModel: true,\n });\n const lastStartedModel = lastStarted.policy?.model;\n const lastStartedReasoningEffort = isIntelligenceEffort(lastStarted.policy?.reasoningEffort)\n ? lastStarted.policy.reasoningEffort\n : undefined;\n const lastStartedLatencyMode = lastStarted.policy?.latencyMode;\n // Wait for last-started fetch before trusting session.model — creation default\n // can be a different rail than the newest admitted turn.\n const policyReady = !lastStarted.loading;\n const displayModelId = policyReady ? lastStartedModel || session.model : session.model;\n const navigate = useNavigate();\n const catalog = useWorkspaceModelCatalog(session.workspaceId);\n const selectedRow = findPickerRow(catalog.rows, displayModelId);\n const policyLoading = lastStarted.loading || catalog.loading;\n const credentialSource = selectedRow?.catalog.credentialSource;\n const subscriptionProvider =\n credentialSource?.kind === \"connected_subscription\" ? credentialSource.provider : null;\n const repliesMute = useSessionRepliesMute(session);\n const sessionAdminAccess = useSessionAdminAccess(session);\n const adminAccess = useSessionUiFeature(\"adminAccess\") ? sessionAdminAccess : null;\n const dock = useSessionUiFeature(\"dock\");\n const archiveInFlight = useRef(false);\n const onArchive = useCallback(\n async (target: Session, archived: boolean) => {\n if (archiveInFlight.current) return;\n const accepted = context.captureWorkspaceInvocation(target.workspaceId);\n if (!accepted) return;\n archiveInFlight.current = true;\n try {\n const updated = await context.client.updateSessionArchive(target.workspaceId, target.id, {\n archived,\n expectedVersion: target.archiveVersion ?? 0,\n });\n if (!context.ownsWorkspaceInvocation(target.workspaceId, accepted)) return;\n context.setSession((current) =>\n current?.id === updated.id && current.workspaceId === updated.workspaceId\n ? applySessionArchiveProjection(current, updated)\n : current,\n );\n notifySessionListChanged({\n workspaceId: target.workspaceId,\n sessionId: target.id,\n archived: updated.archived,\n });\n toast.success(updated.archived ? \"Chat archived.\" : \"Chat restored.\");\n } catch (error) {\n if (!context.ownsWorkspaceInvocation(target.workspaceId, accepted)) return;\n toast.error(archived ? \"Couldn't archive the chat.\" : \"Couldn't restore the chat.\", {\n description: error instanceof Error ? error.message : String(error),\n });\n } finally {\n archiveInFlight.current = false;\n }\n },\n [context],\n );\n\n return (\n <SessionHeader\n session={session}\n ancestors={ancestors}\n onOpenSchedule={\n session.hasSchedules\n ? () =>\n void navigate({\n to: \"/workspaces/$workspaceId/schedules\",\n params: { workspaceId: session.workspaceId },\n search: { targetSessionId: session.id },\n })\n : null\n }\n lineageLoading={lineageLoading}\n lineageError={lineageError}\n connectionState={context.connectionState}\n status={session.status}\n keyAuthRequired={context.keyAuthRequired}\n onForgetAccessKey={context.forgetAccessKey}\n inspectorOpen={context.inspectorOpen}\n onToggleInspector={\n dock\n ? () => {\n if (!context.inspectorOpen && rail.isMobile) rail.setDrawerOpen(false);\n context.setInspectorOpen((open) => !open);\n }\n : undefined\n }\n onRename={context.updateSessionTitle}\n onPin={(target, pinned) =>\n context.updateSessionPin(target.workspaceId, target.id, pinned, target.pinVersion ?? 0)\n }\n onArchive={onArchive}\n repliesMute={repliesMute}\n adminAccess={adminAccess}\n onOpenUsageLimit={\n // The editor lives in the session panel's Agent tab.\n sessionUsageLimitCapability(context.clientConfig) === \"absent\" || !dock\n ? null\n : () => requestSessionUsageLimitEditor(uiEvents)\n }\n leading={hamburger}\n lastStartedModel={lastStartedModel}\n lastStartedReasoningEffort={lastStartedReasoningEffort}\n lastStartedLatencyMode={lastStartedLatencyMode}\n billingClass={selectedRow?.billingClass}\n modelLabel={selectedRow?.label}\n modelLogoUrl={selectedRow?.catalog.logoUrl}\n policyLoading={policyLoading}\n accessSlot={\n session.tenancy ? (\n <Suspense fallback={null}>\n <LazySessionTenancyRouteControl session={session} events={events} />\n </Suspense>\n ) : isPersonalWorkspace(\n context.workspaces.find((candidate) => candidate.id === session.workspaceId) ?? null,\n context.managedSelfContext,\n ) ? (\n // Without a tenancy record there is no access control to show, but a\n // Personal workspace chat is still private: say so, read-only.\n <PrivateSessionIndicator />\n ) : null\n }\n sandboxSlot={\n sessionSupportsFleetSwitching(session.sandboxBackend) ? (\n <SessionComputeIndicator sessionId={session.id} sandboxBackend={session.sandboxBackend} />\n ) : null\n }\n codexSlot={\n policyReady && isCodexProductModel(displayModelId) ? (\n <CodexAccountIndicator\n workspaceId={session.workspaceId}\n sessionId={session.id}\n model={displayModelId}\n modelReady={policyReady}\n events={events}\n />\n ) : policyReady && subscriptionProvider ? (\n <ModelAccountIndicator\n workspaceId={session.workspaceId}\n sessionId={session.id}\n organizationId={\n context.workspaces.find((candidate) => candidate.id === session.workspaceId)\n ?.accountId ?? null\n }\n provider={subscriptionProvider}\n servingTurnId={lastStarted.policy?.turnId}\n events={events}\n />\n ) : null\n }\n />\n );\n}\n"],"mappings":"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","names":[]}
@@ -11,22 +11,19 @@ import {
11
11
  import {
12
12
  readChatDirectory,
13
13
  recordChatVisit
14
- } from "./chunk-OO2T63BY.js";
15
- import {
16
- notifySessionListChanged
17
- } from "./chunk-O5S57N6H.js";
14
+ } from "./chunk-EYS4ZOF5.js";
18
15
  import {
19
16
  applySessionArchiveProjection
20
17
  } from "./chunk-OSI2QWSL.js";
18
+ import {
19
+ notifySessionListChanged
20
+ } from "./chunk-O5S57N6H.js";
21
21
  import {
22
22
  FORK_CURRENT_CHAT_EVENT,
23
23
  OPEN_COMMAND_MENU_EVENT,
24
24
  RENAME_CURRENT_CHAT_EVENT,
25
25
  useRail
26
- } from "./chunk-UP4BE32Y.js";
27
- import {
28
- requestSessionComposerFocus
29
- } from "./chunk-MMY23KS7.js";
26
+ } from "./chunk-SY2AAZNB.js";
30
27
  import {
31
28
  requestSessionSearch
32
29
  } from "./chunk-TXIIBNCA.js";
@@ -34,24 +31,21 @@ import {
34
31
  requestConversationFind
35
32
  } from "./chunk-7ZEGSUR7.js";
36
33
  import {
37
- useSessionUiFeature
38
- } from "./chunk-XFNLU7EW.js";
34
+ requestSessionComposerFocus
35
+ } from "./chunk-MMY23KS7.js";
39
36
  import {
40
37
  useUiEventTarget
41
38
  } from "./chunk-WGPLDFEC.js";
39
+ import {
40
+ useSessionUiFeature
41
+ } from "./chunk-H5M33DAL.js";
42
42
  import {
43
43
  desktopBridge,
44
44
  desktopCapability
45
45
  } from "./chunk-FABYS4WM.js";
46
46
  import {
47
47
  t
48
- } from "./chunk-HPPKLBTJ.js";
49
- import {
50
- hasWorkspacePermission
51
- } from "./chunk-FIDD34ZF.js";
52
- import {
53
- isPersonalWorkspace
54
- } from "./chunk-74JEZLLQ.js";
48
+ } from "./chunk-TJQDL3JH.js";
55
49
  import {
56
50
  toast
57
51
  } from "./chunk-YG6NARQY.js";
@@ -59,7 +53,13 @@ import {
59
53
  useNavigate,
60
54
  usePage,
61
55
  useRouterState
62
- } from "./chunk-MYNUBDU7.js";
56
+ } from "./chunk-VYKW6TB2.js";
57
+ import {
58
+ hasWorkspacePermission
59
+ } from "./chunk-FIDD34ZF.js";
60
+ import {
61
+ isPersonalWorkspace
62
+ } from "./chunk-74JEZLLQ.js";
63
63
  import {
64
64
  useAppContext
65
65
  } from "./chunk-W6KAUGXO.js";
@@ -1010,4 +1010,4 @@ export {
1010
1010
  useActionShortcut,
1011
1011
  ActionsProvider
1012
1012
  };
1013
- //# sourceMappingURL=chunk-JK7C5A4I.js.map
1013
+ //# sourceMappingURL=chunk-RQNZDTKT.js.map
@@ -7,22 +7,10 @@ import {
7
7
  useInteractionInterventions,
8
8
  useInteractionInvalidation,
9
9
  useViewerMenuDismiss
10
- } from "./chunk-ROQOVH4N.js";
11
- import {
12
- copyTextToClipboard
13
- } from "./chunk-PEHTX3V7.js";
10
+ } from "./chunk-4HEXNAFI.js";
14
11
  import {
15
12
  interactionHostPlatform
16
13
  } from "./chunk-ZUWF4NF7.js";
17
- import {
18
- usePageLiveActivity
19
- } from "./chunk-NAWXARTY.js";
20
- import {
21
- useEmbeddedBrowserInteraction
22
- } from "./chunk-TVQCDDSZ.js";
23
- import {
24
- formatBytes
25
- } from "./chunk-SJGAHTY5.js";
26
14
  import {
27
15
  STREAM_CLOSE_REASON_NORMAL,
28
16
  STREAM_KIND_BROWSER,
@@ -32,12 +20,27 @@ import {
32
20
  encodeStreamClose,
33
21
  encodeStreamOpen
34
22
  } from "./chunk-TNEZNMSN.js";
23
+ import {
24
+ copyTextToClipboard
25
+ } from "./chunk-PEHTX3V7.js";
26
+ import {
27
+ useClientConfigFlags
28
+ } from "./chunk-XV6ZYRHK.js";
29
+ import {
30
+ usePageLiveActivity
31
+ } from "./chunk-2KO2G3RI.js";
32
+ import {
33
+ useEmbeddedBrowserInteraction
34
+ } from "./chunk-TVQCDDSZ.js";
35
+ import {
36
+ formatBytes
37
+ } from "./chunk-SJGAHTY5.js";
35
38
  import {
36
39
  cn
37
40
  } from "./chunk-TXS65BB2.js";
38
41
  import {
39
42
  useOpenGeniText
40
- } from "./chunk-5JZYPZ72.js";
43
+ } from "./chunk-JFK7NTEA.js";
41
44
 
42
45
  // src/components/browser-viewer.tsx
43
46
  import { interactionControlFailureFromError } from "@opengeni/sdk/interaction";
@@ -2220,6 +2223,8 @@ function BrowserViewer({
2220
2223
  const t = useOpenGeniText();
2221
2224
  const registry = useBrowserSessions({ ...override, sessionId, enabled });
2222
2225
  const attached = useAttachedBrowsers({ ...override, enabled });
2226
+ const { client: configClient } = useEmbeddedBrowserInteraction(override);
2227
+ const browserExtensionName = useClientConfigFlags(configClient).browserExtension?.name;
2223
2228
  const onlineAttachedBridges = useMemo2(
2224
2229
  () => attached.bridges.filter((bridge) => bridge.state === "online"),
2225
2230
  [attached.bridges]
@@ -2747,6 +2752,7 @@ function BrowserViewer({
2747
2752
  onCreate: createBrowser,
2748
2753
  onRestore: (identity) => updateProfile(identity, { status: "active" }),
2749
2754
  setupUrl: browserExtensionSetupUrl,
2755
+ extensionName: browserExtensionName,
2750
2756
  prominent: true
2751
2757
  }
2752
2758
  ),
@@ -2787,7 +2793,8 @@ function BrowserViewer({
2787
2793
  onUpdateProfile: updateProfile,
2788
2794
  onOpenProfileVersion: (identityId, baseRevisionId) => createBrowser({ kind: "profile", identityId, baseRevisionId }),
2789
2795
  onRefresh: () => void Promise.all([registry.refresh(), attached.refresh()]),
2790
- setupUrl: browserExtensionSetupUrl
2796
+ setupUrl: browserExtensionSetupUrl,
2797
+ extensionName: browserExtensionName
2791
2798
  }
2792
2799
  ),
2793
2800
  /* @__PURE__ */ jsx2(
@@ -3092,7 +3099,8 @@ function BrowserToolbar(props) {
3092
3099
  mutatingProfile: props.savingProfile,
3093
3100
  onCreate: props.onCreate,
3094
3101
  onRestore: (identity) => props.onUpdateProfile(identity, { status: "active" }),
3095
- setupUrl: props.setupUrl
3102
+ setupUrl: props.setupUrl,
3103
+ extensionName: props.extensionName
3096
3104
  }
3097
3105
  )
3098
3106
  ] });
@@ -3255,7 +3263,9 @@ function BrowserLaunchMenu(props) {
3255
3263
  /* @__PURE__ */ jsx2(MonitorIcon, { className: "size-3.5 shrink-0 text-og-fg-muted" }),
3256
3264
  /* @__PURE__ */ jsxs2("span", { className: "min-w-0 flex-1", children: [
3257
3265
  /* @__PURE__ */ jsx2("span", { className: "block truncate text-og-control text-og-fg", children: t("browserViewer.chromeConnectionReady") }),
3258
- /* @__PURE__ */ jsx2("span", { className: "block text-og-xs leading-4 text-og-fg-subtle", children: t("browserViewer.installTheOpengeniBrowserExtension") })
3266
+ /* @__PURE__ */ jsx2("span", { className: "block text-og-xs leading-4 text-og-fg-subtle", children: t("browserViewer.installTheOpengeniBrowserExtension", {
3267
+ extensionName: props.extensionName ?? "Opengeni Browser"
3268
+ }) })
3259
3269
  ] })
3260
3270
  ] }) : null
3261
3271
  ] }) : null,
@@ -4800,14 +4810,14 @@ function shortUrl(value) {
4800
4810
  }
4801
4811
 
4802
4812
  export {
4803
- useSiteAuthConnections,
4813
+ useBrowserFrameStream,
4804
4814
  useAttachedBrowsers,
4805
- useBrowserSessions,
4806
4815
  useBrowserIdentities,
4807
- useBrowserSession,
4808
4816
  useBrowserDownloads,
4809
- useBrowserFrameStream,
4817
+ useBrowserSession,
4818
+ useBrowserSessions,
4819
+ useSiteAuthConnections,
4810
4820
  staleBrowserEndRetryDelayMs,
4811
4821
  BrowserViewer
4812
4822
  };
4813
- //# sourceMappingURL=chunk-EHCUFCXM.js.map
4823
+ //# sourceMappingURL=chunk-RYSRFAHN.js.map