@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
@@ -5,13 +5,13 @@ import {
5
5
  import {
6
6
  SectionFrameReset
7
7
  } from "./chunk-ZMBJPN4T.js";
8
+ import {
9
+ Skeleton
10
+ } from "./chunk-HY7EYWIG.js";
8
11
  import {
9
12
  apiErrorTechnicalFacts,
10
13
  userErrorTextWithoutReference
11
14
  } from "./chunk-L4OF77LE.js";
12
- import {
13
- Skeleton
14
- } from "./chunk-HY7EYWIG.js";
15
15
  import {
16
16
  Notice
17
17
  } from "./chunk-WLEDGIVS.js";
@@ -534,4 +534,4 @@ export {
534
534
  FormPage,
535
535
  FormInline
536
536
  };
537
- //# sourceMappingURL=chunk-S7PVL7XH.js.map
537
+ //# sourceMappingURL=chunk-A4BD4ZVB.js.map
@@ -2,23 +2,23 @@
2
2
  import {
3
3
  ConnectMachineDialog,
4
4
  connectScopeFor
5
- } from "./chunk-NYZQ7LO7.js";
5
+ } from "./chunk-552UYIQ7.js";
6
6
  import {
7
7
  RowButton
8
8
  } from "./chunk-2LUBBDZV.js";
9
9
  import {
10
10
  ListRow,
11
11
  RowList
12
- } from "./chunk-NWZW2WHN.js";
12
+ } from "./chunk-JQCGPTZ6.js";
13
13
  import {
14
14
  moveChatToMachine
15
- } from "./chunk-AZVANYMB.js";
15
+ } from "./chunk-KUNFUSZ7.js";
16
16
  import {
17
17
  useDesktopThisComputer
18
- } from "./chunk-VVCDB2T7.js";
18
+ } from "./chunk-PCJLH45G.js";
19
19
  import {
20
20
  useWorkspaceMachines
21
- } from "./chunk-722UO6YQ.js";
21
+ } from "./chunk-3PEXVG4D.js";
22
22
  import {
23
23
  useAppApi
24
24
  } from "./chunk-L5HJ4UYB.js";
@@ -27,39 +27,42 @@ import {
27
27
  } from "./chunk-FQQEZUSN.js";
28
28
  import {
29
29
  t
30
- } from "./chunk-HPPKLBTJ.js";
30
+ } from "./chunk-TJQDL3JH.js";
31
31
  import {
32
32
  hasWorkspacePermission
33
33
  } from "./chunk-FIDD34ZF.js";
34
+ import {
35
+ useAppContext
36
+ } from "./chunk-W6KAUGXO.js";
34
37
  import {
35
38
  userErrorText
36
39
  } from "./chunk-L4OF77LE.js";
37
40
  import {
38
- useAppContext
39
- } from "./chunk-W6KAUGXO.js";
41
+ thisComputerNeedsPermissions,
42
+ thisComputerReady
43
+ } from "./chunk-DGLRZMXL.js";
44
+ import {
45
+ SessionCapabilityFrame
46
+ } from "./chunk-AX6YJA5U.js";
40
47
  import {
41
48
  Notice
42
49
  } from "./chunk-WLEDGIVS.js";
43
50
  import {
44
51
  Button
45
52
  } from "./chunk-HMU5IELG.js";
53
+ import {
54
+ machineDisplayName,
55
+ machineScopeLabel
56
+ } from "./chunk-BOG2FED3.js";
46
57
  import {
47
58
  isMachineComputeSelectable
48
59
  } from "./chunk-CPLCSM6K.js";
49
60
  import {
50
61
  MACHINES_SESSION_POLL_MS
51
- } from "./chunk-HT5WSUC7.js";
52
- import {
53
- SessionCapabilityFrame
54
- } from "./chunk-HRJQAFKR.js";
55
- import {
56
- thisComputerNeedsPermissions,
57
- thisComputerReady
58
- } from "./chunk-SQGXMHJO.js";
62
+ } from "./chunk-QXEDIDBZ.js";
59
63
  import {
60
- machineDisplayName,
61
- machineScopeLabel
62
- } from "./chunk-BOG2FED3.js";
64
+ useClientConfigFlags
65
+ } from "./chunk-XV6ZYRHK.js";
63
66
 
64
67
  // src/app/components/capabilities/session-machine-card.tsx
65
68
  import { OPENGENI_BROWSER_EXTENSION_URL } from "@opengeni/contracts";
@@ -692,19 +695,24 @@ function ScreenControlStep({
692
695
  );
693
696
  }
