@opengeni/react 6.7.0 → 6.8.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 (758) hide show
  1. package/dist/app/app-state.js +9 -9
  2. package/dist/app/components/Composer.js +20 -20
  3. package/dist/app/components/agent/agent-capability-picker.js +6 -6
  4. package/dist/app/components/artifacts/artifact-browse-controls.js +2 -2
  5. package/dist/app/components/artifacts/artifact-library.js +13 -13
  6. package/dist/app/components/artifacts/artifact-viewer.js +21 -21
  7. package/dist/app/components/artifacts/chat-interactive-block.js +14 -14
  8. package/dist/app/components/artifacts/copy-artifact-link.js +2 -2
  9. package/dist/app/components/artifacts/file-reach-dialog.js +7 -7
  10. package/dist/app/components/artifacts/inline-chat-image.js +22 -22
  11. package/dist/app/components/artifacts/retained-file-preview.js +23 -23
  12. package/dist/app/components/artifacts/retained-text-preview.js +3 -3
  13. package/dist/app/components/artifacts/site-actions.d.ts +43 -0
  14. package/dist/app/components/artifacts/site-actions.js +38 -0
  15. package/dist/app/components/artifacts/site-audience.js +5 -5
  16. package/dist/app/components/artifacts/site-conversations.js +13 -13
  17. package/dist/app/components/artifacts/site-data.js +14 -14
  18. package/dist/app/components/artifacts/site-publishing-page.js +31 -31
  19. package/dist/app/components/artifacts/site-publishing.js +25 -25
  20. package/dist/app/components/artifacts/site-settings.js +30 -30
  21. package/dist/app/components/artifacts/site-version-menu.js +3 -3
  22. package/dist/app/components/billing-class-mark.js +3 -3
  23. package/dist/app/components/bots/bot-launch-strip.js +23 -23
  24. package/dist/app/components/bots/bot-template-dialog.js +30 -30
  25. package/dist/app/components/bots/bot-template-shortcuts.js +23 -23
  26. package/dist/app/components/bots/bot-templates-page.js +37 -37
  27. package/dist/app/components/capabilities/capability-detail-sheet.js +9 -9
  28. package/dist/app/components/capabilities/capability-logo-source.js +14 -15
  29. package/dist/app/components/capabilities/connection-ownership-selector.js +4 -4
  30. package/dist/app/components/capabilities/connector-tool-permissions.js +4 -4
  31. package/dist/app/components/capabilities/detail-dialog.js +3 -3
  32. package/dist/app/components/capabilities/native-connect-setup.js +16 -17
  33. package/dist/app/components/capabilities/native-connect-setup.js.map +1 -1
  34. package/dist/app/components/capabilities/own-logins-shared-heads-up.js +3 -3
  35. package/dist/app/components/capabilities/prepared-mcp-setup-card.js +16 -17
  36. package/dist/app/components/capabilities/session-capability-card.js +49 -50
  37. package/dist/app/components/capabilities/session-capability-card.js.map +1 -1
  38. package/dist/app/components/capabilities/session-chrome-card.js +24 -25
  39. package/dist/app/components/capabilities/session-custom-mcp-card.js +17 -18
  40. package/dist/app/components/capabilities/session-github-card.js +17 -18
  41. package/dist/app/components/capabilities/session-machine-card.js +23 -24
  42. package/dist/app/components/capabilities/session-personal-github-card.js +15 -16
  43. package/dist/app/components/capabilities/session-plugin-card.js +9 -10
  44. package/dist/app/components/capabilities/use-connection-accounts.js +2 -2
  45. package/dist/app/components/command-menu/chat-status.js +19 -19
  46. package/dist/app/components/command-menu/chat-switcher.js +35 -35
  47. package/dist/app/components/command-menu/command-menu.js +42 -42
  48. package/dist/app/components/command-menu/shortcut-sheet.js +11 -11
  49. package/dist/app/components/composer-capabilities-menu-body.js +4 -4
  50. package/dist/app/components/composer-mobile-plus-panel.js +10 -10
  51. package/dist/app/components/composer-mobile-plus.js +3 -3
  52. package/dist/app/components/credit-required-gate.js +1 -1
  53. package/dist/app/components/credit-required-prompt.js +4 -4
  54. package/dist/app/components/credits/checkout-credits-celebration.js +3 -3
  55. package/dist/app/components/credits/checkout-return.js +3 -3
  56. package/dist/app/components/credits/credit-refusal-notice.js +2 -2
  57. package/dist/app/components/desktop/app-shots.js +6 -6
  58. package/dist/app/components/desktop/computer-use.js +2 -2
  59. package/dist/app/components/desktop/this-computer.js +5 -5
  60. package/dist/app/components/feedback.js +5 -5
  61. package/dist/app/components/github-app-connect-launcher.js +1 -1
  62. package/dist/app/components/machines/connect-machine-dialog.js +14 -14
  63. package/dist/app/components/markdown.js +7 -7
  64. package/dist/app/components/models/models-ui.js +6 -6
  65. package/dist/app/components/my-things.js +6 -6
  66. package/dist/app/components/own-where-it-works.js +5 -5
  67. package/dist/app/components/personal-resource-attachment-surface.js +4 -4
  68. package/dist/app/components/pickers.js +5 -5
  69. package/dist/app/components/rail/channel-create-dialog.js +5 -5
  70. package/dist/app/components/rail/project-glyph.js +23 -23
  71. package/dist/app/components/rail/project-profile.js +32 -32
  72. package/dist/app/components/rail/rail-context.js +1 -1
  73. package/dist/app/components/rail/rail-sections.js +70 -61
  74. package/dist/app/components/rail/session-header.js +54 -53
  75. package/dist/app/components/rail/session-list.js +68 -59
  76. package/dist/app/components/rail/session-row-content.js +4 -4
  77. package/dist/app/components/rail/session-row-hover-details.js +18 -18
  78. package/dist/app/components/rail/session-shell.js +89 -80
  79. package/dist/app/components/rail/site-session-group-heading.js +29 -12
  80. package/dist/app/components/session/agent-configuration-panel.js +14 -14
  81. package/dist/app/components/session/artifact-session-page.js +5 -5
  82. package/dist/app/components/session/banners.js +9 -9
  83. package/dist/app/components/session/console-new-conversation.js +43 -44
  84. package/dist/app/components/session/descendant-requests.js +39 -40
  85. package/dist/app/components/session/descendant-requests.js.map +1 -1
  86. package/dist/app/components/session/editable-artifacts-workspace.js +27 -27
  87. package/dist/app/components/session/failed-session-banner.js +9 -9
  88. package/dist/app/components/session/failure-recovery-boundary.js +3 -3
  89. package/dist/app/components/session/human-input-delegation-record.js +2 -2
  90. package/dist/app/components/session/human-input.js +37 -38
  91. package/dist/app/components/session/inspector.js +47 -48
  92. package/dist/app/components/session/inspector.js.map +1 -1
  93. package/dist/app/components/session/message-actions.js +5 -5
  94. package/dist/app/components/session/message-resource-attachments.js +13 -13
  95. package/dist/app/components/session/model-recovery-notice.js +3 -3
  96. package/dist/app/components/session/new-session-settings-menu.js +6 -6
  97. package/dist/app/components/session/new-session-setup-strip.js +24 -24
  98. package/dist/app/components/session/sandbox-recovery-actions.js +5 -5
  99. package/dist/app/components/session/sandbox-switcher.js +8 -8
  100. package/dist/app/components/session/sandbox-workspace.js +52 -53
  101. package/dist/app/components/session/search-markdown-highlight.js +8 -8
  102. package/dist/app/components/session/search-results-view.js +9 -9
  103. package/dist/app/components/session/session-admin-access.js +5 -5
  104. package/dist/app/components/session/session-admission-notice.js +4 -4
  105. package/dist/app/components/session/session-avatar-picker.js +24 -24
  106. package/dist/app/components/session/session-avatar.js +22 -22
  107. package/dist/app/components/session/session-machine-access-notice.js +4 -4
  108. package/dist/app/components/session/session-profile-dialog.js +29 -29
  109. package/dist/app/components/session/session-profile-editor.js +30 -30
  110. package/dist/app/components/session/session-retention.js +3 -3
  111. package/dist/app/components/session/session-search-dialog.js +11 -11
  112. package/dist/app/components/session/session-tenancy-control.js +4 -4
  113. package/dist/app/components/session/session-usage-limit-section.js +4 -4
  114. package/dist/app/components/session/share-chat-dialog.js +7 -7
  115. package/dist/app/components/session/subagents.js +12 -12
  116. package/dist/app/components/session/subscription-account-indicator.js +6 -6
  117. package/dist/app/components/settings/row-select.js +4 -4
  118. package/dist/app/components/transcription-settings.js +6 -6
  119. package/dist/app/components/ui/destructive-confirm.js +7 -7
  120. package/dist/app/components/usage/usage-entry.js +3 -3
  121. package/dist/app/components/window-bar.d.ts +3 -1
  122. package/dist/app/components/window-bar.js +13 -11
  123. package/dist/app/components/workspace-composer-plus.js +19 -20
  124. package/dist/app/components/workspace-reach.js +4 -4
  125. package/dist/app/embed/session-app.js +173 -167
  126. package/dist/app/lib/actions/actions-provider.js +9 -9
  127. package/dist/app/lib/agent-capabilities.js +3 -3
  128. package/dist/app/lib/codex-usage-query.js +2 -2
  129. package/dist/app/lib/composer-connectors.js +15 -16
  130. package/dist/app/lib/composer-send-blocking.d.ts +135 -1
  131. package/dist/app/lib/composer-send-blocking.js +30 -3
  132. package/dist/app/lib/console-site.js +2 -2
  133. package/dist/app/lib/console-text.js +2 -2
  134. package/dist/app/lib/copy-link.d.ts +2 -0
  135. package/dist/app/lib/events.js +15 -15
  136. package/dist/app/lib/failed-session-copy.js +4 -4
  137. package/dist/app/lib/model-access-onboarding.js +3 -3
  138. package/dist/app/lib/model-access.js +2 -2
  139. package/dist/app/lib/move-chat-to-machine.js +3 -3
  140. package/dist/app/lib/session-branch-cache.js +12 -12
  141. package/dist/app/lib/session-composer-readiness.d.ts +2 -2
  142. package/dist/app/lib/session-create.js +4 -4
  143. package/dist/app/lib/session-group-pagination.js +12 -12
  144. package/dist/app/lib/session-hover-facts.js +17 -17
  145. package/dist/app/lib/session-model.js +2 -2
  146. package/dist/app/lib/session-rail.js +9 -9
  147. package/dist/app/lib/session-rename.js +3 -3
  148. package/dist/app/lib/sessions-group.js +11 -11
  149. package/dist/app/lib/site-sidebar-bridge.d.ts +24 -0
  150. package/dist/app/lib/site-tool-consent-dialog.js +9 -10
  151. package/dist/app/lib/site-tool-consent-dialog.js.map +1 -1
  152. package/dist/app/lib/site-tool-consent.js +1 -1
  153. package/dist/app/lib/turn-failure-analytics.js +5 -5
  154. package/dist/app/lib/use-follow-up-repositories.js +5 -5
  155. package/dist/app/lib/use-workspace-machines.js +5 -5
  156. package/dist/app/lib/use-workspace-model-catalog.js +3 -3
  157. package/dist/app/lib/use-workspace-rigs.js +2 -2
  158. package/dist/app/lib/workspace-navigation-preference.js +4 -4
  159. package/dist/app/lib/workspace-scope-context.js +3 -3
  160. package/dist/app/routes/artifacts.js +69 -69
  161. package/dist/app/routes/retained-artifact.js +48 -48
  162. package/dist/app/routes/session.js +100 -101
  163. package/dist/app/routes/sessions-index-hydration.js +5 -5
  164. package/dist/app/routes/sessions-index.js +85 -85
  165. package/dist/app/routes/site-view.js +177 -85
  166. package/dist/app/routes/site-view.js.map +1 -1
  167. package/dist/artifacts-document.js +4 -4
  168. package/dist/artifacts-presentation.js +4 -4
  169. package/dist/artifacts-spreadsheet.js +4 -4
  170. package/dist/artifacts.js +13 -13
  171. package/dist/automations.js +12 -12
  172. package/dist/{browser-viewer-TC27OCIP.js → browser-viewer-ZHQDVHZ2.js} +5 -5
  173. package/dist/{chat-interactive-block-RWPQBHVS.js → chat-interactive-block-VSDD6X3M.js} +5 -5
  174. package/dist/{chunk-5MOJZORA.js → chunk-2EA4IRIP.js} +34 -3
  175. package/dist/chunk-2EA4IRIP.js.map +1 -0
  176. package/dist/{chunk-C43KRXGA.js → chunk-2GCHGWNE.js} +3 -3
  177. package/dist/{chunk-XLH7QY2R.js → chunk-2J77TWGH.js} +3 -3
  178. package/dist/{chunk-77WAKEAH.js → chunk-2OXSB2OL.js} +2 -2
  179. package/dist/{chunk-H3T7IWNA.js → chunk-2VJOSU4H.js} +2 -2
  180. package/dist/{chunk-N6AACDUW.js → chunk-34NV52R3.js} +4 -4
  181. package/dist/{chunk-L7YTNTIK.js → chunk-3CDJSKDW.js} +3 -3
  182. package/dist/{chunk-EWSOC6WF.js → chunk-3DRLCX5V.js} +2 -2
  183. package/dist/{chunk-JEUPAVYY.js → chunk-3L465FBR.js} +6 -6
  184. package/dist/{chunk-5NWEKLDZ.js → chunk-3NNAC43A.js} +2 -2
  185. package/dist/{chunk-EDI6SJ2N.js → chunk-3OK7Y6ES.js} +2 -2
  186. package/dist/{chunk-AWKES45Y.js → chunk-3PM3M2Q6.js} +2 -2
  187. package/dist/{chunk-I7XIZRFD.js → chunk-3PZ3LRPV.js} +3 -3
  188. package/dist/{chunk-AW2MQB37.js → chunk-44JWVYJB.js} +2 -2
  189. package/dist/{chunk-2M3J7ZWQ.js → chunk-467WDSOK.js} +2 -2
  190. package/dist/{chunk-UTIAXH52.js → chunk-477DTTMH.js} +3 -3
  191. package/dist/{chunk-J5F5HPPW.js → chunk-4BWMAGJJ.js} +3 -3
  192. package/dist/{chunk-YSJEAAOL.js → chunk-4F3AEJI6.js} +4 -4
  193. package/dist/{chunk-LHPNABDH.js → chunk-4JXPLTWV.js} +2 -2
  194. package/dist/{chunk-RQKLF42C.js → chunk-4K64EKM7.js} +4 -4
  195. package/dist/{chunk-NUNZS36W.js → chunk-4O2XWOLZ.js} +3 -3
  196. package/dist/{chunk-QB2KMIDP.js → chunk-4SJAEPM2.js} +2 -2
  197. package/dist/{chunk-6JHU2UBS.js → chunk-4Z5X7PLC.js} +3 -3
  198. package/dist/{chunk-2STUPWEL.js → chunk-54U6ZBEX.js} +3 -3
  199. package/dist/{chunk-XXSOHN35.js → chunk-5FLYHX5R.js} +2 -2
  200. package/dist/{chunk-MIYFS2XN.js → chunk-5MHMCE2G.js} +3 -3
  201. package/dist/{chunk-YWVI6ZMK.js → chunk-5MIBQ4P5.js} +2 -2
  202. package/dist/chunk-6B73WNLR.js +173 -0
  203. package/dist/chunk-6B73WNLR.js.map +1 -0
  204. package/dist/{chunk-5O2FCCHZ.js → chunk-6QK65ZWM.js} +3 -3
  205. package/dist/{chunk-RPVREAU7.js → chunk-736RUNIA.js} +4 -4
  206. package/dist/{chunk-2KALVELR.js → chunk-74CBR5YE.js} +3 -3
  207. package/dist/{chunk-5IE76VCY.js → chunk-752WXSDN.js} +2 -2
  208. package/dist/{chunk-OPJJSKUK.js → chunk-77B6UCNK.js} +6 -6
  209. package/dist/{chunk-SEO7TICN.js → chunk-77BHKC43.js} +1 -1
  210. package/dist/{chunk-ZUA3JMI6.js → chunk-77SYIH6O.js} +2 -2
  211. package/dist/{chunk-ILDXWY37.js → chunk-7AI4E7PV.js} +2 -2
  212. package/dist/{chunk-C372BFOV.js → chunk-7NLF35YL.js} +4 -4
  213. package/dist/{chunk-IFB3WJ36.js → chunk-7YTR3UFO.js} +4 -4
  214. package/dist/{chunk-BMICEQZQ.js → chunk-7Z76QP64.js} +3 -3
  215. package/dist/{chunk-YWIFM7D7.js → chunk-AAS7OWV6.js} +3 -3
  216. package/dist/{chunk-5QAY6K77.js → chunk-AB5IW227.js} +3 -3
  217. package/dist/{chunk-ZBIXBQNI.js → chunk-ABJZDRW2.js} +2 -2
  218. package/dist/{chunk-4DVJ6ONS.js → chunk-AH3DGOTK.js} +2 -2
  219. package/dist/{chunk-HGKTHF2U.js → chunk-AJBDAVX3.js} +8 -8
  220. package/dist/{chunk-5YKW2K6I.js → chunk-AJDGP2N4.js} +20 -20
  221. package/dist/{chunk-HD5X76TP.js → chunk-AQQT2FIC.js} +5 -5
  222. package/dist/chunk-AQQT2FIC.js.map +1 -0
  223. package/dist/{chunk-SC6RRD2D.js → chunk-ARTEEI2E.js} +11 -2
  224. package/dist/{chunk-SC6RRD2D.js.map → chunk-ARTEEI2E.js.map} +1 -1
  225. package/dist/{chunk-IXPTECSC.js → chunk-AVXDIRRW.js} +2 -2
  226. package/dist/{chunk-QK5EFEUT.js → chunk-BASI553K.js} +4 -4
  227. package/dist/{chunk-CRU35QQH.js → chunk-BFFNINCC.js} +108 -66
  228. package/dist/chunk-BFFNINCC.js.map +1 -0
  229. package/dist/{chunk-Z4FMAFNH.js → chunk-BQYRZIZ7.js} +2 -2
  230. package/dist/{chunk-DZXEDSQI.js → chunk-CEMSIU4Z.js} +5 -5
  231. package/dist/{chunk-FZC5N55X.js → chunk-CH4UQ4NO.js} +5 -5
  232. package/dist/{chunk-7X6SDK2C.js → chunk-CHU3RDV4.js} +3 -3
  233. package/dist/{chunk-Y4OBB2VN.js → chunk-CV4VVLPZ.js} +2 -2
  234. package/dist/{chunk-JQL7ZH6C.js → chunk-CXAN2FHF.js} +7 -7
  235. package/dist/{chunk-F2OPHAUN.js → chunk-CYDXCILL.js} +7 -7
  236. package/dist/{chunk-3PZ7JZI2.js → chunk-D3PTVN2I.js} +2 -2
  237. package/dist/{chunk-FPXASDG5.js → chunk-D5TIVCXG.js} +2 -2
  238. package/dist/{chunk-7W37NS3I.js → chunk-D74Z2N4K.js} +2 -2
  239. package/dist/{chunk-MNZG4OHU.js → chunk-DCEQCGVN.js} +2 -2
  240. package/dist/{chunk-ND2BXV3P.js → chunk-DEHLWZSI.js} +4 -4
  241. package/dist/{chunk-2YUOVM3G.js → chunk-DIP7YALH.js} +2 -2
  242. package/dist/{chunk-6PZ7OBYU.js → chunk-DLVIRJGK.js} +4 -4
  243. package/dist/{chunk-KLEUWIMZ.js → chunk-DQPIEQGP.js} +2 -2
  244. package/dist/{chunk-T2QX3FDP.js → chunk-DWJ6J3YW.js} +4 -4
  245. package/dist/{chunk-3CPWWGNK.js → chunk-E5KOWRDU.js} +2 -2
  246. package/dist/{chunk-6WGRDRMA.js → chunk-EBIVTDEG.js} +2 -2
  247. package/dist/{chunk-KUDGXAF7.js → chunk-EBTUPRRQ.js} +10 -10
  248. package/dist/{chunk-5CPEEAFD.js → chunk-EDDKPIIV.js} +2 -2
  249. package/dist/{chunk-TX3VECZU.js → chunk-EGKARC53.js} +2 -2
  250. package/dist/{chunk-JEA3QDX7.js → chunk-EKJHOWTZ.js} +4 -4
  251. package/dist/{chunk-UVN5TMHU.js → chunk-ESXAECZ3.js} +2 -2
  252. package/dist/{chunk-3SOIESJM.js → chunk-EWZ2RLNG.js} +2 -2
  253. package/dist/{chunk-CMKGILJK.js → chunk-FBA2NXYH.js} +4 -4
  254. package/dist/{chunk-O6N4ABCA.js → chunk-FER6EVIY.js} +2 -2
  255. package/dist/{chunk-DF5EAHDN.js → chunk-FLWQJDJ5.js} +5 -5
  256. package/dist/{chunk-PTAG4PDC.js → chunk-FNXCFIPW.js} +2 -2
  257. package/dist/chunk-FPSS23S4.js +36 -0
  258. package/dist/chunk-FPSS23S4.js.map +1 -0
  259. package/dist/{chunk-BJEJFISW.js → chunk-FSDQQQIA.js} +3 -3
  260. package/dist/{chunk-PTF5B7TJ.js → chunk-G5UQBTXY.js} +2 -2
  261. package/dist/{chunk-4E3ZJRTZ.js → chunk-G6ICCGJ3.js} +2 -2
  262. package/dist/{chunk-NRTE7DNV.js → chunk-GIWFLWXG.js} +4 -4
  263. package/dist/{chunk-MM4FNWI4.js → chunk-GMHIOYB7.js} +4 -4
  264. package/dist/{chunk-6DK6Z4UN.js → chunk-GOCODNQS.js} +3 -3
  265. package/dist/{chunk-TPQTRNER.js → chunk-GSCGKJNK.js} +2 -2
  266. package/dist/{chunk-7VMZGLYI.js → chunk-GTHCHCWW.js} +3 -3
  267. package/dist/{chunk-SQJIKMN3.js → chunk-GTRAH4FG.js} +2 -2
  268. package/dist/{chunk-ZYAZUPPV.js → chunk-GU7T2S5N.js} +3 -3
  269. package/dist/{chunk-JKHKLL5W.js → chunk-H6BX6WOW.js} +3 -3
  270. package/dist/{chunk-IMZCQBOT.js → chunk-H6MJFMHZ.js} +3 -3
  271. package/dist/{chunk-HSOXMJOT.js → chunk-HEGV4QMS.js} +2 -2
  272. package/dist/chunk-HROITVQJ.js +85 -0
  273. package/dist/chunk-HROITVQJ.js.map +1 -0
  274. package/dist/{chunk-OF4TIKYC.js → chunk-HTMQGS63.js} +17 -9
  275. package/dist/chunk-HTMQGS63.js.map +1 -0
  276. package/dist/{chunk-NC7PVOEK.js → chunk-HWVPLFIW.js} +2 -2
  277. package/dist/{chunk-IMDQUHBJ.js → chunk-HYEIA25Y.js} +2 -2
  278. package/dist/{chunk-ECJBYNLJ.js → chunk-ICAMYP5M.js} +2 -2
  279. package/dist/{chunk-DJAXC5OK.js → chunk-IFSXVU2S.js} +2 -2
  280. package/dist/{chunk-I4MRDSUF.js → chunk-IJR6VOLU.js} +3 -3
  281. package/dist/{chunk-YCVD6CI3.js → chunk-IN3VQFKS.js} +2 -2
  282. package/dist/{chunk-BJFH6JI5.js → chunk-IZXYFWA4.js} +13 -13
  283. package/dist/{chunk-MFROMEKA.js → chunk-J2BTILRR.js} +3 -3
  284. package/dist/{chunk-NCYMNCJO.js → chunk-J2WY42FA.js} +2 -2
  285. package/dist/{chunk-DGMR6JEJ.js → chunk-J4XSTXZP.js} +2 -2
  286. package/dist/{chunk-ZTPXACWB.js → chunk-JKL5S7UQ.js} +6 -6
  287. package/dist/{chunk-P77WNZDY.js → chunk-JMHEFZOB.js} +2 -2
  288. package/dist/{chunk-IDANQPRH.js → chunk-JV3UI7BH.js} +3 -3
  289. package/dist/{chunk-NW53H5RW.js → chunk-JV5ULONH.js} +166 -65
  290. package/dist/chunk-JV5ULONH.js.map +1 -0
  291. package/dist/{chunk-FVXBNBHO.js → chunk-K3D7IQQP.js} +6 -6
  292. package/dist/{chunk-XEQMZB3C.js → chunk-K4DQS2ML.js} +24 -6
  293. package/dist/chunk-K4DQS2ML.js.map +1 -0
  294. package/dist/{chunk-GKVJIDHF.js → chunk-KFNZZ2N6.js} +2 -2
  295. package/dist/{chunk-I4QEJ62Y.js → chunk-KI46GKMD.js} +7 -7
  296. package/dist/{chunk-SIRLACNZ.js → chunk-KO3OHHY2.js} +3 -3
  297. package/dist/{chunk-NULUNM7H.js → chunk-KUE5BOQE.js} +5 -5
  298. package/dist/{chunk-O3LKCBP5.js → chunk-LIJNVIT3.js} +3 -3
  299. package/dist/{chunk-JWB44UGJ.js → chunk-LIJPDVYP.js} +2 -2
  300. package/dist/{chunk-KYS77RPN.js → chunk-LPKJ77EK.js} +2 -2
  301. package/dist/{chunk-RMFKVOM7.js → chunk-LQKVNREV.js} +4 -4
  302. package/dist/{chunk-E7XERZWC.js → chunk-LTJFV2JI.js} +2 -2
  303. package/dist/{chunk-INXGSG3J.js → chunk-LVDNY5RC.js} +2 -2
  304. package/dist/{chunk-2INLDVK3.js → chunk-LVELUUK6.js} +2 -2
  305. package/dist/{chunk-TAT5USZN.js → chunk-M3FDGRB4.js} +3 -3
  306. package/dist/{chunk-5EWSRZ2Y.js → chunk-M3HGBO2Y.js} +1 -1
  307. package/dist/{chunk-J3DY5HWQ.js → chunk-M5IQVMLR.js} +4 -4
  308. package/dist/{chunk-53AGXXZM.js → chunk-MKDFYE2E.js} +2 -2
  309. package/dist/{chunk-4SAWSRAA.js → chunk-MRECRNVU.js} +5 -5
  310. package/dist/{chunk-2I7HDP53.js → chunk-MT2R57SF.js} +2 -2
  311. package/dist/{chunk-Z7Y523PS.js → chunk-MV2CLIO6.js} +6 -6
  312. package/dist/{chunk-JZ4NLCAP.js → chunk-MZY3VKKM.js} +2 -2
  313. package/dist/{chunk-YENLNISG.js → chunk-N3FM4BNA.js} +2 -2
  314. package/dist/{chunk-DZWARC4M.js → chunk-NFCS5WYC.js} +3 -3
  315. package/dist/{chunk-I5QZJODL.js → chunk-NQ2CPQJF.js} +3 -3
  316. package/dist/{chunk-6DVCC7QS.js → chunk-OBGOLHCP.js} +164 -43
  317. package/dist/chunk-OBGOLHCP.js.map +1 -0
  318. package/dist/{chunk-CUIWCGMA.js → chunk-OCXEY7HE.js} +2 -2
  319. package/dist/{chunk-VTTAJOQ7.js → chunk-OCXTTKVA.js} +2 -2
  320. package/dist/{chunk-KRDR5RJD.js → chunk-OGU73VUN.js} +2 -2
  321. package/dist/{chunk-YIRVLKAX.js → chunk-OI6VI6SU.js} +9 -9
  322. package/dist/{chunk-BHNSJVBC.js → chunk-OJWDNNW3.js} +5 -5
  323. package/dist/{chunk-X6KAJI3V.js → chunk-OK7BQMCI.js} +9 -9
  324. package/dist/{chunk-I5B5L6Q4.js → chunk-OOOSGPJL.js} +1 -1
  325. package/dist/chunk-OP2GD6QW.js +166 -0
  326. package/dist/chunk-OP2GD6QW.js.map +1 -0
  327. package/dist/{chunk-TUIN4MB7.js → chunk-ORV7EFSL.js} +4 -4
  328. package/dist/{chunk-JDTGRRNU.js → chunk-OSJ366KR.js} +49 -31
  329. package/dist/chunk-OSJ366KR.js.map +1 -0
  330. package/dist/{chunk-3IK6UYO6.js → chunk-OTW25A6I.js} +3 -3
  331. package/dist/{chunk-NPGISCU6.js → chunk-OWET7EY2.js} +16 -16
  332. package/dist/{chunk-CRAOSVHC.js → chunk-OXQ2SXVC.js} +2 -2
  333. package/dist/{chunk-3ED2U6XE.js → chunk-OYCK4JRS.js} +2 -2
  334. package/dist/{chunk-YQXTDZSU.js → chunk-OYOFPNLC.js} +4 -4
  335. package/dist/{chunk-4NQHXYMW.js → chunk-PD7NWM7V.js} +2 -2
  336. package/dist/{chunk-4YCA2Y73.js → chunk-PF2WU2IL.js} +3 -3
  337. package/dist/{chunk-Z654FWNU.js → chunk-PLYVGZIN.js} +2 -2
  338. package/dist/{chunk-MVW6HNPI.js → chunk-PRT4J2DL.js} +2 -2
  339. package/dist/{chunk-TXLIEOJX.js → chunk-PSM3CU7N.js} +111 -80
  340. package/dist/chunk-PSM3CU7N.js.map +1 -0
  341. package/dist/{chunk-OPWCMA4D.js → chunk-PUUEI4W3.js} +6 -6
  342. package/dist/{chunk-RLBKLAEY.js → chunk-PVB4YVDP.js} +2 -2
  343. package/dist/{chunk-NXCMHIKI.js → chunk-PWUSSSSL.js} +2 -2
  344. package/dist/{chunk-MJUCFQMS.js → chunk-PYB4BFEC.js} +3 -3
  345. package/dist/{chunk-2FSBSCZJ.js → chunk-PZKHST7A.js} +2 -2
  346. package/dist/{chunk-QZAAUQRN.js → chunk-Q5EZNBPI.js} +3 -3
  347. package/dist/{chunk-ZHDFQITM.js → chunk-Q5K2J5GG.js} +2 -2
  348. package/dist/{chunk-7T2ZE3VT.js → chunk-QPQ7R77C.js} +8 -1
  349. package/dist/chunk-QPQ7R77C.js.map +1 -0
  350. package/dist/{chunk-6BCXNDEI.js → chunk-QQIZMVAJ.js} +74 -60
  351. package/dist/chunk-QQIZMVAJ.js.map +1 -0
  352. package/dist/{chunk-OV6QJRT4.js → chunk-QRECBCJM.js} +2 -2
  353. package/dist/{chunk-3GZA4BUW.js → chunk-QURYQFDN.js} +2 -2
  354. package/dist/{chunk-VS7AHPCZ.js → chunk-R33SBMB7.js} +3 -3
  355. package/dist/{chunk-KCBMFSMS.js → chunk-R4JA5JFI.js} +3 -3
  356. package/dist/{chunk-HC4JFZVU.js → chunk-R5QAL43H.js} +2 -2
  357. package/dist/{chunk-QPSGCC5D.js → chunk-RGR57NYY.js} +2 -2
  358. package/dist/{chunk-XWFAMUZQ.js → chunk-RHXYO4H2.js} +2 -2
  359. package/dist/{chunk-Y4BB2KS2.js → chunk-RISUROBM.js} +7 -7
  360. package/dist/{chunk-U3DN4HEY.js → chunk-RMCLFSMX.js} +2 -2
  361. package/dist/{chunk-YK7756IF.js → chunk-RTZANSSC.js} +3 -3
  362. package/dist/{chunk-ZEG4VPBL.js → chunk-S27VZ5DO.js} +6 -6
  363. package/dist/{chunk-54YW6SZZ.js → chunk-SBXSKRFA.js} +3 -3
  364. package/dist/{chunk-HAX4LCR5.js → chunk-SFIXTOOJ.js} +3 -3
  365. package/dist/{chunk-QIOQ2NPQ.js → chunk-SGH7I7OY.js} +2 -2
  366. package/dist/{chunk-K2A5PXQ5.js → chunk-SJYTQLN3.js} +3 -3
  367. package/dist/{chunk-2Z3NQNTM.js → chunk-SK5S2PCK.js} +15 -15
  368. package/dist/{chunk-X3MWB2QU.js → chunk-SN2WENRP.js} +3 -3
  369. package/dist/{chunk-OSY5K7L7.js → chunk-SP44O3OU.js} +2 -2
  370. package/dist/{chunk-OZCBM3UC.js → chunk-SSR4ZX52.js} +2 -2
  371. package/dist/{chunk-QCSJ4CWE.js → chunk-SXGJL7UT.js} +14 -14
  372. package/dist/{chunk-NC55IFN3.js → chunk-T67LTMSW.js} +10 -10
  373. package/dist/{chunk-AXHZYXUV.js → chunk-TDTD66BK.js} +2 -2
  374. package/dist/{chunk-NGJJJPZZ.js → chunk-TK5FWVZR.js} +3 -3
  375. package/dist/{chunk-YPWU5KPE.js → chunk-TKQL7EDB.js} +56 -19
  376. package/dist/chunk-TKQL7EDB.js.map +1 -0
  377. package/dist/{chunk-2OP6WLGV.js → chunk-TNSJFZ6Q.js} +4 -4
  378. package/dist/{chunk-O732GAFC.js → chunk-U4LTPFD2.js} +2 -2
  379. package/dist/{chunk-4DVNUCRR.js → chunk-U5UGM5XD.js} +6 -6
  380. package/dist/{chunk-UJK53QFL.js → chunk-UBRQ3PQD.js} +2 -2
  381. package/dist/{chunk-SODC7T6L.js → chunk-UMX6DZME.js} +2 -2
  382. package/dist/{chunk-YLS6QE5G.js → chunk-UO35OEOX.js} +4 -4
  383. package/dist/{chunk-SHHJCL7X.js → chunk-UTRNLNCW.js} +3 -3
  384. package/dist/{chunk-HEFPPMBQ.js → chunk-UU5FBVRX.js} +2 -2
  385. package/dist/{chunk-GQXZPKK7.js → chunk-V6UOVHW3.js} +2 -2
  386. package/dist/{chunk-GVN5SZLX.js → chunk-VATYK3JQ.js} +3 -3
  387. package/dist/{chunk-7TIX2UAR.js → chunk-VCJQQYRE.js} +4 -4
  388. package/dist/{chunk-6WD2INST.js → chunk-WDASYY4S.js} +7 -7
  389. package/dist/{chunk-DXBYWSL5.js → chunk-WIFDNUKD.js} +3 -3
  390. package/dist/{chunk-RT7CJMER.js → chunk-WIXHUBQN.js} +2 -2
  391. package/dist/{chunk-57AZS3IE.js → chunk-WRMUXZ7C.js} +3 -3
  392. package/dist/{chunk-2CLNIEK4.js → chunk-WTSQUCHB.js} +3 -3
  393. package/dist/{chunk-OVKYVZMW.js → chunk-WXF2RTS4.js} +2 -2
  394. package/dist/{chunk-MIHN76LX.js → chunk-WYGTAQMX.js} +3 -3
  395. package/dist/{chunk-2RG7NIAS.js → chunk-X2QJXDE4.js} +10 -10
  396. package/dist/{chunk-GAVYGBFI.js → chunk-XMBOLFFS.js} +2 -2
  397. package/dist/{chunk-T7OXJZCX.js → chunk-XOIDUM2H.js} +1 -1
  398. package/dist/{chunk-ORJPS5VN.js → chunk-XUOYNJPB.js} +97 -37
  399. package/dist/chunk-XUOYNJPB.js.map +1 -0
  400. package/dist/{chunk-XHIQ5I6N.js → chunk-XVLEBB4Y.js} +2 -2
  401. package/dist/{chunk-Q3DPEYX4.js → chunk-XZCCEKPW.js} +7 -7
  402. package/dist/{chunk-T3OWFVMS.js → chunk-Y3XZEKDQ.js} +2 -2
  403. package/dist/{chunk-KODELWYT.js → chunk-YJSCLGAW.js} +3 -3
  404. package/dist/{chunk-ROKQU7WG.js → chunk-YMI27QPF.js} +2 -2
  405. package/dist/{chunk-U7XM7CB4.js → chunk-YNTLWCF4.js} +4 -4
  406. package/dist/{chunk-ZQCND77P.js → chunk-YRYF76OE.js} +2 -2
  407. package/dist/{chunk-2BDT3UZQ.js → chunk-ZAX4XQLN.js} +3 -3
  408. package/dist/{chunk-DXR5PDFP.js → chunk-ZBHGNE2J.js} +3 -3
  409. package/dist/{chunk-I7ITSXSJ.js → chunk-ZR5EKJT6.js} +2 -2
  410. package/dist/{chunk-IZXHMZQ6.js → chunk-ZW5YTIH3.js} +4 -4
  411. package/dist/components/artifacts/artifact-sandbox.d.ts +6 -1
  412. package/dist/components/artifacts/site-view.d.ts +4 -2
  413. package/dist/components/timeline-anchor.d.ts +8 -3
  414. package/dist/components/timeline-reading-progress.d.ts +1 -1
  415. package/dist/components/timeline-settlement.d.ts +1 -1
  416. package/dist/composer-messages.js +2 -2
  417. package/dist/composer.js +10 -10
  418. package/dist/{computer-viewer-TDDO25AV.js → computer-viewer-5LKRCEVQ.js} +5 -5
  419. package/dist/connect.js +13 -14
  420. package/dist/desktop-dictation.js +7 -7
  421. package/dist/desktop.js +2 -2
  422. package/dist/editor.js +2 -2
  423. package/dist/{embedded-new-voice-2G3VLPVQ.js → embedded-new-voice-GHJRY3YL.js} +5 -5
  424. package/dist/{embedded-voice-T5IWOWGD.js → embedded-voice-ASQXBSTX.js} +5 -5
  425. package/dist/{fleet-decision-row-WM64KXP3.js → fleet-decision-row-U7LDVBEM.js} +2 -2
  426. package/dist/in-chat-connect-model.js +5 -5
  427. package/dist/index.js +62 -63
  428. package/dist/interaction.js +6 -6
  429. package/dist/{latest-question-OX56OVQ5.js → latest-question-RNVF262Q.js} +5 -5
  430. package/dist/lib/format.d.ts +10 -0
  431. package/dist/machines.js +4 -4
  432. package/dist/meetings-recorder.js +1 -1
  433. package/dist/meetings.js +24 -24
  434. package/dist/messages/en.d.ts +7 -0
  435. package/dist/messages.js +1 -1
  436. package/dist/{model-policy-picker-menu-SMC6J6QN.js → model-policy-picker-menu-E6XKMFTA.js} +4 -4
  437. package/dist/{payment-page-card-G4U63KUV.js → payment-page-card-DJDKV2LW.js} +6 -5
  438. package/dist/{payment-page-card-G4U63KUV.js.map → payment-page-card-DJDKV2LW.js.map} +1 -1
  439. package/dist/{platform-activity-row-BUZGZAKZ.js → platform-activity-row-MSDCSMET.js} +17 -7
  440. package/dist/platform-activity-row-MSDCSMET.js.map +1 -0
  441. package/dist/{queue-surface-implementation-4KUZ4PJV.js → queue-surface-implementation-GUAIG6TK.js} +5 -5
  442. package/dist/realtime.js +4 -4
  443. package/dist/{recorder-host-WF2RRR56.js → recorder-host-2MYDJPQW.js} +4 -4
  444. package/dist/recordings.js +3 -3
  445. package/dist/{sandbox-files-ESDMOFSD.js → sandbox-files-W5W2LW4K.js} +6 -6
  446. package/dist/session-app.js +173 -167
  447. package/dist/{session-connect-cards-Q53KMMYY.js → session-connect-cards-HPH7JOZP.js} +9 -10
  448. package/dist/session-list-model.js +2 -2
  449. package/dist/{session-realtime-CF3I35WJ.js → session-realtime-SDTKFFIR.js} +3 -3
  450. package/dist/session-realtime-SDTKFFIR.js.map +1 -0
  451. package/dist/session-realtime.js +2 -2
  452. package/dist/session-ui.js +37 -38
  453. package/dist/session.js +9 -9
  454. package/dist/sites.js +2 -2
  455. package/dist/terminal.js +2 -2
  456. package/dist/this-computer.js +3 -3
  457. package/dist/timeline/shared.d.ts +2 -0
  458. package/dist/{timeline-annotation-markers-CJK4RYZ4.js → timeline-annotation-markers-FNILLWNU.js} +2 -2
  459. package/dist/{timeline-annotation-selection-67GF5H26.js → timeline-annotation-selection-MBCIDO2Q.js} +2 -2
  460. package/dist/{timeline-annotations-dialog-ONJPQDJQ.js → timeline-annotations-dialog-JPNKLOTE.js} +3 -3
  461. package/dist/timeline-model.js +6 -6
  462. package/dist/ui/access-list.js +6 -6
  463. package/dist/ui/cadence-picker.js +4 -4
  464. package/dist/ui/choice-cards.js +3 -3
  465. package/dist/ui/confirm-dialog.js +4 -4
  466. package/dist/ui/copy-field.js +3 -3
  467. package/dist/ui/detail-page.js +5 -5
  468. package/dist/ui/detail-sheet.js +4 -4
  469. package/dist/ui/dialog.js +2 -2
  470. package/dist/ui/disclosure.js +5 -5
  471. package/dist/ui/email-chips-input.js +3 -3
  472. package/dist/ui/field.js +2 -2
  473. package/dist/ui/flush-form-page.js +4 -4
  474. package/dist/ui/form-dialog.js +3 -3
  475. package/dist/ui/list-row.js +3 -3
  476. package/dist/ui/page-header.js +2 -2
  477. package/dist/ui/relative-time.js +2 -2
  478. package/dist/ui/revision-history.js +4 -4
  479. package/dist/ui/role-select.js +6 -6
  480. package/dist/ui/select-menu.js +3 -3
  481. package/dist/ui/sheet.js +2 -2
  482. package/dist/ui/usage-meter.js +3 -3
  483. package/dist/ui/window-bar-title.d.ts +7 -3
  484. package/dist/ui/window-bar-title.js +1 -1
  485. package/dist/usage.js +2 -2
  486. package/dist/workbench.js +4 -4
  487. package/package.json +4 -4
  488. package/src/app/components/artifacts/site-actions.tsx +105 -0
  489. package/src/app/components/rail/session-header-copy.test.tsx +172 -0
  490. package/src/app/components/rail/session-header.tsx +68 -12
  491. package/src/app/components/rail/session-list.tsx +20 -0
  492. package/src/app/components/rail/site-session-group-heading.test.tsx +210 -0
  493. package/src/app/components/rail/site-session-group-heading.tsx +119 -60
  494. package/src/app/components/session/failed-session-actions.test.tsx +4 -0
  495. package/src/app/components/window-bar.tsx +63 -15
  496. package/src/app/lib/composer-send-blocking.tsx +312 -1
  497. package/src/app/lib/copy-link.ts +10 -0
  498. package/src/app/lib/session-composer-readiness.ts +4 -3
  499. package/src/app/lib/site-sidebar-bridge.test.tsx +67 -0
  500. package/src/app/lib/site-sidebar-bridge.ts +57 -0
  501. package/src/app/routes/session.tsx +45 -12
  502. package/src/app/routes/sessions-index.tsx +164 -105
  503. package/src/app/routes/site-view.test.tsx +74 -6
  504. package/src/app/routes/site-view.tsx +135 -14
  505. package/src/components/approval-surface.tsx +78 -3
  506. package/src/components/artifacts/artifact-sandbox.tsx +27 -2
  507. package/src/components/artifacts/site-view.tsx +13 -1
  508. package/src/components/message-timeline.tsx +25 -52
  509. package/src/components/session-capability-frame.tsx +2 -30
  510. package/src/components/timeline-anchor.tsx +19 -14
  511. package/src/components/timeline-reading-progress.ts +1 -2
  512. package/src/components/timeline-settlement.ts +3 -3
  513. package/src/lib/format.ts +46 -1
  514. package/src/messages/en.ts +11 -0
  515. package/src/timeline/platform-activity-row.tsx +20 -8
  516. package/src/timeline/shared.tsx +203 -32
  517. package/src/ui/window-bar-title.test.tsx +37 -0
  518. package/src/ui/window-bar-title.tsx +13 -6
  519. package/styles/compiled.css +5 -0
  520. package/dist/chunk-5MOJZORA.js.map +0 -1
  521. package/dist/chunk-6BCXNDEI.js.map +0 -1
  522. package/dist/chunk-6DVCC7QS.js.map +0 -1
  523. package/dist/chunk-7T2ZE3VT.js.map +0 -1
  524. package/dist/chunk-AFRGP2VP.js +0 -17
  525. package/dist/chunk-AFRGP2VP.js.map +0 -1
  526. package/dist/chunk-CRU35QQH.js.map +0 -1
  527. package/dist/chunk-FO4LYKJL.js +0 -197
  528. package/dist/chunk-FO4LYKJL.js.map +0 -1
  529. package/dist/chunk-HD5X76TP.js.map +0 -1
  530. package/dist/chunk-JDTGRRNU.js.map +0 -1
  531. package/dist/chunk-NW53H5RW.js.map +0 -1
  532. package/dist/chunk-OF4TIKYC.js.map +0 -1
  533. package/dist/chunk-ORJPS5VN.js.map +0 -1
  534. package/dist/chunk-TXLIEOJX.js.map +0 -1
  535. package/dist/chunk-VBUVBHFJ.js +0 -16
  536. package/dist/chunk-VBUVBHFJ.js.map +0 -1
  537. package/dist/chunk-XEQMZB3C.js.map +0 -1
  538. package/dist/chunk-YPWU5KPE.js.map +0 -1
  539. package/dist/components/timeline-answer-follow.d.ts +0 -8
  540. package/dist/platform-activity-row-BUZGZAKZ.js.map +0 -1
  541. package/src/components/timeline-answer-follow.ts +0 -15
  542. /package/dist/{browser-viewer-TC27OCIP.js.map → app/components/artifacts/site-actions.js.map} +0 -0
  543. /package/dist/{chat-interactive-block-RWPQBHVS.js.map → browser-viewer-ZHQDVHZ2.js.map} +0 -0
  544. /package/dist/{computer-viewer-TDDO25AV.js.map → chat-interactive-block-VSDD6X3M.js.map} +0 -0
  545. /package/dist/{chunk-C43KRXGA.js.map → chunk-2GCHGWNE.js.map} +0 -0
  546. /package/dist/{chunk-XLH7QY2R.js.map → chunk-2J77TWGH.js.map} +0 -0
  547. /package/dist/{chunk-77WAKEAH.js.map → chunk-2OXSB2OL.js.map} +0 -0
  548. /package/dist/{chunk-H3T7IWNA.js.map → chunk-2VJOSU4H.js.map} +0 -0
  549. /package/dist/{chunk-N6AACDUW.js.map → chunk-34NV52R3.js.map} +0 -0
  550. /package/dist/{chunk-L7YTNTIK.js.map → chunk-3CDJSKDW.js.map} +0 -0
  551. /package/dist/{chunk-EWSOC6WF.js.map → chunk-3DRLCX5V.js.map} +0 -0
  552. /package/dist/{chunk-JEUPAVYY.js.map → chunk-3L465FBR.js.map} +0 -0
  553. /package/dist/{chunk-5NWEKLDZ.js.map → chunk-3NNAC43A.js.map} +0 -0
  554. /package/dist/{chunk-EDI6SJ2N.js.map → chunk-3OK7Y6ES.js.map} +0 -0
  555. /package/dist/{chunk-AWKES45Y.js.map → chunk-3PM3M2Q6.js.map} +0 -0
  556. /package/dist/{chunk-I7XIZRFD.js.map → chunk-3PZ3LRPV.js.map} +0 -0
  557. /package/dist/{chunk-AW2MQB37.js.map → chunk-44JWVYJB.js.map} +0 -0
  558. /package/dist/{chunk-2M3J7ZWQ.js.map → chunk-467WDSOK.js.map} +0 -0
  559. /package/dist/{chunk-UTIAXH52.js.map → chunk-477DTTMH.js.map} +0 -0
  560. /package/dist/{chunk-J5F5HPPW.js.map → chunk-4BWMAGJJ.js.map} +0 -0
  561. /package/dist/{chunk-YSJEAAOL.js.map → chunk-4F3AEJI6.js.map} +0 -0
  562. /package/dist/{chunk-LHPNABDH.js.map → chunk-4JXPLTWV.js.map} +0 -0
  563. /package/dist/{chunk-RQKLF42C.js.map → chunk-4K64EKM7.js.map} +0 -0
  564. /package/dist/{chunk-NUNZS36W.js.map → chunk-4O2XWOLZ.js.map} +0 -0
  565. /package/dist/{chunk-QB2KMIDP.js.map → chunk-4SJAEPM2.js.map} +0 -0
  566. /package/dist/{chunk-6JHU2UBS.js.map → chunk-4Z5X7PLC.js.map} +0 -0
  567. /package/dist/{chunk-2STUPWEL.js.map → chunk-54U6ZBEX.js.map} +0 -0
  568. /package/dist/{chunk-XXSOHN35.js.map → chunk-5FLYHX5R.js.map} +0 -0
  569. /package/dist/{chunk-MIYFS2XN.js.map → chunk-5MHMCE2G.js.map} +0 -0
  570. /package/dist/{chunk-YWVI6ZMK.js.map → chunk-5MIBQ4P5.js.map} +0 -0
  571. /package/dist/{chunk-5O2FCCHZ.js.map → chunk-6QK65ZWM.js.map} +0 -0
  572. /package/dist/{chunk-RPVREAU7.js.map → chunk-736RUNIA.js.map} +0 -0
  573. /package/dist/{chunk-2KALVELR.js.map → chunk-74CBR5YE.js.map} +0 -0
  574. /package/dist/{chunk-5IE76VCY.js.map → chunk-752WXSDN.js.map} +0 -0
  575. /package/dist/{chunk-OPJJSKUK.js.map → chunk-77B6UCNK.js.map} +0 -0
  576. /package/dist/{chunk-SEO7TICN.js.map → chunk-77BHKC43.js.map} +0 -0
  577. /package/dist/{chunk-ZUA3JMI6.js.map → chunk-77SYIH6O.js.map} +0 -0
  578. /package/dist/{chunk-ILDXWY37.js.map → chunk-7AI4E7PV.js.map} +0 -0
  579. /package/dist/{chunk-C372BFOV.js.map → chunk-7NLF35YL.js.map} +0 -0
  580. /package/dist/{chunk-IFB3WJ36.js.map → chunk-7YTR3UFO.js.map} +0 -0
  581. /package/dist/{chunk-BMICEQZQ.js.map → chunk-7Z76QP64.js.map} +0 -0
  582. /package/dist/{chunk-YWIFM7D7.js.map → chunk-AAS7OWV6.js.map} +0 -0
  583. /package/dist/{chunk-5QAY6K77.js.map → chunk-AB5IW227.js.map} +0 -0
  584. /package/dist/{chunk-ZBIXBQNI.js.map → chunk-ABJZDRW2.js.map} +0 -0
  585. /package/dist/{chunk-4DVJ6ONS.js.map → chunk-AH3DGOTK.js.map} +0 -0
  586. /package/dist/{chunk-HGKTHF2U.js.map → chunk-AJBDAVX3.js.map} +0 -0
  587. /package/dist/{chunk-5YKW2K6I.js.map → chunk-AJDGP2N4.js.map} +0 -0
  588. /package/dist/{chunk-IXPTECSC.js.map → chunk-AVXDIRRW.js.map} +0 -0
  589. /package/dist/{chunk-QK5EFEUT.js.map → chunk-BASI553K.js.map} +0 -0
  590. /package/dist/{chunk-Z4FMAFNH.js.map → chunk-BQYRZIZ7.js.map} +0 -0
  591. /package/dist/{chunk-DZXEDSQI.js.map → chunk-CEMSIU4Z.js.map} +0 -0
  592. /package/dist/{chunk-FZC5N55X.js.map → chunk-CH4UQ4NO.js.map} +0 -0
  593. /package/dist/{chunk-7X6SDK2C.js.map → chunk-CHU3RDV4.js.map} +0 -0
  594. /package/dist/{chunk-Y4OBB2VN.js.map → chunk-CV4VVLPZ.js.map} +0 -0
  595. /package/dist/{chunk-JQL7ZH6C.js.map → chunk-CXAN2FHF.js.map} +0 -0
  596. /package/dist/{chunk-F2OPHAUN.js.map → chunk-CYDXCILL.js.map} +0 -0
  597. /package/dist/{chunk-3PZ7JZI2.js.map → chunk-D3PTVN2I.js.map} +0 -0
  598. /package/dist/{chunk-FPXASDG5.js.map → chunk-D5TIVCXG.js.map} +0 -0
  599. /package/dist/{chunk-7W37NS3I.js.map → chunk-D74Z2N4K.js.map} +0 -0
  600. /package/dist/{chunk-MNZG4OHU.js.map → chunk-DCEQCGVN.js.map} +0 -0
  601. /package/dist/{chunk-ND2BXV3P.js.map → chunk-DEHLWZSI.js.map} +0 -0
  602. /package/dist/{chunk-2YUOVM3G.js.map → chunk-DIP7YALH.js.map} +0 -0
  603. /package/dist/{chunk-6PZ7OBYU.js.map → chunk-DLVIRJGK.js.map} +0 -0
  604. /package/dist/{chunk-KLEUWIMZ.js.map → chunk-DQPIEQGP.js.map} +0 -0
  605. /package/dist/{chunk-T2QX3FDP.js.map → chunk-DWJ6J3YW.js.map} +0 -0
  606. /package/dist/{chunk-3CPWWGNK.js.map → chunk-E5KOWRDU.js.map} +0 -0
  607. /package/dist/{chunk-6WGRDRMA.js.map → chunk-EBIVTDEG.js.map} +0 -0
  608. /package/dist/{chunk-KUDGXAF7.js.map → chunk-EBTUPRRQ.js.map} +0 -0
  609. /package/dist/{chunk-5CPEEAFD.js.map → chunk-EDDKPIIV.js.map} +0 -0
  610. /package/dist/{chunk-TX3VECZU.js.map → chunk-EGKARC53.js.map} +0 -0
  611. /package/dist/{chunk-JEA3QDX7.js.map → chunk-EKJHOWTZ.js.map} +0 -0
  612. /package/dist/{chunk-UVN5TMHU.js.map → chunk-ESXAECZ3.js.map} +0 -0
  613. /package/dist/{chunk-3SOIESJM.js.map → chunk-EWZ2RLNG.js.map} +0 -0
  614. /package/dist/{chunk-CMKGILJK.js.map → chunk-FBA2NXYH.js.map} +0 -0
  615. /package/dist/{chunk-O6N4ABCA.js.map → chunk-FER6EVIY.js.map} +0 -0
  616. /package/dist/{chunk-DF5EAHDN.js.map → chunk-FLWQJDJ5.js.map} +0 -0
  617. /package/dist/{chunk-PTAG4PDC.js.map → chunk-FNXCFIPW.js.map} +0 -0
  618. /package/dist/{chunk-BJEJFISW.js.map → chunk-FSDQQQIA.js.map} +0 -0
  619. /package/dist/{chunk-PTF5B7TJ.js.map → chunk-G5UQBTXY.js.map} +0 -0
  620. /package/dist/{chunk-4E3ZJRTZ.js.map → chunk-G6ICCGJ3.js.map} +0 -0
  621. /package/dist/{chunk-NRTE7DNV.js.map → chunk-GIWFLWXG.js.map} +0 -0
  622. /package/dist/{chunk-MM4FNWI4.js.map → chunk-GMHIOYB7.js.map} +0 -0
  623. /package/dist/{chunk-6DK6Z4UN.js.map → chunk-GOCODNQS.js.map} +0 -0
  624. /package/dist/{chunk-TPQTRNER.js.map → chunk-GSCGKJNK.js.map} +0 -0
  625. /package/dist/{chunk-7VMZGLYI.js.map → chunk-GTHCHCWW.js.map} +0 -0
  626. /package/dist/{chunk-SQJIKMN3.js.map → chunk-GTRAH4FG.js.map} +0 -0
  627. /package/dist/{chunk-ZYAZUPPV.js.map → chunk-GU7T2S5N.js.map} +0 -0
  628. /package/dist/{chunk-JKHKLL5W.js.map → chunk-H6BX6WOW.js.map} +0 -0
  629. /package/dist/{chunk-IMZCQBOT.js.map → chunk-H6MJFMHZ.js.map} +0 -0
  630. /package/dist/{chunk-HSOXMJOT.js.map → chunk-HEGV4QMS.js.map} +0 -0
  631. /package/dist/{chunk-NC7PVOEK.js.map → chunk-HWVPLFIW.js.map} +0 -0
  632. /package/dist/{chunk-IMDQUHBJ.js.map → chunk-HYEIA25Y.js.map} +0 -0
  633. /package/dist/{chunk-ECJBYNLJ.js.map → chunk-ICAMYP5M.js.map} +0 -0
  634. /package/dist/{chunk-DJAXC5OK.js.map → chunk-IFSXVU2S.js.map} +0 -0
  635. /package/dist/{chunk-I4MRDSUF.js.map → chunk-IJR6VOLU.js.map} +0 -0
  636. /package/dist/{chunk-YCVD6CI3.js.map → chunk-IN3VQFKS.js.map} +0 -0
  637. /package/dist/{chunk-BJFH6JI5.js.map → chunk-IZXYFWA4.js.map} +0 -0
  638. /package/dist/{chunk-MFROMEKA.js.map → chunk-J2BTILRR.js.map} +0 -0
  639. /package/dist/{chunk-NCYMNCJO.js.map → chunk-J2WY42FA.js.map} +0 -0
  640. /package/dist/{chunk-DGMR6JEJ.js.map → chunk-J4XSTXZP.js.map} +0 -0
  641. /package/dist/{chunk-ZTPXACWB.js.map → chunk-JKL5S7UQ.js.map} +0 -0
  642. /package/dist/{chunk-P77WNZDY.js.map → chunk-JMHEFZOB.js.map} +0 -0
  643. /package/dist/{chunk-IDANQPRH.js.map → chunk-JV3UI7BH.js.map} +0 -0
  644. /package/dist/{chunk-FVXBNBHO.js.map → chunk-K3D7IQQP.js.map} +0 -0
  645. /package/dist/{chunk-GKVJIDHF.js.map → chunk-KFNZZ2N6.js.map} +0 -0
  646. /package/dist/{chunk-I4QEJ62Y.js.map → chunk-KI46GKMD.js.map} +0 -0
  647. /package/dist/{chunk-SIRLACNZ.js.map → chunk-KO3OHHY2.js.map} +0 -0
  648. /package/dist/{chunk-NULUNM7H.js.map → chunk-KUE5BOQE.js.map} +0 -0
  649. /package/dist/{chunk-O3LKCBP5.js.map → chunk-LIJNVIT3.js.map} +0 -0
  650. /package/dist/{chunk-JWB44UGJ.js.map → chunk-LIJPDVYP.js.map} +0 -0
  651. /package/dist/{chunk-KYS77RPN.js.map → chunk-LPKJ77EK.js.map} +0 -0
  652. /package/dist/{chunk-RMFKVOM7.js.map → chunk-LQKVNREV.js.map} +0 -0
  653. /package/dist/{chunk-E7XERZWC.js.map → chunk-LTJFV2JI.js.map} +0 -0
  654. /package/dist/{chunk-INXGSG3J.js.map → chunk-LVDNY5RC.js.map} +0 -0
  655. /package/dist/{chunk-2INLDVK3.js.map → chunk-LVELUUK6.js.map} +0 -0
  656. /package/dist/{chunk-TAT5USZN.js.map → chunk-M3FDGRB4.js.map} +0 -0
  657. /package/dist/{chunk-5EWSRZ2Y.js.map → chunk-M3HGBO2Y.js.map} +0 -0
  658. /package/dist/{chunk-J3DY5HWQ.js.map → chunk-M5IQVMLR.js.map} +0 -0
  659. /package/dist/{chunk-53AGXXZM.js.map → chunk-MKDFYE2E.js.map} +0 -0
  660. /package/dist/{chunk-4SAWSRAA.js.map → chunk-MRECRNVU.js.map} +0 -0
  661. /package/dist/{chunk-2I7HDP53.js.map → chunk-MT2R57SF.js.map} +0 -0
  662. /package/dist/{chunk-Z7Y523PS.js.map → chunk-MV2CLIO6.js.map} +0 -0
  663. /package/dist/{chunk-JZ4NLCAP.js.map → chunk-MZY3VKKM.js.map} +0 -0
  664. /package/dist/{chunk-YENLNISG.js.map → chunk-N3FM4BNA.js.map} +0 -0
  665. /package/dist/{chunk-DZWARC4M.js.map → chunk-NFCS5WYC.js.map} +0 -0
  666. /package/dist/{chunk-I5QZJODL.js.map → chunk-NQ2CPQJF.js.map} +0 -0
  667. /package/dist/{chunk-CUIWCGMA.js.map → chunk-OCXEY7HE.js.map} +0 -0
  668. /package/dist/{chunk-VTTAJOQ7.js.map → chunk-OCXTTKVA.js.map} +0 -0
  669. /package/dist/{chunk-KRDR5RJD.js.map → chunk-OGU73VUN.js.map} +0 -0
  670. /package/dist/{chunk-YIRVLKAX.js.map → chunk-OI6VI6SU.js.map} +0 -0
  671. /package/dist/{chunk-BHNSJVBC.js.map → chunk-OJWDNNW3.js.map} +0 -0
  672. /package/dist/{chunk-X6KAJI3V.js.map → chunk-OK7BQMCI.js.map} +0 -0
  673. /package/dist/{chunk-I5B5L6Q4.js.map → chunk-OOOSGPJL.js.map} +0 -0
  674. /package/dist/{chunk-TUIN4MB7.js.map → chunk-ORV7EFSL.js.map} +0 -0
  675. /package/dist/{chunk-3IK6UYO6.js.map → chunk-OTW25A6I.js.map} +0 -0
  676. /package/dist/{chunk-NPGISCU6.js.map → chunk-OWET7EY2.js.map} +0 -0
  677. /package/dist/{chunk-CRAOSVHC.js.map → chunk-OXQ2SXVC.js.map} +0 -0
  678. /package/dist/{chunk-3ED2U6XE.js.map → chunk-OYCK4JRS.js.map} +0 -0
  679. /package/dist/{chunk-YQXTDZSU.js.map → chunk-OYOFPNLC.js.map} +0 -0
  680. /package/dist/{chunk-4NQHXYMW.js.map → chunk-PD7NWM7V.js.map} +0 -0
  681. /package/dist/{chunk-4YCA2Y73.js.map → chunk-PF2WU2IL.js.map} +0 -0
  682. /package/dist/{chunk-Z654FWNU.js.map → chunk-PLYVGZIN.js.map} +0 -0
  683. /package/dist/{chunk-MVW6HNPI.js.map → chunk-PRT4J2DL.js.map} +0 -0
  684. /package/dist/{chunk-OPWCMA4D.js.map → chunk-PUUEI4W3.js.map} +0 -0
  685. /package/dist/{chunk-RLBKLAEY.js.map → chunk-PVB4YVDP.js.map} +0 -0
  686. /package/dist/{chunk-NXCMHIKI.js.map → chunk-PWUSSSSL.js.map} +0 -0
  687. /package/dist/{chunk-MJUCFQMS.js.map → chunk-PYB4BFEC.js.map} +0 -0
  688. /package/dist/{chunk-2FSBSCZJ.js.map → chunk-PZKHST7A.js.map} +0 -0
  689. /package/dist/{chunk-QZAAUQRN.js.map → chunk-Q5EZNBPI.js.map} +0 -0
  690. /package/dist/{chunk-ZHDFQITM.js.map → chunk-Q5K2J5GG.js.map} +0 -0
  691. /package/dist/{chunk-OV6QJRT4.js.map → chunk-QRECBCJM.js.map} +0 -0
  692. /package/dist/{chunk-3GZA4BUW.js.map → chunk-QURYQFDN.js.map} +0 -0
  693. /package/dist/{chunk-VS7AHPCZ.js.map → chunk-R33SBMB7.js.map} +0 -0
  694. /package/dist/{chunk-KCBMFSMS.js.map → chunk-R4JA5JFI.js.map} +0 -0
  695. /package/dist/{chunk-HC4JFZVU.js.map → chunk-R5QAL43H.js.map} +0 -0
  696. /package/dist/{chunk-QPSGCC5D.js.map → chunk-RGR57NYY.js.map} +0 -0
  697. /package/dist/{chunk-XWFAMUZQ.js.map → chunk-RHXYO4H2.js.map} +0 -0
  698. /package/dist/{chunk-Y4BB2KS2.js.map → chunk-RISUROBM.js.map} +0 -0
  699. /package/dist/{chunk-U3DN4HEY.js.map → chunk-RMCLFSMX.js.map} +0 -0
  700. /package/dist/{chunk-YK7756IF.js.map → chunk-RTZANSSC.js.map} +0 -0
  701. /package/dist/{chunk-ZEG4VPBL.js.map → chunk-S27VZ5DO.js.map} +0 -0
  702. /package/dist/{chunk-54YW6SZZ.js.map → chunk-SBXSKRFA.js.map} +0 -0
  703. /package/dist/{chunk-HAX4LCR5.js.map → chunk-SFIXTOOJ.js.map} +0 -0
  704. /package/dist/{chunk-QIOQ2NPQ.js.map → chunk-SGH7I7OY.js.map} +0 -0
  705. /package/dist/{chunk-K2A5PXQ5.js.map → chunk-SJYTQLN3.js.map} +0 -0
  706. /package/dist/{chunk-2Z3NQNTM.js.map → chunk-SK5S2PCK.js.map} +0 -0
  707. /package/dist/{chunk-X3MWB2QU.js.map → chunk-SN2WENRP.js.map} +0 -0
  708. /package/dist/{chunk-OSY5K7L7.js.map → chunk-SP44O3OU.js.map} +0 -0
  709. /package/dist/{chunk-OZCBM3UC.js.map → chunk-SSR4ZX52.js.map} +0 -0
  710. /package/dist/{chunk-QCSJ4CWE.js.map → chunk-SXGJL7UT.js.map} +0 -0
  711. /package/dist/{chunk-NC55IFN3.js.map → chunk-T67LTMSW.js.map} +0 -0
  712. /package/dist/{chunk-AXHZYXUV.js.map → chunk-TDTD66BK.js.map} +0 -0
  713. /package/dist/{chunk-NGJJJPZZ.js.map → chunk-TK5FWVZR.js.map} +0 -0
  714. /package/dist/{chunk-2OP6WLGV.js.map → chunk-TNSJFZ6Q.js.map} +0 -0
  715. /package/dist/{chunk-O732GAFC.js.map → chunk-U4LTPFD2.js.map} +0 -0
  716. /package/dist/{chunk-4DVNUCRR.js.map → chunk-U5UGM5XD.js.map} +0 -0
  717. /package/dist/{chunk-UJK53QFL.js.map → chunk-UBRQ3PQD.js.map} +0 -0
  718. /package/dist/{chunk-SODC7T6L.js.map → chunk-UMX6DZME.js.map} +0 -0
  719. /package/dist/{chunk-YLS6QE5G.js.map → chunk-UO35OEOX.js.map} +0 -0
  720. /package/dist/{chunk-SHHJCL7X.js.map → chunk-UTRNLNCW.js.map} +0 -0
  721. /package/dist/{chunk-HEFPPMBQ.js.map → chunk-UU5FBVRX.js.map} +0 -0
  722. /package/dist/{chunk-GQXZPKK7.js.map → chunk-V6UOVHW3.js.map} +0 -0
  723. /package/dist/{chunk-GVN5SZLX.js.map → chunk-VATYK3JQ.js.map} +0 -0
  724. /package/dist/{chunk-7TIX2UAR.js.map → chunk-VCJQQYRE.js.map} +0 -0
  725. /package/dist/{chunk-6WD2INST.js.map → chunk-WDASYY4S.js.map} +0 -0
  726. /package/dist/{chunk-DXBYWSL5.js.map → chunk-WIFDNUKD.js.map} +0 -0
  727. /package/dist/{chunk-RT7CJMER.js.map → chunk-WIXHUBQN.js.map} +0 -0
  728. /package/dist/{chunk-57AZS3IE.js.map → chunk-WRMUXZ7C.js.map} +0 -0
  729. /package/dist/{chunk-2CLNIEK4.js.map → chunk-WTSQUCHB.js.map} +0 -0
  730. /package/dist/{chunk-OVKYVZMW.js.map → chunk-WXF2RTS4.js.map} +0 -0
  731. /package/dist/{chunk-MIHN76LX.js.map → chunk-WYGTAQMX.js.map} +0 -0
  732. /package/dist/{chunk-2RG7NIAS.js.map → chunk-X2QJXDE4.js.map} +0 -0
  733. /package/dist/{chunk-GAVYGBFI.js.map → chunk-XMBOLFFS.js.map} +0 -0
  734. /package/dist/{chunk-T7OXJZCX.js.map → chunk-XOIDUM2H.js.map} +0 -0
  735. /package/dist/{chunk-XHIQ5I6N.js.map → chunk-XVLEBB4Y.js.map} +0 -0
  736. /package/dist/{chunk-Q3DPEYX4.js.map → chunk-XZCCEKPW.js.map} +0 -0
  737. /package/dist/{chunk-T3OWFVMS.js.map → chunk-Y3XZEKDQ.js.map} +0 -0
  738. /package/dist/{chunk-KODELWYT.js.map → chunk-YJSCLGAW.js.map} +0 -0
  739. /package/dist/{chunk-ROKQU7WG.js.map → chunk-YMI27QPF.js.map} +0 -0
  740. /package/dist/{chunk-U7XM7CB4.js.map → chunk-YNTLWCF4.js.map} +0 -0
  741. /package/dist/{chunk-ZQCND77P.js.map → chunk-YRYF76OE.js.map} +0 -0
  742. /package/dist/{chunk-2BDT3UZQ.js.map → chunk-ZAX4XQLN.js.map} +0 -0
  743. /package/dist/{chunk-DXR5PDFP.js.map → chunk-ZBHGNE2J.js.map} +0 -0
  744. /package/dist/{chunk-I7ITSXSJ.js.map → chunk-ZR5EKJT6.js.map} +0 -0
  745. /package/dist/{chunk-IZXHMZQ6.js.map → chunk-ZW5YTIH3.js.map} +0 -0
  746. /package/dist/{embedded-new-voice-2G3VLPVQ.js.map → computer-viewer-5LKRCEVQ.js.map} +0 -0
  747. /package/dist/{embedded-voice-T5IWOWGD.js.map → embedded-new-voice-GHJRY3YL.js.map} +0 -0
  748. /package/dist/{model-policy-picker-menu-SMC6J6QN.js.map → embedded-voice-ASQXBSTX.js.map} +0 -0
  749. /package/dist/{fleet-decision-row-WM64KXP3.js.map → fleet-decision-row-U7LDVBEM.js.map} +0 -0
  750. /package/dist/{latest-question-OX56OVQ5.js.map → latest-question-RNVF262Q.js.map} +0 -0
  751. /package/dist/{sandbox-files-ESDMOFSD.js.map → model-policy-picker-menu-E6XKMFTA.js.map} +0 -0
  752. /package/dist/{queue-surface-implementation-4KUZ4PJV.js.map → queue-surface-implementation-GUAIG6TK.js.map} +0 -0
  753. /package/dist/{recorder-host-WF2RRR56.js.map → recorder-host-2MYDJPQW.js.map} +0 -0
  754. /package/dist/{session-connect-cards-Q53KMMYY.js.map → sandbox-files-W5W2LW4K.js.map} +0 -0
  755. /package/dist/{session-realtime-CF3I35WJ.js.map → session-connect-cards-HPH7JOZP.js.map} +0 -0
  756. /package/dist/{timeline-annotation-markers-CJK4RYZ4.js.map → timeline-annotation-markers-FNILLWNU.js.map} +0 -0
  757. /package/dist/{timeline-annotation-selection-67GF5H26.js.map → timeline-annotation-selection-MBCIDO2Q.js.map} +0 -0
  758. /package/dist/{timeline-annotations-dialog-ONJPQDJQ.js.map → timeline-annotations-dialog-JPNKLOTE.js.map} +0 -0
