@opengeni/react 4.2.1-canary.39642758903001 → 4.3.1

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 (693) hide show
  1. package/dist/app/app-state.js +27 -27
  2. package/dist/app/components/Composer.js +27 -26
  3. package/dist/app/components/agent/agent-capability-picker.js +5 -5
  4. package/dist/app/components/artifacts/artifact-library.js +19 -19
  5. package/dist/app/components/artifacts/chat-interactive-block.js +16 -16
  6. package/dist/app/components/artifacts/inline-chat-image.js +31 -30
  7. package/dist/app/components/artifacts/retained-file-preview.js +35 -34
  8. package/dist/app/components/artifacts/retained-text-preview.js +5 -5
  9. package/dist/app/components/artifacts/site-audience.js +5 -5
  10. package/dist/app/components/artifacts/site-conversations.js +24 -22
  11. package/dist/app/components/artifacts/site-data.js +20 -20
  12. package/dist/app/components/artifacts/site-publishing.js +39 -39
  13. package/dist/app/components/artifacts/site-settings.js +48 -48
  14. package/dist/app/components/billing-class-mark.js +5 -5
  15. package/dist/app/components/capabilities/capability-detail-sheet.js +9 -9
  16. package/dist/app/components/capabilities/capability-logo-source.js +13 -12
  17. package/dist/app/components/capabilities/connection-account-picker.js +2 -2
  18. package/dist/app/components/capabilities/connector-tool-permissions.js +5 -5
  19. package/dist/app/components/capabilities/native-connect-setup.js +14 -13
  20. package/dist/app/components/capabilities/native-connect-setup.js.map +1 -1
  21. package/dist/app/components/capabilities/perform-capability-action.js +3 -3
  22. package/dist/app/components/capabilities/prepared-mcp-setup-card.js +15 -14
  23. package/dist/app/components/capabilities/session-capability-card.js +78 -77
  24. package/dist/app/components/capabilities/session-capability-card.js.map +1 -1
  25. package/dist/app/components/capabilities/session-custom-mcp-card.js +20 -19
  26. package/dist/app/components/capabilities/session-github-card.js +25 -24
  27. package/dist/app/components/capabilities/session-machine-card.js +38 -38
  28. package/dist/app/components/capabilities/use-capabilities-catalog.js +3 -3
  29. package/dist/app/components/capabilities/use-connection-accounts.js +1 -1
  30. package/dist/app/components/command-menu/chat-switcher.d.ts +12 -0
  31. package/dist/app/components/command-menu/chat-switcher.js +142 -0
  32. package/dist/app/components/command-menu/chat-switcher.js.map +1 -0
  33. package/dist/app/components/command-menu/command-menu.d.ts +15 -0
  34. package/dist/app/components/command-menu/command-menu.js +812 -0
  35. package/dist/app/components/command-menu/command-menu.js.map +1 -0
  36. package/dist/app/components/command-menu/keycaps.d.ts +21 -0
  37. package/dist/app/components/command-menu/keycaps.js +12 -0
  38. package/dist/app/components/command-menu/shortcut-sheet.d.ts +12 -0
  39. package/dist/app/components/command-menu/shortcut-sheet.js +150 -0
  40. package/dist/app/components/command-menu/shortcut-sheet.js.map +1 -0
  41. package/dist/app/components/composer-capabilities-menu-body.js +3 -3
  42. package/dist/app/components/composer-mobile-plus-panel.js +21 -21
  43. package/dist/app/components/composer-mobile-plus.js +3 -3
  44. package/dist/app/components/credit-required-gate.js +1 -1
  45. package/dist/app/components/credit-required-prompt.js +16 -16
  46. package/dist/app/components/credits/coupon-redeem.js +2 -2
  47. package/dist/app/components/credits/credit-refusal-notice.d.ts +18 -0
  48. package/dist/app/components/credits/credit-refusal-notice.js +17 -0
  49. package/dist/app/components/cross-slot-deep-link-recovery.js +1 -1
  50. package/dist/app/components/desktop/app-shots.js +6 -6
  51. package/dist/app/components/desktop/this-computer.js +4 -4
  52. package/dist/app/components/feedback.js +5 -5
  53. package/dist/app/components/follow-up-repository-menu-body.js +7 -7
  54. package/dist/app/components/follow-up-repository-picker.js +3 -3
  55. package/dist/app/components/github-app-connect-launcher.js +1 -1
  56. package/dist/app/components/knowledge/agent-learning-settings.js +6 -6
  57. package/dist/app/components/machines/connect-machine-dialog.js +18 -18
  58. package/dist/app/components/manual-repository-editor.js +2 -2
  59. package/dist/app/components/markdown.js +10 -9
  60. package/dist/app/components/message-context-pills.js +2 -2
  61. package/dist/app/components/models/models-ui.js +10 -10
  62. package/dist/app/components/pickers.js +10 -10
  63. package/dist/app/components/rail/rail-context.d.ts +6 -0
  64. package/dist/app/components/rail/rail-context.js +3 -3
  65. package/dist/app/components/rail/rail-sections.js +61 -55
  66. package/dist/app/components/rail/session-browse-order-controls.js +2 -2
  67. package/dist/app/components/rail/session-header.js +50 -36
  68. package/dist/app/components/rail/session-list.js +59 -52
  69. package/dist/app/components/rail/session-row-hover-details.js +25 -23
  70. package/dist/app/components/rail/session-shell.js +96 -91
  71. package/dist/app/components/repository-picker.js +7 -7
  72. package/dist/app/components/secrets/session-secrets-panel.js +4 -4
  73. package/dist/app/components/session/agent-configuration-panel.js +34 -34
  74. package/dist/app/components/session/banners.js +12 -11
  75. package/dist/app/components/session/codex-account-indicator.js +12 -12
  76. package/dist/app/components/session/composer-menu-radio.js +2 -2
  77. package/dist/app/components/session/conversation-find.js +1 -1
  78. package/dist/app/components/session/editable-artifacts-workspace.js +45 -45
  79. package/dist/app/components/session/failed-session-banner.js +12 -12
  80. package/dist/app/components/session/human-input.js +48 -47
  81. package/dist/app/components/session/inspector.js +80 -79
  82. package/dist/app/components/session/inspector.js.map +1 -1
  83. package/dist/app/components/session/message-actions.js +5 -5
  84. package/dist/app/components/session/message-resource-attachments.js +21 -20
  85. package/dist/app/components/session/message-resource-attachments.js.map +1 -1
  86. package/dist/app/components/session/model-account-indicator.js +11 -11
  87. package/dist/app/components/session/model-context-inspector.js +2 -2
  88. package/dist/app/components/session/model-recovery-notice.js +3 -3
  89. package/dist/app/components/session/new-session-settings-menu.js +13 -13
  90. package/dist/app/components/session/sandbox-switcher.js +16 -16
  91. package/dist/app/components/session/sandbox-workspace.js +68 -67
  92. package/dist/app/components/session/search-markdown-highlight.js +11 -10
  93. package/dist/app/components/session/search-results-view.js +12 -11
  94. package/dist/app/components/session/session-admin-access.js +11 -11
  95. package/dist/app/components/session/session-retention.js +4 -4
  96. package/dist/app/components/session/session-search-dialog.d.ts +5 -0
  97. package/dist/app/components/session/session-search-dialog.js +22 -12
  98. package/dist/app/components/session/session-search-dialog.js.map +1 -1
  99. package/dist/app/components/session/session-skill-reviews.js +3 -3
  100. package/dist/app/components/session/session-tenancy-control.js +25 -25
  101. package/dist/app/components/session/session-usage-limit-section.js +9 -9
  102. package/dist/app/components/session/session-wait-status.js +11 -9
  103. package/dist/app/components/session/session-wait-status.js.map +1 -1
  104. package/dist/app/components/session/subagents.js +17 -15
  105. package/dist/app/components/session/subscription-account-menu.js +2 -2
  106. package/dist/app/components/session-connectors-menu-body.js +6 -6
  107. package/dist/app/components/settings/row-select.js +1 -1
  108. package/dist/app/components/transcription-settings.js +2 -2
  109. package/dist/app/components/ui/destructive-confirm.js +8 -8
  110. package/dist/app/components/usage/usage-entry.js +6 -6
  111. package/dist/app/components/workspace-composer-plus.js +22 -21
  112. package/dist/app/embed/session-app.js +264 -258
  113. package/dist/app/lib/actions/actions-provider.d.ts +30 -0
  114. package/dist/app/lib/actions/actions-provider.js +32 -0
  115. package/dist/app/lib/actions/chat-directory.d.ts +30 -0
  116. package/dist/app/lib/actions/chat-operations.d.ts +11 -0
  117. package/dist/app/lib/actions/chat-switcher.d.ts +31 -0
  118. package/dist/app/lib/actions/chords.d.ts +40 -0
  119. package/dist/app/lib/actions/events.d.ts +6 -0
  120. package/dist/app/lib/actions/rank.d.ts +17 -0
  121. package/dist/app/lib/actions/registry.d.ts +71 -0
  122. package/dist/app/lib/codex-usage-query.js +3 -3
  123. package/dist/app/lib/composer-connectors.js +14 -13
  124. package/dist/app/lib/console-text.js +2 -2
  125. package/dist/app/lib/credit-coverage.d.ts +21 -0
  126. package/dist/app/lib/credit-coverage.js +15 -0
  127. package/dist/app/lib/deployment-free-model.js +2 -2
  128. package/dist/app/lib/events.js +19 -18
  129. package/dist/app/lib/failed-session-copy.js +5 -5
  130. package/dist/app/lib/free-credit-gap.d.ts +9 -0
  131. package/dist/app/lib/free-credit-gap.js +4 -2
  132. package/dist/app/lib/integration-connect-analytics.d.ts +1 -1
  133. package/dist/app/lib/integration-connect-analytics.js +1 -1
  134. package/dist/app/lib/integration-connect-redirect.js +1 -1
  135. package/dist/app/lib/model-access-onboarding.js +4 -4
  136. package/dist/app/lib/model-policy.js +1 -1
  137. package/dist/app/lib/models-route.d.ts +6 -2
  138. package/dist/app/lib/models-route.js +6 -3
  139. package/dist/app/lib/models-route.js.map +1 -1
  140. package/dist/app/lib/move-chat-to-machine.js +3 -3
  141. package/dist/app/lib/session-branch-cache.js +15 -13
  142. package/dist/app/lib/session-create.js +2 -2
  143. package/dist/app/lib/session-group-pagination.js +15 -13
  144. package/dist/app/lib/session-hover-facts.js +16 -14
  145. package/dist/app/lib/session-model.js +3 -3
  146. package/dist/app/lib/session-rail.js +11 -9
  147. package/dist/app/lib/session-rename.js +3 -3
  148. package/dist/app/lib/session-search-route.d.ts +1 -1
  149. package/dist/app/lib/session-search-route.js +1 -1
  150. package/dist/app/lib/session-ui-features.d.ts +11 -3
  151. package/dist/app/lib/session-ui-features.js +1 -1
  152. package/dist/app/lib/sessions-group.js +15 -13
  153. package/dist/app/lib/turn-failure-analytics.js +7 -7
  154. package/dist/app/lib/unavailable-session-model.js +2 -2
  155. package/dist/app/lib/use-duplicate-site.js +2 -2
  156. package/dist/app/lib/use-follow-up-repositories.js +3 -3
  157. package/dist/app/lib/use-workspace-machines.js +8 -8
  158. package/dist/app/lib/use-workspace-model-catalog.js +6 -6
  159. package/dist/app/lib/use-workspace-rigs.js +4 -4
  160. package/dist/app/lib/workspace-navigation-preference.js +5 -5
  161. package/dist/app/lib/workspace-scope-context.js +4 -4
  162. package/dist/app/routes/artifacts.js +124 -122
  163. package/dist/app/routes/artifacts.js.map +1 -1
  164. package/dist/app/routes/retained-artifact.js +69 -68
  165. package/dist/app/routes/retained-artifact.js.map +1 -1
  166. package/dist/app/routes/session-unavailable.js +3 -3
  167. package/dist/app/routes/session.js +168 -166
  168. package/dist/app/routes/sessions-index-hydration.js +3 -3
  169. package/dist/app/routes/sessions-index.js +122 -116
  170. package/dist/artifacts-document.js +4 -4
  171. package/dist/artifacts-presentation.js +4 -4
  172. package/dist/artifacts-spreadsheet.js +4 -4
  173. package/dist/artifacts.js +39 -39
  174. package/dist/{browser-viewer-ZRFZX3VN.js → browser-viewer-HPUMK7UP.js} +7 -7
  175. package/dist/{chat-interactive-block-HUMYWVCK.js → chat-interactive-block-22PPECCT.js} +6 -6
  176. package/dist/{chunk-GVIQ7H62.js → chunk-2LUBBDZV.js} +5 -5
  177. package/dist/{chunk-SWWYYGQO.js → chunk-325C2TCI.js} +5 -2
  178. package/dist/chunk-325C2TCI.js.map +1 -0
  179. package/dist/{chunk-XMMVIY7B.js → chunk-3CCJWHQY.js} +2 -2
  180. package/dist/{chunk-XS2FZ6DX.js → chunk-3F5ZPIWI.js} +2 -2
  181. package/dist/{chunk-72US6QNB.js → chunk-3J2YZRY5.js} +2 -2
  182. package/dist/{chunk-D4YQF4E3.js → chunk-3SMJ2BIQ.js} +2 -2
  183. package/dist/{chunk-TBJINQXA.js → chunk-3WCYK36X.js} +17 -17
  184. package/dist/{chunk-WPCF34V6.js → chunk-3WG3CRL7.js} +14 -14
  185. package/dist/{chunk-JI5BYQKO.js → chunk-3X46PNBX.js} +14 -14
  186. package/dist/{chunk-UO36FC3S.js → chunk-46I7MMAL.js} +6 -2
  187. package/dist/chunk-46I7MMAL.js.map +1 -0
  188. package/dist/{chunk-PBK44WJC.js → chunk-4GJ37O6G.js} +2 -2
  189. package/dist/chunk-4IWBQUQU.js +152 -0
  190. package/dist/chunk-4IWBQUQU.js.map +1 -0
  191. package/dist/{chunk-LEXPBQ56.js → chunk-4SKJX3C4.js} +6 -6
  192. package/dist/{chunk-ZA6YD2LW.js → chunk-57SYK776.js} +2 -2
  193. package/dist/{chunk-22LBKJDE.js → chunk-5DIAN5GQ.js} +12 -12
  194. package/dist/{chunk-LJ3TDK2L.js → chunk-5FA455GR.js} +4 -4
  195. package/dist/{chunk-N2BEUKXT.js → chunk-5FBZDEHE.js} +228 -228
  196. package/dist/chunk-5FBZDEHE.js.map +1 -0
  197. package/dist/{chunk-YPR5INHV.js → chunk-5X3E2Z3D.js} +4 -4
  198. package/dist/{chunk-OXNWZTEU.js → chunk-5ZJCL6X4.js} +5 -5
  199. package/dist/{chunk-62OAZ4LO.js → chunk-6C5GQQMC.js} +12 -12
  200. package/dist/{chunk-VGITH57T.js → chunk-6ERTXDZM.js} +4 -4
  201. package/dist/{chunk-ZQ7XQZCF.js → chunk-6FX73Y4I.js} +8 -8
  202. package/dist/{chunk-QZO2KK2F.js → chunk-6P44NG6Y.js} +2 -2
  203. package/dist/{chunk-N2DDJLTM.js → chunk-6T7Y33JA.js} +3 -3
  204. package/dist/{chunk-RBAGC2MJ.js → chunk-75VE5QUS.js} +22 -22
  205. package/dist/{chunk-MRXOGI3O.js → chunk-77CUDSHG.js} +9 -9
  206. package/dist/{chunk-F2GXK2Z6.js → chunk-7G446JFO.js} +431 -348
  207. package/dist/chunk-7G446JFO.js.map +1 -0
  208. package/dist/{chunk-GZ65XQR5.js → chunk-7T7FHSGS.js} +3 -3
  209. package/dist/{chunk-YGAH34CD.js → chunk-A3S26JSP.js} +8 -8
  210. package/dist/{chunk-GYPAO6RS.js → chunk-A664GSDM.js} +8 -8
  211. package/dist/{chunk-JSZSNMDR.js → chunk-ASUYLXKO.js} +2 -2
  212. package/dist/{chunk-RTK7SUPL.js → chunk-AUUJLVA3.js} +7 -7
  213. package/dist/{chunk-OOTBYSCA.js → chunk-BBWKPNJB.js} +5 -5
  214. package/dist/{chunk-BGZIMIUU.js → chunk-BCUYWOQU.js} +2 -2
  215. package/dist/{chunk-EKN4N4LS.js → chunk-BDFMNJZJ.js} +2 -2
  216. package/dist/{chunk-YZKGOWCC.js → chunk-BIDXQAGO.js} +2 -2
  217. package/dist/{chunk-Q2UUANHF.js → chunk-BIKAJ4DY.js} +5 -5
  218. package/dist/{chunk-5IQBF2X3.js → chunk-BJPJ2OUX.js} +3 -3
  219. package/dist/{chunk-EY2EMHZW.js → chunk-BPM2OTYK.js} +8 -8
  220. package/dist/{chunk-MT4TBRQB.js → chunk-BSWS2RUZ.js} +2 -2
  221. package/dist/{chunk-T7YD3VGK.js → chunk-C52MNKXU.js} +12 -12
  222. package/dist/{chunk-THNW33K7.js → chunk-CEUDV4OA.js} +18 -18
  223. package/dist/{chunk-GRLPRM56.js → chunk-CFEFYPNR.js} +8 -2
  224. package/dist/chunk-CFEFYPNR.js.map +1 -0
  225. package/dist/{chunk-LHGIS6SZ.js → chunk-CVK74BH7.js} +2 -2
  226. package/dist/{chunk-DFO2UCYG.js → chunk-CW5I65ZX.js} +11 -11
  227. package/dist/chunk-DKNTQDVL.js +86 -0
  228. package/dist/chunk-DKNTQDVL.js.map +1 -0
  229. package/dist/{chunk-SKRLKQEG.js → chunk-DOSC2HRQ.js} +79 -79
  230. package/dist/{chunk-KVB6XDLP.js → chunk-DPJ2CWVN.js} +2 -2
  231. package/dist/{chunk-4J6V4DH7.js → chunk-DXMRO2MU.js} +3 -3
  232. package/dist/{chunk-42I4O4WQ.js → chunk-EE55IDDR.js} +26 -26
  233. package/dist/{chunk-2RA6XABP.js → chunk-EEERTLFF.js} +12 -12
  234. package/dist/{chunk-PTOTKUKO.js → chunk-EEO744XR.js} +8 -8
  235. package/dist/{chunk-LD3HVI2J.js → chunk-EMFGBAQL.js} +6 -6
  236. package/dist/{chunk-FQGUK4ST.js → chunk-ENPJKVMN.js} +38 -38
  237. package/dist/{chunk-HDHK3SXK.js → chunk-EU6RLHMP.js} +4 -4
  238. package/dist/{chunk-G7VLL3PG.js → chunk-F2YABPRJ.js} +13 -4
  239. package/dist/chunk-F2YABPRJ.js.map +1 -0
  240. package/dist/{chunk-MRUWRQBX.js → chunk-FET6XHGS.js} +2 -2
  241. package/dist/{chunk-M6KUY3YH.js → chunk-FIICQA55.js} +2 -2
  242. package/dist/{chunk-NLWLCYCT.js → chunk-FTZXCPE3.js} +19 -19
  243. package/dist/{chunk-FN2KA3MJ.js → chunk-FUS76DO4.js} +3 -3
  244. package/dist/{chunk-AM4IIPWI.js → chunk-G7N5NPRJ.js} +2 -2
  245. package/dist/{chunk-CCQ7YKOD.js → chunk-GBYZ6653.js} +2 -2
  246. package/dist/{chunk-SOOWLNC5.js → chunk-GJUPLSC5.js} +330 -109
  247. package/dist/chunk-GJUPLSC5.js.map +1 -0
  248. package/dist/{chunk-YKKVIJVX.js → chunk-GQDSC6QZ.js} +5 -5
  249. package/dist/chunk-GQGNRL2L.js +53 -0
  250. package/dist/chunk-GQGNRL2L.js.map +1 -0
  251. package/dist/{chunk-5X6JP75Q.js → chunk-GRSODLVO.js} +4 -4
  252. package/dist/{chunk-73YP3R5X.js → chunk-GSESCQFY.js} +4 -4
  253. package/dist/{chunk-KWB5U3ZT.js → chunk-GWRW4N3T.js} +199 -137
  254. package/dist/chunk-GWRW4N3T.js.map +1 -0
  255. package/dist/{chunk-RTR7RNG4.js → chunk-GYRU4PNM.js} +9 -7
  256. package/dist/{chunk-RTR7RNG4.js.map → chunk-GYRU4PNM.js.map} +1 -1
  257. package/dist/{chunk-MZLEBFUZ.js → chunk-GZD6VBIK.js} +3 -3
  258. package/dist/{chunk-IZR2QRFF.js → chunk-H3HH5AHS.js} +4 -4
  259. package/dist/{chunk-DN3TKURW.js → chunk-H3LIIAGE.js} +4 -54
  260. package/dist/chunk-H3LIIAGE.js.map +1 -0
  261. package/dist/{chunk-NPLEQMNM.js → chunk-H5GWAG4I.js} +7 -5
  262. package/dist/{chunk-NPLEQMNM.js.map → chunk-H5GWAG4I.js.map} +1 -1
  263. package/dist/{chunk-OJPUVUB6.js → chunk-HAOZCLLA.js} +3 -3
  264. package/dist/{chunk-ZBHDGAYL.js → chunk-HEFE4OZJ.js} +2 -2
  265. package/dist/{chunk-WTG34JVA.js → chunk-HI75UTI6.js} +2 -2
  266. package/dist/{chunk-OMBIG3NC.js → chunk-HM633ROV.js} +14 -14
  267. package/dist/{chunk-WDFZWSKD.js → chunk-HRIP4M6H.js} +3 -3
  268. package/dist/{chunk-A2BCW6CQ.js → chunk-HU2DRFFI.js} +3 -3
  269. package/dist/{chunk-PO35PBAB.js → chunk-HVH7FFJH.js} +2 -2
  270. package/dist/{chunk-EG7KNUF7.js → chunk-HYTXTKST.js} +18 -18
  271. package/dist/{chunk-TFHG75A4.js → chunk-I4XMDFUJ.js} +7 -7
  272. package/dist/{chunk-IZHVZZQA.js → chunk-ICAUYWSL.js} +9 -9
  273. package/dist/{chunk-ZSERYHHT.js → chunk-IDMXEPHL.js} +150 -150
  274. package/dist/chunk-IDMXEPHL.js.map +1 -0
  275. package/dist/{chunk-DCLPWYP3.js → chunk-IEVPJ3G6.js} +2 -2
  276. package/dist/{chunk-EVWZHDSF.js → chunk-IKH3VTA4.js} +2 -2
  277. package/dist/{chunk-L5UCO2UV.js → chunk-ILBSBZGC.js} +13 -4
  278. package/dist/chunk-ILBSBZGC.js.map +1 -0
  279. package/dist/{chunk-IO6K6UYJ.js → chunk-IQ64BNAG.js} +4 -2
  280. package/dist/chunk-IQ64BNAG.js.map +1 -0
  281. package/dist/{chunk-TYHLEFD2.js → chunk-IZJNMRIR.js} +9 -9
  282. package/dist/{chunk-D2SR3TEB.js → chunk-J243WGUA.js} +2 -2
  283. package/dist/{chunk-QGSGIYE3.js → chunk-J2C6LB6W.js} +4 -4
  284. package/dist/{chunk-MT6TRTXF.js → chunk-J5MEDX7C.js} +9 -9
  285. package/dist/{chunk-6QHUKBJP.js → chunk-J7SKOO44.js} +2 -2
  286. package/dist/{chunk-W2QK7PYS.js → chunk-JAAST75A.js} +11 -11
  287. package/dist/{chunk-NQCMS4AJ.js → chunk-JQCGPTZ6.js} +9 -9
  288. package/dist/chunk-JRJUSKDY.js +832 -0
  289. package/dist/chunk-JRJUSKDY.js.map +1 -0
  290. package/dist/{chunk-CMUXJHGH.js → chunk-JRSCWQMC.js} +9 -9
  291. package/dist/{chunk-Q4OHNGGB.js → chunk-JRXHSVD5.js} +4 -4
  292. package/dist/{chunk-SD2K5ZN5.js → chunk-JXYLDT6X.js} +4 -4
  293. package/dist/{chunk-S3M5WCZW.js → chunk-KA4LV7G6.js} +35 -50
  294. package/dist/chunk-KA4LV7G6.js.map +1 -0
  295. package/dist/{chunk-IXX6ZOL2.js → chunk-KGTMHEAP.js} +7 -7
  296. package/dist/{chunk-22OBGVEJ.js → chunk-KOXVGPW4.js} +3 -3
  297. package/dist/{chunk-NOZ5CGZE.js → chunk-L5GPPMUB.js} +2 -2
  298. package/dist/{chunk-KIHYJM5F.js → chunk-LXJT4WAW.js} +58 -58
  299. package/dist/{chunk-KIHYJM5F.js.map → chunk-LXJT4WAW.js.map} +1 -1
  300. package/dist/{chunk-4FOOHMTU.js → chunk-LY6727IF.js} +1 -1
  301. package/dist/{chunk-PT7MTXRE.js → chunk-MAOCN7J6.js} +2 -2
  302. package/dist/{chunk-4K2JSJNX.js → chunk-MB5LZVDO.js} +2 -2
  303. package/dist/chunk-MF464AKA.js +139 -0
  304. package/dist/chunk-MF464AKA.js.map +1 -0
  305. package/dist/{chunk-UYSZKDQY.js → chunk-MK54JLE4.js} +1 -1
  306. package/dist/chunk-MK54JLE4.js.map +1 -0
  307. package/dist/{chunk-5LES64PP.js → chunk-MKOQAVOE.js} +21 -21
  308. package/dist/{chunk-BMV2SNYX.js → chunk-MUPWNSEJ.js} +18 -18
  309. package/dist/{chunk-Y5TRG22C.js → chunk-NRXIECWC.js} +2 -2
  310. package/dist/{chunk-GOE7G5JX.js → chunk-NWSAF6P5.js} +2 -2
  311. package/dist/chunk-OB3YGXHQ.js +158 -0
  312. package/dist/chunk-OB3YGXHQ.js.map +1 -0
  313. package/dist/{chunk-DUM363VS.js → chunk-OFZQJNF6.js} +5 -5
  314. package/dist/{chunk-CKN5QPEL.js → chunk-OMF7POEY.js} +2 -2
  315. package/dist/{chunk-MVXKO2BD.js → chunk-OXD6ET34.js} +1 -1
  316. package/dist/{chunk-47JUEVME.js → chunk-PALX6HWV.js} +21 -21
  317. package/dist/{chunk-B6OGSG7I.js → chunk-PE3BLBDT.js} +3 -3
  318. package/dist/{chunk-RVISSNVE.js → chunk-PMZKJOG6.js} +15 -15
  319. package/dist/{chunk-CESAMXWX.js → chunk-PQUTMG3S.js} +2 -2
  320. package/dist/{chunk-7VFCOKPG.js → chunk-PWBGODZU.js} +3 -3
  321. package/dist/{chunk-MOPAXD2H.js → chunk-QCADUTYX.js} +2 -2
  322. package/dist/{chunk-CT5FBO7E.js → chunk-RPOUJI25.js} +1 -1
  323. package/dist/{chunk-VE3FKXJ7.js → chunk-RUSXEE7X.js} +35 -32
  324. package/dist/chunk-RUSXEE7X.js.map +1 -0
  325. package/dist/{chunk-WKHYOS72.js → chunk-RW4GFE56.js} +3 -3
  326. package/dist/{chunk-FH4GO7HO.js → chunk-RYLVVDR7.js} +1 -1
  327. package/dist/{chunk-QZRDCFHI.js → chunk-S66SBBFQ.js} +5 -5
  328. package/dist/{chunk-CQJFIPAH.js → chunk-S7TNV2I7.js} +14 -14
  329. package/dist/{chunk-ZBQSIGGR.js → chunk-SC773IMJ.js} +13 -13
  330. package/dist/{chunk-RZV7SXED.js → chunk-SF3M27AN.js} +37 -12
  331. package/dist/chunk-SF3M27AN.js.map +1 -0
  332. package/dist/{chunk-FBJ2HK7A.js → chunk-SGPJ3YS2.js} +20 -20
  333. package/dist/{chunk-A2EWJQXX.js → chunk-SM5QX6UK.js} +4 -4
  334. package/dist/chunk-SWCLN6JE.js +40 -0
  335. package/dist/chunk-SWCLN6JE.js.map +1 -0
  336. package/dist/{chunk-OS3EQOIS.js → chunk-T4F5TW2X.js} +29 -24
  337. package/dist/chunk-T4F5TW2X.js.map +1 -0
  338. package/dist/{chunk-RKZWCTXV.js → chunk-TAEKDMEF.js} +2 -2
  339. package/dist/{chunk-6AVCAUGL.js → chunk-TASEV25T.js} +3 -3
  340. package/dist/{chunk-3XOISKZC.js → chunk-TLGDPMUX.js} +6 -6
  341. package/dist/{chunk-MOF3XSUM.js → chunk-TREHTIBD.js} +3 -2
  342. package/dist/chunk-TREHTIBD.js.map +1 -0
  343. package/dist/{chunk-HUQHJSPV.js → chunk-TTPXGD5S.js} +68 -33
  344. package/dist/chunk-TTPXGD5S.js.map +1 -0
  345. package/dist/{chunk-NFCYIZHX.js → chunk-TXIIBNCA.js} +7 -3
  346. package/dist/{chunk-NFCYIZHX.js.map → chunk-TXIIBNCA.js.map} +1 -1
  347. package/dist/{chunk-5IUW34PG.js → chunk-TY3QYPJ6.js} +7 -7
  348. package/dist/{chunk-VQFR4EU4.js → chunk-U3JK5VJV.js} +2 -2
  349. package/dist/{chunk-2AWMJO54.js → chunk-U42P3RMZ.js} +5 -5
  350. package/dist/{chunk-2RIUMV7S.js → chunk-UBIJBLUK.js} +234 -234
  351. package/dist/chunk-UBIJBLUK.js.map +1 -0
  352. package/dist/{chunk-GUU75DES.js → chunk-UEJTOPLW.js} +8 -8
  353. package/dist/{chunk-QWCTYLMD.js → chunk-URDONAEJ.js} +240 -204
  354. package/dist/chunk-URDONAEJ.js.map +1 -0
  355. package/dist/{chunk-OZOEWLGR.js → chunk-UT6JAORE.js} +4 -4
  356. package/dist/{chunk-5TELOQA6.js → chunk-UTHPUINA.js} +3 -3
  357. package/dist/{chunk-SOV7DTTU.js → chunk-V6HZ2HJZ.js} +67 -67
  358. package/dist/{chunk-SOV7DTTU.js.map → chunk-V6HZ2HJZ.js.map} +1 -1
  359. package/dist/{chunk-26RQ6JBR.js → chunk-VBVCNH6D.js} +5 -5
  360. package/dist/{chunk-P646DND6.js → chunk-VCMQPCME.js} +2 -2
  361. package/dist/{chunk-LV7FMIMM.js → chunk-VGUHAHHV.js} +2 -2
  362. package/dist/{chunk-GYVXARCY.js → chunk-VIBPFVU4.js} +41 -41
  363. package/dist/{chunk-KHPOKZ6Z.js → chunk-VMAC66JX.js} +6 -6
  364. package/dist/{chunk-SHKRS6I5.js → chunk-VRPNETPK.js} +3 -3
  365. package/dist/{chunk-6U4J6RVS.js → chunk-WCHW4XN7.js} +14 -14
  366. package/dist/{chunk-CJH6QUQJ.js → chunk-WD3UXNJV.js} +3 -3
  367. package/dist/{chunk-H5EVWF6L.js → chunk-WR67FJMX.js} +4 -4
  368. package/dist/{chunk-XLIJ36RG.js → chunk-WRMQ7EX4.js} +5 -5
  369. package/dist/{chunk-VVFWOBAM.js → chunk-WTJUKYB2.js} +15 -16
  370. package/dist/chunk-WTJUKYB2.js.map +1 -0
  371. package/dist/{chunk-7KLCFJ5G.js → chunk-X4PPGXQG.js} +2 -2
  372. package/dist/{chunk-ZE2JTVCQ.js → chunk-X5BMQXFD.js} +11 -11
  373. package/dist/{chunk-OYJY4Y4A.js → chunk-XFNLU7EW.js} +14 -7
  374. package/dist/chunk-XFNLU7EW.js.map +1 -0
  375. package/dist/{chunk-UECU6LZI.js → chunk-XXRBOSWV.js} +3 -3
  376. package/dist/{chunk-SPKAIDWX.js → chunk-XZEFCPBL.js} +2 -2
  377. package/dist/{chunk-EZ5NYRHK.js → chunk-YL6N7QLA.js} +5 -5
  378. package/dist/{chunk-Q2ZJOECN.js → chunk-YMVTIV5L.js} +19 -19
  379. package/dist/chunk-YMVTIV5L.js.map +1 -0
  380. package/dist/{chunk-VAIESMPY.js → chunk-YVBHGMKC.js} +4 -4
  381. package/dist/{chunk-AR62NQXE.js → chunk-Z2S5VQG7.js} +2 -2
  382. package/dist/{chunk-2MXUB3ZO.js → chunk-Z5OGTWMZ.js} +15 -2
  383. package/dist/chunk-Z5OGTWMZ.js.map +1 -0
  384. package/dist/{chunk-7UQJEADK.js → chunk-ZL2O4BYP.js} +2 -2
  385. package/dist/{chunk-FOOITLHR.js → chunk-ZZHBT5WQ.js} +2 -2
  386. package/dist/{chunk-X6VJQJYY.js → chunk-ZZWHKC6A.js} +3 -3
  387. package/dist/components/timeline-annotation-shared.d.ts +1 -9
  388. package/dist/composer-messages.js +2 -2
  389. package/dist/composer.js +15 -15
  390. package/dist/{computer-viewer-D4NHQB5D.js → computer-viewer-S6TE6TN7.js} +8 -8
  391. package/dist/connect.js +12 -11
  392. package/dist/desktop.js +2 -2
  393. package/dist/editor.js +2 -2
  394. package/dist/{embedded-new-voice-X4ZW6SY4.js → embedded-new-voice-ZDZPGX25.js} +8 -8
  395. package/dist/{embedded-voice-4OD6Z3HU.js → embedded-voice-FKCUXSJO.js} +8 -8
  396. package/dist/{fleet-decision-row-5UCJXTDP.js → fleet-decision-row-VCGWYJAV.js} +2 -2
  397. package/dist/hooks/page-wake.d.ts +21 -0
  398. package/dist/hooks/use-session-events.d.ts +1 -0
  399. package/dist/index.js +206 -205
  400. package/dist/interaction.js +9 -9
  401. package/dist/{latest-question-VGVNUGAU.js → latest-question-SINEV4U6.js} +3 -3
  402. package/dist/lib/format.d.ts +3 -2
  403. package/dist/machines.js +6 -6
  404. package/dist/messages/en.d.ts +12 -3
  405. package/dist/messages.js +1 -1
  406. package/dist/model-picker-model.js +2 -2
  407. package/dist/{model-policy-picker-menu-XOPYY6YA.js → model-policy-picker-menu-66JPM3G5.js} +6 -6
  408. package/dist/model-policy-picker-menu-66JPM3G5.js.map +1 -0
  409. package/dist/model-policy.js +1 -1
  410. package/dist/native-previews.js +3 -3
  411. package/dist/{platform-activity-row-56XOVTRA.js → platform-activity-row-LU5WABI2.js} +2 -2
  412. package/dist/{queue-surface-implementation-OZDOBJ6W.js → queue-surface-implementation-Y4OUVS7N.js} +8 -7
  413. package/dist/{queue-surface-implementation-OZDOBJ6W.js.map → queue-surface-implementation-Y4OUVS7N.js.map} +1 -1
  414. package/dist/realtime.js +7 -7
  415. package/dist/{sandbox-files-LJCR437H.js → sandbox-files-NBIVKVCZ.js} +11 -11
  416. package/dist/sandbox-files-NBIVKVCZ.js.map +1 -0
  417. package/dist/session-app.js +266 -260
  418. package/dist/session-list-model.js +3 -3
  419. package/dist/{session-realtime-UISLBZ4A.js → session-realtime-3PALSNMJ.js} +3 -3
  420. package/dist/session-realtime-3PALSNMJ.js.map +1 -0
  421. package/dist/session-realtime.js +2 -2
  422. package/dist/session-ui.js +62 -61
  423. package/dist/session.d.ts +1 -1
  424. package/dist/session.js +17 -17
  425. package/dist/sites.js +2 -2
  426. package/dist/terminal.js +2 -2
  427. package/dist/this-computer.js +3 -3
  428. package/dist/timeline/annotation-model.d.ts +48 -0
  429. package/dist/{timeline-annotation-markers-ACT7XRMW.js → timeline-annotation-markers-6526H2NM.js} +11 -9
  430. package/dist/{timeline-annotation-markers-ACT7XRMW.js.map → timeline-annotation-markers-6526H2NM.js.map} +1 -1
  431. package/dist/{timeline-annotation-selection-2IA7T5VR.js → timeline-annotation-selection-KV5SM6TA.js} +16 -62
  432. package/dist/timeline-annotation-selection-KV5SM6TA.js.map +1 -0
  433. package/dist/{timeline-annotations-dialog-W5B2HMYY.js → timeline-annotations-dialog-7CDHWC7Y.js} +12 -10
  434. package/dist/{timeline-annotations-dialog-W5B2HMYY.js.map → timeline-annotations-dialog-7CDHWC7Y.js.map} +1 -1
  435. package/dist/timeline-model.d.ts +3 -0
  436. package/dist/timeline-model.js +40 -14
  437. package/dist/ui/access-list.js +24 -24
  438. package/dist/ui/choice-cards.js +2 -2
  439. package/dist/ui/composer-menu-action.js +2 -2
  440. package/dist/ui/context-menu.d.ts +3 -1
  441. package/dist/ui/context-menu.js +3 -1
  442. package/dist/ui/detail-page.js +3 -3
  443. package/dist/ui/detail-sheet.js +3 -3
  444. package/dist/ui/diff-view.js +3 -3
  445. package/dist/ui/disclosure.js +5 -5
  446. package/dist/ui/dropdown-menu.js +1 -1
  447. package/dist/ui/flush-form-page.js +5 -5
  448. package/dist/ui/form-dialog.js +4 -4
  449. package/dist/ui/list-row.js +5 -5
  450. package/dist/ui/load-failure.js +3 -3
  451. package/dist/ui/page-actions.js +3 -3
  452. package/dist/ui/revision-history.js +11 -11
  453. package/dist/ui/role-select.js +8 -8
  454. package/dist/ui/segmented-control.js +1 -1
  455. package/dist/ui/settings-nav.js +3 -3
  456. package/dist/ui/toolbar.js +3 -3
  457. package/dist/usage.js +2 -2
  458. package/dist/workbench.js +11 -11
  459. package/package.json +4 -4
  460. package/src/app/app-state.tsx +2 -1
  461. package/src/app/components/command-menu/chat-switcher.tsx +135 -0
  462. package/src/app/components/command-menu/command-menu.tsx +840 -0
  463. package/src/app/components/command-menu/keycaps.tsx +56 -0
  464. package/src/app/components/command-menu/shortcut-sheet.tsx +155 -0
  465. package/src/app/components/credits/credit-refusal-notice.test.tsx +132 -0
  466. package/src/app/components/credits/credit-refusal-notice.tsx +92 -0
  467. package/src/app/components/rail/rail-context.tsx +28 -5
  468. package/src/app/components/rail/rail-sections.tsx +3 -5
  469. package/src/app/components/rail/session-header-mute.test.tsx +23 -1
  470. package/src/app/components/rail/session-header.test.tsx +21 -2
  471. package/src/app/components/rail/session-header.tsx +31 -1
  472. package/src/app/components/rail/session-list.tsx +89 -16
  473. package/src/app/components/rail/session-shell.tsx +0 -14
  474. package/src/app/components/session/session-search-dialog.tsx +12 -1
  475. package/src/app/embed/session-app.tsx +6 -3
  476. package/src/app/lib/actions/actions-provider.tsx +486 -0
  477. package/src/app/lib/actions/actions.test.ts +249 -0
  478. package/src/app/lib/actions/chat-directory.ts +231 -0
  479. package/src/app/lib/actions/chat-operations.ts +145 -0
  480. package/src/app/lib/actions/chat-switcher.ts +62 -0
  481. package/src/app/lib/actions/chords.ts +185 -0
  482. package/src/app/lib/actions/events.ts +10 -0
  483. package/src/app/lib/actions/rank.ts +119 -0
  484. package/src/app/lib/actions/registry.ts +333 -0
  485. package/src/app/lib/credit-coverage.test.ts +83 -0
  486. package/src/app/lib/credit-coverage.tsx +48 -0
  487. package/src/app/lib/free-credit-gap.test.ts +32 -1
  488. package/src/app/lib/free-credit-gap.tsx +32 -2
  489. package/src/app/lib/integration-connect-analytics.test.ts +1 -0
  490. package/src/app/lib/integration-connect-analytics.tsx +4 -0
  491. package/src/app/lib/models-route.test.ts +18 -0
  492. package/src/app/lib/models-route.tsx +26 -4
  493. package/src/app/lib/session-search-route.tsx +6 -1
  494. package/src/app/lib/session-ui-features.tsx +28 -9
  495. package/src/app/routes/session.tsx +74 -16
  496. package/src/app/routes/sessions-index.tsx +83 -4
  497. package/src/components/timeline-annotation-selection.tsx +9 -64
  498. package/src/components/timeline-annotation-shared.ts +9 -57
  499. package/src/hooks/page-wake.ts +80 -0
  500. package/src/hooks/use-session-events.ts +309 -81
  501. package/src/lib/format.ts +3 -2
  502. package/src/messages/en.ts +13 -3
  503. package/src/model-picker-model.ts +3 -0
  504. package/src/model-policy.ts +9 -1
  505. package/src/session.ts +1 -0
  506. package/src/timeline/annotation-model.ts +217 -0
  507. package/src/timeline/projection.ts +27 -21
  508. package/src/timeline-model.ts +14 -0
  509. package/src/ui/context-menu.tsx +16 -0
  510. package/src/ui/dropdown-menu.tsx +4 -1
  511. package/src/ui/segmented-control.tsx +3 -0
  512. package/styles/compiled.css +92 -0
  513. package/dist/app/lib/keyboard-shortcuts.d.ts +0 -51
  514. package/dist/app/lib/keyboard-shortcuts.js +0 -16
  515. package/dist/chunk-2MXUB3ZO.js.map +0 -1
  516. package/dist/chunk-2RIUMV7S.js.map +0 -1
  517. package/dist/chunk-53IXIUYP.js +0 -39
  518. package/dist/chunk-53IXIUYP.js.map +0 -1
  519. package/dist/chunk-DN3TKURW.js.map +0 -1
  520. package/dist/chunk-F2GXK2Z6.js.map +0 -1
  521. package/dist/chunk-G7VLL3PG.js.map +0 -1
  522. package/dist/chunk-GRLPRM56.js.map +0 -1
  523. package/dist/chunk-HUQHJSPV.js.map +0 -1
  524. package/dist/chunk-IO6K6UYJ.js.map +0 -1
  525. package/dist/chunk-KWB5U3ZT.js.map +0 -1
  526. package/dist/chunk-L5UCO2UV.js.map +0 -1
  527. package/dist/chunk-MOF3XSUM.js.map +0 -1
  528. package/dist/chunk-N2BEUKXT.js.map +0 -1
  529. package/dist/chunk-OS3EQOIS.js.map +0 -1
  530. package/dist/chunk-OYJY4Y4A.js.map +0 -1
  531. package/dist/chunk-Q2ZJOECN.js.map +0 -1
  532. package/dist/chunk-QWCTYLMD.js.map +0 -1
  533. package/dist/chunk-RZV7SXED.js.map +0 -1
  534. package/dist/chunk-S3M5WCZW.js.map +0 -1
  535. package/dist/chunk-SOOWLNC5.js.map +0 -1
  536. package/dist/chunk-SWWYYGQO.js.map +0 -1
  537. package/dist/chunk-UO36FC3S.js.map +0 -1
  538. package/dist/chunk-UYSZKDQY.js.map +0 -1
  539. package/dist/chunk-VE3FKXJ7.js.map +0 -1
  540. package/dist/chunk-VVFWOBAM.js.map +0 -1
  541. package/dist/chunk-ZSERYHHT.js.map +0 -1
  542. package/dist/timeline-annotation-selection-2IA7T5VR.js.map +0 -1
  543. package/src/app/lib/keyboard-shortcuts.test.ts +0 -47
  544. package/src/app/lib/keyboard-shortcuts.tsx +0 -58
  545. /package/dist/app/{lib/keyboard-shortcuts.js.map → components/command-menu/keycaps.js.map} +0 -0
  546. /package/dist/{browser-viewer-ZRFZX3VN.js.map → app/components/credits/credit-refusal-notice.js.map} +0 -0
  547. /package/dist/{chat-interactive-block-HUMYWVCK.js.map → app/lib/actions/actions-provider.js.map} +0 -0
  548. /package/dist/{computer-viewer-D4NHQB5D.js.map → app/lib/credit-coverage.js.map} +0 -0
  549. /package/dist/{embedded-new-voice-X4ZW6SY4.js.map → browser-viewer-HPUMK7UP.js.map} +0 -0
  550. /package/dist/{embedded-voice-4OD6Z3HU.js.map → chat-interactive-block-22PPECCT.js.map} +0 -0
  551. /package/dist/{chunk-GVIQ7H62.js.map → chunk-2LUBBDZV.js.map} +0 -0
  552. /package/dist/{chunk-XMMVIY7B.js.map → chunk-3CCJWHQY.js.map} +0 -0
  553. /package/dist/{chunk-XS2FZ6DX.js.map → chunk-3F5ZPIWI.js.map} +0 -0
  554. /package/dist/{chunk-72US6QNB.js.map → chunk-3J2YZRY5.js.map} +0 -0
  555. /package/dist/{chunk-D4YQF4E3.js.map → chunk-3SMJ2BIQ.js.map} +0 -0
  556. /package/dist/{chunk-TBJINQXA.js.map → chunk-3WCYK36X.js.map} +0 -0
  557. /package/dist/{chunk-WPCF34V6.js.map → chunk-3WG3CRL7.js.map} +0 -0
  558. /package/dist/{chunk-JI5BYQKO.js.map → chunk-3X46PNBX.js.map} +0 -0
  559. /package/dist/{chunk-PBK44WJC.js.map → chunk-4GJ37O6G.js.map} +0 -0
  560. /package/dist/{chunk-LEXPBQ56.js.map → chunk-4SKJX3C4.js.map} +0 -0
  561. /package/dist/{chunk-ZA6YD2LW.js.map → chunk-57SYK776.js.map} +0 -0
  562. /package/dist/{chunk-22LBKJDE.js.map → chunk-5DIAN5GQ.js.map} +0 -0
  563. /package/dist/{chunk-LJ3TDK2L.js.map → chunk-5FA455GR.js.map} +0 -0
  564. /package/dist/{chunk-YPR5INHV.js.map → chunk-5X3E2Z3D.js.map} +0 -0
  565. /package/dist/{chunk-OXNWZTEU.js.map → chunk-5ZJCL6X4.js.map} +0 -0
  566. /package/dist/{chunk-62OAZ4LO.js.map → chunk-6C5GQQMC.js.map} +0 -0
  567. /package/dist/{chunk-VGITH57T.js.map → chunk-6ERTXDZM.js.map} +0 -0
  568. /package/dist/{chunk-ZQ7XQZCF.js.map → chunk-6FX73Y4I.js.map} +0 -0
  569. /package/dist/{chunk-QZO2KK2F.js.map → chunk-6P44NG6Y.js.map} +0 -0
  570. /package/dist/{chunk-N2DDJLTM.js.map → chunk-6T7Y33JA.js.map} +0 -0
  571. /package/dist/{chunk-RBAGC2MJ.js.map → chunk-75VE5QUS.js.map} +0 -0
  572. /package/dist/{chunk-MRXOGI3O.js.map → chunk-77CUDSHG.js.map} +0 -0
  573. /package/dist/{chunk-GZ65XQR5.js.map → chunk-7T7FHSGS.js.map} +0 -0
  574. /package/dist/{chunk-YGAH34CD.js.map → chunk-A3S26JSP.js.map} +0 -0
  575. /package/dist/{chunk-GYPAO6RS.js.map → chunk-A664GSDM.js.map} +0 -0
  576. /package/dist/{chunk-JSZSNMDR.js.map → chunk-ASUYLXKO.js.map} +0 -0
  577. /package/dist/{chunk-RTK7SUPL.js.map → chunk-AUUJLVA3.js.map} +0 -0
  578. /package/dist/{chunk-OOTBYSCA.js.map → chunk-BBWKPNJB.js.map} +0 -0
  579. /package/dist/{chunk-BGZIMIUU.js.map → chunk-BCUYWOQU.js.map} +0 -0
  580. /package/dist/{chunk-EKN4N4LS.js.map → chunk-BDFMNJZJ.js.map} +0 -0
  581. /package/dist/{chunk-YZKGOWCC.js.map → chunk-BIDXQAGO.js.map} +0 -0
  582. /package/dist/{chunk-Q2UUANHF.js.map → chunk-BIKAJ4DY.js.map} +0 -0
  583. /package/dist/{chunk-5IQBF2X3.js.map → chunk-BJPJ2OUX.js.map} +0 -0
  584. /package/dist/{chunk-EY2EMHZW.js.map → chunk-BPM2OTYK.js.map} +0 -0
  585. /package/dist/{chunk-MT4TBRQB.js.map → chunk-BSWS2RUZ.js.map} +0 -0
  586. /package/dist/{chunk-T7YD3VGK.js.map → chunk-C52MNKXU.js.map} +0 -0
  587. /package/dist/{chunk-THNW33K7.js.map → chunk-CEUDV4OA.js.map} +0 -0
  588. /package/dist/{chunk-LHGIS6SZ.js.map → chunk-CVK74BH7.js.map} +0 -0
  589. /package/dist/{chunk-DFO2UCYG.js.map → chunk-CW5I65ZX.js.map} +0 -0
  590. /package/dist/{chunk-SKRLKQEG.js.map → chunk-DOSC2HRQ.js.map} +0 -0
  591. /package/dist/{chunk-KVB6XDLP.js.map → chunk-DPJ2CWVN.js.map} +0 -0
  592. /package/dist/{chunk-4J6V4DH7.js.map → chunk-DXMRO2MU.js.map} +0 -0
  593. /package/dist/{chunk-42I4O4WQ.js.map → chunk-EE55IDDR.js.map} +0 -0
  594. /package/dist/{chunk-2RA6XABP.js.map → chunk-EEERTLFF.js.map} +0 -0
  595. /package/dist/{chunk-PTOTKUKO.js.map → chunk-EEO744XR.js.map} +0 -0
  596. /package/dist/{chunk-LD3HVI2J.js.map → chunk-EMFGBAQL.js.map} +0 -0
  597. /package/dist/{chunk-FQGUK4ST.js.map → chunk-ENPJKVMN.js.map} +0 -0
  598. /package/dist/{chunk-HDHK3SXK.js.map → chunk-EU6RLHMP.js.map} +0 -0
  599. /package/dist/{chunk-MRUWRQBX.js.map → chunk-FET6XHGS.js.map} +0 -0
  600. /package/dist/{chunk-M6KUY3YH.js.map → chunk-FIICQA55.js.map} +0 -0
  601. /package/dist/{chunk-NLWLCYCT.js.map → chunk-FTZXCPE3.js.map} +0 -0
  602. /package/dist/{chunk-FN2KA3MJ.js.map → chunk-FUS76DO4.js.map} +0 -0
  603. /package/dist/{chunk-AM4IIPWI.js.map → chunk-G7N5NPRJ.js.map} +0 -0
  604. /package/dist/{chunk-CCQ7YKOD.js.map → chunk-GBYZ6653.js.map} +0 -0
  605. /package/dist/{chunk-YKKVIJVX.js.map → chunk-GQDSC6QZ.js.map} +0 -0
  606. /package/dist/{chunk-5X6JP75Q.js.map → chunk-GRSODLVO.js.map} +0 -0
  607. /package/dist/{chunk-73YP3R5X.js.map → chunk-GSESCQFY.js.map} +0 -0
  608. /package/dist/{chunk-MZLEBFUZ.js.map → chunk-GZD6VBIK.js.map} +0 -0
  609. /package/dist/{chunk-IZR2QRFF.js.map → chunk-H3HH5AHS.js.map} +0 -0
  610. /package/dist/{chunk-OJPUVUB6.js.map → chunk-HAOZCLLA.js.map} +0 -0
  611. /package/dist/{chunk-ZBHDGAYL.js.map → chunk-HEFE4OZJ.js.map} +0 -0
  612. /package/dist/{chunk-WTG34JVA.js.map → chunk-HI75UTI6.js.map} +0 -0
  613. /package/dist/{chunk-OMBIG3NC.js.map → chunk-HM633ROV.js.map} +0 -0
  614. /package/dist/{chunk-WDFZWSKD.js.map → chunk-HRIP4M6H.js.map} +0 -0
  615. /package/dist/{chunk-A2BCW6CQ.js.map → chunk-HU2DRFFI.js.map} +0 -0
  616. /package/dist/{chunk-PO35PBAB.js.map → chunk-HVH7FFJH.js.map} +0 -0
  617. /package/dist/{chunk-EG7KNUF7.js.map → chunk-HYTXTKST.js.map} +0 -0
  618. /package/dist/{chunk-TFHG75A4.js.map → chunk-I4XMDFUJ.js.map} +0 -0
  619. /package/dist/{chunk-IZHVZZQA.js.map → chunk-ICAUYWSL.js.map} +0 -0
  620. /package/dist/{chunk-DCLPWYP3.js.map → chunk-IEVPJ3G6.js.map} +0 -0
  621. /package/dist/{chunk-EVWZHDSF.js.map → chunk-IKH3VTA4.js.map} +0 -0
  622. /package/dist/{chunk-TYHLEFD2.js.map → chunk-IZJNMRIR.js.map} +0 -0
  623. /package/dist/{chunk-D2SR3TEB.js.map → chunk-J243WGUA.js.map} +0 -0
  624. /package/dist/{chunk-QGSGIYE3.js.map → chunk-J2C6LB6W.js.map} +0 -0
  625. /package/dist/{chunk-MT6TRTXF.js.map → chunk-J5MEDX7C.js.map} +0 -0
  626. /package/dist/{chunk-6QHUKBJP.js.map → chunk-J7SKOO44.js.map} +0 -0
  627. /package/dist/{chunk-W2QK7PYS.js.map → chunk-JAAST75A.js.map} +0 -0
  628. /package/dist/{chunk-NQCMS4AJ.js.map → chunk-JQCGPTZ6.js.map} +0 -0
  629. /package/dist/{chunk-CMUXJHGH.js.map → chunk-JRSCWQMC.js.map} +0 -0
  630. /package/dist/{chunk-Q4OHNGGB.js.map → chunk-JRXHSVD5.js.map} +0 -0
  631. /package/dist/{chunk-SD2K5ZN5.js.map → chunk-JXYLDT6X.js.map} +0 -0
  632. /package/dist/{chunk-IXX6ZOL2.js.map → chunk-KGTMHEAP.js.map} +0 -0
  633. /package/dist/{chunk-22OBGVEJ.js.map → chunk-KOXVGPW4.js.map} +0 -0
  634. /package/dist/{chunk-NOZ5CGZE.js.map → chunk-L5GPPMUB.js.map} +0 -0
  635. /package/dist/{chunk-4FOOHMTU.js.map → chunk-LY6727IF.js.map} +0 -0
  636. /package/dist/{chunk-PT7MTXRE.js.map → chunk-MAOCN7J6.js.map} +0 -0
  637. /package/dist/{chunk-4K2JSJNX.js.map → chunk-MB5LZVDO.js.map} +0 -0
  638. /package/dist/{chunk-5LES64PP.js.map → chunk-MKOQAVOE.js.map} +0 -0
  639. /package/dist/{chunk-BMV2SNYX.js.map → chunk-MUPWNSEJ.js.map} +0 -0
  640. /package/dist/{chunk-Y5TRG22C.js.map → chunk-NRXIECWC.js.map} +0 -0
  641. /package/dist/{chunk-GOE7G5JX.js.map → chunk-NWSAF6P5.js.map} +0 -0
  642. /package/dist/{chunk-DUM363VS.js.map → chunk-OFZQJNF6.js.map} +0 -0
  643. /package/dist/{chunk-CKN5QPEL.js.map → chunk-OMF7POEY.js.map} +0 -0
  644. /package/dist/{chunk-MVXKO2BD.js.map → chunk-OXD6ET34.js.map} +0 -0
  645. /package/dist/{chunk-47JUEVME.js.map → chunk-PALX6HWV.js.map} +0 -0
  646. /package/dist/{chunk-B6OGSG7I.js.map → chunk-PE3BLBDT.js.map} +0 -0
  647. /package/dist/{chunk-RVISSNVE.js.map → chunk-PMZKJOG6.js.map} +0 -0
  648. /package/dist/{chunk-CESAMXWX.js.map → chunk-PQUTMG3S.js.map} +0 -0
  649. /package/dist/{chunk-7VFCOKPG.js.map → chunk-PWBGODZU.js.map} +0 -0
  650. /package/dist/{chunk-MOPAXD2H.js.map → chunk-QCADUTYX.js.map} +0 -0
  651. /package/dist/{chunk-CT5FBO7E.js.map → chunk-RPOUJI25.js.map} +0 -0
  652. /package/dist/{chunk-WKHYOS72.js.map → chunk-RW4GFE56.js.map} +0 -0
  653. /package/dist/{chunk-FH4GO7HO.js.map → chunk-RYLVVDR7.js.map} +0 -0
  654. /package/dist/{chunk-QZRDCFHI.js.map → chunk-S66SBBFQ.js.map} +0 -0
  655. /package/dist/{chunk-CQJFIPAH.js.map → chunk-S7TNV2I7.js.map} +0 -0
  656. /package/dist/{chunk-ZBQSIGGR.js.map → chunk-SC773IMJ.js.map} +0 -0
  657. /package/dist/{chunk-FBJ2HK7A.js.map → chunk-SGPJ3YS2.js.map} +0 -0
  658. /package/dist/{chunk-A2EWJQXX.js.map → chunk-SM5QX6UK.js.map} +0 -0
  659. /package/dist/{chunk-RKZWCTXV.js.map → chunk-TAEKDMEF.js.map} +0 -0
  660. /package/dist/{chunk-6AVCAUGL.js.map → chunk-TASEV25T.js.map} +0 -0
  661. /package/dist/{chunk-3XOISKZC.js.map → chunk-TLGDPMUX.js.map} +0 -0
  662. /package/dist/{chunk-5IUW34PG.js.map → chunk-TY3QYPJ6.js.map} +0 -0
  663. /package/dist/{chunk-VQFR4EU4.js.map → chunk-U3JK5VJV.js.map} +0 -0
  664. /package/dist/{chunk-2AWMJO54.js.map → chunk-U42P3RMZ.js.map} +0 -0
  665. /package/dist/{chunk-GUU75DES.js.map → chunk-UEJTOPLW.js.map} +0 -0
  666. /package/dist/{chunk-OZOEWLGR.js.map → chunk-UT6JAORE.js.map} +0 -0
  667. /package/dist/{chunk-5TELOQA6.js.map → chunk-UTHPUINA.js.map} +0 -0
  668. /package/dist/{chunk-26RQ6JBR.js.map → chunk-VBVCNH6D.js.map} +0 -0
  669. /package/dist/{chunk-P646DND6.js.map → chunk-VCMQPCME.js.map} +0 -0
  670. /package/dist/{chunk-LV7FMIMM.js.map → chunk-VGUHAHHV.js.map} +0 -0
  671. /package/dist/{chunk-GYVXARCY.js.map → chunk-VIBPFVU4.js.map} +0 -0
  672. /package/dist/{chunk-KHPOKZ6Z.js.map → chunk-VMAC66JX.js.map} +0 -0
  673. /package/dist/{chunk-SHKRS6I5.js.map → chunk-VRPNETPK.js.map} +0 -0
  674. /package/dist/{chunk-6U4J6RVS.js.map → chunk-WCHW4XN7.js.map} +0 -0
  675. /package/dist/{chunk-CJH6QUQJ.js.map → chunk-WD3UXNJV.js.map} +0 -0
  676. /package/dist/{chunk-H5EVWF6L.js.map → chunk-WR67FJMX.js.map} +0 -0
  677. /package/dist/{chunk-XLIJ36RG.js.map → chunk-WRMQ7EX4.js.map} +0 -0
  678. /package/dist/{chunk-7KLCFJ5G.js.map → chunk-X4PPGXQG.js.map} +0 -0
  679. /package/dist/{chunk-ZE2JTVCQ.js.map → chunk-X5BMQXFD.js.map} +0 -0
  680. /package/dist/{chunk-UECU6LZI.js.map → chunk-XXRBOSWV.js.map} +0 -0
  681. /package/dist/{chunk-SPKAIDWX.js.map → chunk-XZEFCPBL.js.map} +0 -0
  682. /package/dist/{chunk-EZ5NYRHK.js.map → chunk-YL6N7QLA.js.map} +0 -0
  683. /package/dist/{chunk-VAIESMPY.js.map → chunk-YVBHGMKC.js.map} +0 -0
  684. /package/dist/{chunk-AR62NQXE.js.map → chunk-Z2S5VQG7.js.map} +0 -0
  685. /package/dist/{chunk-7UQJEADK.js.map → chunk-ZL2O4BYP.js.map} +0 -0
  686. /package/dist/{chunk-FOOITLHR.js.map → chunk-ZZHBT5WQ.js.map} +0 -0
  687. /package/dist/{chunk-X6VJQJYY.js.map → chunk-ZZWHKC6A.js.map} +0 -0
  688. /package/dist/{model-policy-picker-menu-XOPYY6YA.js.map → computer-viewer-S6TE6TN7.js.map} +0 -0
  689. /package/dist/{sandbox-files-LJCR437H.js.map → embedded-new-voice-ZDZPGX25.js.map} +0 -0
  690. /package/dist/{session-realtime-UISLBZ4A.js.map → embedded-voice-FKCUXSJO.js.map} +0 -0
  691. /package/dist/{fleet-decision-row-5UCJXTDP.js.map → fleet-decision-row-VCGWYJAV.js.map} +0 -0
  692. /package/dist/{latest-question-VGVNUGAU.js.map → latest-question-SINEV4U6.js.map} +0 -0
  693. /package/dist/{platform-activity-row-56XOVTRA.js.map → platform-activity-row-LU5WABI2.js.map} +0 -0