694
697
  function ChromeStep({ chrome, machineName }) {
698
+ const { client } = useAppContext();
699
+ const extension = useClientConfigFlags(client).browserExtension ?? {
700
+ name: "Opengeni Browser",
701
+ installUrl: OPENGENI_BROWSER_EXTENSION_URL
702
+ };
695
703
  return /* @__PURE__ */ jsx("div", { "data-slot": "chrome-extension", children: /* @__PURE__ */ jsx(RowList, { label: "Chrome", flush: true, children: /* @__PURE__ */ jsx(
696
704
  ListRow,
697
705
  {
698
706
  leading: /* @__PURE__ */ jsx(LogoTile, { icon: /* @__PURE__ */ jsx(PuzzleIcon, {}) }),
699
707
  title: "Chrome",
700
- description: chrome.connected ? `${chrome.connected.name} on ${machineName}` : `Add Opengeni Browser on ${machineName}`,
708
+ description: chrome.connected ? `${chrome.connected.name} on ${machineName}` : `Add ${extension.name} on ${machineName}`,
701
709
  control: chrome.connected ? /* @__PURE__ */ jsxs("span", { className: "inline-flex items-center gap-1 text-xs font-medium text-status-idle", children: [
702
710
  /* @__PURE__ */ jsx(CheckIcon, { "aria-hidden": true, className: "size-3.5" }),
703
711
  "Connected"
704
712
  ] }) : /* @__PURE__ */ jsx(Button, { asChild: true, size: "sm", variant: "outline", className: "rounded-[10px]", children: /* @__PURE__ */ jsxs(
705
713
  "a",
706
714
  {
707
- href: OPENGENI_BROWSER_EXTENSION_URL,
715
+ href: extension.installUrl,
708
716
  target: "_blank",
709
717
  rel: "noreferrer",
710
718
  onClick: chrome.watch,
@@ -725,4 +733,4 @@ export {
725
733
  RepeatedMachineRequestNote,
726
734
  useAttachedChrome
727
735
  };
728
- //# sourceMappingURL=chunk-EF5SYXAY.js.map
736
+ //# sourceMappingURL=chunk-ACL2V2KE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/app/components/capabilities/session-machine-card.tsx"],"sourcesContent":["import { t } from \"../../lib/console-text\";\nimport type { AuthNeededItem } from \"../../../timeline\";\nimport { MACHINES_SESSION_POLL_MS, type MachineView } from \"../../../machines\";\nimport { machineDisplayName, machineScopeLabel } from \"../../../sandbox-label-model\";\nimport { OPENGENI_BROWSER_EXTENSION_URL } from \"@opengeni/contracts\";\nimport { OpenGeniApiError } from \"@opengeni/sdk\";\nimport {\n ArrowUpRightIcon,\n CheckIcon,\n ChevronRightIcon,\n LaptopIcon,\n Loader2Icon,\n MonitorIcon,\n PlusIcon,\n PuzzleIcon,\n ServerIcon,\n} from \"lucide-react\";\nimport { useCallback, useEffect, useMemo, useRef, useState, type ReactNode } from \"react\";\n\nimport { useAppApi } from \"../../lib/app-api\";\nimport {\n ConnectMachineDialog,\n connectScopeFor,\n type ConnectMachineScope,\n} from \"../machines/connect-machine-dialog\";\nimport { Button } from \"../../../ui/button\";\nimport { ListRow, RowList } from \"../../../ui/list-row\";\nimport { LogoTile } from \"../../../ui/logo-tile\";\nimport { Notice } from \"../../../ui/notice\";\nimport { RowButton } from \"../../../ui/page-actions\";\nimport { useAppContext } from \"../../app-context\";\nimport { useClientConfigFlags } from \"../../../hooks/use-client-config-flags\";\nimport { userErrorText } from \"../../../ui/api-error\";\nimport { isMachineComputeSelectable } from \"../../lib/machine-selectability\";\nimport { useDesktopThisComputer } from \"../desktop/this-computer\";\nimport { moveChatToMachine } from \"../../lib/move-chat-to-machine\";\nimport { hasWorkspacePermission } from \"../../lib/permissions\";\nimport { useWorkspaceMachines } from \"../../lib/use-workspace-machines\";\nimport { thisComputerReady, thisComputerNeedsPermissions } from \"../../../this-computer\";\nimport { SessionCapabilityFrame } from \"../../../components/session-capability-frame\";\nimport type { ChatSendContext } from \"./session-github-repositories\";\n\n/** While the connect dialog is open, look for the new machine every few seconds. */\nconst WATCH_POLL_MS = 3_000;\n/** After \"Add to Chrome\", how often to check whether the extension linked up. */\nconst CHROME_POLL_MS = 5_000;\n/** Stop checking for the extension after this long without a link. */\nconst CHROME_POLL_LIMIT_MS = 10 * 60_000;\n/**\n * After a computer comes online, keep checking quietly for a short while: its\n * Chrome profile usually links up a few seconds after the machine does.\n */\nconst CHROME_REFRESH_POLL_LIMIT_MS = 60_000;\n\nexport { machineUseMessage } from \"../../lib/move-chat-to-machine\";\n\n/** A neutral laptop mark for the card (the frame renders logos as images). */\nexport const CONNECTED_MACHINE_LOGO =\n \"data:image/svg+xml;utf8,\" +\n encodeURIComponent(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"-2 -2 28 28\" fill=\"none\" stroke=\"#71717a\" stroke-width=\"1.75\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M18 5a2 2 0 0 1 2 2v8.526a2 2 0 0 0 .212.897l1.068 2.127a1 1 0 0 1-.9 1.45H3.62a1 1 0 0 1-.9-1.45l1.068-2.127A2 2 0 0 0 4 15.526V7a2 2 0 0 1 2-2z\"/><path d=\"M20.054 15.987H3.946\"/></svg>',\n );\n\nexport type SessionMachineCapabilityCardProps = {\n item: AuthNeededItem;\n workspaceId: string;\n sessionId: string;\n /** What a composer Send would carry now, so this Send follows the same rules. */\n sendContext?: (() => ChatSendContext) | undefined;\n /** Re-read the session after the chat moves to a machine. */\n onConfigured?: (() => Promise<void>) | undefined;\n};\n\nfunction stateLabel(machine: MachineView): string {\n switch (machine.state) {\n case \"online\":\n case \"consent_required\":\n return \"Online\";\n case \"display_unavailable\":\n return \"Online · no display\";\n case \"reconnecting\":\n return \"Reconnecting\";\n case \"enrolling\":\n return \"Connecting\";\n default:\n return \"Offline\";\n }\n}\n\n/** Focus moves only when the person is not working somewhere else. */\nfunction focusIfIdle(card: HTMLElement | null, target: HTMLElement | null = card) {\n requestAnimationFrame(() => {\n const active = document.activeElement;\n const idle = !active || active === document.body || (card?.contains(active) ?? false);\n if (idle && target?.isConnected) target.focus();\n else if (idle && card?.isConnected) card.focus();\n });\n}\n\n/**\n * The Connected Machine card in a conversation. The agent can post it, but only\n * the person can connect a machine or move this chat onto one. Once a machine with a\n * screen is reachable, the card offers the Opengeni Browser extension for it.\n */\nexport function SessionMachineCapabilityCard({\n item,\n workspaceId,\n sessionId,\n sendContext,\n onConfigured,\n}: SessionMachineCapabilityCardProps) {\n const context = useAppContext();\n const { apiBaseUrl } = useAppApi();\n const recommendation = item.capability!;\n const accessKnown = context.accessContext !== null && context.accessContext !== undefined;\n const canMessage =\n !accessKnown || hasWorkspacePermission(context.accessContext, workspaceId, \"sessions:control\");\n\n const [setupOpen, setSetupOpen] = useState(false);\n // Reconnecting to turn screen control on starts with it already chosen, and\n // with the machine's own access so the same machine reconnects as it was.\n const [setupScreenControl, setSetupScreenControl] = useState(false);\n const [setupScope, setSetupScope] = useState<ConnectMachineScope>(\"user\");\n const [justConnected, setJustConnected] = useState<string | null>(null);\n const [using, setUsing] = useState<string | null>(null);\n const [useError, setUseError] = useState<{ name: string; reason: string | null } | null>(null);\n const [outcome, setOutcome] = useState<{ sandboxId: string; text: string } | null>(null);\n const [announcement, setAnnouncement] = useState(\"\");\n const [othersOpen, setOthersOpen] = useState(false);\n const cardRef = useRef<HTMLElement>(null);\n const opener = useRef<HTMLButtonElement>(null);\n const setupOpener = useRef<HTMLElement | null>(null);\n const alive = useRef(true);\n useEffect(() => {\n alive.current = true;\n return () => {\n alive.current = false;\n };\n }, []);\n\n const fleet = useWorkspaceMachines({\n workspaceId,\n sessionId,\n pollIntervalMs: setupOpen ? WATCH_POLL_MS : MACHINES_SESSION_POLL_MS,\n });\n const unavailableOnDeployment =\n fleet.error instanceof OpenGeniApiError && fleet.error.status === 404;\n const machines = useMemo(\n () => fleet.machines.filter((machine) => !machine.isSessionGroup && machine.enrollmentId),\n [fleet.machines],\n );\n const activeMachine = machines.find((machine) => machine.active) ?? null;\n const reachable = machines.filter((machine) => isMachineComputeSelectable(machine.state));\n // The machine the agent asked for, while this chat doesn't run on it yet.\n const requested =\n (item.requestedSandboxId\n ? machines.find((machine) => machine.sandboxId === item.requestedSandboxId)\n : undefined) ?? null;\n const asking = requested !== null && !requested.active;\n const requestedName = requested ? machineDisplayName(t, requested) : \"\";\n // The person can allow it right here: lead with that, other machines fold away.\n const allowHere =\n asking && fleet.canAttach && isMachineComputeSelectable(requested.state) ? requested : null;\n const personalWorkspace =\n context.workspaces?.find((workspace) => workspace.id === workspaceId)?.kind === \"personal\";\n\n const openSetup = (reconnect?: MachineView) => {\n const active = document.activeElement;\n setupOpener.current = active instanceof HTMLElement ? active : null;\n setJustConnected(null);\n setSetupScreenControl(reconnect !== undefined);\n setSetupScope(reconnect ? connectScopeFor(reconnect) : \"user\");\n setSetupOpen(true);\n };\n const closeSetup = () => {\n // Fast polling ends with the dialog; focus returns to what opened it.\n setSetupOpen(false);\n const back = setupOpener.current?.isConnected ? setupOpener.current : opener.current;\n focusIfIdle(cardRef.current, back);\n };\n\n const ordered = useMemo(() => {\n const rank = (machine: MachineView) =>\n machine.sandboxId === justConnected\n ? 0\n : machine.active\n ? 1\n : isMachineComputeSelectable(machine.state)\n ? 2\n : 3;\n return [...machines]\n .filter((machine) => machine.sandboxId !== allowHere?.sandboxId)\n .sort(\n (left, right) =>\n rank(left) - rank(right) ||\n machineDisplayName(t, left).localeCompare(machineDisplayName(t, right)),\n );\n }, [allowHere?.sandboxId, justConnected, machines]);\n\n const use = useCallback(\n async (machine: MachineView) => {\n if (using !== null) return;\n const name = machineDisplayName(t, machine);\n setUseError(null);\n setOutcome(null);\n const chat = sendContext?.() ?? { blocked: null, awaitingHuman: false, extras: {} };\n if (chat.blocked) {\n setUseError({ name, reason: chat.blocked });\n return;\n }\n setUsing(machine.sandboxId);\n const result = await moveChatToMachine({\n machine,\n chat,\n canMessage,\n previousSandboxId: fleet.machines.find((candidate) => candidate.active)?.sandboxId ?? null,\n attach: fleet.attach,\n sendMessage: (message) => context.client.sendMessage(workspaceId, sessionId, message),\n });\n if (!alive.current) return;\n if (!result.moved) {\n setUsing(null);\n setUseError({ name, reason: result.reason });\n return;\n }\n const text = result.text;\n setUsing(null);\n setOutcome({ sandboxId: machine.sandboxId, text });\n setAnnouncement(text);\n focusIfIdle(cardRef.current);\n await onConfigured?.().catch(() => {});\n },\n [canMessage, context.client, fleet, onConfigured, sendContext, sessionId, using, workspaceId],\n );\n\n // Chrome belongs to a machine with a screen: the one this chat runs on if it\n // has one, otherwise the first reachable one.\n const chromeMachine =\n (activeMachine?.hasDisplay && isMachineComputeSelectable(activeMachine.state)\n ? activeMachine\n : null) ??\n reachable.find((machine) => machine.hasDisplay) ??\n null;\n const chrome = useAttachedChrome(\n workspaceId,\n fleet.canRead && chromeMachine?.enrollmentId\n ? { enrollmentId: chromeMachine.enrollmentId }\n : null,\n );\n const fresh = justConnected\n ? (machines.find((machine) => machine.sandboxId === justConnected) ?? null)\n : null;\n const origin = apiBaseUrl || (typeof window !== \"undefined\" ? window.location.origin : \"\");\n\n // One clear action per state. With a reachable machine, the list's \"Use in\n // this chat\" is primary and connecting another is a quiet secondary action.\n const actionUnavailable = unavailableOnDeployment\n ? \"Connected Machines aren't available on this deployment.\"\n : asking && !isMachineComputeSelectable(requested.state)\n ? `Turn on ${requestedName} to allow it here.`\n : !fleet.canRead\n ? \"You don't have access to this workspace's machines.\"\n : fresh && fleet.canAttach && !fresh.active\n ? `${machineDisplayName(t, fresh)} connected. Choose it below to use it here.`\n : reachable.length > 0 && fleet.canAttach\n ? \"Choose where this chat runs.\"\n : reachable.length > 0\n ? \"You can't change where this chat runs.\"\n : fleet.canManage\n ? null\n : machines.length > 0\n ? \"Turn on one of the machines below to use it here.\"\n : \"Ask a workspace admin to connect a machine.\";\n // Inside the desktop app, the computer it runs on is one click away.\n const desktop = useDesktopThisComputer();\n const desktopReady =\n thisComputerReady(desktop?.computer.status ?? null) && !desktop?.computer.status?.reconnecting;\n const offerThisComputer =\n desktop !== null &&\n desktop.computer.status !== null &&\n desktop.computer.status.state !== \"unavailable\" &&\n !thisComputerReady(desktop.computer.status) &&\n !unavailableOnDeployment &&\n fleet.canRead;\n const connectAnother = fleet.canManage && (reachable.length > 0 || activeMachine !== null);\n const visibleDetails =\n useError !== null || ordered.length > 0 || chromeMachine !== null || connectAnother;\n // While the agent's request can be allowed here, everything else is one\n // click away instead of competing with it.\n const folded = allowHere !== null && !othersOpen;\n const foldable =\n allowHere !== null && (ordered.length > 0 || chromeMachine !== null || connectAnother);\n\n return (\n <>\n <SessionCapabilityFrame\n name={asking ? requestedName : recommendation.name || \"Connected Machine\"}\n subtitle={\n asking\n ? `${stateLabel(requested)} · ${machineScopeLabel(t, requested.scope)}`\n : \"Your computer or server\"\n }\n logo={CONNECTED_MACHINE_LOGO}\n typeLabel=\"Machine\"\n description={\n allowHere\n ? \"The agent asked to use this machine. Allowing it moves this chat here, and the agent continues on it.\"\n : asking\n ? `The agent asked to use ${requestedName}.`\n : recommendation.rationale\n }\n skill={false}\n expanded={false}\n complete={activeMachine !== null || desktopReady}\n completeLabel={\n activeMachine\n ? outcome?.sandboxId === activeMachine.sandboxId\n ? outcome.text\n : `This chat runs on ${machineDisplayName(t, activeMachine)}`\n : desktopReady\n ? `Your agents can use ${desktop?.computer.status?.machineName || \"this computer\"}.`\n : undefined\n }\n actionLabel={\n allowHere\n ? using === allowHere.sandboxId\n ? \"Allowing…\"\n : \"Allow\"\n : offerThisComputer\n ? desktop.computer.acting\n ? \"Connecting…\"\n : \"Use this computer\"\n : \"Connect a computer\"\n }\n busy={allowHere ? using !== null : offerThisComputer && desktop.computer.acting}\n actionUnavailable={allowHere || offerThisComputer ? null : actionUnavailable}\n opensDialog={false}\n note={\n allowHere\n ? \"\"\n : offerThisComputer\n ? \"Only you can use this computer. Your agents can work with files and use the screen after you allow system permissions. Turn it off anytime in the app.\"\n : fleet.canManage\n ? \"You can remove a connected machine anytime from Machines.\"\n : \"\"\n }\n onOpen={() => {\n if (allowHere) return void use(allowHere);\n if (!offerThisComputer) return openSetup();\n if (desktop.computer.acting) return;\n if (thisComputerNeedsPermissions(desktop.computer.status)) return desktop.openSetup();\n void (\n desktop.computer.status?.state === \"paused\"\n ? desktop.computer.resume().then(() => desktop.computer.status)\n : desktop.computer.connect({ screenControl: true })\n ).then((next) => {\n if (thisComputerNeedsPermissions(next)) desktop.openSetup();\n void fleet.refresh();\n });\n }}\n onClose={closeSetup}\n opener={opener}\n cardRef={cardRef}\n details={\n unavailableOnDeployment || !fleet.canRead ? null : (\n <>\n {desktop?.computer.actionError !== null &&\n desktop?.computer.actionError !== undefined ? (\n <Notice tone=\"failed\" live=\"assertive\" className=\"mx-4 mb-3 text-xs\">\n Couldn't connect this computer. {desktop.computer.actionError || \"Try again.\"}\n </Notice>\n ) : null}\n {/* Always mounted, so moves and new machines are announced. */}\n <span className=\"sr-only\" role=\"status\" aria-live=\"polite\">\n {announcement}\n </span>\n {visibleDetails ? (\n <div\n data-slot=\"connected-machines\"\n className=\"space-y-3 border-t border-border px-[19px] pt-3 pb-4 max-[480px]:px-3.5\"\n >\n {useError ? (\n <Notice tone=\"failed\" live=\"assertive\" className=\"text-xs\">\n {`Couldn't move this chat to ${useError.name}. ${\n useError.reason ??\n (fleet.mutationError\n ? userErrorText(fleet.mutationError, \"Try again.\")\n : \"Try again.\")\n }`}\n </Notice>\n ) : null}\n {foldable ? (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"-ml-2 text-fg-muted\"\n aria-expanded={othersOpen}\n onClick={() => setOthersOpen((open) => !open)}\n >\n <ChevronRightIcon\n aria-hidden\n className={\n othersOpen ? \"rotate-90 transition-transform\" : \"transition-transform\"\n }\n />\n Use a different machine\n </Button>\n ) : null}\n {!folded && ordered.length > 0 ? (\n <RowList label=\"Connected machines\" flush>\n {ordered.map((machine) => (\n <MachineRow\n key={machine.sandboxId}\n machine={machine}\n primary={machine.sandboxId === justConnected || reachable.length === 1}\n canUse={fleet.canAttach}\n busy={using === machine.sandboxId}\n locked={using !== null || fleet.attaching}\n onUse={() => void use(machine)}\n />\n ))}\n </RowList>\n ) : null}\n {!folded && chromeMachine ? (\n <ScreenControlStep\n key={chromeMachine.sandboxId}\n machine={chromeMachine}\n workspaceId={workspaceId}\n canManage={fleet.canManage}\n refresh={fleet.refresh}\n onReconnect={() => openSetup(chromeMachine)}\n />\n ) : null}\n {!folded && chromeMachine ? (\n <ChromeStep\n chrome={chrome}\n machineName={machineDisplayName(t, chromeMachine)}\n />\n ) : null}\n {!folded && connectAnother ? (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"-ml-2 text-fg-muted\"\n onClick={() => openSetup()}\n >\n <PlusIcon aria-hidden />\n Connect another machine\n </Button>\n ) : null}\n </div>\n ) : null}\n </>\n )\n }\n />\n {fleet.canManage && !unavailableOnDeployment ? (\n <ConnectMachineDialog\n open={setupOpen}\n onOpenChange={(open) => {\n if (!open) closeSetup();\n }}\n workspaceId={workspaceId}\n sessionId={sessionId}\n origin={origin}\n machines={fleet.machines}\n machinesLoading={fleet.loading}\n machinesError={fleet.error}\n personalWorkspace={personalWorkspace}\n defaultScope={setupScope}\n defaultAllowScreenControl={setupScreenControl}\n onConnected={(machine) => {\n setJustConnected(machine.sandboxId);\n setAnnouncement(`${machineDisplayName(t, machine)} connected.`);\n }}\n useInChat={{ canUse: fleet.canAttach, onUse: (machine) => void use(machine) }}\n />\n ) : null}\n </>\n );\n}\n\n/**\n * An earlier Connected Machine card whose request the agent made again further\n * down. The newer card is the live one, so this stays a single quiet line.\n */\nexport function RepeatedMachineRequestNote({ chrome = false }: { chrome?: boolean }) {\n return (\n <p className=\"flex items-center gap-2 text-xs text-fg-muted\">\n <LaptopIcon aria-hidden className=\"size-3.5 shrink-0\" />\n {chrome\n ? \"The agent asked to connect Chrome. It asked again below.\"\n : \"The agent asked to use a machine. It asked again below.\"}\n </p>\n );\n}\n\nfunction MachineRow({\n machine,\n primary,\n canUse,\n busy,\n locked,\n onUse,\n}: {\n machine: MachineView;\n primary: boolean;\n canUse: boolean;\n busy: boolean;\n locked: boolean;\n onUse: () => void;\n}) {\n const name = machineDisplayName(t, machine);\n const selectable = isMachineComputeSelectable(machine.state);\n const Icon = machine.os === \"linux\" && !machine.hasDisplay ? ServerIcon : LaptopIcon;\n const common = {\n leading: <LogoTile icon={<Icon />} />,\n title: name,\n meta: [stateLabel(machine), machineScopeLabel(t, machine.scope)],\n };\n if (machine.active) {\n return (\n <ListRow\n {...common}\n control={\n <span className=\"inline-flex items-center gap-1 text-xs font-medium text-status-idle\">\n <CheckIcon aria-hidden className=\"size-3.5\" />\n In this chat\n </span>\n }\n />\n );\n }\n // The meta line already says why (\"Offline\", \"Reconnecting\").\n if (!selectable) return <ListRow {...common} disabled />;\n if (!canUse) return <ListRow {...common} />;\n const label = busy ? `Moving this chat to ${name}` : `Use ${name} in this chat`;\n return (\n <ListRow\n {...common}\n control={\n primary ? (\n <Button\n type=\"button\"\n size=\"sm\"\n aria-label={label}\n aria-disabled={locked || undefined}\n className=\"rounded-[10px] pointer-coarse:h-11\"\n onClick={() => {\n if (!locked) onUse();\n }}\n >\n {busy ? <Loader2Icon aria-hidden className=\"animate-spin\" /> : null}\n {busy ? \"Moving…\" : \"Use in this chat\"}\n </Button>\n ) : (\n <RowButton\n aria-label={label}\n aria-disabled={locked || undefined}\n onClick={() => {\n if (!locked) onUse();\n }}\n >\n {busy ? <Loader2Icon aria-hidden className=\"animate-spin\" /> : null}\n {busy ? \"Moving…\" : \"Use\"}\n </RowButton>\n )\n }\n />\n );\n}\n\nexport type ChromeState = {\n connected: { name: string } | null;\n /** A read completed, so a null `connected` means Chrome is not linked yet. */\n checked: boolean;\n /** Start checking for the extension (after the person opens the store). */\n watch: () => void;\n /** Checking for the extension after the person opened the store. */\n watching: boolean;\n};\n\n/** Which Chrome to look for: one on an exact machine, or any the person connected. */\nexport type AttachedChromeScope = { enrollmentId: string } | \"any\" | null;\n\n/**\n * Whether the Opengeni Browser extension linked a Chrome profile the agent can\n * use (the same check browser_open applies) on this exact machine, or, with\n * \"any\", on any machine. Reads once, and again whenever `refreshKey` changes\n * (for example when a computer comes online); polls only after the person opens\n * the store, stops once linked, after a bounded time, or when the inventory is\n * not available to them.\n */\nexport function useAttachedChrome(\n workspaceId: string,\n scope: AttachedChromeScope,\n refreshKey: string | null = null,\n): ChromeState {\n const { client } = useAppContext();\n // Poll on its own timer; a new client identity on re-render must not refetch.\n const clientRef = useRef(client);\n clientRef.current = client;\n const [connected, setConnected] = useState<{ name: string } | null>(null);\n const [checked, setChecked] = useState(false);\n const [watchSince, setWatchSince] = useState<number | null>(null);\n const [refreshSince, setRefreshSince] = useState<number | null>(null);\n const [expired, setExpired] = useState(false);\n const [denied, setDenied] = useState(false);\n const linked = connected !== null;\n const enrollmentId = scope === null ? null : scope === \"any\" ? \"*\" : scope.enrollmentId;\n\n useEffect(() => {\n setConnected(null);\n setChecked(false);\n setDenied(false);\n }, [enrollmentId]);\n\n useEffect(() => {\n setRefreshSince(refreshKey === null ? null : Date.now());\n }, [refreshKey]);\n\n useEffect(() => {\n if (!enrollmentId || denied) return;\n let cancelled = false;\n const read = async () => {\n try {\n const result = await clientRef.current.listAttachedBrowsers(workspaceId);\n if (cancelled) return;\n const device = result.devices.find(\n (candidate) =>\n candidate.state === \"connected\" &&\n candidate.capabilities.debuggerAttachment &&\n (enrollmentId === \"*\" || candidate.enrollmentId === enrollmentId),\n );\n setConnected(device ? { name: device.profileLabel ?? device.browserName } : null);\n setChecked(true);\n } catch (failure) {\n // Without inventory access the step still offers the install link.\n if (\n !cancelled &&\n failure instanceof OpenGeniApiError &&\n failure.status >= 400 &&\n failure.status < 500\n ) {\n setDenied(true);\n }\n }\n };\n void read();\n if (linked || (watchSince === null && refreshSince === null)) {\n return () => void (cancelled = true);\n }\n const timer = window.setInterval(() => {\n const now = Date.now();\n const watching = watchSince !== null && now - watchSince <= CHROME_POLL_LIMIT_MS;\n const refreshing =\n refreshSince !== null && now - refreshSince <= CHROME_REFRESH_POLL_LIMIT_MS;\n if (!watching && !refreshing) {\n window.clearInterval(timer);\n if (watchSince !== null) setExpired(true);\n return;\n }\n if (document.visibilityState !== \"hidden\") void read();\n }, CHROME_POLL_MS);\n return () => {\n cancelled = true;\n window.clearInterval(timer);\n };\n }, [denied, enrollmentId, linked, refreshSince, watchSince, workspaceId]);\n\n const watch = useCallback(() => {\n setExpired(false);\n setWatchSince(Date.now());\n }, []);\n return {\n connected,\n checked,\n watch,\n watching: watchSince !== null && !linked && !expired && !denied,\n };\n}\n\n/** How long to keep checking for the new consent, or a granted Mac permission. */\nconst SCREEN_CONTROL_WATCH_MS = 90_000;\nconst MAC_PERMISSION_WATCH_MS = 3 * 60_000;\nconst SCREEN_CONTROL_POLL_MS = 3_000;\n\ntype MacPermissionPane = \"screen_recording\" | \"accessibility\" | \"input_monitoring\";\ntype MacPermissions = NonNullable<NonNullable<MachineView[\"runtime\"]>[\"macPermissions\"]>;\n\n/** The order the agent needs them in: seeing the screen first, then input. */\nconst MAC_PERMISSIONS: ReadonlyArray<{\n pane: MacPermissionPane;\n key: keyof MacPermissions;\n label: string;\n}> = [\n { pane: \"screen_recording\", key: \"screenRecording\", label: \"Screen Recording\" },\n { pane: \"accessibility\", key: \"accessibility\", label: \"Accessibility\" },\n { pane: \"input_monitoring\", key: \"inputMonitoring\", label: \"Input Monitoring\" },\n];\n\nfunction isOnline(machine: MachineView): boolean {\n return (\n machine.state === \"online\" ||\n machine.state === \"consent_required\" ||\n machine.state === \"display_unavailable\"\n );\n}\n\n/**\n * Screen control for the machine with a screen. Turning it on changes this\n * machine in place (agents can do the same themselves); the step then follows\n * what the machine reports: the agent's own consent, then on a Mac each of the\n * three OS permissions, one System Settings pane at a time.\n */\nfunction ScreenControlStep({\n machine,\n workspaceId,\n canManage,\n refresh,\n onReconnect,\n}: {\n machine: MachineView;\n workspaceId: string;\n canManage: boolean;\n refresh: () => Promise<void>;\n /** Open the connect command, for a connection too old to change in place. */\n onReconnect: () => void;\n}) {\n const { client } = useAppContext();\n const stepRef = useRef<HTMLDivElement>(null);\n const refreshRef = useRef(refresh);\n refreshRef.current = refresh;\n const [busy, setBusy] = useState(false);\n const [note, setNote] = useState<string | null>(null);\n const [opened, setOpened] = useState<MacPermissionPane | null>(null);\n const [watchUntil, setWatchUntil] = useState(0);\n const [stalled, setStalled] = useState(false);\n const [reconnect, setReconnect] = useState(false);\n\n const online = isOnline(machine);\n const runtime = machine.runtime;\n const allowed = machine.allowScreenControl;\n // Older reports cannot say whether the agent holds the consent; trust the row.\n const applied = allowed && (runtime?.capabilities.screenControl ?? true);\n const renewable = runtime?.capabilities.credentialRenew === true;\n const mac = machine.os === \"macos\";\n const permissions = mac ? (runtime?.macPermissions ?? null) : null;\n const reason = machine.desktopUnavailableReason?.trim() || null;\n const missing = permissions\n ? (MAC_PERMISSIONS.find((step) => !permissions[step.key]) ?? null)\n : mac && reason !== null && /screen recording/i.test(reason)\n ? MAC_PERMISSIONS[0]!\n : null;\n const updating = runtime?.versionState === \"updating\";\n const waiting =\n (allowed && !applied && online && (renewable || updating) && !reconnect) || opened !== null;\n\n // Also when the card opens on a change already underway (a reload, or an\n // agent turned it on): watch for a while, then offer Try again.\n useEffect(() => {\n if (waiting && watchUntil === 0) setWatchUntil(Date.now() + SCREEN_CONTROL_WATCH_MS);\n }, [waiting, watchUntil]);\n\n // Re-read the machine while a change is on its way, for a bounded time.\n useEffect(() => {\n if (!waiting || watchUntil === 0) return;\n const timer = window.setInterval(() => {\n if (Date.now() > watchUntil) {\n window.clearInterval(timer);\n setStalled(true);\n return;\n }\n void refreshRef.current().catch(() => {});\n }, SCREEN_CONTROL_POLL_MS);\n return () => window.clearInterval(timer);\n }, [waiting, watchUntil]);\n\n async function turnOn() {\n if (busy || !machine.enrollmentId) return;\n setBusy(true);\n setNote(null);\n setStalled(false);\n try {\n const result = await client.enableMachineScreenControl(workspaceId, machine.enrollmentId);\n if (result.reason === \"renewal_failed\") setNote(result.message);\n setReconnect(result.reason === \"reconnect_required\");\n setWatchUntil(Date.now() + SCREEN_CONTROL_WATCH_MS);\n await refreshRef.current().catch(() => {});\n } catch (failure) {\n setNote(\n failure instanceof OpenGeniApiError && failure.status === 403\n ? \"Only an organization admin can turn this on.\"\n : userErrorText(failure, \"Try again.\"),\n );\n } finally {\n setBusy(false);\n focusIfIdle(stepRef.current);\n }\n }\n\n async function updateAgent() {\n if (busy || !machine.enrollmentId) return;\n setBusy(true);\n setNote(null);\n try {\n await client.updateMachineAgent(workspaceId, machine.enrollmentId);\n setStalled(false);\n setWatchUntil(Date.now() + MAC_PERMISSION_WATCH_MS);\n await refreshRef.current().catch(() => {});\n } catch (failure) {\n setNote(userErrorText(failure, \"Try again.\"));\n } finally {\n setBusy(false);\n }\n }\n\n async function openPane(pane: MacPermissionPane) {\n if (busy || !machine.enrollmentId) return;\n setBusy(true);\n setNote(null);\n try {\n const result = await client.openMachinePrivacySettings(workspaceId, machine.enrollmentId, {\n pane,\n });\n if (result.opened) {\n setOpened(pane);\n setStalled(false);\n setWatchUntil(Date.now() + MAC_PERMISSION_WATCH_MS);\n } else {\n setNote(result.message);\n }\n } catch (failure) {\n setNote(userErrorText(failure, \"Try again.\"));\n } finally {\n setBusy(false);\n }\n }\n\n const button = (label: string, onClick: () => void) => (\n <RowButton aria-disabled={busy || undefined} aria-busy={busy || undefined} onClick={onClick}>\n {busy ? <Loader2Icon aria-hidden className=\"animate-spin\" /> : null}\n {label}\n </RowButton>\n );\n const done = (\n <span className=\"inline-flex items-center gap-1 text-xs font-medium text-status-idle\">\n <CheckIcon aria-hidden className=\"size-3.5\" />\n On\n </span>\n );\n\n // The row stays one short line like its neighbours; anything the person has\n // to do on the machine goes in the wrapping line under it.\n let description: string;\n let hint: string | null = null;\n let control: ReactNode = null;\n if (!allowed) {\n description = canManage\n ? \"Let agents see and use this screen\"\n : \"Ask a workspace admin to turn it on\";\n if (canManage) control = button(busy ? \"Turning on…\" : \"Turn on\", () => void turnOn());\n } else if (!applied) {\n // The step only shows for a reachable machine.\n if (reconnect) {\n description = \"Needs a fresh connection\";\n hint = \"Run the connect command on this machine again, with screen control on.\";\n if (canManage) control = button(\"Connect again\", onReconnect);\n } else if (updating) {\n description = \"Updating the agent…\";\n } else if (!renewable) {\n description = \"Waiting for an agent update\";\n hint = \"It turns on by itself once this machine's agent is updated.\";\n if (canManage && !runtime?.updateBlockedReason) {\n control = button(busy ? \"Updating…\" : \"Update agent\", () => void updateAgent());\n }\n } else if (stalled || note) {\n description = \"Not on yet\";\n if (canManage) control = button(busy ? \"Trying…\" : \"Try again\", () => void turnOn());\n } else {\n description = \"Turning on…\";\n }\n } else if (missing) {\n const shown = opened === missing.pane;\n // The row stays short at any width; the hint names the permission.\n description = \"Mac permission needed\";\n hint = shown\n ? `On the Mac, switch on Opengeni under ${missing.label}.${\n missing.pane === \"screen_recording\" ? \" Choose Quit & Reopen if macOS asks.\" : \"\"\n }`\n : `Allow ${missing.label} for Opengeni on this Mac.`;\n if (canManage && online) {\n control = button(shown ? \"Open again\" : \"Open settings\", () => void openPane(missing.pane));\n }\n } else if (reason) {\n description = reason;\n } else {\n description = \"Agents can see and use this screen\";\n control = done;\n }\n const notice = note ?? hint;\n\n return (\n <div\n data-slot=\"screen-control\"\n ref={stepRef}\n tabIndex={-1}\n className=\"space-y-2 outline-hidden\"\n >\n <RowList label=\"Screen control\" flush>\n <ListRow\n leading={<LogoTile icon={<MonitorIcon />} />}\n title=\"Screen control\"\n description={description}\n control={control}\n />\n </RowList>\n <span className=\"sr-only\" aria-live=\"polite\">\n {notice ? `${description}. ${notice}` : description}\n </span>\n {notice ? (\n <Notice tone=\"waiting\" className=\"text-xs\">\n {notice}\n </Notice>\n ) : null}\n </div>\n );\n}\n\nfunction ChromeStep({ chrome, machineName }: { chrome: ChromeState; machineName: string }) {\n const { client } = useAppContext();\n // The deployment's own extension when it ships one, else Opengeni Browser.\n const extension = useClientConfigFlags(client).browserExtension ?? {\n name: \"Opengeni Browser\",\n installUrl: OPENGENI_BROWSER_EXTENSION_URL,\n };\n return (\n <div data-slot=\"chrome-extension\">\n <RowList label=\"Chrome\" flush>\n <ListRow\n leading={<LogoTile icon={<PuzzleIcon />} />}\n title=\"Chrome\"\n description={\n chrome.connected\n ? `${chrome.connected.name} on ${machineName}`\n : `Add ${extension.name} on ${machineName}`\n }\n control={\n chrome.connected ? (\n <span className=\"inline-flex items-center gap-1 text-xs font-medium text-status-idle\">\n <CheckIcon aria-hidden className=\"size-3.5\" />\n Connected\n </span>\n ) : (\n <Button asChild size=\"sm\" variant=\"outline\" className=\"rounded-[10px]\">\n <a\n href={extension.installUrl}\n target=\"_blank\"\n rel=\"noreferrer\"\n onClick={chrome.watch}\n >\n Add to Chrome\n <ArrowUpRightIcon aria-hidden />\n <span className=\"sr-only\"> (opens the Chrome Web Store in a new tab)</span>\n </a>\n </Button>\n )\n }\n />\n </RowList>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,SAAS,sCAAsC;AAC/C,SAAS,wBAAwB;AACjC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,aAAa,WAAW,SAAS,QAAQ,gBAAgC;AA4VtE,mBAQE,KALE,YAHJ;AAlUZ,IAAM,gBAAgB;AAEtB,IAAM,iBAAiB;AAEvB,IAAM,uBAAuB,KAAK;AAKlC,IAAM,+BAA+B;AAK9B,IAAM,yBACX,6BACA;AAAA,EACE;AACF;AAYF,SAAS,WAAW,SAA8B;AAChD,UAAQ,QAAQ,OAAO;AAAA,IACrB,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAGA,SAAS,YAAY,MAA0B,SAA6B,MAAM;AAChF,wBAAsB,MAAM;AAC1B,UAAM,SAAS,SAAS;AACxB,UAAM,OAAO,CAAC,UAAU,WAAW,SAAS,SAAS,MAAM,SAAS,MAAM,KAAK;AAC/E,QAAI,QAAQ,QAAQ,YAAa,QAAO,MAAM;AAAA,aACrC,QAAQ,MAAM,YAAa,MAAK,MAAM;AAAA,EACjD,CAAC;AACH;AAOO,SAAS,6BAA6B;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAsC;AACpC,QAAM,UAAU,cAAc;AAC9B,QAAM,EAAE,WAAW,IAAI,UAAU;AACjC,QAAM,iBAAiB,KAAK;AAC5B,QAAM,cAAc,QAAQ,kBAAkB,QAAQ,QAAQ,kBAAkB;AAChF,QAAM,aACJ,CAAC,eAAe,uBAAuB,QAAQ,eAAe,aAAa,kBAAkB;AAE/F,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAGhD,QAAM,CAAC,oBAAoB,qBAAqB,IAAI,SAAS,KAAK;AAClE,QAAM,CAAC,YAAY,aAAa,IAAI,SAA8B,MAAM;AACxE,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAwB,IAAI;AACtE,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAwB,IAAI;AACtD,QAAM,CAAC,UAAU,WAAW,IAAI,SAAyD,IAAI;AAC7F,QAAM,CAAC,SAAS,UAAU,IAAI,SAAqD,IAAI;AACvF,QAAM,CAAC,cAAc,eAAe,IAAI,SAAS,EAAE;AACnD,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,KAAK;AAClD,QAAM,UAAU,OAAoB,IAAI;AACxC,QAAM,SAAS,OAA0B,IAAI;AAC7C,QAAM,cAAc,OAA2B,IAAI;AACnD,QAAM,QAAQ,OAAO,IAAI;AACzB,YAAU,MAAM;AACd,UAAM,UAAU;AAChB,WAAO,MAAM;AACX,YAAM,UAAU;AAAA,IAClB;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,QAAM,QAAQ,qBAAqB;AAAA,IACjC;AAAA,IACA;AAAA,IACA,gBAAgB,YAAY,gBAAgB;AAAA,EAC9C,CAAC;AACD,QAAM,0BACJ,MAAM,iBAAiB,oBAAoB,MAAM,MAAM,WAAW;AACpE,QAAM,WAAW;AAAA,IACf,MAAM,MAAM,SAAS,OAAO,CAAC,YAAY,CAAC,QAAQ,kBAAkB,QAAQ,YAAY;AAAA,IACxF,CAAC,MAAM,QAAQ;AAAA,EACjB;AACA,QAAM,gBAAgB,SAAS,KAAK,CAAC,YAAY,QAAQ,MAAM,KAAK;AACpE,QAAM,YAAY,SAAS,OAAO,CAAC,YAAY,2BAA2B,QAAQ,KAAK,CAAC;AAExF,QAAM,aACH,KAAK,qBACF,SAAS,KAAK,CAAC,YAAY,QAAQ,cAAc,KAAK,kBAAkB,IACxE,WAAc;AACpB,QAAM,SAAS,cAAc,QAAQ,CAAC,UAAU;AAChD,QAAM,gBAAgB,YAAY,mBAAmB,GAAG,SAAS,IAAI;AAErE,QAAM,YACJ,UAAU,MAAM,aAAa,2BAA2B,UAAU,KAAK,IAAI,YAAY;AACzF,QAAM,oBACJ,QAAQ,YAAY,KAAK,CAAC,cAAc,UAAU,OAAO,WAAW,GAAG,SAAS;AAElF,QAAM,YAAY,CAAC,cAA4B;AAC7C,UAAM,SAAS,SAAS;AACxB,gBAAY,UAAU,kBAAkB,cAAc,SAAS;AAC/D,qBAAiB,IAAI;AACrB,0BAAsB,cAAc,MAAS;AAC7C,kBAAc,YAAY,gBAAgB,SAAS,IAAI,MAAM;AAC7D,iBAAa,IAAI;AAAA,EACnB;AACA,QAAM,aAAa,MAAM;AAEvB,iBAAa,KAAK;AAClB,UAAM,OAAO,YAAY,SAAS,cAAc,YAAY,UAAU,OAAO;AAC7E,gBAAY,QAAQ,SAAS,IAAI;AAAA,EACnC;AAEA,QAAM,UAAU,QAAQ,MAAM;AAC5B,UAAM,OAAO,CAAC,YACZ,QAAQ,cAAc,gBAClB,IACA,QAAQ,SACN,IACA,2BAA2B,QAAQ,KAAK,IACtC,IACA;AACV,WAAO,CAAC,GAAG,QAAQ,EAChB,OAAO,CAAC,YAAY,QAAQ,cAAc,WAAW,SAAS,EAC9D;AAAA,MACC,CAAC,MAAM,UACL,KAAK,IAAI,IAAI,KAAK,KAAK,KACvB,mBAAmB,GAAG,IAAI,EAAE,cAAc,mBAAmB,GAAG,KAAK,CAAC;AAAA,IAC1E;AAAA,EACJ,GAAG,CAAC,WAAW,WAAW,eAAe,QAAQ,CAAC;AAElD,QAAM,MAAM;AAAA,IACV,OAAO,YAAyB;AAC9B,UAAI,UAAU,KAAM;AACpB,YAAM,OAAO,mBAAmB,GAAG,OAAO;AAC1C,kBAAY,IAAI;AAChB,iBAAW,IAAI;AACf,YAAM,OAAO,cAAc,KAAK,EAAE,SAAS,MAAM,eAAe,OAAO,QAAQ,CAAC,EAAE;AAClF,UAAI,KAAK,SAAS;AAChB,oBAAY,EAAE,MAAM,QAAQ,KAAK,QAAQ,CAAC;AAC1C;AAAA,MACF;AACA,eAAS,QAAQ,SAAS;AAC1B,YAAM,SAAS,MAAM,kBAAkB;AAAA,QACrC;AAAA,QACA;AAAA,QACA;AAAA,QACA,mBAAmB,MAAM,SAAS,KAAK,CAAC,cAAc,UAAU,MAAM,GAAG,aAAa;AAAA,QACtF,QAAQ,MAAM;AAAA,QACd,aAAa,CAAC,YAAY,QAAQ,OAAO,YAAY,aAAa,WAAW,OAAO;AAAA,MACtF,CAAC;AACD,UAAI,CAAC,MAAM,QAAS;AACpB,UAAI,CAAC,OAAO,OAAO;AACjB,iBAAS,IAAI;AACb,oBAAY,EAAE,MAAM,QAAQ,OAAO,OAAO,CAAC;AAC3C;AAAA,MACF;AACA,YAAM,OAAO,OAAO;AACpB,eAAS,IAAI;AACb,iBAAW,EAAE,WAAW,QAAQ,WAAW,KAAK,CAAC;AACjD,sBAAgB,IAAI;AACpB,kBAAY,QAAQ,OAAO;AAC3B,YAAM,eAAe,EAAE,MAAM,MAAM;AAAA,MAAC,CAAC;AAAA,IACvC;AAAA,IACA,CAAC,YAAY,QAAQ,QAAQ,OAAO,cAAc,aAAa,WAAW,OAAO,WAAW;AAAA,EAC9F;AAIA,QAAM,iBACH,eAAe,cAAc,2BAA2B,cAAc,KAAK,IACxE,gBACA,SACJ,UAAU,KAAK,CAAC,YAAY,QAAQ,UAAU,KAC9C;AACF,QAAM,SAAS;AAAA,IACb;AAAA,IACA,MAAM,WAAW,eAAe,eAC5B,EAAE,cAAc,cAAc,aAAa,IAC3C;AAAA,EACN;AACA,QAAM,QAAQ,gBACT,SAAS,KAAK,CAAC,YAAY,QAAQ,cAAc,aAAa,KAAK,OACpE;AACJ,QAAM,SAAS,eAAe,OAAO,WAAW,cAAc,OAAO,SAAS,SAAS;AAIvF,QAAM,oBAAoB,0BACtB,4DACA,UAAU,CAAC,2BAA2B,UAAU,KAAK,IACnD,WAAW,aAAa,uBACxB,CAAC,MAAM,UACL,wDACA,SAAS,MAAM,aAAa,CAAC,MAAM,SACjC,GAAG,mBAAmB,GAAG,KAAK,CAAC,gDAC/B,UAAU,SAAS,KAAK,MAAM,YAC5B,iCACA,UAAU,SAAS,IACjB,2CACA,MAAM,YACJ,OACA,SAAS,SAAS,IAChB,sDACA;AAElB,QAAM,UAAU,uBAAuB;AACvC,QAAM,eACJ,kBAAkB,SAAS,SAAS,UAAU,IAAI,KAAK,CAAC,SAAS,SAAS,QAAQ;AACpF,QAAM,oBACJ,YAAY,QACZ,QAAQ,SAAS,WAAW,QAC5B,QAAQ,SAAS,OAAO,UAAU,iBAClC,CAAC,kBAAkB,QAAQ,SAAS,MAAM,KAC1C,CAAC,2BACD,MAAM;AACR,QAAM,iBAAiB,MAAM,cAAc,UAAU,SAAS,KAAK,kBAAkB;AACrF,QAAM,iBACJ,aAAa,QAAQ,QAAQ,SAAS,KAAK,kBAAkB,QAAQ;AAGvE,QAAM,SAAS,cAAc,QAAQ,CAAC;AACtC,QAAM,WACJ,cAAc,SAAS,QAAQ,SAAS,KAAK,kBAAkB,QAAQ;AAEzE,SACE,iCACE;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,MAAM,SAAS,gBAAgB,eAAe,QAAQ;AAAA,QACtD,UACE,SACI,GAAG,WAAW,SAAS,CAAC,SAAM,kBAAkB,GAAG,UAAU,KAAK,CAAC,KACnE;AAAA,QAEN,MAAM;AAAA,QACN,WAAU;AAAA,QACV,aACE,YACI,0GACA,SACE,0BAA0B,aAAa,MACvC,eAAe;AAAA,QAEvB,OAAO;AAAA,QACP,UAAU;AAAA,QACV,UAAU,kBAAkB,QAAQ;AAAA,QACpC,eACE,gBACI,SAAS,cAAc,cAAc,YACnC,QAAQ,OACR,qBAAqB,mBAAmB,GAAG,aAAa,CAAC,KAC3D,eACE,uBAAuB,SAAS,SAAS,QAAQ,eAAe,eAAe,MAC/E;AAAA,QAER,aACE,YACI,UAAU,UAAU,YAClB,mBACA,UACF,oBACE,QAAQ,SAAS,SACf,qBACA,sBACF;AAAA,QAER,MAAM,YAAY,UAAU,OAAO,qBAAqB,QAAQ,SAAS;AAAA,QACzE,mBAAmB,aAAa,oBAAoB,OAAO;AAAA,QAC3D,aAAa;AAAA,QACb,MACE,YACI,KACA,oBACE,2JACA,MAAM,YACJ,8DACA;AAAA,QAEV,QAAQ,MAAM;AACZ,cAAI,UAAW,QAAO,KAAK,IAAI,SAAS;AACxC,cAAI,CAAC,kBAAmB,QAAO,UAAU;AACzC,cAAI,QAAQ,SAAS,OAAQ;AAC7B,cAAI,6BAA6B,QAAQ,SAAS,MAAM,EAAG,QAAO,QAAQ,UAAU;AACpF,gBACE,QAAQ,SAAS,QAAQ,UAAU,WAC/B,QAAQ,SAAS,OAAO,EAAE,KAAK,MAAM,QAAQ,SAAS,MAAM,IAC5D,QAAQ,SAAS,QAAQ,EAAE,eAAe,KAAK,CAAC,GACpD,KAAK,CAAC,SAAS;AACf,gBAAI,6BAA6B,IAAI,EAAG,SAAQ,UAAU;AAC1D,iBAAK,MAAM,QAAQ;AAAA,UACrB,CAAC;AAAA,QACH;AAAA,QACA,SAAS;AAAA,QACT;AAAA,QACA;AAAA,QACA,SACE,2BAA2B,CAAC,MAAM,UAAU,OAC1C,iCACG;AAAA,mBAAS,SAAS,gBAAgB,QACnC,SAAS,SAAS,gBAAgB,SAChC,qBAAC,UAAO,MAAK,UAAS,MAAK,aAAY,WAAU,qBAAoB;AAAA;AAAA,YAClC,QAAQ,SAAS,eAAe;AAAA,aACnE,IACE;AAAA,UAEJ,oBAAC,UAAK,WAAU,WAAU,MAAK,UAAS,aAAU,UAC/C,wBACH;AAAA,UACC,iBACC;AAAA,YAAC;AAAA;AAAA,cACC,aAAU;AAAA,cACV,WAAU;AAAA,cAET;AAAA,2BACC,oBAAC,UAAO,MAAK,UAAS,MAAK,aAAY,WAAU,WAC9C,wCAA8B,SAAS,IAAI,KAC1C,SAAS,WACR,MAAM,gBACH,cAAc,MAAM,eAAe,YAAY,IAC/C,aACN,IACF,IACE;AAAA,gBACH,WACC;AAAA,kBAAC;AAAA;AAAA,oBACC,MAAK;AAAA,oBACL,SAAQ;AAAA,oBACR,MAAK;AAAA,oBACL,WAAU;AAAA,oBACV,iBAAe;AAAA,oBACf,SAAS,MAAM,cAAc,CAAC,SAAS,CAAC,IAAI;AAAA,oBAE5C;AAAA;AAAA,wBAAC;AAAA;AAAA,0BACC,eAAW;AAAA,0BACX,WACE,aAAa,mCAAmC;AAAA;AAAA,sBAEpD;AAAA,sBAAE;AAAA;AAAA;AAAA,gBAEJ,IACE;AAAA,gBACH,CAAC,UAAU,QAAQ,SAAS,IAC3B,oBAAC,WAAQ,OAAM,sBAAqB,OAAK,MACtC,kBAAQ,IAAI,CAAC,YACZ;AAAA,kBAAC;AAAA;AAAA,oBAEC;AAAA,oBACA,SAAS,QAAQ,cAAc,iBAAiB,UAAU,WAAW;AAAA,oBACrE,QAAQ,MAAM;AAAA,oBACd,MAAM,UAAU,QAAQ;AAAA,oBACxB,QAAQ,UAAU,QAAQ,MAAM;AAAA,oBAChC,OAAO,MAAM,KAAK,IAAI,OAAO;AAAA;AAAA,kBANxB,QAAQ;AAAA,gBAOf,CACD,GACH,IACE;AAAA,gBACH,CAAC,UAAU,gBACV;AAAA,kBAAC;AAAA;AAAA,oBAEC,SAAS;AAAA,oBACT;AAAA,oBACA,WAAW,MAAM;AAAA,oBACjB,SAAS,MAAM;AAAA,oBACf,aAAa,MAAM,UAAU,aAAa;AAAA;AAAA,kBALrC,cAAc;AAAA,gBAMrB,IACE;AAAA,gBACH,CAAC,UAAU,gBACV;AAAA,kBAAC;AAAA;AAAA,oBACC;AAAA,oBACA,aAAa,mBAAmB,GAAG,aAAa;AAAA;AAAA,gBAClD,IACE;AAAA,gBACH,CAAC,UAAU,iBACV;AAAA,kBAAC;AAAA;AAAA,oBACC,MAAK;AAAA,oBACL,SAAQ;AAAA,oBACR,MAAK;AAAA,oBACL,WAAU;AAAA,oBACV,SAAS,MAAM,UAAU;AAAA,oBAEzB;AAAA,0CAAC,YAAS,eAAW,MAAC;AAAA,sBAAE;AAAA;AAAA;AAAA,gBAE1B,IACE;AAAA;AAAA;AAAA,UACN,IACE;AAAA,WACN;AAAA;AAAA,IAGN;AAAA,IACC,MAAM,aAAa,CAAC,0BACnB;AAAA,MAAC;AAAA;AAAA,QACC,MAAM;AAAA,QACN,cAAc,CAAC,SAAS;AACtB,cAAI,CAAC,KAAM,YAAW;AAAA,QACxB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA,UAAU,MAAM;AAAA,QAChB,iBAAiB,MAAM;AAAA,QACvB,eAAe,MAAM;AAAA,QACrB;AAAA,QACA,cAAc;AAAA,QACd,2BAA2B;AAAA,QAC3B,aAAa,CAAC,YAAY;AACxB,2BAAiB,QAAQ,SAAS;AAClC,0BAAgB,GAAG,mBAAmB,GAAG,OAAO,CAAC,aAAa;AAAA,QAChE;AAAA,QACA,WAAW,EAAE,QAAQ,MAAM,WAAW,OAAO,CAAC,YAAY,KAAK,IAAI,OAAO,EAAE;AAAA;AAAA,IAC9E,IACE;AAAA,KACN;AAEJ;AAMO,SAAS,2BAA2B,EAAE,SAAS,MAAM,GAAyB;AACnF,SACE,qBAAC,OAAE,WAAU,iDACX;AAAA,wBAAC,cAAW,eAAW,MAAC,WAAU,qBAAoB;AAAA,IACrD,SACG,6DACA;AAAA,KACN;AAEJ;AAEA,SAAS,WAAW;AAAA,EAClB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAOG;AACD,QAAM,OAAO,mBAAmB,GAAG,OAAO;AAC1C,QAAM,aAAa,2BAA2B,QAAQ,KAAK;AAC3D,QAAM,OAAO,QAAQ,OAAO,WAAW,CAAC,QAAQ,aAAa,aAAa;AAC1E,QAAM,SAAS;AAAA,IACb,SAAS,oBAAC,YAAS,MAAM,oBAAC,QAAK,GAAI;AAAA,IACnC,OAAO;AAAA,IACP,MAAM,CAAC,WAAW,OAAO,GAAG,kBAAkB,GAAG,QAAQ,KAAK,CAAC;AAAA,EACjE;AACA,MAAI,QAAQ,QAAQ;AAClB,WACE;AAAA,MAAC;AAAA;AAAA,QACE,GAAG;AAAA,QACJ,SACE,qBAAC,UAAK,WAAU,uEACd;AAAA,8BAAC,aAAU,eAAW,MAAC,WAAU,YAAW;AAAA,UAAE;AAAA,WAEhD;AAAA;AAAA,IAEJ;AAAA,EAEJ;AAEA,MAAI,CAAC,WAAY,QAAO,oBAAC,WAAS,GAAG,QAAQ,UAAQ,MAAC;AACtD,MAAI,CAAC,OAAQ,QAAO,oBAAC,WAAS,GAAG,QAAQ;AACzC,QAAM,QAAQ,OAAO,uBAAuB,IAAI,KAAK,OAAO,IAAI;AAChE,SACE;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,SACE,UACE;AAAA,QAAC;AAAA;AAAA,UACC,MAAK;AAAA,UACL,MAAK;AAAA,UACL,cAAY;AAAA,UACZ,iBAAe,UAAU;AAAA,UACzB,WAAU;AAAA,UACV,SAAS,MAAM;AACb,gBAAI,CAAC,OAAQ,OAAM;AAAA,UACrB;AAAA,UAEC;AAAA,mBAAO,oBAAC,eAAY,eAAW,MAAC,WAAU,gBAAe,IAAK;AAAA,YAC9D,OAAO,iBAAY;AAAA;AAAA;AAAA,MACtB,IAEA;AAAA,QAAC;AAAA;AAAA,UACC,cAAY;AAAA,UACZ,iBAAe,UAAU;AAAA,UACzB,SAAS,MAAM;AACb,gBAAI,CAAC,OAAQ,OAAM;AAAA,UACrB;AAAA,UAEC;AAAA,mBAAO,oBAAC,eAAY,eAAW,MAAC,WAAU,gBAAe,IAAK;AAAA,YAC9D,OAAO,iBAAY;AAAA;AAAA;AAAA,MACtB;AAAA;AAAA,EAGN;AAEJ;AAuBO,SAAS,kBACd,aACA,OACA,aAA4B,MACf;AACb,QAAM,EAAE,OAAO,IAAI,cAAc;AAEjC,QAAM,YAAY,OAAO,MAAM;AAC/B,YAAU,UAAU;AACpB,QAAM,CAAC,WAAW,YAAY,IAAI,SAAkC,IAAI;AACxE,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,KAAK;AAC5C,QAAM,CAAC,YAAY,aAAa,IAAI,SAAwB,IAAI;AAChE,QAAM,CAAC,cAAc,eAAe,IAAI,SAAwB,IAAI;AACpE,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,KAAK;AAC5C,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAS,KAAK;AAC1C,QAAM,SAAS,cAAc;AAC7B,QAAM,eAAe,UAAU,OAAO,OAAO,UAAU,QAAQ,MAAM,MAAM;AAE3E,YAAU,MAAM;AACd,iBAAa,IAAI;AACjB,eAAW,KAAK;AAChB,cAAU,KAAK;AAAA,EACjB,GAAG,CAAC,YAAY,CAAC;AAEjB,YAAU,MAAM;AACd,oBAAgB,eAAe,OAAO,OAAO,KAAK,IAAI,CAAC;AAAA,EACzD,GAAG,CAAC,UAAU,CAAC;AAEf,YAAU,MAAM;AACd,QAAI,CAAC,gBAAgB,OAAQ;AAC7B,QAAI,YAAY;AAChB,UAAM,OAAO,YAAY;AACvB,UAAI;AACF,cAAM,SAAS,MAAM,UAAU,QAAQ,qBAAqB,WAAW;AACvE,YAAI,UAAW;AACf,cAAM,SAAS,OAAO,QAAQ;AAAA,UAC5B,CAAC,cACC,UAAU,UAAU,eACpB,UAAU,aAAa,uBACtB,iBAAiB,OAAO,UAAU,iBAAiB;AAAA,QACxD;AACA,qBAAa,SAAS,EAAE,MAAM,OAAO,gBAAgB,OAAO,YAAY,IAAI,IAAI;AAChF,mBAAW,IAAI;AAAA,MACjB,SAAS,SAAS;AAEhB,YACE,CAAC,aACD,mBAAmB,oBACnB,QAAQ,UAAU,OAClB,QAAQ,SAAS,KACjB;AACA,oBAAU,IAAI;AAAA,QAChB;AAAA,MACF;AAAA,IACF;AACA,SAAK,KAAK;AACV,QAAI,UAAW,eAAe,QAAQ,iBAAiB,MAAO;AAC5D,aAAO,MAAM,MAAM,YAAY;AAAA,IACjC;AACA,UAAM,QAAQ,OAAO,YAAY,MAAM;AACrC,YAAM,MAAM,KAAK,IAAI;AACrB,YAAM,WAAW,eAAe,QAAQ,MAAM,cAAc;AAC5D,YAAM,aACJ,iBAAiB,QAAQ,MAAM,gBAAgB;AACjD,UAAI,CAAC,YAAY,CAAC,YAAY;AAC5B,eAAO,cAAc,KAAK;AAC1B,YAAI,eAAe,KAAM,YAAW,IAAI;AACxC;AAAA,MACF;AACA,UAAI,SAAS,oBAAoB,SAAU,MAAK,KAAK;AAAA,IACvD,GAAG,cAAc;AACjB,WAAO,MAAM;AACX,kBAAY;AACZ,aAAO,cAAc,KAAK;AAAA,IAC5B;AAAA,EACF,GAAG,CAAC,QAAQ,cAAc,QAAQ,cAAc,YAAY,WAAW,CAAC;AAExE,QAAM,QAAQ,YAAY,MAAM;AAC9B,eAAW,KAAK;AAChB,kBAAc,KAAK,IAAI,CAAC;AAAA,EAC1B,GAAG,CAAC,CAAC;AACL,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU,eAAe,QAAQ,CAAC,UAAU,CAAC,WAAW,CAAC;AAAA,EAC3D;AACF;AAGA,IAAM,0BAA0B;AAChC,IAAM,0BAA0B,IAAI;AACpC,IAAM,yBAAyB;AAM/B,IAAM,kBAID;AAAA,EACH,EAAE,MAAM,oBAAoB,KAAK,mBAAmB,OAAO,mBAAmB;AAAA,EAC9E,EAAE,MAAM,iBAAiB,KAAK,iBAAiB,OAAO,gBAAgB;AAAA,EACtE,EAAE,MAAM,oBAAoB,KAAK,mBAAmB,OAAO,mBAAmB;AAChF;AAEA,SAAS,SAAS,SAA+B;AAC/C,SACE,QAAQ,UAAU,YAClB,QAAQ,UAAU,sBAClB,QAAQ,UAAU;AAEtB;AAQA,SAAS,kBAAkB;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAOG;AACD,QAAM,EAAE,OAAO,IAAI,cAAc;AACjC,QAAM,UAAU,OAAuB,IAAI;AAC3C,QAAM,aAAa,OAAO,OAAO;AACjC,aAAW,UAAU;AACrB,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,KAAK;AACtC,QAAM,CAAC,MAAM,OAAO,IAAI,SAAwB,IAAI;AACpD,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAmC,IAAI;AACnE,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,CAAC;AAC9C,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,KAAK;AAC5C,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAEhD,QAAM,SAAS,SAAS,OAAO;AAC/B,QAAM,UAAU,QAAQ;AACxB,QAAM,UAAU,QAAQ;AAExB,QAAM,UAAU,YAAY,SAAS,aAAa,iBAAiB;AACnE,QAAM,YAAY,SAAS,aAAa,oBAAoB;AAC5D,QAAM,MAAM,QAAQ,OAAO;AAC3B,QAAM,cAAc,MAAO,SAAS,kBAAkB,OAAQ;AAC9D,QAAM,SAAS,QAAQ,0BAA0B,KAAK,KAAK;AAC3D,QAAM,UAAU,cACX,gBAAgB,KAAK,CAAC,SAAS,CAAC,YAAY,KAAK,GAAG,CAAC,KAAK,OAC3D,OAAO,WAAW,QAAQ,oBAAoB,KAAK,MAAM,IACvD,gBAAgB,CAAC,IACjB;AACN,QAAM,WAAW,SAAS,iBAAiB;AAC3C,QAAM,UACH,WAAW,CAAC,WAAW,WAAW,aAAa,aAAa,CAAC,aAAc,WAAW;AAIzF,YAAU,MAAM;AACd,QAAI,WAAW,eAAe,EAAG,eAAc,KAAK,IAAI,IAAI,uBAAuB;AAAA,EACrF,GAAG,CAAC,SAAS,UAAU,CAAC;AAGxB,YAAU,MAAM;AACd,QAAI,CAAC,WAAW,eAAe,EAAG;AAClC,UAAM,QAAQ,OAAO,YAAY,MAAM;AACrC,UAAI,KAAK,IAAI,IAAI,YAAY;AAC3B,eAAO,cAAc,KAAK;AAC1B,mBAAW,IAAI;AACf;AAAA,MACF;AACA,WAAK,WAAW,QAAQ,EAAE,MAAM,MAAM;AAAA,MAAC,CAAC;AAAA,IAC1C,GAAG,sBAAsB;AACzB,WAAO,MAAM,OAAO,cAAc,KAAK;AAAA,EACzC,GAAG,CAAC,SAAS,UAAU,CAAC;AAExB,iBAAe,SAAS;AACtB,QAAI,QAAQ,CAAC,QAAQ,aAAc;AACnC,YAAQ,IAAI;AACZ,YAAQ,IAAI;AACZ,eAAW,KAAK;AAChB,QAAI;AACF,YAAM,SAAS,MAAM,OAAO,2BAA2B,aAAa,QAAQ,YAAY;AACxF,UAAI,OAAO,WAAW,iBAAkB,SAAQ,OAAO,OAAO;AAC9D,mBAAa,OAAO,WAAW,oBAAoB;AACnD,oBAAc,KAAK,IAAI,IAAI,uBAAuB;AAClD,YAAM,WAAW,QAAQ,EAAE,MAAM,MAAM;AAAA,MAAC,CAAC;AAAA,IAC3C,SAAS,SAAS;AAChB;AAAA,QACE,mBAAmB,oBAAoB,QAAQ,WAAW,MACtD,iDACA,cAAc,SAAS,YAAY;AAAA,MACzC;AAAA,IACF,UAAE;AACA,cAAQ,KAAK;AACb,kBAAY,QAAQ,OAAO;AAAA,IAC7B;AAAA,EACF;AAEA,iBAAe,cAAc;AAC3B,QAAI,QAAQ,CAAC,QAAQ,aAAc;AACnC,YAAQ,IAAI;AACZ,YAAQ,IAAI;AACZ,QAAI;AACF,YAAM,OAAO,mBAAmB,aAAa,QAAQ,YAAY;AACjE,iBAAW,KAAK;AAChB,oBAAc,KAAK,IAAI,IAAI,uBAAuB;AAClD,YAAM,WAAW,QAAQ,EAAE,MAAM,MAAM;AAAA,MAAC,CAAC;AAAA,IAC3C,SAAS,SAAS;AAChB,cAAQ,cAAc,SAAS,YAAY,CAAC;AAAA,IAC9C,UAAE;AACA,cAAQ,KAAK;AAAA,IACf;AAAA,EACF;AAEA,iBAAe,SAAS,MAAyB;AAC/C,QAAI,QAAQ,CAAC,QAAQ,aAAc;AACnC,YAAQ,IAAI;AACZ,YAAQ,IAAI;AACZ,QAAI;AACF,YAAM,SAAS,MAAM,OAAO,2BAA2B,aAAa,QAAQ,cAAc;AAAA,QACxF;AAAA,MACF,CAAC;AACD,UAAI,OAAO,QAAQ;AACjB,kBAAU,IAAI;AACd,mBAAW,KAAK;AAChB,sBAAc,KAAK,IAAI,IAAI,uBAAuB;AAAA,MACpD,OAAO;AACL,gBAAQ,OAAO,OAAO;AAAA,MACxB;AAAA,IACF,SAAS,SAAS;AAChB,cAAQ,cAAc,SAAS,YAAY,CAAC;AAAA,IAC9C,UAAE;AACA,cAAQ,KAAK;AAAA,IACf;AAAA,EACF;AAEA,QAAM,SAAS,CAAC,OAAe,YAC7B,qBAAC,aAAU,iBAAe,QAAQ,QAAW,aAAW,QAAQ,QAAW,SACxE;AAAA,WAAO,oBAAC,eAAY,eAAW,MAAC,WAAU,gBAAe,IAAK;AAAA,IAC9D;AAAA,KACH;AAEF,QAAM,OACJ,qBAAC,UAAK,WAAU,uEACd;AAAA,wBAAC,aAAU,eAAW,MAAC,WAAU,YAAW;AAAA,IAAE;AAAA,KAEhD;AAKF,MAAI;AACJ,MAAI,OAAsB;AAC1B,MAAI,UAAqB;AACzB,MAAI,CAAC,SAAS;AACZ,kBAAc,YACV,uCACA;AACJ,QAAI,UAAW,WAAU,OAAO,OAAO,qBAAgB,WAAW,MAAM,KAAK,OAAO,CAAC;AAAA,EACvF,WAAW,CAAC,SAAS;AAEnB,QAAI,WAAW;AACb,oBAAc;AACd,aAAO;AACP,UAAI,UAAW,WAAU,OAAO,iBAAiB,WAAW;AAAA,IAC9D,WAAW,UAAU;AACnB,oBAAc;AAAA,IAChB,WAAW,CAAC,WAAW;AACrB,oBAAc;AACd,aAAO;AACP,UAAI,aAAa,CAAC,SAAS,qBAAqB;AAC9C,kBAAU,OAAO,OAAO,mBAAc,gBAAgB,MAAM,KAAK,YAAY,CAAC;AAAA,MAChF;AAAA,IACF,WAAW,WAAW,MAAM;AAC1B,oBAAc;AACd,UAAI,UAAW,WAAU,OAAO,OAAO,iBAAY,aAAa,MAAM,KAAK,OAAO,CAAC;AAAA,IACrF,OAAO;AACL,oBAAc;AAAA,IAChB;AAAA,EACF,WAAW,SAAS;AAClB,UAAM,QAAQ,WAAW,QAAQ;AAEjC,kBAAc;AACd,WAAO,QACH,wCAAwC,QAAQ,KAAK,IACnD,QAAQ,SAAS,qBAAqB,yCAAyC,EACjF,KACA,SAAS,QAAQ,KAAK;AAC1B,QAAI,aAAa,QAAQ;AACvB,gBAAU,OAAO,QAAQ,eAAe,iBAAiB,MAAM,KAAK,SAAS,QAAQ,IAAI,CAAC;AAAA,IAC5F;AAAA,EACF,WAAW,QAAQ;AACjB,kBAAc;AAAA,EAChB,OAAO;AACL,kBAAc;AACd,cAAU;AAAA,EACZ;AACA,QAAM,SAAS,QAAQ;AAEvB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,aAAU;AAAA,MACV,KAAK;AAAA,MACL,UAAU;AAAA,MACV,WAAU;AAAA,MAEV;AAAA,4BAAC,WAAQ,OAAM,kBAAiB,OAAK,MACnC;AAAA,UAAC;AAAA;AAAA,YACC,SAAS,oBAAC,YAAS,MAAM,oBAAC,eAAY,GAAI;AAAA,YAC1C,OAAM;AAAA,YACN;AAAA,YACA;AAAA;AAAA,QACF,GACF;AAAA,QACA,oBAAC,UAAK,WAAU,WAAU,aAAU,UACjC,mBAAS,GAAG,WAAW,KAAK,MAAM,KAAK,aAC1C;AAAA,QACC,SACC,oBAAC,UAAO,MAAK,WAAU,WAAU,WAC9B,kBACH,IACE;AAAA;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,WAAW,EAAE,QAAQ,YAAY,GAAiD;AACzF,QAAM,EAAE,OAAO,IAAI,cAAc;AAEjC,QAAM,YAAY,qBAAqB,MAAM,EAAE,oBAAoB;AAAA,IACjE,MAAM;AAAA,IACN,YAAY;AAAA,EACd;AACA,SACE,oBAAC,SAAI,aAAU,oBACb,8BAAC,WAAQ,OAAM,UAAS,OAAK,MAC3B;AAAA,IAAC;AAAA;AAAA,MACC,SAAS,oBAAC,YAAS,MAAM,oBAAC,cAAW,GAAI;AAAA,MACzC,OAAM;AAAA,MACN,aACE,OAAO,YACH,GAAG,OAAO,UAAU,IAAI,OAAO,WAAW,KAC1C,OAAO,UAAU,IAAI,OAAO,WAAW;AAAA,MAE7C,SACE,OAAO,YACL,qBAAC,UAAK,WAAU,uEACd;AAAA,4BAAC,aAAU,eAAW,MAAC,WAAU,YAAW;AAAA,QAAE;AAAA,SAEhD,IAEA,oBAAC,UAAO,SAAO,MAAC,MAAK,MAAK,SAAQ,WAAU,WAAU,kBACpD;AAAA,QAAC;AAAA;AAAA,UACC,MAAM,UAAU;AAAA,UAChB,QAAO;AAAA,UACP,KAAI;AAAA,UACJ,SAAS,OAAO;AAAA,UACjB;AAAA;AAAA,YAEC,oBAAC,oBAAiB,eAAW,MAAC;AAAA,YAC9B,oBAAC,UAAK,WAAU,WAAU,wDAA0C;AAAA;AAAA;AAAA,MACtE,GACF;AAAA;AAAA,EAGN,GACF,GACF;AAEJ;","names":[]}
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  useDesktopThisComputer
4
- } from "./chunk-VVCDB2T7.js";
4
+ } from "./chunk-PCJLH45G.js";
5
5
  import {
6
6
  lastSessionMemoryId,
7
7
  readLastSessionId
@@ -14,7 +14,7 @@ import {
14
14
  } from "./chunk-YG6NARQY.js";
15
15
  import {
16
16
  useNavigate
17
- } from "./chunk-MYNUBDU7.js";
17
+ } from "./chunk-VYKW6TB2.js";
18
18
  import {
19
19
  useAppContext
20
20
  } from "./chunk-W6KAUGXO.js";
@@ -233,4 +233,4 @@ export {
233
233
  appShotFileName,
234
234
  AppShotCoordinator
235
235
  };
236
- //# sourceMappingURL=chunk-73SOCVLS.js.map
236
+ //# sourceMappingURL=chunk-AIEXYO2X.js.map
@@ -10,7 +10,7 @@ import {
10
10
  } from "./chunk-4U7SHFQ2.js";
11
11
  import {
12
12
  usePolledValue
13
- } from "./chunk-NAWXARTY.js";
13
+ } from "./chunk-2KO2G3RI.js";
14
14
  import {
15
15
  OpenGeniContext
16
16
  } from "./chunk-TVQCDDSZ.js";
@@ -19,7 +19,7 @@ import {
19
19
  } from "./chunk-TXS65BB2.js";
20
20
  import {
21
21
  useOpenGeniText
22
- } from "./chunk-5JZYPZ72.js";
22
+ } from "./chunk-JFK7NTEA.js";
23
23
 
24
24
  // src/hooks/use-usage.ts
25
25
  import {
@@ -1184,4 +1184,4 @@ export {
1184
1184
  UsageMemberList,
1185
1185
  SessionUsageLimitNotice
1186
1186
  };
1187
- //# sourceMappingURL=chunk-U7TC2XJQ.js.map
1187
+ //# sourceMappingURL=chunk-AJPW3SV4.js.map
@@ -7,7 +7,7 @@ import {
7
7
  } from "./chunk-XEA5BCMA.js";
8
8
  import {
9
9
  useOpenGeniText
10
- } from "./chunk-5JZYPZ72.js";
10
+ } from "./chunk-JFK7NTEA.js";
11
11
 
12
12
  // src/components/session-capability-frame.tsx
13
13
  import { CheckIcon, InfoIcon, ShieldCheckIcon, XIcon } from "lucide-react";
@@ -152,4 +152,4 @@ function SessionCapabilityFrame({
152
152
  export {
153
153
  SessionCapabilityFrame
154
154
  };
155
- //# sourceMappingURL=chunk-HRJQAFKR.js.map
155
+ //# sourceMappingURL=chunk-AX6YJA5U.js.map
@@ -7,20 +7,20 @@ import {
7
7
  } from "./chunk-BIFVNUK4.js";
8
8
  import {
9
9
  FlushFormPage
10
- } from "./chunk-OOEO4MKY.js";
10
+ } from "./chunk-EPWD4KRA.js";
11
11
  import {
12
- FormDialog
13
- } from "./chunk-S7PVL7XH.js";
12
+ Field,
13
+ TextInput
14
+ } from "./chunk-XNTW77T6.js";
14
15
  import {
15
16
  useNavigate
16
- } from "./chunk-MYNUBDU7.js";
17
+ } from "./chunk-VYKW6TB2.js";
18
+ import {
19
+ FormDialog
20
+ } from "./chunk-A4BD4ZVB.js";
17
21
  import {
18
22
  userErrorText
19
23
  } from "./chunk-L4OF77LE.js";
20
- import {
21
- Field,
22
- TextInput
23
- } from "./chunk-XNTW77T6.js";
24
24
 
25
25
  // src/app/components/models/models-ui.tsx
26
26
  import {
@@ -226,4 +226,4 @@ export {
226
226
  useModelsNavigation,
227
227
  RenameAccountDialog
228
228
  };
229
- //# sourceMappingURL=chunk-P5WABK2H.js.map
229
+ //# sourceMappingURL=chunk-BCM7C3MJ.js.map
@@ -3,7 +3,7 @@ import {
3
3
  useMutationRunner,
4
4
  usePolledValue,
5
5
  useSessionEventTrigger
6
- } from "./chunk-NAWXARTY.js";
6
+ } from "./chunk-2KO2G3RI.js";
7
7
  import {
8
8
  useOpenGeni
9
9
  } from "./chunk-TVQCDDSZ.js";
@@ -104,4 +104,4 @@ export {
104
104
  isModelAccountEvent,
105
105
  useSessionModelAccount
106
106
  };
107
- //# sourceMappingURL=chunk-DT7BORXG.js.map
107
+ //# sourceMappingURL=chunk-BMJTNPWK.js.map
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-TVQCDDSZ.js";
5
5
  import {
6
6
  useOpenGeniText
7
- } from "./chunk-5JZYPZ72.js";
7
+ } from "./chunk-JFK7NTEA.js";
8
8
 
9
9
  // src/realtime/session-realtime.ts
10
10
  import {
@@ -596,4 +596,4 @@ export {
596
596
  sessionRealtimeLifecycleIsActive,
597
597
  useRealtimeModelSelection
598
598
  };
599
- //# sourceMappingURL=chunk-HIHO2QE7.js.map
599
+ //# sourceMappingURL=chunk-BT2MVGHT.js.map
@@ -2,13 +2,13 @@
2
2
  import {
3
3
  ErrorMessage
4
4
  } from "./chunk-WHWUWN2X.js";
5
+ import {
6
+ Skeleton
7
+ } from "./chunk-HY7EYWIG.js";
5
8
  import {
6
9
  apiErrorTechnicalFacts,
7
10
  userErrorTextWithoutReference
8
11
  } from "./chunk-L4OF77LE.js";
9
- import {
10
- Skeleton
11
- } from "./chunk-HY7EYWIG.js";
12
12
  import {
13
13
  Button
14
14
  } from "./chunk-HMU5IELG.js";
@@ -620,4 +620,4 @@ export {
620
620
  buildDiffRows,
621
621
  DiffView
622
622
  };
623
- //# sourceMappingURL=chunk-3XOISKZC.js.map
623
+ //# sourceMappingURL=chunk-BXQYAAVE.js.map
@@ -13,7 +13,7 @@ import {
13
13
  useNavigate,
14
14
  useSearch,
15
15
  useStringifySearch
16
- } from "./chunk-MYNUBDU7.js";
16
+ } from "./chunk-VYKW6TB2.js";
17
17
 
18
18
  // src/app/components/artifacts/artifact-page-chrome.tsx
19
19
  import {
@@ -94,4 +94,4 @@ export {
94
94
  useArtifactFullView,
95
95
  useArtifactsBackLink
96
96
  };
97
- //# sourceMappingURL=chunk-IBTXYLBW.js.map
97
+ //# sourceMappingURL=chunk-CCFWY4GF.js.map
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-TXS65BB2.js";
5
5
  import {
6
6
  useOpenGeniText
7
- } from "./chunk-5JZYPZ72.js";
7
+ } from "./chunk-JFK7NTEA.js";
8
8
 
9
9
  // src/components/artifacts/artifact-chrome.tsx
10
10
  import { OpenGeniApiError } from "@opengeni/sdk";
@@ -299,4 +299,4 @@ export {
299
299
  artifactLoadErrorView,
300
300
  artifactLoadErrorMessage
301
301
  };
302
- //# sourceMappingURL=chunk-ZOC3OP6F.js.map
302
+ //# sourceMappingURL=chunk-CCR33J7L.js.map
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  sessionInputWait
4
- } from "./chunk-Z5WMLJKI.js";
4
+ } from "./chunk-22JFMNMF.js";
5
5
  import {
6
6
  sessionDisplayStatus
7
7
  } from "./chunk-DHXKEJBH.js";
@@ -104,4 +104,4 @@ export {
104
104
  visualTreeDepth,
105
105
  sessionControlPaused
106
106
  };
107
- //# sourceMappingURL=chunk-GTQ3SNEI.js.map
107
+ //# sourceMappingURL=chunk-CD3MO3IC.js.map
@@ -6,15 +6,15 @@ import {
6
6
  buildAdditionalRepositoryResources,
7
7
  repositorySelectionFromResources
8
8
  } from "./chunk-L6Y4ALSM.js";
9
- import {
10
- hasWorkspacePermission
11
- } from "./chunk-FIDD34ZF.js";
12
9
  import {
13
10
  toast
14
11
  } from "./chunk-YG6NARQY.js";
15
12
  import {
16
13
  usePage
17
- } from "./chunk-MYNUBDU7.js";
14
+ } from "./chunk-VYKW6TB2.js";
15
+ import {
16
+ hasWorkspacePermission
17
+ } from "./chunk-FIDD34ZF.js";
18
18
  import {
19
19
  useAppContext
20
20
  } from "./chunk-W6KAUGXO.js";
@@ -605,4 +605,4 @@ export {
605
605
  useRepositoryCatalogRefresh,
606
606
  useFollowUpRepositories
607
607
  };
608
- //# sourceMappingURL=chunk-WSMYOLHG.js.map
608
+ //# sourceMappingURL=chunk-CDEXRJB6.js.map
@@ -5,20 +5,20 @@ import {
5
5
  import {
6
6
  inAppClick
7
7
  } from "./chunk-WHMKC7OQ.js";
8
- import {
9
- FormDialog,
10
- FormFrame
11
- } from "./chunk-S7PVL7XH.js";
12
8
  import {
13
9
  destructiveActionFocusTarget
14
10
  } from "./chunk-Q27G7PF6.js";
15
- import {
16
- toast
17
- } from "./chunk-YG6NARQY.js";
18
11
  import {
19
12
  Field,
20
13
  TextInput
21
14
  } from "./chunk-XNTW77T6.js";
15
+ import {
16
+ toast
17
+ } from "./chunk-YG6NARQY.js";
18
+ import {
19
+ FormDialog,
20
+ FormFrame
21
+ } from "./chunk-A4BD4ZVB.js";
22
22
  import {
23
23
  Button
24
24
  } from "./chunk-HMU5IELG.js";
@@ -347,4 +347,4 @@ export {
347
347
  UndoToast,
348
348
  showUndoToast
349
349
  };
350
- //# sourceMappingURL=chunk-3GLAPCVI.js.map
350
+ //# sourceMappingURL=chunk-CFFNT2OY.js.map
@@ -1,33 +1,33 @@
1
1
  "use client";
2
2
  import {
3
3
  ComposerMobilePlus
4
- } from "./chunk-O756O2I7.js";
4
+ } from "./chunk-FWOBNL2A.js";
5
5
  import {
6
6
  startMcpOAuthWithTimeout
7
7
  } from "./chunk-HUKUDAIP.js";
8
8
  import {
9
9
  composerConnectorOptions
10
- } from "./chunk-X7ASQHR6.js";
10
+ } from "./chunk-4SAGYEVB.js";
11
11
  import {
12
12
  capabilityReconnectPlan,
13
13
  connectionHealth
14
14
  } from "./chunk-22NENBA3.js";
15
- import {
16
- hasWorkspacePermission,
17
- isWorkspacePermissionDenied
18
- } from "./chunk-FIDD34ZF.js";
19
15
  import {
20
16
  toast
21
17
  } from "./chunk-YG6NARQY.js";
22
18
  import {
23
19
  usePage
24
- } from "./chunk-MYNUBDU7.js";
20
+ } from "./chunk-VYKW6TB2.js";
25
21
  import {
26
- userErrorText
27
- } from "./chunk-L4OF77LE.js";
22
+ hasWorkspacePermission,
23
+ isWorkspacePermissionDenied
24
+ } from "./chunk-FIDD34ZF.js";
28
25
  import {
29
26
  useAppContext
30
27
  } from "./chunk-W6KAUGXO.js";