@@ -59,4 +59,4 @@ function useCheckoutPageReturn() {
59
59
  export {
60
60
  CreditRequiredGate
61
61
  };
62
- //# sourceMappingURL=chunk-T7OXJZCX.js.map
62
+ //# sourceMappingURL=chunk-XOIDUM2H.js.map
@@ -1,25 +1,25 @@
1
1
  "use client";
2
2
  import {
3
- GrantSessionAdminAccessDialog,
4
- SessionAdminAccessIndicator,
5
- SessionAdminAccessMenuItems
6
- } from "./chunk-C43KRXGA.js";
7
- import {
8
- SessionAncestryBreadcrumb
9
- } from "./chunk-NULUNM7H.js";
10
- import {
11
- ShareChatDialog
12
- } from "./chunk-U7XM7CB4.js";
3
+ BotTemplateDialog
4
+ } from "./chunk-H6MJFMHZ.js";
13
5
  import {
14
6
  SiteOriginLink,
15
7
  SiteOriginMenuItem
16
8
  } from "./chunk-P3A2EINJ.js";
17
9
  import {
18
10
  SessionProfileEditorDialog
19
- } from "./chunk-BJEJFISW.js";
11
+ } from "./chunk-FSDQQQIA.js";
20
12
  import {
21
- BotTemplateDialog
22
- } from "./chunk-IMZCQBOT.js";
13
+ GrantSessionAdminAccessDialog,
14
+ SessionAdminAccessIndicator,
15
+ SessionAdminAccessMenuItems
16
+ } from "./chunk-2GCHGWNE.js";
17
+ import {
18
+ SessionAncestryBreadcrumb
19
+ } from "./chunk-KUE5BOQE.js";
20
+ import {
21
+ ShareChatDialog
22
+ } from "./chunk-YNTLWCF4.js";
23
23
  import {
24
24
  pinLiveAnnouncement
25
25
  } from "./chunk-GLYJV66C.js";