@@ -1,25 +1,33 @@
1
1
  "use client";
2
2
  import {
3
- SiteSessionGroupHeading
4
- } from "./chunk-22ZBT6CN.js";
3
+ TooltipWithKeys
4
+ } from "./chunk-GQGNRL2L.js";
5
+ import {
6
+ SessionRowHoverDetails
7
+ } from "./chunk-H3HH5AHS.js";
8
+ import {
9
+ SiteOriginLink
10
+ } from "./chunk-GZ64CASI.js";
11
+ import {
12
+ useActionShortcut,
13
+ useChatOperations
14
+ } from "./chunk-JRJUSKDY.js";
15
+ import {
16
+ rememberChats,
17
+ setSidebarOrder
18
+ } from "./chunk-4IWBQUQU.js";
5
19
  import {
6
20
  SessionBrowseOrderControls
7
- } from "./chunk-WTG34JVA.js";
21
+ } from "./chunk-HI75UTI6.js";
22
+ import {
23
+ SiteSessionGroupHeading
24
+ } from "./chunk-22ZBT6CN.js";
8
25
  import {
9
26
  ActiveWorkMark,
10
27
  RailTrailingMetadata,
11
28
  SessionRowContent,
12
29
  sessionRowAccessibleName
13
30
  } from "./chunk-PM3OSANE.js";