28
+ import {
29
+ userErrorText
30
+ } from "./chunk-L4OF77LE.js";
31
31
 
32
32
  // src/app/components/workspace-composer-plus.tsx
33
33
  import { useCallback, useEffect, useRef, useState } from "react";
@@ -264,4 +264,4 @@ function WorkspaceComposerPlus(props) {
264
264
  export {
265
265
  WorkspaceComposerPlus
266
266
  };
267
- //# sourceMappingURL=chunk-HO5Y2OOX.js.map
267
+ //# sourceMappingURL=chunk-CMLJSF2F.js.map
@@ -5,15 +5,6 @@ import {
5
5
  import {
6
6
  SegmentedControl
7
7
  } from "./chunk-325C2TCI.js";
8
- import {
9
- FormDialog
10
- } from "./chunk-S7PVL7XH.js";
11
- import {
12
- toast
13
- } from "./chunk-YG6NARQY.js";
14
- import {
15
- useAppContext
16
- } from "./chunk-W6KAUGXO.js";
17
8
  import {
18
9
  DropdownMenu,
19
10
  DropdownMenuContent,
@@ -25,6 +16,15 @@ import {
25
16
  Field,
26
17
  FieldStack
27
18
  } from "./chunk-XNTW77T6.js";
19
+ import {
20
+ toast
21
+ } from "./chunk-YG6NARQY.js";
22
+ import {
23
+ useAppContext
24
+ } from "./chunk-W6KAUGXO.js";
25
+ import {
26
+ FormDialog
27
+ } from "./chunk-A4BD4ZVB.js";
28
28
 
29
29
  // src/app/components/session/session-admin-access.tsx
30
30
  import { ShieldCheckIcon } from "lucide-react";
@@ -236,4 +236,4 @@ export {
236
236
  SessionAdminAccessIndicator,
237
237
  GrantSessionAdminAccessDialog
238
238
  };
239
- //# sourceMappingURL=chunk-RA3FNMWF.js.map
239
+ //# sourceMappingURL=chunk-CP7ZQHBW.js.map
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  t
4
- } from "./chunk-HPPKLBTJ.js";
4
+ } from "./chunk-TJQDL3JH.js";
5
5
  import {
6
6
  orgLabel
7
7
  } from "./chunk-NRP4REXE.js";
@@ -47,4 +47,4 @@ export {
47
47
  authorizedWorkspaceFromList,
48
48
  resolveWorkspaceScopeContext
49
49
  };
50
- //# sourceMappingURL=chunk-IOKSNX74.js.map
50
+ //# sourceMappingURL=chunk-D5OWJZQR.js.map