@@ -29,38 +29,41 @@ import {
29
29
  } from "./chunk-VPUFTOD3.js";
30
30
  import {
31
31
  SessionAvatar
32
- } from "./chunk-YLS6QE5G.js";
32
+ } from "./chunk-UO35OEOX.js";
33
33
  import {
34
34
  repliesMuteLabel
35
35
  } from "./chunk-Q6CGOPJD.js";
36
36
  import {
37
37
  sessionControlPaused
38
- } from "./chunk-ZUA3JMI6.js";
38
+ } from "./chunk-77SYIH6O.js";
39
39
  import {
40
40
  sessionSiteOrigin
41
41
  } from "./chunk-K3TJNJSU.js";
42
42
  import {
43
43
  useInlineRename
44
- } from "./chunk-FPXASDG5.js";
44
+ } from "./chunk-D5TIVCXG.js";
45
45
  import {
46
46
  useActionShortcut,
47
47
  useChatOperations
48
- } from "./chunk-HGKTHF2U.js";
48
+ } from "./chunk-AJBDAVX3.js";
49
49
  import {
50
50
  archiveActionLabel
51
51
  } from "./chunk-KY2R73CG.js";
52
52
  import {
53
53
  RENAME_CURRENT_CHAT_EVENT
54
- } from "./chunk-5EWSRZ2Y.js";
54
+ } from "./chunk-M3HGBO2Y.js";
55
55
  import {
56
56
  requestConversationFind
57
57
  } from "./chunk-7ZEGSUR7.js";