14
- import {
15
- SiteOriginLink
16
- } from "./chunk-GZ64CASI.js";
17
- import {
18
- SessionRowHoverDetails
19
- } from "./chunk-IZR2QRFF.js";
20
- import {
21
- pinLiveAnnouncement
22
- } from "./chunk-GLYJV66C.js";
23
31
  import {
24
32
  DEFAULT_SESSION_BROWSE_PREFERENCES,
25
33
  readSessionBrowsePreferences,
@@ -27,32 +35,6 @@ import {
27
35
  sessionBrowsePreferencesCustomized,
28
36
  writeSessionBrowsePreferences
29
37
  } from "./chunk-VV5SNSIW.js";
30
- import {
31
- notifySessionListChanged,
32
- subscribeToWorkspaceSessionListChanges
33
- } from "./chunk-O5S57N6H.js";
34
- import {
35
- readSessionGroupWindows,
36
- sessionGroupWindowMemoryId,
37
- writeSessionGroupWindows
38
- } from "./chunk-JSCZXTEG.js";
39
- import {
40
- SESSION_GROUP_VISIBLE_STEP,
41
- planSessionGroupFill,
42
- sameSessionGroupFill,
43
- sessionGroupDisclosurePlan,
44
- sessionGroupWindowNodes
45
- } from "./chunk-QTDAWO6O.js";
46
- import {
47
- applySessionChannelMove,
48
- beginSessionChannelMove,
49
- commitSessionChannelMove,
50
- discardRejectedSessionChannelMove,
51
- readSessionChannelMovePoint,
52
- reconcileSessionChannelMovePointRead,
53
- reconcileSessionChannelMoves,
54
- rollbackSessionChannelMove
55
- } from "./chunk-6BVT27Y2.js";
56
38
  import {
57
39
  activeSessionContinuation,
58
40
  advanceSessionPageIdentity,
@@ -66,24 +48,49 @@ import {
66
48
  reconcileRetainedSessionContinuationChannel,
67
49
  sessionPageKey
68
50
  } from "./chunk-OSI2QWSL.js";
51
+ import {
52
+ pinLiveAnnouncement
53
+ } from "./chunk-GLYJV66C.js";
54
+ import {
55
+ railRowCreator
56
+ } from "./chunk-KJJBQ3KV.js";
57
+ import {
58
+ emptySessionListDirtyScopes,
59
+ invalidateSessionListScopes,
60
+ sessionListGroupRevision
61
+ } from "./chunk-5VEK5RA4.js";
69
62
  import {
70
63
  sessionMatchesPaginationGroup,
71
64
  sessionPaginationGroupQuery,
72
65
  sessionPaginationProjectGroup
73
- } from "./chunk-22OBGVEJ.js";
66
+ } from "./chunk-KOXVGPW4.js";
67
+ import {
68
+ notifySessionListChanged,
69
+ subscribeToWorkspaceSessionListChanges
70
+ } from "./chunk-O5S57N6H.js";
71
+ import {
72
+ applySessionChannelMove,
73
+ beginSessionChannelMove,
74
+ commitSessionChannelMove,
75
+ discardRejectedSessionChannelMove,
76
+ readSessionChannelMovePoint,
77
+ reconcileSessionChannelMovePointRead,
78
+ reconcileSessionChannelMoves,
79
+ rollbackSessionChannelMove
80
+ } from "./chunk-6BVT27Y2.js";
81
+ import {
82
+ readSessionGroupWindows,
83
+ sessionGroupWindowMemoryId,
84
+ writeSessionGroupWindows
85
+ } from "./chunk-JSCZXTEG.js";
74
86
  import {
75
87
  sessionHoverDescription,
76
88
  sessionHoverFacts
77
- } from "./chunk-PTOTKUKO.js";
89
+ } from "./chunk-EEO744XR.js";
78
90
  import {
79
91
  sessionDescendantCountAria,
80
92
  sessionDescendantCountText
81
93
  } from "./chunk-XVVJBNUQ.js";
82
- import {
83
- emptySessionListDirtyScopes,
84
- invalidateSessionListScopes,
85
- sessionListGroupRevision
86
- } from "./chunk-5VEK5RA4.js";
87
94
  import {
88
95
  authoritativeSessionBranchChannels,
89
96
  beginSessionBranchRequest,
@@ -94,7 +101,7 @@ import {
94
101
  sessionBranchSummaryDecision,
95
102
  sessionBranchSummaryKey,
96
103
  upsertSessionBranchChild
97
- } from "./chunk-PBK44WJC.js";
104
+ } from "./chunk-4GJ37O6G.js";
98
105
  import {
99
106
  buildPinnedRailSections,
100
107
  channelRailSections,
@@ -111,18 +118,18 @@ import {
111
118
  summarizeRailStatusCounts,
112
119
  visibleForestRows,
113
120
  visibleTreeRows
114
- } from "./chunk-6AVCAUGL.js";
121
+ } from "./chunk-TASEV25T.js";
115
122
  import {
116
123
  countNeedsYou,
117
124
  filterNeedsYou
118
125
  } from "./chunk-UBJWSGD4.js";
119
126
  import {
120
- MAX_VISUAL_TREE_DEPTH,
121
- defaultExpandedAncestors,
122
- sessionAncestorPath,
123
- sessionStateLabel,
124
- visualTreeDepth
125
- } from "./chunk-M6KUY3YH.js";
127
+ SESSION_GROUP_VISIBLE_STEP,
128
+ planSessionGroupFill,
129
+ sameSessionGroupFill,
130
+ sessionGroupDisclosurePlan,
131
+ sessionGroupWindowNodes
132
+ } from "./chunk-QTDAWO6O.js";
126
133
  import {
127
134
  ChannelCreateDialog
128
135
  } from "./chunk-6WVASCYA.js";