58
+ import {
59
+ copyTitle
60
+ } from "./chunk-ARTEEI2E.js";
58
61
  import {
59
62
  useSessionUiFeature
60
63
  } from "./chunk-FWXMQTVG.js";
61
64
  import {
62
65
  BillingClassMark
63
- } from "./chunk-GKVJIDHF.js";
66
+ } from "./chunk-KFNZZ2N6.js";
64
67
  import {
65
68
  ConnectionPill
66
69
  } from "./chunk-VGYXW3VG.js";
@@ -69,9 +72,15 @@ import {
69
72
  HoverCardContent,
70
73
  HoverCardTrigger
71
74
  } from "./chunk-PPOESWM3.js";
75
+ import {
76
+ ContextMenu,
77
+ ContextMenuContent,
78
+ ContextMenuItem,
79
+ ContextMenuTrigger
80
+ } from "./chunk-GBPMR2UA.js";
72
81
  import {
73
82
  t
74
- } from "./chunk-HSOXMJOT.js";
83
+ } from "./chunk-HEGV4QMS.js";
75
84
  import {
76
85
  labelEffort
77
86
  } from "./chunk-ZPW5NFYD.js";
@@ -87,7 +96,7 @@ import {
87
96
  import {
88
97
  sessionAutomationWaitLines,
89
98
  sessionAutomationWaitWords
90
- } from "./chunk-2OP6WLGV.js";
99
+ } from "./chunk-TNSJFZ6Q.js";
91
100
  import {
92
101
  useUiEventTarget
93
102
  } from "./chunk-WGPLDFEC.js";