@@ -130,8 +137,24 @@ import {
130
137
  useSessionListHintRefresh
131
138
  } from "./chunk-R25ZKOZR.js";
132
139
  import {
140
+ MAX_VISUAL_TREE_DEPTH,
141
+ defaultExpandedAncestors,
142
+ sessionAncestorPath,
143
+ sessionStateLabel,
144
+ visualTreeDepth
145
+ } from "./chunk-FIICQA55.js";
146
+ import {
147
+ requestCommandMenu,
133
148
  useRail
134
- } from "./chunk-RZV7SXED.js";
149
+ } from "./chunk-SF3M27AN.js";
150
+ import {
151
+ applySessionAttentionProjections,
152
+ latestSessionAttentionProjection,
153
+ localSessionDeliveryAttentionCounts,
154
+ notifySessionAttentionChanged,
155
+ subscribeToLocalSessionDeliveryAttention,
156
+ subscribeToSessionAttentionChanges
157
+ } from "./chunk-SDHGQUS4.js";
135
158
  import {
136
159
  cancelSessionRowRevealIntent,
137
160
  consumeSessionRowRevealIntent,
@@ -143,31 +166,14 @@ import {
143
166
  shouldRestoreSessionFocus
144
167
  } from "./chunk-RMHOG3PN.js";
145
168
  import {
146
- requestSessionSearch
147
- } from "./chunk-NFCYIZHX.js";
148
- import {
149
- applySessionAttentionProjections,
150
- latestSessionAttentionProjection,
151
- localSessionDeliveryAttentionCounts,
152
- notifySessionAttentionChanged,
153
- subscribeToLocalSessionDeliveryAttention,
154
- subscribeToSessionAttentionChanges
155
- } from "./chunk-SDHGQUS4.js";
156
- import {
157
- useSessionUiFeature
158
- } from "./chunk-OYJY4Y4A.js";
169
+ requestCreateComposerFocus
170
+ } from "./chunk-HQA6FUM5.js";
159
171
  import {
160
172
  useUiEventTarget
161
173
  } from "./chunk-WGPLDFEC.js";