@@ -113,13 +122,13 @@ import {
113
122
  isCodexProductModel,
114
123
  sessionDisplayTitle,
115
124
  sessionInputWait
116
- } from "./chunk-3PZ7JZI2.js";
125
+ } from "./chunk-D3PTVN2I.js";
117
126
  import {
118
127
  SESSION_STATUS_META,
119
128
  SessionStatus,
120
129
  StatusDot,
121
130
  StatusPill
122
- } from "./chunk-AXHZYXUV.js";
131
+ } from "./chunk-TDTD66BK.js";
123
132
  import {
124
133
  useSessionStartup
125
134
  } from "./chunk-EMIVOS73.js";
@@ -158,6 +167,7 @@ import {
158
167
  BellOffIcon,
159
168
  BotIcon,
160
169
  CalendarClockIcon,
170
+ CopyIcon,
161
171
  GaugeIcon,
162
172
  LinkIcon,
163
173
  LockIcon,
@@ -525,7 +535,14 @@ function SessionHeader({
525
535
  )
526
536
  }
527
537
  ) : null,
528
- /* @__PURE__ */ jsx(SessionTitleEditor, { session, rename })
538
+ /* @__PURE__ */ jsx(
539
+ SessionTitleEditor,
540
+ {
541
+ session,
542
+ rename,
543
+ onCopyLink: () => void chatOps.copyLink(session)
544
+ }
545
+ )
529
546
  ]
530
547
  }
531
548
  ),
@@ -784,6 +801,10 @@ function SessionHeader({
784
801
  ]
785
802
  }
786
803
  ),