162
- import {
163
- requestCreateComposerFocus
164
- } from "./chunk-HQA6FUM5.js";
165
174
  import {
166
175
  useInlineRename
167
- } from "./chunk-7UQJEADK.js";
168
- import {
169
- railRowCreator
170
- } from "./chunk-KJJBQ3KV.js";
176
+ } from "./chunk-ZL2O4BYP.js";
171
177
  import {
172
178
  formatWaitingSince
173
179
  } from "./chunk-5TLEWXAB.js";
@@ -175,24 +181,35 @@ import {
175
181
  cn
176
182
  } from "./chunk-A3MTTRCX.js";
177
183
  import {
178
- HoverCard,
179
- HoverCardContent,
180
- HoverCardTrigger
181
- } from "./chunk-SZ5MYMF2.js";
184
+ ConfirmDialog
185
+ } from "./chunk-Q27G7PF6.js";
182
186
  import {
183
187
  analyticsAction
184
188
  } from "./chunk-PYC2ZWBJ.js";
189
+ import {
190
+ DropdownMenu,
191
+ DropdownMenuCheck,
192
+ DropdownMenuContent,
193
+ DropdownMenuItem,
194
+ DropdownMenuLabel,
195
+ DropdownMenuSeparator,
196
+ DropdownMenuShortcut,
197
+ DropdownMenuTrigger
198
+ } from "./chunk-TREHTIBD.js";
199
+ import {
200
+ Tooltip,
201
+ TooltipContent,
202
+ TooltipTrigger
203
+ } from "./chunk-OLTGED2Q.js";
185
204
  import {
186
205
  ContextMenu,
187
206
  ContextMenuContent,
188
207
  ContextMenuItem,
189
208
  ContextMenuLabel,
190
209
  ContextMenuSeparator,
210
+ ContextMenuShortcut,
191
211
  ContextMenuTrigger
192
- } from "./chunk-2MXUB3ZO.js";
193
- import {
194
- ConfirmDialog
195
- } from "./chunk-Q27G7PF6.js";
212
+ } from "./chunk-Z5OGTWMZ.js";
196
213
  import {
197
214
  applySessionChannelProjection,
198
215
  applySessionPinProjection,
@@ -201,10 +218,7 @@ import {
201
218
  } from "./chunk-JHZRAYI4.js";
202
219
  import {
203
220
  t
204
- } from "./chunk-PT7MTXRE.js";
205
- import {
206
- isPersonalWorkspace
207
- } from "./chunk-74JEZLLQ.js";
221
+ } from "./chunk-MAOCN7J6.js";
208
222
  import {
209
223
  toast
210
224
  } from "./chunk-YG6NARQY.js";
@@ -213,26 +227,29 @@ import {
213
227
  useNavigate,
214
228
  useRouterState
215
229
  } from "./chunk-MYNUBDU7.js";
230
+ import {
231
+ isPersonalWorkspace
232
+ } from "./chunk-74JEZLLQ.js";
216
233
  import {
217
234
  useAppContext
218
235
  } from "./chunk-W6KAUGXO.js";
219
236
  import {
220
- Tooltip,
221
- TooltipContent,
222
- TooltipTrigger
223
- } from "./chunk-OLTGED2Q.js";
237
+ HoverCard,
238
+ HoverCardContent,
239
+ HoverCardTrigger
240
+ } from "./chunk-SZ5MYMF2.js";
224
241
  import {
225
242
  Button
226
243
  } from "./chunk-HMU5IELG.js";
227
244
  import {
228
- DropdownMenu,
229
- DropdownMenuCheck,
230
- DropdownMenuContent,
231
- DropdownMenuItem,
232
- DropdownMenuLabel,
233
- DropdownMenuSeparator,
234
- DropdownMenuTrigger
235
- } from "./chunk-MOF3XSUM.js";
245
+ SESSION_GROUP_LABELS,
246
+ SESSION_GROUP_ORDER,
247
+ SESSION_TITLE_MAX_LENGTH,
248
+ groupSessionsForRail,
249
+ relativeTimeLabel,
250
+ sessionDisplayTitle,
251
+ sessionInputWait
252
+ } from "./chunk-J2C6LB6W.js";
236
253
  import {
237
254
  useChannels
238
255
  } from "./chunk-RKB2Z457.js";
@@ -242,15 +259,6 @@ import {
242
259
  import {
243
260
  useWorkspaceSessions
244
261
  } from "./chunk-RGPYMHKI.js";
245
- import {
246
- SESSION_GROUP_LABELS,
247
- SESSION_GROUP_ORDER,
248
- SESSION_TITLE_MAX_LENGTH,
249
- groupSessionsForRail,
250
- relativeTimeLabel,
251
- sessionDisplayTitle,
252
- sessionInputWait
253
- } from "./chunk-QGSGIYE3.js";
254
262
  import {
255
263
  useOpenGeni
256
264
  } from "./chunk-TVQCDDSZ.js";
@@ -275,7 +283,8 @@ import {
275
283
  PinIcon,
276
284
  PlusIcon,
277
285
  SearchIcon,
278
- Trash2Icon
286
+ Trash2Icon,
287
+ LinkIcon
279
288
  } from "lucide-react";
280
289
  import {
281
290
  useCallback,
@@ -293,7 +302,7 @@ function isModifiedNavigationClick(event) {
293
302
  }
294
303
  function NewSessionLink(props) {
295
304
  const windowEvents = useUiEventTarget("window");
296
- const newChatShortcut = useSessionUiFeature("newChatShortcut");
305
+ const newChatShortcut = useActionShortcut("chat.new");
297
306
  const rail = useRail();
298
307
  const context = useAppContext();
299
308
  return /* @__PURE__ */ jsx(
@@ -303,7 +312,7 @@ function NewSessionLink(props) {
303
312
  params: { workspaceId: rail.workspaceId },
304
313
  search: props.channelId === void 0 ? {} : { channelId: props.channelId ?? "default" },
305
314
  "aria-label": props["aria-label"],
306
- "aria-keyshortcuts": newChatShortcut ? "Meta+Shift+O Control+Shift+O" : void 0,
315
+ "aria-keyshortcuts": newChatShortcut?.ariaKeys,
307
316
  className: props.className,
308
317
  ...analyticsAction("new_session"),
309
318
  onClick: (event) => {
@@ -368,10 +377,8 @@ function SessionList() {
368
377
  };
369
378
  }, []);
370
379
  const [searchDraft, setSearchDraft] = useState("");
371
- const openSearchDialog = useCallback(
372
- (event) => requestSessionSearch(windowEvents, rail.workspaceId, event.currentTarget),
373
- [rail.workspaceId, windowEvents]
374
- );
380
+ const openSearchDialog = useCallback(() => requestCommandMenu(windowEvents), [windowEvents]);
381
+ const searchShortcut = useActionShortcut("commandMenu.open");
375
382
  const [search, setSearch] = useState("");
376
383
  const browsePreferenceStorageId = useMemo(
377
384
  () => sessionBrowsePreferenceStorageId(context.accessContext.subjectId, rail.workspaceId),
@@ -1910,6 +1917,18 @@ function SessionList() {
1910
1917
  pinnedNodes
1911
1918
  ]);
1912
1919
  const flat = useMemo(() => visibleRows.map((row) => row.node.session), [visibleRows]);
1920
+ const directorySubject = context.accessContext.subjectId;
1921
+ useEffect(() => {
1922
+ rememberChats(directorySubject, rail.workspaceId, [...pinned, ...sessions]);
1923
+ }, [directorySubject, rail.workspaceId, pinned, sessions]);
1924
+ useEffect(() => {
1925
+ setSidebarOrder(
1926
+ directorySubject,
1927
+ rail.workspaceId,
1928
+ flat.map((session) => session.id),
1929
+ pinned.map((session) => session.id)
1930
+ );
1931
+ }, [directorySubject, rail.workspaceId, flat, pinned]);
1913
1932
  useLayoutEffect(() => {
1914
1933
  const pending = pendingSessionFocus.current;
1915
1934
  const root = listRef.current;
@@ -2730,11 +2749,12 @@ function SessionList() {
2730
2749
  onClick: openSearchDialog,
2731
2750
  "aria-label": "Search sessions",
2732
2751
  "aria-haspopup": "dialog",
2752
+ "aria-keyshortcuts": searchShortcut?.ariaKeys,
2733
2753
  className: "shrink-0 text-fg-label hover:text-fg pointer-coarse:size-11",
2734
2754
  children: /* @__PURE__ */ jsx(SearchIcon, { "aria-hidden": "true", className: "size-3.5" })
2735
2755
  }
2736
2756
  ) }),
2737
- /* @__PURE__ */ jsx(TooltipContent, { side: "bottom", children: "Search sessions" })
2757
+ /* @__PURE__ */ jsx(TooltipContent, { side: "bottom", children: /* @__PURE__ */ jsx(TooltipWithKeys, { label: "Search sessions", shortcut: searchShortcut }) })
2738
2758
  ] }),