804
+ /* @__PURE__ */ jsxs(DropdownMenuItem, { onSelect: () => void copyTitle(sessionDisplayTitle(session)), children: [
805
+ /* @__PURE__ */ jsx(CopyIcon, {}),
806
+ "Copy title"
807
+ ] }),
787
808
  canShare ? /* @__PURE__ */ jsxs(
788
809
  DropdownMenuItem,
789
810
  {
@@ -1127,6 +1148,7 @@ function useSessionPinToggle(session, onPin) {
1127
1148
  function SessionTitleEditor(props) {
1128
1149
  const display = sessionDisplayTitle(props.session);
1129
1150
  const rename = props.rename;
1151
+ const afterMenuClose = useRef2(null);
1130
1152
  if (rename.editing) {
1131
1153
  return (
1132
1154
  // A calm in-place edit: same size and position as the display title, a
@@ -1160,18 +1182,56 @@ function SessionTitleEditor(props) {
1160
1182
  );
1161
1183
  }
1162
1184
  return /* @__PURE__ */ jsxs("div", { className: "group/title flex min-w-0 items-center gap-0.5", children: [
1163
- /* @__PURE__ */ jsx(
1164
- "button",
1165
- {
1166
- type: "button",
1167
- onClick: rename.startEditing,
1168
- title: `${display} \xB7 click to rename`,
1169
- dir: "auto",
1170
- "data-session-title-text": "",
1171
- className: "min-w-0 shrink truncate rounded-sm text-left text-[15px] font-semibold leading-6 tracking-[-0.01em] text-fg hover:text-fg focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring/40 pointer-coarse:min-h-11 pointer-coarse:px-2",
1172
- children: display
1173
- }
1174
- ),
1185
+ /* @__PURE__ */ jsxs(ContextMenu, { children: [
1186
+ /* @__PURE__ */ jsx(ContextMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
1187
+ "button",
1188
+ {
1189
+ type: "button",
1190
+ onClick: rename.startEditing,
1191
+ title: `${display} \xB7 click to rename`,
1192
+ dir: "auto",
1193
+ "data-session-title-text": "",
1194
+ className: "min-w-0 shrink truncate rounded-sm text-left text-[15px] font-semibold leading-6 tracking-[-0.01em] text-fg hover:text-fg focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring/40 pointer-coarse:min-h-11 pointer-coarse:px-2",
1195
+ children: display
1196
+ }
1197
+ ) }),
1198
+ /* @__PURE__ */ jsxs(
1199
+ ContextMenuContent,
1200
+ {
1201
+ className: "min-w-40",
1202
+ "data-session-title-menu": "",
1203
+ onCloseAutoFocus: (event) => {
1204
+ const action = afterMenuClose.current;
1205
+ if (!action) return;
1206
+ afterMenuClose.current = null;
1207
+ event.preventDefault();
1208
+ action();
1209
+ },
1210
+ children: [
1211
+ /* @__PURE__ */ jsxs(ContextMenuItem, { onSelect: () => void copyTitle(display), children: [
1212
+ /* @__PURE__ */ jsx(CopyIcon, { className: "size-4" }),
1213
+ "Copy title"
1214
+ ] }),
1215
+ /* @__PURE__ */ jsxs(ContextMenuItem, { onSelect: props.onCopyLink, children: [
1216
+ /* @__PURE__ */ jsx(LinkIcon, { className: "size-4" }),
1217
+ "Copy link"
1218
+ ] }),
1219
+ /* @__PURE__ */ jsxs(
1220
+ ContextMenuItem,
1221
+ {
1222
+ onSelect: () => {
1223
+ afterMenuClose.current = rename.startEditing;
1224
+ },
1225
+ children: [
1226
+ /* @__PURE__ */ jsx(PencilIcon, { className: "size-4" }),
1227
+ "Rename"
1228
+ ]
1229
+ }
1230
+ )
1231
+ ]
1232
+ }
1233
+ )
1234
+ ] }),
1175
1235
  /* @__PURE__ */ jsx(
1176
1236
  Button,
1177
1237
  {
@@ -1190,4 +1250,4 @@ function SessionTitleEditor(props) {
1190
1250
  export {
1191
1251
  SessionHeader
1192
1252
  };
1193
- //# sourceMappingURL=chunk-ORJPS5VN.js.map
1253
+ //# sourceMappingURL=chunk-XUOYNJPB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/app/components/rail/session-header.tsx","../src/app/lib/session-slack-agent.ts","../src/app/components/rail/session-header-overflow.ts"],"sourcesContent":["import { useOptionalAppContext } from \"../../app-context\";\nimport { archiveActionLabel } from \"../../lib/archive-session\";\n// The session header bar — the slim canvas top strip's contents on a session\n// route. Split out of the session shell as a PURE, presentational component: it takes\n// plain session data + callbacks and renders the two-line identity block\n// (breadcrumb → title) on the left and the action cluster on the right\n// (provider+model·effort·speed, sandbox, pin, connection, status, panel).\n// The live children that need their own hooks — the sandbox switcher and the\n// subscription account control — arrive as slots so the whole bar can be rendered\n// (and screenshotted) in isolation. `CanvasTopStrip` in session-shell owns the\n// data wiring and passes the real slots.\nimport { t } from \"../../lib/console-text\";\nimport { cn } from \"../../lib/utils\";\nimport { OPEN_WORKSTREAM_CONTROL_EVENT } from \"../../../workstream-control-event\";\nimport {\n SessionStatus as SessionStatusBadge,\n SESSION_STATUS_META,\n StatusDot,\n StatusPill,\n} from \"../../../components/session-status\";\nimport { sessionDisplayStatus, type SessionDisplayStatus } from \"../../../session-status-model\";\nimport { ModelMark } from \"../../../components/model-mark\";\nimport { modelDisplayName } from \"@opengeni/sdk/model-display\";\nimport type { SessionEventsConnectionState } from \"../../../hooks/use-session-events\";\nimport type { SessionSummary } from \"@opengeni/sdk\";\nimport { SiteOriginLink, SiteOriginMenuItem } from \"../session/site-origin-link\";\nimport { sessionSiteOrigin } from \"../../lib/session-site-origin\";\nimport { sessionSlackAgentInfo } from \"../../lib/session-slack-agent\";\nimport { MetaChip } from \"../../../ui/meta-chip\";\nimport type { CreateBotTemplateRequest, WorkspaceBotTemplate } from \"@opengeni/contracts\";\nimport {\n ArchiveIcon,\n BellIcon,\n BellOffIcon,\n BotIcon,\n CalendarClockIcon,\n CopyIcon,\n GaugeIcon,\n LinkIcon,\n LockIcon,\n MoreHorizontalIcon,\n PanelRightCloseIcon,\n PanelRightOpenIcon,\n PauseIcon,\n PencilIcon,\n PinIcon,\n SearchIcon,\n Share2Icon,\n ShieldCheckIcon,\n ShieldOffIcon,\n SmartphoneIcon,\n UserRoundPenIcon,\n ZapIcon,\n ZapOffIcon,\n} from \"lucide-react\";\nimport { useCallback, useEffect, useRef, useState, type ReactNode } from \"react\";\n\nimport { BillingClassMark, type BillingClass } from \"../billing-class-mark\";\nimport { ConnectionPill } from \"../common\";\nimport {\n GrantSessionAdminAccessDialog,\n SessionAdminAccessIndicator,\n SessionAdminAccessMenuItems,\n type SessionAdminAccessControl,\n} from \"../session/session-admin-access\";\nimport { SessionAncestryBreadcrumb } from \"../session/subagents\";\nimport { ShareChatDialog } from \"../session/share-chat-dialog\";\nimport { useSessionUiFeature } from \"../../lib/session-ui-features\";\nimport {\n SESSION_HEADER_PARTS,\n useSessionHeaderOverflow,\n type SessionHeaderPart,\n} from \"./session-header-overflow\";\nimport { Button } from \"../../../ui/button\";\nimport {\n ContextMenu,\n ContextMenuContent,\n ContextMenuItem,\n ContextMenuTrigger,\n} from \"../../../ui/context-menu\";\nimport { copyTitle } from \"../../lib/copy-link\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuTrigger,\n} from \"../../../ui/dropdown-menu\";\nimport { useActionShortcut } from \"../../lib/actions/actions-provider\";\nimport { useChatOperations } from \"../../lib/actions/chat-operations\";\nimport { RENAME_CURRENT_CHAT_EVENT } from \"../../lib/actions/events\";\nimport { Skeleton } from \"../../../ui/skeleton\";\nimport { requestConversationFind } from \"../../lib/conversation-find-event\";\nimport { currentPhoneAppPlatform, openInAppUrl } from \"../../lib/open-in-app\";\nimport { sessionControlPaused, sessionInputWait } from \"../../lib/session-rail\";\nimport {\n sessionAutomationWaitLines,\n sessionAutomationWaitWords,\n} from \"../../../components/automations/automation-model\";\nimport { HoverCard, HoverCardContent, HoverCardTrigger } from \"../../../ui/hover-card\";\nimport { useSessionStartup } from \"../../../lib/session-startup\";\nimport { isCodexProductModel } from \"../../lib/session-model\";\nimport {\n SESSION_TITLE_MAX_LENGTH,\n sessionDisplayTitle,\n useInlineRename,\n type InlineRename,\n} from \"../../lib/session-rename\";\nimport { pinLiveAnnouncement } from \"../../lib/pin-live-announcement\";\nimport { repliesMuteLabel, type SessionRepliesMute } from \"../../lib/inbox\";\nimport { labelEffort, type IntelligenceEffort } from \"../../lib/session-tools\";\nimport type { LatencyMode, Session } from \"../../types\";\nimport { usePage } from \"../../lib/navigation\";\nimport { toast } from \"../../lib/toast\";\nimport { SessionAvatar } from \"../session/session-avatar\";\nimport {\n SessionProfileEditorDialog,\n type UpdateSessionProfileFn,\n} from \"../session/session-profile-editor\";\nimport { BotTemplateDialog } from \"../bots/bot-template-dialog\";\nimport { useUiEventTarget } from \"../../lib/ui-events\";\n\nconst SUBSCRIPTION_RAILS: ReadonlySet<BillingClass> = new Set([\n \"codex_subscription\",\n \"claude_subscription\",\n \"supergrok_subscription\",\n]);\n\nexport function SessionHeader({\n session,\n ancestors,\n onOpenAutomations,\n lineageLoading,\n lineageError,\n connectionState,\n status,\n keyAuthRequired,\n onForgetAccessKey,\n inspectorOpen,\n onToggleInspector,\n onRename,\n onPin,\n onUpdateProfile,\n onSaveBotTemplate,\n onArchive,\n repliesMute,\n adminAccess,\n onOpenUsageLimit,\n sandboxSlot,\n accountSlot,\n accessSlot,\n leading,\n lastStartedModel,\n lastStartedReasoningEffort,\n lastStartedLatencyMode,\n billingClass,\n modelLabel,\n modelLogoUrl,\n policyLoading,\n}: {\n session: Session;\n /** Root-to-direct-parent order. */\n ancestors: SessionSummary[];\n /**\n * Present only when an automation posts into this session. Opens the\n * Automations page filtered to this chat, so the reader can see or edit what\n * puts runs here.\n */\n onOpenAutomations?: ((() => void) | null) | undefined;\n lineageLoading?: boolean | undefined;\n lineageError?: Error | null | undefined;\n connectionState: SessionEventsConnectionState;\n status: Session[\"status\"];\n keyAuthRequired: boolean;\n onForgetAccessKey: () => void;\n inspectorOpen: boolean;\n /** Absent: the surface shows no session panel, so no toggle. */\n onToggleInspector?: (() => void) | undefined;\n onRename: (workspaceId: string, sessionId: string, title: string) => Promise<Session | null>;\n onPin: (session: Session, pinned: boolean) => Promise<Session | null>;\n /** Saves the chat's name, description and avatar. Absent hides Edit profile. */\n onUpdateProfile?: UpdateSessionProfileFn | null | undefined;\n /** Saves a bot template in the workspace. Absent hides Save as bot template. */\n onSaveBotTemplate?:\n | ((request: CreateBotTemplateRequest) => Promise<WorkspaceBotTemplate>)\n | null\n | undefined;\n /** Archives or restores this root session. Absent hides the action. */\n onArchive?: ((session: Session, archived: boolean) => Promise<void>) | undefined;\n /**\n * The signed-in person's mute on this session's replies. Absent hides the\n * action (sub-agents, people without an inbox, servers without it).\n */\n repliesMute?: SessionRepliesMute | null | undefined;\n /**\n * This session's full access, when the viewer can see it on or give it.\n * Absent hides the shield and the menu action.\n */\n adminAccess?: SessionAdminAccessControl | null | undefined;\n /**\n * Opens this chat's usage limit (Agent tab > Usage). Absent hides the menu\n * item, for servers without usage limits.\n */\n onOpenUsageLimit?: ((() => void) | null) | undefined;\n /** The \"Run on <machine>\" control — a live component in production. */\n sandboxSlot?: ReactNode | undefined;\n /**\n * Replaces the static provider mark when the session runs on a subscription\n * (Codex, Claude, SuperGrok): the same mark, clickable for the account and\n * its usage. Absent for other payment rails.\n */\n accountSlot?: ReactNode | undefined;\n /** Compact session access state/menu, lazy-mounted by the route shell. */\n accessSlot?: ReactNode | undefined;\n /** Leading control (the mobile hamburger); absent on desktop. */\n leading?: ReactNode | undefined;\n /**\n * Model·effort·latency from the newest turn that durably emitted `turn.started`.\n * Historical — does not follow the composer next-turn picker. Falls back to\n * session creation defaults before any turn has admitted.\n */\n lastStartedModel?: string | undefined;\n lastStartedReasoningEffort?: IntelligenceEffort | undefined;\n lastStartedLatencyMode?: LatencyMode | undefined;\n /** Billing rail: subscription account chip, or the mark for makers without a logo. */\n billingClass?: BillingClass | undefined;\n /** Product model label (e.g. GPT-5.6 Luna). */\n modelLabel?: string | undefined;\n modelLogoUrl?: string | undefined;\n /**\n * True while last-started policy and/or model catalog are still resolving.\n * Avoids flashing session defaults (wrong provider) before admitted truth.\n */\n policyLoading?: boolean | undefined;\n}) {\n const uiEvents = useUiEventTarget(\"document\");\n const page = usePage();\n const waiting = sessionInputWait({ ...session, status });\n // A session the runtime could not start reads as stuck, not \"Waiting on you\".\n const displayStatus = sessionDisplayStatus({\n status,\n admissionBlock: session.admissionBlock,\n });\n const startup = useSessionStartup({ ...session, status });\n const startupLabel =\n startup === \"starting\"\n ? \"Starting\"\n : startup === \"delayed\" || startup === \"retrying\"\n ? \"Waiting to start\"\n : undefined;\n const modelId = lastStartedModel?.trim() || session.model;\n const resolvedBilling: BillingClass =\n billingClass ?? (isCodexProductModel(modelId) ? \"codex_subscription\" : \"opengeni_credits\");\n const resolvedModel = modelLabel?.trim() || modelDisplayName(modelId);\n const displayEffort: IntelligenceEffort = lastStartedReasoningEffort ?? session.reasoningEffort;\n const displayLatency: LatencyMode = lastStartedLatencyMode ?? session.latencyMode;\n // Subscription rails → clickable account chip, the same for every provider.\n // Other rails → static provider icon only (never invent a text\n // \"Opengeni\"/\"BYOK\" word). Don't key off `accountSlot != null`.\n const isSubscriptionRail = SUBSCRIPTION_RAILS.has(resolvedBilling);\n const policyBits = [\n resolvedModel,\n labelEffort(displayEffort),\n displayLatency === \"fast\"\n ? \"Fast\"\n : displayLatency === \"ultrafast\"\n ? \"Ultrafast\"\n : displayLatency === \"priority\"\n ? \"Priority\"\n : null,\n ].filter((bit): bit is string => Boolean(bit));\n const rename = useInlineRename(session, onRename);\n const pin = useSessionPinToggle(session, onPin);\n const context = useOptionalAppContext();\n // Archiving is one-way, so an archived chat offers no archive action, and\n // only people who can control the chat archive it.\n const canArchive =\n Boolean(onArchive) &&\n session.parentSessionId === null &&\n !session.archived &&\n (context ? archiveActionLabel(context, session) !== null : true);\n // An archived chat cannot be pinned.\n const canPin = !session.archived;\n const [grantAdminOpen, setGrantAdminOpen] = useState(false);\n const shareLinksFeature = useSessionUiFeature(\"shareLinks\");\n // Only the person who started a top-level chat can share it; the server\n // decides whether links are on at all and says so in the dialog.\n const canShare =\n shareLinksFeature &&\n context !== null &&\n session.parentSessionId === null &&\n session.createdBy?.kind === \"subject\" &&\n session.createdBy.subjectId === context.accessContext.subjectId;\n const [shareOpen, setShareOpen] = useState(false);\n const canEditProfile = Boolean(onUpdateProfile);\n const [profileOpen, setProfileOpen] = useState(false);\n const [saveTemplateOpen, setSaveTemplateOpen] = useState(false);\n // Menu actions that move focus (rename input, find field) run after the menu\n // has closed, so its focus restoration cannot steal focus back to the trigger.\n const afterMenuClose = useRef<(() => void) | null>(null);\n const chatOps = useChatOperations();\n const findKeys = useActionShortcut(\"chat.find\");\n const copyLinkKeys = useActionShortcut(\"chat.copyLink\");\n const pinKeys = useActionShortcut(\"chat.pin\");\n const archiveKeys = useActionShortcut(\"chat.archive\");\n const panelKeys = useActionShortcut(\"view.workspacePanel\");\n const hasCrumb =\n Boolean(session.parentSessionId) || ancestors.length > 0 || Boolean(lineageError);\n // A chat started for a Slack agent says which one; its avatar is the agent's icon.\n const slackAgent = sessionSlackAgentInfo(session.metadata);\n const overflow = useSessionHeaderOverflow({\n present: SESSION_HEADER_PARTS.filter((part) => {\n switch (part) {\n case \"panel\":\n return Boolean(onToggleInspector);\n case \"access\":\n return Boolean(accessSlot);\n case \"fullAccess\":\n return Boolean(adminAccess?.state.active);\n case \"automations\":\n return Boolean(onOpenAutomations);\n case \"machine\":\n return Boolean(sandboxSlot);\n case \"site\":\n return sessionSiteOrigin(session) !== null;\n case \"slackAgent\":\n return slackAgent !== null;\n case \"accessKey\":\n return keyAuthRequired;\n default:\n return true;\n }\n }),\n contentKey: sessionDisplayTitle(session),\n resetKey: session.id,\n frozen: rename.editing,\n });\n // In the \"…\" menu instead of the row (see SESSION_HEADER_PARTS).\n const inMenu = (part: SessionHeaderPart) => overflow.collapsed.has(part);\n const part = overflow.partRef;\n // \"Rename\" from the ⌘K menu or the desktop menu bar edits this title.\n const startRenaming = rename.startEditing;\n useEffect(() => {\n const start = () => startRenaming();\n uiEvents.addEventListener(RENAME_CURRENT_CHAT_EVENT, start);\n return () => uiEvents.removeEventListener(RENAME_CURRENT_CHAT_EVENT, start);\n }, [uiEvents, startRenaming]);\n const providerControl = isSubscriptionRail ? (\n (accountSlot ?? (\n <BillingClassMark\n billingClass={resolvedBilling}\n className=\"size-3.5 shrink-0 text-fg-muted\"\n aria-label=\"\"\n />\n ))\n ) : (\n // The model maker's logo; the payment rail only when the maker has none.\n <ModelMark\n model={{ id: modelId, logoUrl: modelLogoUrl }}\n className=\"size-3.5 text-fg-muted\"\n fallback={<BillingClassMark billingClass={resolvedBilling} className=\"size-3.5 shrink-0\" />}\n />\n );\n return (\n // An elevated band, not just canvas-with-a-hairline: reading as a real top\n // bar was the light-theme fix — a near-white header on a near-white canvas\n // needs its own surface + a crisp divider to look intentional (and it lifts\n // the dark bar a touch above the canvas too).\n <header\n data-window-drag\n data-titlebar\n className=\"@container/titlebar flex min-h-14 min-w-0 shrink-0 items-center gap-1 border-b border-border bg-canvas/80 pb-1 pl-[max(clamp(0.5rem,2.5vw,1.25rem),env(safe-area-inset-left))] pr-[max(clamp(0.5rem,2.5vw,1.25rem),env(safe-area-inset-right))] pt-[max(0.375rem,env(safe-area-inset-top))] backdrop-blur supports-[backdrop-filter]:bg-canvas/65\"\n >\n {leading}\n {/* Every chat's header is one row of the same height. A child chat's\n way back is a small line above its title, never beside it. The title\n keeps a readable width: when the row is too narrow, the least\n important parts move into the \"…\" menu (SESSION_HEADER_PARTS). */}\n <div className=\"flex min-w-0 flex-1 flex-col justify-center\">\n <SessionAncestryBreadcrumb\n workspaceId={session.workspaceId}\n parentSessionId={session.parentSessionId}\n ancestors={ancestors}\n loading={lineageLoading}\n error={lineageError}\n />\n <div\n ref={overflow.rowRef}\n data-session-title-row=\"\"\n className={cn(\"flex min-w-0 items-center gap-1\", hasCrumb && \"h-7\")}\n >\n <div\n ref={overflow.titleRef}\n className={cn(\"flex min-w-0 items-center gap-1.5\", rename.editing && \"flex-1\")}\n >\n {/* A bot's avatar travels with its title. */}\n {session.avatar ? (\n <button\n type=\"button\"\n aria-label=\"Edit profile\"\n title=\"Edit profile\"\n disabled={!canEditProfile}\n onClick={() => setProfileOpen(true)}\n className=\"-mr-0.5 flex shrink-0 items-center justify-center rounded-[6px] outline-hidden focus-visible:ring-2 focus-visible:ring-ring/40 enabled:hover:opacity-85 pointer-coarse:size-11\"\n >\n <SessionAvatar\n avatar={session.avatar}\n name={sessionDisplayTitle(session)}\n workspaceId={session.workspaceId}\n seed={session.id}\n size=\"sm\"\n />\n </button>\n ) : null}\n <SessionTitleEditor\n session={session}\n rename={rename}\n onCopyLink={() => void chatOps.copyLink(session)}\n />\n </div>\n {/* Below lg (or when the full badge has no room) the lifecycle is a\n dot beside the title. */}\n <CompactSessionStatus\n paused={sessionControlPaused(session)}\n waiting={Boolean(waiting)}\n status={displayStatus}\n label={startupLabel}\n always={inMenu(\"status\")}\n />\n {accessSlot && !inMenu(\"access\") ? (\n <span ref={part(\"access\")} className=\"flex shrink-0 items-center\">\n {accessSlot}\n </span>\n ) : null}\n {adminAccess?.state.active && !inMenu(\"fullAccess\") ? (\n <span ref={part(\"fullAccess\")} className=\"flex shrink-0 items-center\">\n <SessionAdminAccessIndicator\n control={adminAccess}\n onChangeTimeLimit={() => setGrantAdminOpen(true)}\n />\n </span>\n ) : null}\n {sessionSiteOrigin(session) && !inMenu(\"site\") ? (\n <span ref={part(\"site\")} className=\"flex shrink-0 items-center\">\n <SiteOriginLink session={session} />\n </span>\n ) : null}\n {slackAgent && !inMenu(\"slackAgent\") ? (\n <span ref={part(\"slackAgent\")} className=\"flex min-w-0 shrink-0 items-center\">\n <MetaChip\n variant=\"soft\"\n title={`Slack agent: ${slackAgent.name}`}\n className=\"max-w-48\"\n >\n <span data-session-slack-agent=\"\" className=\"min-w-0 truncate\">\n Slack agent: {slackAgent.name}\n </span>\n </MetaChip>\n </span>\n ) : null}\n {onOpenAutomations && !inMenu(\"automations\") ? (\n // The first to give way: its words shorten to its icon before\n // anything moves into the menu. The weight is high enough that\n // the title keeps every pixel until then (a sliver would already\n // truncate it).\n <span\n ref={part(\"automations\")}\n className=\"flex min-w-6 shrink-[100000] items-center pointer-coarse:min-w-11\"\n >\n <AutomationWaitChip session={session} onOpen={onOpenAutomations} />\n </span>\n ) : null}\n </div>\n </div>\n <div ref={overflow.clusterRef} className=\"flex shrink-0 items-center gap-0.5 lg:gap-2\">\n {/* Provider + model · effort · speed stay one cluster on the action side. */}\n {inMenu(\"model\") ? null : (\n <div\n ref={part(\"model\")}\n className=\"hidden max-w-[18rem] items-center gap-1.5 overflow-hidden text-2xs leading-4 text-fg-muted lg:flex xl:max-w-[22rem]\"\n >\n {policyLoading ? (\n <span\n className=\"inline-flex items-center gap-1.5\"\n aria-busy=\"true\"\n aria-label=\"Loading model\"\n >\n <Skeleton className=\"h-6 w-11 shrink-0 rounded-full\" />\n <Skeleton className=\"h-3 w-36\" />\n </span>\n ) : (\n <span className=\"inline-flex min-w-0 items-center gap-1.5 truncate font-medium text-fg-muted\">\n {providerControl}\n <span className=\"min-w-0 truncate font-normal\">\n {policyBits.map((bit, index) => (\n <span key={bit}>\n {index > 0 ? \" · \" : null}\n {bit}\n </span>\n ))}\n </span>\n </span>\n )}\n </div>\n )}\n {/* Below lg, machine, find and pin live in the \"…\" menu. */}\n {sandboxSlot && !inMenu(\"machine\") ? (\n <span ref={part(\"machine\")} className=\"hidden items-center lg:flex\">\n {sandboxSlot}\n </span>\n ) : null}\n {inMenu(\"find\") ? null : (\n <Button\n ref={part(\"find\")}\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n onClick={() => requestConversationFind(uiEvents)}\n aria-label=\"Find in conversation\"\n data-conversation-find-trigger=\"\"\n title=\"Find in conversation (Ctrl/Cmd+F)\"\n className=\"hidden pointer-coarse:size-11 lg:inline-flex\"\n >\n <SearchIcon className=\"size-4\" />\n </Button>\n )}\n {inMenu(\"pin\") || !canPin ? null : (\n <Button\n ref={part(\"pin\")}\n type=\"button\"\n variant={session.pinned ? \"secondary\" : \"ghost\"}\n size=\"icon-sm\"\n aria-label={session.pinned ? \"Unpin session\" : \"Pin session\"}\n aria-pressed={Boolean(session.pinned)}\n aria-busy={pin.busy}\n disabled={pin.busy}\n className=\"hidden pointer-coarse:size-11 lg:inline-flex\"\n onClick={pin.toggle}\n >\n <PinIcon className={session.pinned ? \"size-4 fill-current\" : \"size-4\"} />\n </Button>\n )}\n <span className=\"sr-only\" aria-live=\"polite\" aria-atomic=\"true\">\n {pin.announcement}\n </span>\n {inMenu(\"status\") ? null : (\n <div ref={part(\"status\")} className=\"hidden items-center gap-2 lg:flex\">\n <ConnectionPill state={connectionState} />\n {/* Admission vs lifecycle are different axes, but showing both when\n control is Active (Running + Active) is redundant noise. When\n paused, admission is the headline — hide lifecycle so we don't\n imply the session is still \"Running\"/\"Idle\" under a pause gate. */}\n {!sessionControlPaused(session) ? (\n waiting ? (\n <StatusPill\n className=\"border-border bg-surface text-fg-muted\"\n data-session-wait-badge=\"\"\n >\n Waiting\n </StatusPill>\n ) : (\n <SessionStatusBadge status={displayStatus} label={startupLabel} />\n )\n ) : (\n <WorkstreamControlIndicator session={session} />\n )}\n </div>\n )}\n <span className={cn(\"sr-only\", !inMenu(\"status\") && \"lg:hidden\")}>\n Connection {connectionState}.\n </span>\n {keyAuthRequired && !inMenu(\"accessKey\") ? (\n <Button\n ref={part(\"accessKey\")}\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n onClick={onForgetAccessKey}\n aria-label=\"Clear access key\"\n className=\"pointer-coarse:size-11\"\n >\n <LockIcon className=\"size-4\" />\n </Button>\n ) : null}\n {onToggleInspector && !inMenu(\"panel\") ? (\n <Button\n ref={part(\"panel\")}\n type=\"button\"\n variant={inspectorOpen ? \"secondary\" : \"ghost\"}\n size=\"icon-sm\"\n onClick={onToggleInspector}\n aria-label={inspectorOpen ? \"Hide workspace\" : \"Open workspace\"}\n aria-keyshortcuts={panelKeys?.ariaKeys}\n title={\n (inspectorOpen ? \"Hide workspace\" : \"Open workspace\") +\n (panelKeys ? ` (${panelKeys.label})` : \"\")\n }\n className=\"pointer-coarse:size-11\"\n >\n {inspectorOpen ? (\n <PanelRightCloseIcon className=\"size-4\" />\n ) : (\n <PanelRightOpenIcon className=\"size-4\" />\n )}\n </Button>\n ) : null}\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label=\"More session actions\"\n title=\"More\"\n className=\"pointer-coarse:size-11\"\n >\n <MoreHorizontalIcon className=\"size-4\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent\n align=\"end\"\n className=\"w-56\"\n onCloseAutoFocus={(event) => {\n const action = afterMenuClose.current;\n if (!action) return;\n afterMenuClose.current = null;\n event.preventDefault();\n action();\n }}\n >\n {onToggleInspector && inMenu(\"panel\") ? (\n <DropdownMenuItem\n aria-keyshortcuts={panelKeys?.ariaKeys}\n onSelect={() => {\n afterMenuClose.current = onToggleInspector;\n }}\n >\n {inspectorOpen ? <PanelRightCloseIcon /> : <PanelRightOpenIcon />}\n {inspectorOpen ? \"Hide workspace\" : \"Open workspace\"}\n {panelKeys ? <DropdownMenuShortcut>{panelKeys.label}</DropdownMenuShortcut> : null}\n </DropdownMenuItem>\n ) : null}\n <DropdownMenuItem\n className={inMenu(\"find\") ? undefined : \"lg:hidden\"}\n aria-keyshortcuts={findKeys?.ariaKeys}\n onSelect={() => {\n afterMenuClose.current = () => requestConversationFind(uiEvents);\n }}\n >\n <SearchIcon />\n Find\n {findKeys ? <DropdownMenuShortcut>{findKeys.label}</DropdownMenuShortcut> : null}\n </DropdownMenuItem>\n <DropdownMenuItem\n onSelect={() => {\n afterMenuClose.current = rename.startEditing;\n }}\n >\n <PencilIcon />\n Rename\n </DropdownMenuItem>\n {canEditProfile ? (\n <DropdownMenuItem\n onSelect={() => {\n afterMenuClose.current = () => setProfileOpen(true);\n }}\n >\n <UserRoundPenIcon />\n Edit profile…\n </DropdownMenuItem>\n ) : null}\n {onSaveBotTemplate ? (\n <DropdownMenuItem\n onSelect={() => {\n afterMenuClose.current = () => setSaveTemplateOpen(true);\n }}\n >\n <BotIcon />\n Save as bot template…\n </DropdownMenuItem>\n ) : null}\n <DropdownMenuItem\n aria-keyshortcuts={copyLinkKeys?.ariaKeys}\n onSelect={() => void chatOps.copyLink(session)}\n >\n <LinkIcon />\n Copy link\n {copyLinkKeys ? (\n <DropdownMenuShortcut>{copyLinkKeys.label}</DropdownMenuShortcut>\n ) : null}\n </DropdownMenuItem>\n <DropdownMenuItem onSelect={() => void copyTitle(sessionDisplayTitle(session))}>\n <CopyIcon />\n Copy title\n </DropdownMenuItem>\n {canShare ? (\n <DropdownMenuItem\n onSelect={() => {\n afterMenuClose.current = () => setShareOpen(true);\n }}\n >\n <Share2Icon />\n Share…\n </DropdownMenuItem>\n ) : null}\n {canPin ? (\n <DropdownMenuItem\n className={inMenu(\"pin\") ? undefined : \"lg:hidden\"}\n aria-keyshortcuts={pinKeys?.ariaKeys}\n disabled={pin.busy}\n onSelect={() => pin.toggle()}\n >\n <PinIcon className={session.pinned ? \"fill-current\" : undefined} />\n {session.pinned ? \"Unpin\" : \"Pin\"}\n {pinKeys ? <DropdownMenuShortcut>{pinKeys.label}</DropdownMenuShortcut> : null}\n </DropdownMenuItem>\n ) : null}\n {currentPhoneAppPlatform() ? (\n <DropdownMenuItem\n onSelect={() => {\n page.assign(openInAppUrl(page.href()));\n }}\n >\n <SmartphoneIcon />\n Open in app\n </DropdownMenuItem>\n ) : null}\n {sandboxSlot ? (\n <div\n className={cn(\n \"flex min-h-9 items-center px-2 empty:hidden\",\n !inMenu(\"machine\") && \"lg:hidden\",\n )}\n >\n {sandboxSlot}\n </div>\n ) : null}\n {/* Parts with no room in the header row (SESSION_HEADER_PARTS). */}\n {accessSlot && inMenu(\"access\") ? (\n <div className=\"flex min-h-9 items-center gap-2 px-2 text-sm text-fg-muted\">\n Access\n {accessSlot}\n </div>\n ) : null}\n {onOpenAutomations && inMenu(\"automations\") ? (\n <AutomationWaitMenuItem\n session={session}\n onOpen={() => {\n afterMenuClose.current = onOpenAutomations;\n }}\n />\n ) : null}\n {inMenu(\"site\") ? <SiteOriginMenuItem session={session} /> : null}\n {slackAgent && inMenu(\"slackAgent\") ? (\n <div className=\"flex min-h-9 min-w-0 items-center px-2 text-sm text-fg-muted\">\n <span className=\"min-w-0 truncate\">Slack agent: {slackAgent.name}</span>\n </div>\n ) : null}\n {keyAuthRequired && inMenu(\"accessKey\") ? (\n <DropdownMenuItem onSelect={onForgetAccessKey}>\n <LockIcon />\n Clear access key\n </DropdownMenuItem>\n ) : null}\n {repliesMute ? (\n <DropdownMenuItem disabled={repliesMute.busy} onSelect={() => repliesMute.toggle()}>\n {repliesMute.muted ? <BellIcon /> : <BellOffIcon />}\n {repliesMuteLabel(repliesMute)}\n </DropdownMenuItem>\n ) : null}\n {onOpenUsageLimit ? (\n <DropdownMenuItem\n onSelect={() => {\n afterMenuClose.current = onOpenUsageLimit;\n }}\n >\n <GaugeIcon />\n Usage limit\n </DropdownMenuItem>\n ) : null}\n {adminAccess?.state.active && inMenu(\"fullAccess\") ? (\n <>\n <DropdownMenuSeparator />\n <SessionAdminAccessMenuItems\n control={adminAccess}\n onChangeTimeLimit={() => setGrantAdminOpen(true)}\n runAfterClose={(action) => {\n afterMenuClose.current = action;\n }}\n />\n </>\n ) : adminAccess?.state.active && adminAccess.state.canRevoke ? (\n <DropdownMenuItem disabled={adminAccess.busy} onSelect={() => adminAccess.revoke()}>\n <ShieldOffIcon />\n Turn off full access\n </DropdownMenuItem>\n ) : adminAccess && !adminAccess.state.active && adminAccess.state.canGrant ? (\n <DropdownMenuItem\n disabled={adminAccess.busy}\n onSelect={() => {\n afterMenuClose.current = () => setGrantAdminOpen(true);\n }}\n >\n <ShieldCheckIcon />\n Give full access…\n </DropdownMenuItem>\n ) : null}\n {canArchive ? (\n <>\n <DropdownMenuSeparator />\n <DropdownMenuItem\n aria-keyshortcuts={archiveKeys?.ariaKeys}\n onSelect={() => void onArchive?.(session, true)}\n >\n <ArchiveIcon />\n Archive\n {archiveKeys ? (\n <DropdownMenuShortcut>{archiveKeys.label}</DropdownMenuShortcut>\n ) : null}\n </DropdownMenuItem>\n </>\n ) : null}\n </DropdownMenuContent>\n </DropdownMenu>\n {canShare && context ? (\n <ShareChatDialog\n client={context.client}\n workspaceId={session.workspaceId}\n sessionId={session.id}\n open={shareOpen}\n onOpenChange={setShareOpen}\n />\n ) : null}\n {onUpdateProfile && profileOpen ? (\n <SessionProfileEditorDialog\n session={session}\n update={onUpdateProfile}\n open={profileOpen}\n onOpenChange={setProfileOpen}\n />\n ) : null}\n {onSaveBotTemplate && saveTemplateOpen ? (\n <BotTemplateDialog\n open={saveTemplateOpen}\n onOpenChange={setSaveTemplateOpen}\n workspaceId={session.workspaceId}\n seed={session.id}\n mode=\"save\"\n initial={{\n name: sessionDisplayTitle(session),\n description: session.description ?? \"\",\n avatar: session.avatar ?? null,\n setupInstructions: \"\",\n // Shared like the chat, so an Only me chat stays private by default.\n visibility: session.tenancy?.visibility === \"private\" ? \"private\" : \"workspace\",\n }}\n onSubmit={async (values) => {\n const created = await onSaveBotTemplate({ ...values, sourceSessionId: session.id });\n toast.success(\"Bot template saved\", {\n description: created.name,\n });\n }}\n />\n ) : null}\n {adminAccess ? (\n <GrantSessionAdminAccessDialog\n control={adminAccess}\n open={grantAdminOpen}\n onOpenChange={setGrantAdminOpen}\n />\n ) : null}\n </div>\n </header>\n );\n}\n\n/**\n * The automations that post into this chat: what they wait for in a few\n * words, every wait on hover, and their settings on click. A paused or\n * finished automation still links to its settings, marked inactive. Narrow\n * headers keep only the icon; its name always carries the whole wait.\n */\nfunction AutomationWaitChip({ session, onOpen }: { session: Session; onOpen: () => void }) {\n const now = new Date();\n const wait = sessionAutomationWaitWords(t, session, { now });\n const lines = sessionAutomationWaitLines(t, session, { now });\n const kind = wait?.kind ?? \"none\";\n return (\n <HoverCard openDelay={150} closeDelay={80}>\n <HoverCardTrigger asChild>\n <button\n type=\"button\"\n onClick={onOpen}\n data-automation-wait={kind}\n aria-label={t(\"automations.wait.openPanel\", {\n wait: wait?.label ?? t(\"automations.wait.none\"),\n })}\n className=\"inline-flex min-w-0 max-w-60 items-center justify-center gap-1 rounded-full px-1.5 text-2xs text-fg-muted transition-colors hover:text-fg focus-visible:outline-2 focus-visible:outline-ring/55 pointer-coarse:min-h-11 pointer-coarse:min-w-11\"\n >\n <AutomationWaitIcon kind={kind} />\n <span className=\"hidden min-w-0 truncate sm:block @max-[34rem]/titlebar:hidden!\">\n {wait?.short ?? t(\"sessionChrome.automation\")}\n </span>\n </button>\n </HoverCardTrigger>\n <HoverCardContent\n collisionPadding={8}\n className=\"w-auto min-w-56 max-w-[min(22rem,calc(100vw-16px))] p-3\"\n >\n <div data-automation-wait-details=\"\" className=\"grid min-w-0 gap-2.5\">\n <p className=\"text-xs font-medium text-fg\">{t(\"automations.wait.details.heading\")}</p>\n <ul className=\"grid min-w-0 gap-1.5\">\n {lines.map((line) => (\n <li\n key={line.text}\n className=\"flex min-w-0 items-start gap-2 text-xs leading-4 text-fg-muted\"\n >\n <span className=\"flex size-4 shrink-0 items-center justify-center text-fg-subtle\">\n <AutomationWaitIcon kind={line.kind} />\n </span>\n <span className=\"min-w-0 flex-1 [overflow-wrap:anywhere]\">{line.text}</span>\n </li>\n ))}\n </ul>\n <p className=\"border-t border-border pt-2 text-2xs text-fg-subtle\">\n {t(\"automations.wait.details.open\")}\n </p>\n </div>\n </HoverCardContent>\n </HoverCard>\n );\n}\n\nfunction AutomationWaitIcon({ kind }: { kind: \"event\" | \"schedule\" | \"none\" }) {\n return kind === \"event\" ? (\n <ZapIcon aria-hidden className=\"size-3 shrink-0\" />\n ) : kind === \"schedule\" ? (\n <CalendarClockIcon aria-hidden className=\"size-3 shrink-0\" />\n ) : (\n <ZapOffIcon aria-hidden className=\"size-3 shrink-0\" />\n );\n}\n\n/** The automation chip as a \"…\" menu item, for a header with no room for it. */\nfunction AutomationWaitMenuItem({ session, onOpen }: { session: Session; onOpen: () => void }) {\n const wait = sessionAutomationWaitWords(t, session, { now: new Date() });\n return (\n <DropdownMenuItem\n onSelect={onOpen}\n aria-label={t(\"automations.wait.openPanel\", {\n wait: wait?.label ?? t(\"automations.wait.none\"),\n })}\n >\n <AutomationWaitIcon kind={wait?.kind ?? \"none\"} />\n <span className=\"min-w-0 truncate\">{wait?.short ?? t(\"sessionChrome.automation\")}</span>\n </DropdownMenuItem>\n );\n}\n\n/**\n * Small-screen status: a dot beside the title, named for assistive tech.\n * `always` keeps it on wide screens too, when the full badge has no room.\n */\nfunction CompactSessionStatus({\n paused,\n waiting,\n status,\n label,\n always = false,\n}: {\n paused: boolean;\n waiting: boolean;\n status: SessionDisplayStatus;\n label?: string | undefined;\n always?: boolean | undefined;\n}) {\n const className = cn(\"inline-flex shrink-0 items-center\", !always && \"lg:hidden\");\n if (paused) {\n return (\n <span data-compact-session-status=\"paused\" title=\"Paused\" className={className}>\n <PauseIcon aria-hidden className=\"size-2.5 shrink-0 fill-current text-status-waiting\" />\n <span className=\"sr-only\">Paused</span>\n </span>\n );\n }\n if (waiting) {\n return (\n <span data-compact-session-status=\"waiting\" title=\"Waiting\" className={className}>\n <span aria-hidden className=\"size-2 rounded-full bg-status-waiting\" />\n <span className=\"sr-only\">Waiting</span>\n </span>\n );\n }\n const name = label ?? SESSION_STATUS_META(t)[status].label;\n return (\n <span\n data-compact-session-status={status}\n data-status={status}\n title={name}\n className={className}\n >\n <StatusDot status={status} className=\"size-2\" />\n <span className=\"sr-only\">{name}</span>\n </span>\n );\n}\n\n/** Pause-only header chip (Active is not shown — lifecycle status covers “go”). */\nfunction WorkstreamControlIndicator({ session }: { session: Session }) {\n const control = session.effectiveControl;\n if (control.state !== \"paused\" || session.status === \"cancelled\") {\n return null;\n }\n const blocker = control.primaryBlocker;\n const label =\n blocker?.kind === \"workspace\"\n ? \"Workspace paused\"\n : control.directState === \"paused\" || blocker?.sessionId === session.id\n ? \"Paused here\"\n : `Paused by ${blocker?.displayName ?? \"parent\"}`;\n return (\n <button\n type=\"button\"\n aria-label={`${label}. Open workstream controls`}\n title={`${label} · open workstream controls`}\n onClick={() => {\n document.dispatchEvent(new Event(OPEN_WORKSTREAM_CONTROL_EVENT));\n }}\n className=\"inline-flex min-w-0 max-w-48 items-center gap-1.5 rounded-full border border-status-waiting/35 bg-status-waiting/10 px-2 py-0.5 text-xs font-medium text-fg hover:bg-status-waiting/15\"\n >\n <PauseIcon className=\"size-3 shrink-0 fill-current text-status-waiting\" />\n <span className=\"hidden truncate sm:inline\">{label}</span>\n {control.additionalBlockerCount > 0 ? (\n <span className=\"hidden shrink-0 sm:inline\">+{control.additionalBlockerCount}</span>\n ) : null}\n </button>\n );\n}\n\n/** Pin toggle shared by the desktop pin button and the phone \"…\" menu item. */\nfunction useSessionPinToggle(\n session: Session,\n onPin: (session: Session, pinned: boolean) => Promise<Session | null>,\n) {\n const [busy, setBusy] = useState(false);\n const [announcement, setAnnouncement] = useState(\"\");\n const announcementSequence = useRef(0);\n const announce = useCallback((message: string) => {\n announcementSequence.current += 1;\n setAnnouncement(pinLiveAnnouncement(message, announcementSequence.current));\n }, []);\n const toggle = useCallback(() => {\n if (busy) return;\n const nextPinned = !session.pinned;\n setBusy(true);\n void onPin(session, nextPinned)\n .then((updated) => {\n announce(\n updated\n ? `Session ${nextPinned ? \"pinned\" : \"unpinned\"}.`\n : `Session was not ${nextPinned ? \"pinned\" : \"unpinned\"}.`,\n );\n })\n .catch(() => {\n announce(`Session was not ${nextPinned ? \"pinned\" : \"unpinned\"}.`);\n })\n .finally(() => setBusy(false));\n }, [announce, busy, onPin, session]);\n return { busy, toggle, announcement };\n}\n\n/**\n * The session header title — display by default, click the title (or the\n * hover pencil / \"…\" > Rename) to rename inline. Prefers the durable session.title\n * (agent- or user-set), falling back to the initial message / \"Untitled\n * session\" exactly like the rail list. Enter saves, Esc cancels, blur saves; an\n * empty/unchanged value is a no-op cancel. The live title (context.session)\n * flows in through the session.title_set SSE event the react useSession hook\n * applies, so cross-client renames and agent titling reflect here without a\n * reload. The shared `useInlineRename` hook keeps this behaviour identical to\n * the rail row's rename.\n */\nfunction SessionTitleEditor(props: {\n session: Session;\n rename: InlineRename;\n onCopyLink: () => void;\n}) {\n const display = sessionDisplayTitle(props.session);\n const rename = props.rename;\n const afterMenuClose = useRef<(() => void) | null>(null);\n\n if (rename.editing) {\n return (\n // A calm in-place edit: same size and position as the display title, a\n // soft surface tint + hairline instead of a loud focus ring. The global\n // focus-ring rule is what painted the old blue box; opting out here keeps\n // the rename feeling like editing the text, not filling in a form field.\n <input\n ref={rename.inputRef}\n data-session-title-current={display}\n value={rename.draft}\n onChange={(event) => rename.setDraft(event.target.value)}\n onBlur={() => void rename.commit()}\n onKeyDown={(event) => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n void rename.commit();\n } else if (event.key === \"Escape\") {\n event.preventDefault();\n rename.cancel();\n }\n }}\n maxLength={SESSION_TITLE_MAX_LENGTH}\n aria-label=\"Session title\"\n dir=\"auto\"\n className=\"-mx-1.5 w-full min-w-0 truncate rounded-md bg-surface-2/70 px-1.5 text-[15px] font-semibold leading-6 tracking-[-0.01em] outline-hidden ring-1 ring-border-strong focus:outline-hidden focus-visible:outline-hidden\"\n style={{ outline: \"none\" }}\n />\n );\n }\n\n return (\n <div className=\"group/title flex min-w-0 items-center gap-0.5\">\n {/* Right-click (or long-press) the title to copy it or the chat's link. */}\n <ContextMenu>\n <ContextMenuTrigger asChild>\n <button\n type=\"button\"\n onClick={rename.startEditing}\n title={`${display} · click to rename`}\n dir=\"auto\"\n data-session-title-text=\"\"\n className=\"min-w-0 shrink truncate rounded-sm text-left text-[15px] font-semibold leading-6 tracking-[-0.01em] text-fg hover:text-fg focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring/40 pointer-coarse:min-h-11 pointer-coarse:px-2\"\n >\n {display}\n </button>\n </ContextMenuTrigger>\n <ContextMenuContent\n className=\"min-w-40\"\n data-session-title-menu=\"\"\n onCloseAutoFocus={(event) => {\n // Rename starts once the menu has handed focus back, so the\n // field keeps it.\n const action = afterMenuClose.current;\n if (!action) return;\n afterMenuClose.current = null;\n event.preventDefault();\n action();\n }}\n >\n <ContextMenuItem onSelect={() => void copyTitle(display)}>\n <CopyIcon className=\"size-4\" />\n Copy title\n </ContextMenuItem>\n <ContextMenuItem onSelect={props.onCopyLink}>\n <LinkIcon className=\"size-4\" />\n Copy link\n </ContextMenuItem>\n <ContextMenuItem\n onSelect={() => {\n afterMenuClose.current = rename.startEditing;\n }}\n >\n <PencilIcon className=\"size-4\" />\n Rename\n </ContextMenuItem>\n </ContextMenuContent>\n </ContextMenu>\n {/* The pencil earns its pixels only when relevant: hidden at rest and\n revealed on hover/focus. Touch screens rename by tapping the title\n (or \"…\" > Rename), so the title keeps the row's width. */}\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-xs\"\n onClick={rename.startEditing}\n aria-label=\"Rename session\"\n className=\"shrink-0 text-fg-subtle opacity-0 transition-opacity hover:text-fg focus-visible:opacity-100 group-hover/title:opacity-100 pointer-coarse:hidden\"\n >\n <PencilIcon className=\"size-3\" />\n </Button>\n </div>\n );\n}\n","/**\n * The Slack agent a chat was started for, read from the chat's metadata.\n *\n * Mirrors `sessionSlackAgent` from `@opengeni/contracts` without zod, so the\n * chat header (an eager module) does not load the contracts schemas. The\n * parity test keeps the two in step.\n */\nexport type SessionSlackAgentInfo = { id: string; name: string };\n\n/** Session metadata key, `SESSION_SLACK_AGENT_METADATA_KEY` in contracts. */\nconst KEY = \"slackAgent\";\nconst UUID = /^[\\da-f]{8}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{12}$/iu;\n\nexport function sessionSlackAgentInfo(\n metadata: Record<string, unknown> | null | undefined,\n): SessionSlackAgentInfo | null {\n const value = metadata?.[KEY];\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) return null;\n const { id, name } = value as Record<string, unknown>;\n if (typeof id !== \"string\" || !UUID.test(id)) return null;\n if (typeof name !== \"string\" || name.length === 0) return null;\n return { id, name };\n}\n","import { useCallback, useEffect, useLayoutEffect, useRef, useState, type RefObject } from \"react\";\n\n/**\n * The chat header's optional parts, most important first. The header is always\n * one row: when the title would be squeezed below its readable width, parts\n * leave the row from the end of this list and live in the \"…\" menu instead;\n * they come back once there is room again. One rule for every screen size, so\n * no part needs its own breakpoint. A part that can shrink (flex-shrink above\n * 1, like the automation chip's words) gives way first, down to its minimum\n * width, before anything leaves.\n */\nexport const SESSION_HEADER_PARTS = [\n \"panel\",\n \"status\",\n \"access\",\n \"fullAccess\",\n \"automations\",\n \"pin\",\n \"find\",\n \"machine\",\n \"site\",\n \"slackAgent\",\n \"model\",\n \"accessKey\",\n] as const;\n\nexport type SessionHeaderPart = (typeof SESSION_HEADER_PARTS)[number];\n\n/** The title's readable width: its whole text, up to 40% of the header or 20rem. */\nconst TITLE_HEADER_SHARE = 0.4;\nconst TITLE_MAX_REM = 20;\n/** A part comes back only with this much to spare, so a part on the edge never flickers. */\nconst RETURN_SLACK_PX = 8;\n\nconst NONE: ReadonlySet<SessionHeaderPart> = new Set();\n\nexport type SessionHeaderOverflow = {\n /** Parts that are in the \"…\" menu instead of the row. */\n collapsed: ReadonlySet<SessionHeaderPart>;\n /** The row that holds the title and the parts beside it. */\n rowRef: RefObject<HTMLDivElement | null>;\n /** The title's own box inside that row. */\n titleRef: RefObject<HTMLDivElement | null>;\n /** The action cluster on the header's other side. */\n clusterRef: RefObject<HTMLDivElement | null>;\n /** Stable ref for the element that is one part, measured while it is in the row. */\n partRef: (part: SessionHeaderPart) => (element: HTMLElement | null) => void;\n};\n\n/**\n * Keeps the header on one row by moving the least important parts into the\n * \"…\" menu when the title would get too narrow. `present` lists the parts this\n * chat has; `contentKey` changes whenever the title's text does; `resetKey`\n * (the chat) starts over with every part in the row; `frozen` holds the\n * current layout (while renaming).\n */\nexport function useSessionHeaderOverflow({\n present,\n contentKey,\n resetKey,\n frozen,\n}: {\n present: readonly SessionHeaderPart[];\n contentKey: string;\n resetKey: string;\n frozen: boolean;\n}): SessionHeaderOverflow {\n const rowRef = useRef<HTMLDivElement | null>(null);\n const titleRef = useRef<HTMLDivElement | null>(null);\n const clusterRef = useRef<HTMLDivElement | null>(null);\n const elements = useRef(new Map<SessionHeaderPart, HTMLElement>());\n const refs = useRef(new Map<SessionHeaderPart, (element: HTMLElement | null) => void>());\n const observer = useRef<ResizeObserver | null>(null);\n // A part's width (with its gap) from when it was last in the row.\n const widths = useRef(new Map<SessionHeaderPart, number>());\n const [collapsed, setCollapsed] = useState<ReadonlySet<SessionHeaderPart>>(NONE);\n const current = useRef(collapsed);\n const inputs = useRef({ present, frozen });\n const presentKey = present.join(\" \");\n\n const partRef = useCallback((part: SessionHeaderPart) => {\n let ref = refs.current.get(part);\n if (!ref) {\n ref = (element) => {\n const previous = elements.current.get(part);\n if (previous && previous !== element) observer.current?.unobserve(previous);\n if (element) {\n elements.current.set(part, element);\n observer.current?.observe(element);\n } else {\n elements.current.delete(part);\n }\n };\n refs.current.set(part, ref);\n }\n return ref;\n }, []);\n\n // `grow` lets parts come back. Only changes from outside (size, content,\n // which parts exist) may grow; our own changes only ever move more parts\n // out, so the row always settles.\n const fit = useCallback((grow: boolean) => {\n const { present: parts, frozen: hold } = inputs.current;\n const row = rowRef.current;\n const title = titleRef.current;\n if (hold || !row || !title) return;\n const { room: start, need } = measureRoom(row, title);\n let room = start;\n const available = new Set(parts);\n const next = new Set([...current.current].filter((part) => available.has(part)));\n if (room < need) {\n for (let index = SESSION_HEADER_PARTS.length - 1; index >= 0 && room < need; index -= 1) {\n const part = SESSION_HEADER_PARTS[index]!;\n if (!available.has(part) || next.has(part)) continue;\n const width = partWidth(elements.current.get(part));\n // Hidden at this size anyway (desktop-only parts on a phone).\n if (width <= 0) continue;\n widths.current.set(part, width);\n next.add(part);\n room += width;\n }\n } else if (grow) {\n for (const part of SESSION_HEADER_PARTS) {\n if (!next.has(part)) continue;\n const width = widths.current.get(part);\n if (width === undefined || room - width < need + RETURN_SLACK_PX) continue;\n next.delete(part);\n room -= width;\n }\n }\n if (sameParts(next, current.current)) return;\n current.current = next;\n setCollapsed(next);\n }, []);\n\n // A different chat starts with every part in the row.\n useLayoutEffect(() => {\n widths.current.clear();\n if (current.current.size === 0) return;\n current.current = NONE;\n setCollapsed(NONE);\n }, [resetKey]);\n\n useLayoutEffect(() => {\n inputs.current = { present, frozen };\n fit(true);\n // `present` is compared through `presentKey`, so a new array with the\n // same parts does not measure again.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [fit, presentKey, contentKey, frozen]);\n\n useLayoutEffect(() => {\n fit(false);\n }, [fit, collapsed]);\n\n // Anything that changes size (the header, the title, a part) fits again.\n useEffect(() => {\n if (typeof ResizeObserver === \"undefined\") return;\n const sizes = new ResizeObserver(() => fit(true));\n observer.current = sizes;\n for (const element of [\n rowRef.current,\n titleRef.current,\n clusterRef.current,\n ...elements.current.values(),\n ]) {\n if (element) sizes.observe(element);\n }\n return () => {\n sizes.disconnect();\n observer.current = null;\n };\n }, [fit]);\n\n return { collapsed, rowRef, titleRef, clusterRef, partRef };\n}\n\n/**\n * How wide the title could be with the parts now in the row (`room`), and how\n * wide it should be (`need`): its whole text, up to its readable width.\n */\nfunction measureRoom(row: HTMLElement, title: HTMLElement): { room: number; need: number } {\n const gap = Number.parseFloat(getComputedStyle(row).columnGap) || 0;\n let used = 0;\n let shown = 0;\n for (const child of row.children) {\n if (getComputedStyle(child).display === \"none\") continue;\n used += child === title ? title.getBoundingClientRect().width : rigidWidth(child);\n shown += 1;\n }\n used += gap * Math.max(0, shown - 1);\n const titleWidth = title.getBoundingClientRect().width;\n const text = title.querySelector<HTMLElement>(\"[data-session-title-text]\");\n const natural = text\n ? titleWidth - text.getBoundingClientRect().width + text.scrollWidth\n : titleWidth;\n const header = row.closest(\"header\");\n const rem = Number.parseFloat(getComputedStyle(document.documentElement).fontSize) || 16;\n const readable = Math.min((header?.clientWidth ?? 0) * TITLE_HEADER_SHARE, TITLE_MAX_REM * rem);\n return { room: titleWidth + row.clientWidth - used, need: Math.min(natural, readable) };\n}\n\nfunction partWidth(element: HTMLElement | undefined): number {\n if (!element) return 0;\n const width = rigidWidth(element);\n if (width <= 0) return 0;\n const parent = element.parentElement;\n const gap = parent ? Number.parseFloat(getComputedStyle(parent).columnGap) || 0 : 0;\n return width + gap;\n}\n\n/** The width a part keeps: a part that gives way first can shrink to its minimum. */\nfunction rigidWidth(element: Element): number {\n const width = element.getBoundingClientRect().width;\n const style = getComputedStyle(element);\n if ((Number.parseFloat(style.flexShrink) || 0) <= 1) return width;\n return Math.min(width, Number.parseFloat(style.minWidth) || 0);\n}\n\nfunction sameParts(a: ReadonlySet<SessionHeaderPart>, b: ReadonlySet<SessionHeaderPart>) {\n if (a.size !== b.size) return false;\n for (const part of a) if (!b.has(part)) return false;\n return true;\n}\n"],"mappings":"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","names":["useCallback","useEffect","useRef","useState","useState","useRef","part","useEffect","useCallback"]}
@@ -13,7 +13,7 @@ import {
13
13
  } from "./chunk-TXS65BB2.js";
14
14
  import {
15
15
  useOpenGeniText
16
- } from "./chunk-7T2ZE3VT.js";
16
+ } from "./chunk-QPQ7R77C.js";
17
17
 
18
18
  // src/lib/keyboard-targets.ts
19
19
  var TEXT_ENTRY = 'input, textarea, select, [contenteditable]:not([contenteditable="false"])';
@@ -915,4 +915,4 @@ export {
915
915
  LightboxProvider,
916
916
  ShimmerText
917
917
  };
918
- //# sourceMappingURL=chunk-XHIQ5I6N.js.map
918
+ //# sourceMappingURL=chunk-XVLEBB4Y.js.map
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  EmptyQueueStateSurface
4
- } from "./chunk-YWVI6ZMK.js";
4
+ } from "./chunk-5MIBQ4P5.js";
5
5
  import {
6
6
  useWorkspaceSessions
7
7
  } from "./chunk-J335IP56.js";
@@ -9,7 +9,7 @@ import {
9
9
  NewConversation,
10
10
  SessionConversation,
11
11
  SessionProxyScope
12
- } from "./chunk-TXLIEOJX.js";
12
+ } from "./chunk-PSM3CU7N.js";
13
13
  import {
14
14
  useHostTheme
15
15
  } from "./chunk-VNJK7X2B.js";
@@ -18,7 +18,7 @@ import {
18
18
  } from "./chunk-XESA3B7W.js";
19
19
  import {
20
20
  notifyObserver
21
- } from "./chunk-MIHN76LX.js";
21
+ } from "./chunk-WYGTAQMX.js";
22
22
  import {
23
23
  usePolledValue
24
24
  } from "./chunk-RV3O5OCQ.js";
@@ -28,7 +28,7 @@ import {
28
28
  import {
29
29
  formatClockTime,
30
30
  formatRelativeTime
31
- } from "./chunk-5MOJZORA.js";
31
+ } from "./chunk-2EA4IRIP.js";
32
32
  import {
33
33
  useOpenGeni
34
34
  } from "./chunk-TVQCDDSZ.js";
@@ -37,13 +37,13 @@ import {
37
37
  } from "./chunk-TXS65BB2.js";
38
38
  import {
39
39
  useOpenGeniText
40
- } from "./chunk-7T2ZE3VT.js";
40
+ } from "./chunk-QPQ7R77C.js";
41
41
 
42
42
  // src/components/queue-surface.tsx
43
43
  import { Loader2Icon } from "lucide-react";
44
44
  import { lazy, Suspense } from "react";
45
45
  import { jsx, jsxs } from "react/jsx-runtime";
46
- var loadQueueSurface = () => import("./queue-surface-implementation-4KUZ4PJV.js");
46
+ var loadQueueSurface = () => import("./queue-surface-implementation-GUAIG6TK.js");
47
47
  var QueueSurface = createQueueSurface(loadQueueSurface);
48
48
  function createQueueSurface(loadImplementation) {
49
49
  const LazyQueueSurface = lazy(async () => ({
@@ -845,4 +845,4 @@ export {
845
845
  SessionCommands,
846
846
  StartupTimings
847
847
  };
848
- //# sourceMappingURL=chunk-Q3DPEYX4.js.map
848
+ //# sourceMappingURL=chunk-XZCCEKPW.js.map
@@ -19,7 +19,7 @@ import {
19
19
  } from "./chunk-TXS65BB2.js";
20
20
  import {
21
21
  useOpenGeniText
22
- } from "./chunk-7T2ZE3VT.js";
22
+ } from "./chunk-QPQ7R77C.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-T3OWFVMS.js.map
1187
+ //# sourceMappingURL=chunk-Y3XZEKDQ.js.map
@@ -1,13 +1,13 @@
1
1
  "use client";
2
2
  import {
3
3
  useConnectSetupFlow
4
- } from "./chunk-HAX4LCR5.js";
4
+ } from "./chunk-SFIXTOOJ.js";
5
5
  import {
6
6
  copyTextToClipboard
7
7
  } from "./chunk-PEHTX3V7.js";
8
8
  import {
9
9
  useOpenGeniText
10
- } from "./chunk-7T2ZE3VT.js";
10
+ } from "./chunk-QPQ7R77C.js";
11
11
 
12
12
  // src/connect-setup.tsx
13
13
  import { useState } from "react";
@@ -306,4 +306,4 @@ export {
306
306
  accountServiceCapability,
307
307
  isServiceConnectProvider
308
308
  };
309
- //# sourceMappingURL=chunk-KODELWYT.js.map
309
+ //# sourceMappingURL=chunk-YJSCLGAW.js.map
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  sessionDisplayTitle
4
- } from "./chunk-3PZ7JZI2.js";
4
+ } from "./chunk-D3PTVN2I.js";
5
5
 
6
6
  // src/app/lib/actions/chat-directory.ts
7
7
  import { useSyncExternalStore } from "react";
@@ -255,4 +255,4 @@ export {
255
255
  readChatDirectory,
256
256
  useChatDirectoryVersion
257
257
  };
258
- //# sourceMappingURL=chunk-ROKQU7WG.js.map
258
+ //# sourceMappingURL=chunk-YMI27QPF.js.map
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  CopyField
4
- } from "./chunk-2YUOVM3G.js";
4
+ } from "./chunk-DIP7YALH.js";
5
5
  import {
6
6
  Dialog,
7
7
  DialogContent,
@@ -9,7 +9,7 @@ import {
9
9
  DialogFooter,
10
10
  DialogHeader,
11
11
  DialogTitle
12
- } from "./chunk-ZQCND77P.js";
12
+ } from "./chunk-YRYF76OE.js";
13
13
  import {
14
14
  ErrorMessage
15
15
  } from "./chunk-IKXNLWAL.js";