2739
2759
  channelMode ? /* @__PURE__ */ jsxs(Tooltip, { children: [
2740
2760
  /* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
@@ -3603,9 +3623,20 @@ function SessionRow(props) {
3603
3623
  const title = sessionDisplayTitle(props.session);
3604
3624
  const rename = useInlineRename(props.session, props.onRename);
3605
3625
  const contextPinSelection = useRef(false);
3626
+ const chatOps = useChatOperations();
3627
+ const copyLinkKeys = useActionShortcut("chat.copyLink");
3628
+ const pinKeys = useActionShortcut("chat.pin");
3606
3629
  const hasChildren = props.hasChildren;
3607
3630
  const focusEvents = useUiEventTarget("window");
3608
3631
  const creator = railRowCreator(props.session);
3632
+ const [hoverOpen, setHoverOpen] = useState(false);
3633
+ useEffect(() => {
3634
+ if (!hoverOpen || typeof document === "undefined") return;
3635
+ const close = () => setHoverOpen(false);
3636
+ document.addEventListener("keydown", close, true);
3637
+ return () => document.removeEventListener("keydown", close, true);
3638
+ }, [hoverOpen]);
3639
+ const [contextMenuOpen, setContextMenuOpen] = useState(false);
3609
3640
  const personalWorkspace = isPersonalWorkspace(
3610
3641
  context.workspaces?.find((workspace) => workspace.id === rail.workspaceId) ?? null,
3611
3642
  null
@@ -3699,245 +3730,277 @@ function SessionRow(props) {
3699
3730
  )
3700
3731
  ] });
3701
3732
  }
3702
- return /* @__PURE__ */ jsxs(ContextMenu, { children: [
3703
- /* @__PURE__ */ jsx(ContextMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxs("div", { className: rowClassName, children: [
3704
- lead,
3705
- /* @__PURE__ */ jsx(SiteOriginLink, { session: props.session, compact: true }),
3706
- /* @__PURE__ */ jsxs(HoverCard, { openDelay: 100, closeDelay: 80, children: [
3707
- /* @__PURE__ */ jsx(HoverCardTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
3708
- Link,
3709
- {
3710
- to: "/workspaces/$workspaceId/sessions/$sessionId",
3711
- draggable: props.session.parentSessionId === null && !props.session.archived,
3712
- onDragStart: (event) => {
3713
- if (props.session.parentSessionId !== null || props.session.archived) {
3714
- event.preventDefault();
3715
- return;
3716
- }
3717
- event.stopPropagation();
3718
- event.dataTransfer.effectAllowed = "move";
3719
- event.dataTransfer.setData(SESSION_DRAG_TYPE, props.session.id);
3720
- },
3721
- params: { workspaceId: rail.workspaceId, sessionId: props.session.id },
3722
- "data-session-index": props.index,
3723
- "data-session-focus": true,
3724
- "data-session-row": props.session.id,
3725
- tabIndex: props.focused ? 0 : -1,
3726
- "aria-current": props.active ? "page" : void 0,
3727
- "aria-label": sessionRowAccessibleName({
3728
- title,
3729
- stateLabel,
3730
- pinned: Boolean(props.session.pinned),
3731
- statusLabel: props.aggregateStatus.label,
3732
- spawnedLabel: hasChildren ? childCountAria.replace("descendant", "spawned") : null,
3733
- creator
3734
- }),
3735
- "aria-describedby": hoverDescription ? hoverDescriptionId : void 0,
3736
- onFocus: props.onFocus,
3737
- onClick: (event) => {
3738
- if (isModifiedNavigationClick(event)) return;
3739
- if (props.session.unread && !props.session.archived && document.visibilityState === "visible" && document.hasFocus()) {
3740
- const projection = {
3741
- id: props.session.id,
3742
- workspaceId: props.session.workspaceId,
3743
- unread: false,
3744
- ...props.session.attentionVersion !== void 0 ? { attentionVersion: props.session.attentionVersion } : {},
3745
- lastSequence: props.session.lastSequence
3746
- };
3747
- notifySessionAttentionChanged(projection);
3748
- const acceptedTransition = context.captureWorkspaceInvocation(
3749
- props.session.workspaceId
3750
- );
3751
- if (acceptedTransition) {
3752
- const acknowledge = (retry) => {
3753
- void context.client.updateSessionAttention(props.session.workspaceId, props.session.id, {
3754
- unread: false,
3755
- acknowledgedThroughSequence: props.session.lastSequence
3756
- }).then((updated) => {
3757
- if (context.ownsWorkspaceInvocation(
3758
- props.session.workspaceId,
3759
- acceptedTransition
3760
- )) {
3761
- notifySessionAttentionChanged(updated);
3762
- }
3763
- }).catch(() => {
3764
- if (retry && context.ownsWorkspaceInvocation(
3765
- props.session.workspaceId,
3766
- acceptedTransition
3767
- )) {
3768
- acknowledge(false);
3769
- }
3770
- });
3771
- };
3772
- acknowledge(true);
3773
- }
3774
- }
3775
- if (!rail.isMobile) {
3776
- requestSessionComposerFocus(focusEvents, rail.workspaceId, props.session.id);
3777
- }
3778
- rail.setDrawerOpen(false);
3779
- },
3780
- className: "flex h-full min-w-0 flex-1 items-center gap-1 rounded-sm text-left outline-hidden focus-visible:ring-2 focus-visible:ring-ring/40 focus-visible:ring-offset-1 focus-visible:ring-offset-surface",
3781
- children: /* @__PURE__ */ jsx(
3782
- SessionRowContent,
3783
- {
3784
- quickActionSlots: Number(!props.session.archived) + Number(props.session.parentSessionId === null),
3785
- title,
3786
- stateLabel,
3787
- depthLabel,
3788
- descendantLabel,
3789
- mobile: rail.isMobile,
3790
- summary: props.aggregateStatus,
3791
- scheduled: props.session.hasSchedules === true,
3792
- relativeTime: rail.isMobile ? void 0 : relativeTime,
3793
- creator
3794
- }
3795
- )
3796
- }
3797
- ) }),
3798
- /* @__PURE__ */ jsx(
3799
- HoverCardContent,
3800
- {
3801
- side: rail.isMobile ? "bottom" : "right",
3802
- collisionPadding: 8,
3803
- className: "w-80 max-w-[calc(100vw-16px)] p-3.5",
3804
- children: /* @__PURE__ */ jsx(
3805
- SessionRowHoverDetails,
3806
- {
3807
- session: props.session,
3808
- title,
3809
- descendantCount: hoverDescendantCount,
3810
- descendantCountTruncated: hoverDescendantCountTruncated,
3811
- showCreator: !personalWorkspace
3812
- }
3813
- )
3814
- }
3815
- )
3816
- ] }),
3817
- hoverDescription ? /* @__PURE__ */ jsx("span", { id: hoverDescriptionId, hidden: true, children: hoverDescription }) : null,
3818
- /* @__PURE__ */ jsx(
3819
- RowQuickActions,
3820
- {
3821
- session: props.session,
3822
- onPin: props.onPin,
3823
- onArchive: props.onArchive
3824
- }
3825
- ),
3826
- /* @__PURE__ */ jsx(
3827
- RowActionsMenu,
3828
- {
3829
- session: props.session,
3830
- onRename: rename.startEditing,
3831
- onPin: props.onPin,
3832
- channels: props.channels,
3833
- onMoveToChannel: props.onMoveToChannel,
3834
- onUpdateAttention: props.onUpdateAttention,
3835
- onArchive: props.onArchive,
3836
- onRequestDelete: props.onRequestDelete
3837
- }
3838
- )
3839
- ] }) }),
3840
- /* @__PURE__ */ jsxs(
3841
- ContextMenuContent,
3842
- {
3843
- className: "min-w-40",
3844
- "data-session-menu": props.session.id,
3845
- onCloseAutoFocus: (event) => {
3846
- if (!contextPinSelection.current) return;
3847
- event.preventDefault();
3848
- contextPinSelection.current = false;
3849
- },
3850
- children: [
3851
- /* @__PURE__ */ jsxs(ContextMenuItem, { onSelect: rename.startEditing, children: [
3852
- /* @__PURE__ */ jsx(PencilIcon, { className: "size-4" }),
3853
- "Rename"
3854
- ] }),
3855
- !props.session.archived ? /* @__PURE__ */ jsxs(Fragment, { children: [
3856
- /* @__PURE__ */ jsxs(
3857
- ContextMenuItem,
3858
- {
3859
- onSelect: () => {
3860
- contextPinSelection.current = true;
3861
- void props.onPin(props.session, !props.session.pinned, "row");
3862
- },
3863
- children: [
3864
- /* @__PURE__ */ jsx(PinIcon, { className: props.session.pinned ? "size-4 fill-current" : "size-4" }),
3865
- props.session.pinned ? "Unpin" : "Pin"
3866
- ]
3867
- }
3868
- ),
3869
- /* @__PURE__ */ jsxs(
3870
- ContextMenuItem,
3871
- {
3872
- onSelect: () => void props.onUpdateAttention(props.session, { unread: !props.session.unread }),
3873
- children: [
3874
- props.session.unread ? /* @__PURE__ */ jsx(MailOpenIcon, { className: "size-4" }) : /* @__PURE__ */ jsx(MailIcon, { className: "size-4" }),
3875
- props.session.unread ? "Mark as read" : "Mark as unread"
3876
- ]
3877
- }
3878
- ),
3879
- /* @__PURE__ */ jsxs(
3880
- ContextMenuItem,
3881
- {
3882
- onSelect: () => void props.onUpdateAttention(props.session, {
3883
- activelyWorking: !props.session.activelyWorking
3884
- }),
3885
- children: [
3886
- /* @__PURE__ */ jsx(ActiveWorkMark, { className: "size-4" }),
3887
- props.session.activelyWorking ? "Stop actively working" : "Mark as actively working"
3888
- ]
3889
- }
3890
- )
3891
- ] }) : null,
3892
- props.session.parentSessionId === null ? /* @__PURE__ */ jsxs(
3893
- ContextMenuItem,
3733
+ return /* @__PURE__ */ jsxs(
3734
+ ContextMenu,
3735
+ {
3736
+ onOpenChange: (open) => {
3737
+ setContextMenuOpen(open);
3738
+ if (open) setHoverOpen(false);
3739
+ },
3740
+ children: [
3741
+ /* @__PURE__ */ jsx(ContextMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxs("div", { className: rowClassName, children: [
3742
+ lead,
3743
+ /* @__PURE__ */ jsx(SiteOriginLink, { session: props.session, compact: true }),
3744
+ /* @__PURE__ */ jsxs(
3745
+ HoverCard,
3894
3746
  {
3895
- onSelect: () => void props.onArchive(props.session, !props.session.archived),
3747
+ openDelay: 100,
3748
+ closeDelay: 80,
3749
+ open: hoverOpen && !contextMenuOpen,
3750
+ onOpenChange: (open) => setHoverOpen(open && !contextMenuOpen),
3896
3751
  children: [
3897
- /* @__PURE__ */ jsx(ArchiveIcon, { className: "size-4" }),
3898
- props.session.archived ? "Restore" : "Archive"
3752
+ /* @__PURE__ */ jsx(HoverCardTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
3753
+ Link,
3754
+ {
3755
+ to: "/workspaces/$workspaceId/sessions/$sessionId",
3756
+ draggable: props.session.parentSessionId === null && !props.session.archived,
3757
+ onDragStart: (event) => {
3758
+ if (props.session.parentSessionId !== null || props.session.archived) {
3759
+ event.preventDefault();
3760
+ return;
3761
+ }
3762
+ event.stopPropagation();
3763
+ event.dataTransfer.effectAllowed = "move";
3764
+ event.dataTransfer.setData(SESSION_DRAG_TYPE, props.session.id);
3765
+ },
3766
+ params: { workspaceId: rail.workspaceId, sessionId: props.session.id },
3767
+ "data-session-index": props.index,
3768
+ "data-session-focus": true,
3769
+ "data-session-row": props.session.id,
3770
+ tabIndex: props.focused ? 0 : -1,
3771
+ "aria-current": props.active ? "page" : void 0,
3772
+ "aria-label": sessionRowAccessibleName({
3773
+ title,
3774
+ stateLabel,
3775
+ pinned: Boolean(props.session.pinned),
3776
+ statusLabel: props.aggregateStatus.label,
3777
+ spawnedLabel: hasChildren ? childCountAria.replace("descendant", "spawned") : null,
3778
+ creator
3779
+ }),
3780
+ "aria-describedby": hoverDescription ? hoverDescriptionId : void 0,
3781
+ onFocus: props.onFocus,
3782
+ onClick: (event) => {
3783
+ if (isModifiedNavigationClick(event)) return;
3784
+ if (props.session.unread && !props.session.archived && document.visibilityState === "visible" && document.hasFocus()) {
3785
+ const projection = {
3786
+ id: props.session.id,
3787
+ workspaceId: props.session.workspaceId,
3788
+ unread: false,
3789
+ ...props.session.attentionVersion !== void 0 ? { attentionVersion: props.session.attentionVersion } : {},
3790
+ lastSequence: props.session.lastSequence
3791
+ };
3792
+ notifySessionAttentionChanged(projection);
3793
+ const acceptedTransition = context.captureWorkspaceInvocation(
3794
+ props.session.workspaceId
3795
+ );
3796
+ if (acceptedTransition) {
3797
+ const acknowledge = (retry) => {
3798
+ void context.client.updateSessionAttention(props.session.workspaceId, props.session.id, {
3799
+ unread: false,
3800
+ acknowledgedThroughSequence: props.session.lastSequence
3801
+ }).then((updated) => {
3802
+ if (context.ownsWorkspaceInvocation(
3803
+ props.session.workspaceId,
3804
+ acceptedTransition
3805
+ )) {
3806
+ notifySessionAttentionChanged(updated);
3807
+ }
3808
+ }).catch(() => {
3809
+ if (retry && context.ownsWorkspaceInvocation(
3810
+ props.session.workspaceId,
3811
+ acceptedTransition
3812
+ )) {
3813
+ acknowledge(false);
3814
+ }
3815
+ });
3816
+ };
3817
+ acknowledge(true);
3818
+ }
3819
+ }
3820
+ if (!rail.isMobile) {
3821
+ requestSessionComposerFocus(focusEvents, rail.workspaceId, props.session.id);
3822
+ }
3823
+ rail.setDrawerOpen(false);
3824
+ },
3825
+ className: "flex h-full min-w-0 flex-1 items-center gap-1 rounded-sm text-left outline-hidden focus-visible:ring-2 focus-visible:ring-ring/40 focus-visible:ring-offset-1 focus-visible:ring-offset-surface",
3826
+ children: /* @__PURE__ */ jsx(
3827
+ SessionRowContent,
3828
+ {
3829
+ quickActionSlots: Number(!props.session.archived) + Number(props.session.parentSessionId === null),
3830
+ title,
3831
+ stateLabel,
3832
+ depthLabel,
3833
+ descendantLabel,
3834
+ mobile: rail.isMobile,
3835
+ summary: props.aggregateStatus,
3836
+ scheduled: props.session.hasSchedules === true,
3837
+ relativeTime: rail.isMobile ? void 0 : relativeTime,
3838
+ creator
3839
+ }
3840
+ )
3841
+ }
3842
+ ) }),
3843
+ /* @__PURE__ */ jsx(
3844
+ HoverCardContent,
3845
+ {
3846
+ side: rail.isMobile ? "bottom" : "right",
3847
+ collisionPadding: 8,
3848
+ className: "w-80 max-w-[calc(100vw-16px)] p-3.5",
3849
+ children: /* @__PURE__ */ jsx(
3850
+ SessionRowHoverDetails,
3851
+ {
3852
+ session: props.session,
3853
+ title,
3854
+ descendantCount: hoverDescendantCount,
3855
+ descendantCountTruncated: hoverDescendantCountTruncated,
3856
+ showCreator: !personalWorkspace
3857
+ }
3858
+ )
3859
+ }
3860
+ )
3899
3861
  ]
3900
3862
  }
3901
- ) : null,
3902
- props.session.parentSessionId === null && props.session.archived ? /* @__PURE__ */ jsxs(
3903
- ContextMenuItem,
3863
+ ),
3864
+ hoverDescription ? /* @__PURE__ */ jsx("span", { id: hoverDescriptionId, hidden: true, children: hoverDescription }) : null,
3865
+ /* @__PURE__ */ jsx(
3866
+ RowQuickActions,
3904
3867
  {
3905
- variant: "destructive",
3906
- onSelect: () => props.onRequestDelete(props.session),
3907
- children: [
3908
- /* @__PURE__ */ jsx(Trash2Icon, { className: "size-4" }),
3909
- "Delete chat"
3910
- ]
3868
+ session: props.session,
3869
+ onPin: props.onPin,
3870
+ onArchive: props.onArchive
3911
3871
  }
3912
- ) : null,
3913
- props.channels.length > 0 && props.session.parentSessionId === null && !props.session.archived ? /* @__PURE__ */ jsxs(Fragment, { children: [
3914
- /* @__PURE__ */ jsx(ContextMenuSeparator, {}),
3915
- /* @__PURE__ */ jsx(ContextMenuLabel, { children: "Move to project" }),
3916
- [{ id: null, name: "Default" }, ...props.channels].map((channel) => {
3917
- const current = props.session.channelId === channel.id;
3918
- return /* @__PURE__ */ jsxs(
3872
+ ),
3873
+ /* @__PURE__ */ jsx(
3874
+ RowActionsMenu,
3875
+ {
3876
+ session: props.session,
3877
+ onRename: rename.startEditing,
3878
+ onPin: props.onPin,
3879
+ channels: props.channels,
3880
+ onMoveToChannel: props.onMoveToChannel,
3881
+ onUpdateAttention: props.onUpdateAttention,
3882
+ onArchive: props.onArchive,
3883
+ onRequestDelete: props.onRequestDelete
3884
+ }
3885
+ )
3886
+ ] }) }),
3887
+ /* @__PURE__ */ jsxs(
3888
+ ContextMenuContent,
3889
+ {
3890
+ className: "min-w-40",
3891
+ "data-session-menu": props.session.id,
3892
+ onCloseAutoFocus: (event) => {
3893
+ if (!contextPinSelection.current) return;
3894
+ event.preventDefault();
3895
+ contextPinSelection.current = false;
3896
+ },
3897
+ children: [
3898
+ /* @__PURE__ */ jsxs(ContextMenuItem, { onSelect: rename.startEditing, children: [
3899
+ /* @__PURE__ */ jsx(PencilIcon, { className: "size-4" }),
3900
+ "Rename"
3901
+ ] }),
3902
+ /* @__PURE__ */ jsxs(
3919
3903
  ContextMenuItem,
3920
3904
  {
3921
- "aria-current": current ? "true" : void 0,
3922
- onSelect: () => {
3923
- if (current) return;
3924
- contextPinSelection.current = true;
3925
- void props.onMoveToChannel(props.session, channel.id, "row");
3926
- },
3905
+ "aria-keyshortcuts": copyLinkKeys?.ariaKeys,
3906
+ onSelect: () => void chatOps.copyLink(props.session),
3927
3907
  children: [
3928
- /* @__PURE__ */ jsx(FolderIcon, { "aria-hidden": "true" }),
3929
- /* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate", children: channel.name }),
3930
- /* @__PURE__ */ jsx(DropdownMenuCheck, { checked: current })
3908
+ /* @__PURE__ */ jsx(LinkIcon, { className: "size-4" }),
3909
+ "Copy link",
3910
+ copyLinkKeys ? /* @__PURE__ */ jsx(ContextMenuShortcut, { children: copyLinkKeys.label }) : null
3931
3911
  ]
3932
- },
3933
- channel.id ?? "default"
3934
- );
3935
- })
3936
- ] }) : null
3937
- ]
3938
- }
3939
- )
3940
- ] });
3912
+ }
3913
+ ),
3914
+ !props.session.archived ? /* @__PURE__ */ jsxs(Fragment, { children: [
3915
+ /* @__PURE__ */ jsxs(
3916
+ ContextMenuItem,
3917
+ {
3918
+ "aria-keyshortcuts": pinKeys?.ariaKeys,
3919
+ onSelect: () => {
3920
+ contextPinSelection.current = true;
3921
+ void props.onPin(props.session, !props.session.pinned, "row");
3922
+ },
3923
+ children: [
3924
+ /* @__PURE__ */ jsx(PinIcon, { className: props.session.pinned ? "size-4 fill-current" : "size-4" }),
3925
+ props.session.pinned ? "Unpin" : "Pin",
3926
+ pinKeys ? /* @__PURE__ */ jsx(ContextMenuShortcut, { children: pinKeys.label }) : null
3927
+ ]
3928
+ }
3929
+ ),
3930
+ /* @__PURE__ */ jsxs(
3931
+ ContextMenuItem,
3932
+ {
3933
+ onSelect: () => void props.onUpdateAttention(props.session, { unread: !props.session.unread }),
3934
+ children: [
3935
+ props.session.unread ? /* @__PURE__ */ jsx(MailOpenIcon, { className: "size-4" }) : /* @__PURE__ */ jsx(MailIcon, { className: "size-4" }),
3936
+ props.session.unread ? "Mark as read" : "Mark as unread"
3937
+ ]
3938
+ }
3939
+ ),
3940
+ /* @__PURE__ */ jsxs(
3941
+ ContextMenuItem,
3942
+ {
3943
+ onSelect: () => void props.onUpdateAttention(props.session, {
3944
+ activelyWorking: !props.session.activelyWorking
3945
+ }),
3946
+ children: [
3947
+ /* @__PURE__ */ jsx(ActiveWorkMark, { className: "size-4" }),
3948
+ props.session.activelyWorking ? "Stop actively working" : "Mark as actively working"
3949
+ ]
3950
+ }
3951
+ )
3952
+ ] }) : null,
3953
+ props.session.parentSessionId === null ? /* @__PURE__ */ jsxs(
3954
+ ContextMenuItem,
3955
+ {
3956
+ onSelect: () => void props.onArchive(props.session, !props.session.archived),
3957
+ children: [
3958
+ /* @__PURE__ */ jsx(ArchiveIcon, { className: "size-4" }),
3959
+ props.session.archived ? "Restore" : "Archive"
3960
+ ]
3961
+ }
3962
+ ) : null,
3963
+ props.session.parentSessionId === null && props.session.archived ? /* @__PURE__ */ jsxs(
3964
+ ContextMenuItem,
3965
+ {
3966
+ variant: "destructive",
3967
+ onSelect: () => props.onRequestDelete(props.session),
3968
+ children: [
3969
+ /* @__PURE__ */ jsx(Trash2Icon, { className: "size-4" }),
3970
+ "Delete chat"
3971
+ ]
3972
+ }
3973
+ ) : null,
3974
+ props.channels.length > 0 && props.session.parentSessionId === null && !props.session.archived ? /* @__PURE__ */ jsxs(Fragment, { children: [
3975
+ /* @__PURE__ */ jsx(ContextMenuSeparator, {}),
3976
+ /* @__PURE__ */ jsx(ContextMenuLabel, { children: "Move to project" }),
3977
+ [{ id: null, name: "Default" }, ...props.channels].map((channel) => {
3978
+ const current = props.session.channelId === channel.id;
3979
+ return /* @__PURE__ */ jsxs(
3980
+ ContextMenuItem,
3981
+ {
3982
+ "aria-current": current ? "true" : void 0,
3983
+ onSelect: () => {
3984
+ if (current) return;
3985
+ contextPinSelection.current = true;
3986
+ void props.onMoveToChannel(props.session, channel.id, "row");
3987
+ },
3988
+ children: [
3989
+ /* @__PURE__ */ jsx(FolderIcon, { "aria-hidden": "true" }),
3990
+ /* @__PURE__ */ jsx("span", { className: "min-w-0 flex-1 truncate", children: channel.name }),
3991
+ /* @__PURE__ */ jsx(DropdownMenuCheck, { checked: current })
3992
+ ]
3993
+ },
3994
+ channel.id ?? "default"
3995
+ );
3996
+ })
3997
+ ] }) : null
3998
+ ]
3999
+ }
4000
+ )
4001
+ ]
4002
+ }
4003
+ );
3941
4004
  }
3942
4005
  function sessionDescendantLabel(session) {
3943
4006
  const stats = session.treeStats;
@@ -4018,6 +4081,9 @@ function RowActionsMenu({
4018
4081
  onRequestDelete
4019
4082
  }) {
4020
4083
  const remountSelection = useRef(false);
4084
+ const chatOps = useChatOperations();
4085
+ const copyLinkKeys = useActionShortcut("chat.copyLink");
4086
+ const pinKeys = useActionShortcut("chat.pin");
4021
4087
  const canMove = channels.length > 0 && session.parentSessionId === null && !session.archived;
4022
4088
  return /* @__PURE__ */ jsxs(DropdownMenu, { children: [
4023
4089
  /* @__PURE__ */ jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
@@ -4058,10 +4124,24 @@ function RowActionsMenu({
4058
4124
  ]
4059
4125
  }
4060
4126
  ),
4127
+ /* @__PURE__ */ jsxs(
4128
+ DropdownMenuItem,
4129
+ {
4130
+ "aria-keyshortcuts": copyLinkKeys?.ariaKeys,
4131
+ onSelect: () => void chatOps.copyLink(session),
4132
+ onClick: (event) => event.stopPropagation(),
4133
+ children: [
4134
+ /* @__PURE__ */ jsx(LinkIcon, { className: "size-4" }),
4135
+ "Copy link",
4136
+ copyLinkKeys ? /* @__PURE__ */ jsx(DropdownMenuShortcut, { children: copyLinkKeys.label }) : null
4137
+ ]
4138
+ }
4139
+ ),
4061
4140
  !session.archived ? /* @__PURE__ */ jsxs(Fragment, { children: [
4062
4141
  /* @__PURE__ */ jsxs(
4063
4142
  DropdownMenuItem,
4064
4143
  {
4144
+ "aria-keyshortcuts": pinKeys?.ariaKeys,
4065
4145
  onSelect: () => {
4066
4146
  remountSelection.current = true;
4067
4147
  void onPin(session, !session.pinned, "actions");
@@ -4069,7 +4149,8 @@ function RowActionsMenu({
4069
4149
  onClick: (event) => event.stopPropagation(),
4070
4150
  children: [
4071
4151
  /* @__PURE__ */ jsx(PinIcon, { className: session.pinned ? "size-4 fill-current" : "size-4" }),
4072
- session.pinned ? "Unpin" : "Pin"
4152
+ session.pinned ? "Unpin" : "Pin",
4153
+ pinKeys ? /* @__PURE__ */ jsx(DropdownMenuShortcut, { children: pinKeys.label }) : null
4073
4154
  ]
4074
4155
  }
4075
4156
  ),
@@ -4165,6 +4246,7 @@ function EmptySessions({ archived = false }) {
4165
4246
  }
4166
4247
  function CollapsedSessionsButton() {
4167
4248
  const windowEvents = useUiEventTarget("window");
4249
+ const searchShortcut = useActionShortcut("commandMenu.open");
4168
4250
  const rail = useRail();
4169
4251
  const { workspaceSessionListEvent } = useOpenGeni();
4170
4252
  const hintsAvailable = workspaceSessionListEvent?.workspaceId === rail.workspaceId && workspaceSessionListEvent.available;
@@ -4187,12 +4269,13 @@ function CollapsedSessionsButton() {
4187
4269
  variant: "ghost",
4188
4270
  size: "icon-sm",
4189
4271
  "aria-label": "Search sessions",
4190
- onClick: (event) => requestSessionSearch(windowEvents, rail.workspaceId, event.currentTarget),
4272
+ "aria-keyshortcuts": searchShortcut?.ariaKeys,
4273
+ onClick: () => requestCommandMenu(windowEvents),
4191
4274
  className: "text-fg-label hover:text-fg",
4192
4275
  children: /* @__PURE__ */ jsx(SearchIcon, { className: "size-4" })
4193
4276
  }
4194
4277
  ) }),
4195
- /* @__PURE__ */ jsx(TooltipContent, { side: "right", children: "Search sessions" })
4278
+ /* @__PURE__ */ jsx(TooltipContent, { side: "right", children: /* @__PURE__ */ jsx(TooltipWithKeys, { label: "Search sessions", shortcut: searchShortcut }) })
4196
4279
  ] }),
4197
4280
  /* @__PURE__ */ jsxs(Tooltip, { children: [
4198
4281
  /* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
@@ -4265,4 +4348,4 @@ export {
4265
4348
  CollapsedSessionsButton,
4266
4349
  isStillRunningDeleteRefusal
4267
4350
  };
4268
- //# sourceMappingURL=chunk-F2GXK2Z6.js.map
4351
+ //# sourceMappingURL=chunk-7G446JFO.js.map