@@ -21,7 +21,7 @@ import {
21
21
  } from "./chunk-HJO32O7Z.js";
22
22
  import {
23
23
  RelativeTime
24
- } from "./chunk-53AGXXZM.js";
24
+ } from "./chunk-MKDFYE2E.js";
25
25
  import {
26
26
  Button
27
27
  } from "./chunk-7QQN3KNP.js";
@@ -188,4 +188,4 @@ function ShareChatDialog({
188
188
  export {
189
189
  ShareChatDialog
190
190
  };
191
- //# sourceMappingURL=chunk-U7XM7CB4.js.map
191
+ //# sourceMappingURL=chunk-YNTLWCF4.js.map
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  WindowBarTitleBoundary
4
- } from "./chunk-HD5X76TP.js";
4
+ } from "./chunk-AQQT2FIC.js";
5
5
  import {
6
6
  Button
7
7
  } from "./chunk-7QQN3KNP.js";
@@ -146,4 +146,4 @@ export {
146
146
  DialogTitle,
147
147
  DialogDescription
148
148
  };
149
- //# sourceMappingURL=chunk-ZQCND77P.js.map
149
+ //# sourceMappingURL=chunk-YRYF76OE.js.map
@@ -4,12 +4,12 @@ import {
4
4
  } from "./chunk-XVU32APP.js";
5
5
  import {
6
6
  t
7
- } from "./chunk-HSOXMJOT.js";
7
+ } from "./chunk-HEGV4QMS.js";
8
8
  import {
9
9
  creditRefusalHeadline,
10
10
  creditRefusalKindFromText,
11
11
  isDiagnosticFailureCode
12
- } from "./chunk-5MOJZORA.js";
12
+ } from "./chunk-2EA4IRIP.js";
13
13
  import {
14
14
  providerRecoverySubject
15
15
  } from "./chunk-AZGAUBKR.js";
@@ -226,4 +226,4 @@ export {
226
226
  chatComposerPlaceholder,
227
227
  failureFallbackReason
228
228
  };
229
- //# sourceMappingURL=chunk-2BDT3UZQ.js.map
229
+ //# sourceMappingURL=chunk-ZAX4XQLN.js.map