@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,17 +1,16 @@
1
1
  "use client";
2
2
  import {
3
- OPEN_SESSION_SEARCH_EVENT,
4
- requestSessionSearch
5
- } from "./chunk-NFCYIZHX.js";
3
+ OPEN_SESSION_SEARCH_EVENT
4
+ } from "./chunk-TXIIBNCA.js";
6
5
  import {
7
6
  workspaceManagementLocation
8
7
  } from "./chunk-3RWVKGQM.js";
9
- import {
10
- useUiEventTarget
11
- } from "./chunk-WGPLDFEC.js";
12
8
  import {
13
9
  requestCreateComposerFocus
14
10
  } from "./chunk-HQA6FUM5.js";
11
+ import {
12
+ useUiEventTarget
13
+ } from "./chunk-WGPLDFEC.js";
15
14
  import {
16
15
  desktopBridge,
17
16
  desktopCapability
@@ -36,6 +35,15 @@ import {
36
35
  lazy,
37
36
  Suspense
38
37
  } from "react";
38
+
39
+ // src/app/lib/actions/events.ts
40
+ var OPEN_COMMAND_MENU_EVENT = "opengeni:open-command-menu";
41
+ var RENAME_CURRENT_CHAT_EVENT = "opengeni:rename-current-chat";
42
+ function requestCommandMenu(target) {
43
+ target.dispatchEvent(new Event(OPEN_COMMAND_MENU_EVENT));
44
+ }
45
+
46
+ // src/app/components/rail/rail-context.tsx
39
47
  import { jsx, jsxs } from "react/jsx-runtime";
40
48
  var SessionSearchDialog = lazy(() => import("./app/components/session/session-search-dialog.js"));
41
49
  var RAIL_COLLAPSED_KEY = "opengeni.rail.collapsed";
@@ -91,6 +99,7 @@ function RailProvider({
91
99
  const appContext = useAppContext();
92
100
  const [searchOpen, setSearchOpen] = useState(false);
93
101
  const [searchMounted, setSearchMounted] = useState(false);
102
+ const [searchSeed, setSearchSeed] = useState(null);
94
103
  const searchReturnFocus = useRef(null);
95
104
  const searchOpenRef = useRef(searchOpen);
96
105
  searchOpenRef.current = searchOpen;
@@ -111,6 +120,13 @@ function RailProvider({
111
120
  }
112
121
  if (!searchOpenRef.current) drawerTriggerRef.current?.focus({ preventScroll: true });
113
122
  }, []);
123
+ const drawerOpenRef = useRef(drawerOpen);
124
+ drawerOpenRef.current = drawerOpen;
125
+ const handOffDrawer = useCallback(() => {
126
+ if (!drawerOpenRef.current) return;
127
+ suppressDrawerRestore.current = true;
128
+ setDrawerOpenState(false);
129
+ }, []);
114
130
  const changeSearchOpen = useCallback((next) => {
115
131
  searchOpenRef.current = next;
116
132
  setSearchOpen(next);
@@ -122,14 +138,17 @@ function RailProvider({
122
138
  if (!searchOpenRef.current) {
123
139
  searchReturnFocus.current = isMobile ? drawerTriggerRef.current : detail.returnFocus instanceof HTMLElement ? detail.returnFocus : document.activeElement instanceof HTMLElement ? document.activeElement : null;
124
140
  }
125
- if (drawerOpen) suppressDrawerRestore.current = true;
141
+ if (typeof detail.query === "string" && detail.query) {
142
+ const query = detail.query;
143
+ setSearchSeed((current) => ({ query, nonce: (current?.nonce ?? 0) + 1 }));
144
+ }
126
145
  setSearchMounted(true);
127
146
  changeSearchOpen(true);
128
- setDrawerOpen(false);
147
+ handOffDrawer();
129
148
  };
130
149
  windowEvents.addEventListener(OPEN_SESSION_SEARCH_EVENT, open);
131
150
  return () => windowEvents.removeEventListener(OPEN_SESSION_SEARCH_EVENT, open);
132
- }, [workspaceId, isMobile, drawerOpen, changeSearchOpen, setDrawerOpen, windowEvents]);
151
+ }, [workspaceId, isMobile, changeSearchOpen, handOffDrawer, windowEvents]);
133
152
  useEffect(() => {
134
153
  searchReturnFocus.current = null;
135
154
  changeSearchOpen(false);
@@ -236,7 +255,7 @@ function RailProvider({
236
255
  if (!bridge) return;
237
256
  return bridge.commands.onCommand((command) => {
238
257
  if (command === "newSession") startNewSession();
239
- else if (command === "searchSessions") requestSessionSearch(windowEvents, workspaceId);
258
+ else if (command === "searchSessions") requestCommandMenu(windowEvents);
240
259
  else if (command === "toggleSidebar") toggleCollapsed();
241
260
  else if (command === "openInbox") {
242
261
  setDrawerOpen(false);
@@ -259,6 +278,7 @@ function RailProvider({
259
278
  setDrawerOpen,
260
279
  drawerTriggerRef,
261
280
  restoreDrawerFocus,
281
+ handOffDrawer,
262
282
  openWorkspace,
263
283
  openOrg,
264
284
  openSession,
@@ -273,6 +293,7 @@ function RailProvider({
273
293
  drawerOpen,
274
294
  setDrawerOpen,
275
295
  restoreDrawerFocus,
296
+ handOffDrawer,
276
297
  setCollapsed,
277
298
  toggleCollapsed,
278
299
  openWorkspace,
@@ -289,7 +310,8 @@ function RailProvider({
289
310
  workspaceId,
290
311
  open: searchOpen,
291
312
  onOpenChange: changeSearchOpen,
292
- returnFocus: searchReturnFocus
313
+ returnFocus: searchReturnFocus,
314
+ seed: searchSeed
293
315
  },
294
316
  `${appContext.accessContext.subjectId}:${workspaceId}`
295
317
  ) }) : null
@@ -297,6 +319,9 @@ function RailProvider({
297
319
  }
298
320
 
299
321
  export {
322
+ OPEN_COMMAND_MENU_EVENT,
323
+ RENAME_CURRENT_CHAT_EVENT,
324
+ requestCommandMenu,
300
325
  RAIL_DRAWER_BREAKPOINT,
301
326
  RAIL_MIN_WIDTH,
302
327
  RAIL_MAX_WIDTH,
@@ -304,4 +329,4 @@ export {
304
329
  useRail,
305
330
  RailProvider
306
331
  };
307
- //# sourceMappingURL=chunk-RZV7SXED.js.map
332
+ //# sourceMappingURL=chunk-SF3M27AN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/app/components/rail/rail-context.tsx","../src/app/lib/actions/events.ts"],"sourcesContent":["// Shared state for the left rail: collapsed (icon-only) persistence, the mobile\n// overlay-drawer toggle, and the workspace-scoped navigation helpers every rail\n// section reuses (open a workspace, start a new session, switch org/workspace).\nimport { useNavigate, useRouter } from \"../../lib/navigation\";\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n lazy,\n Suspense,\n type ReactNode,\n type RefObject,\n} from \"react\";\n\nimport { useAppContext } from \"../../app-context\";\nimport { requestCreateComposerFocus } from \"../../lib/create-composer-focus\";\nimport { requestCommandMenu } from \"../../lib/actions/events\";\nimport { desktopBridge, desktopCapability } from \"../../lib/desktop\";\nimport { OPEN_SESSION_SEARCH_EVENT } from \"../../lib/session-search-route\";\nimport { workspaceManagementLocation } from \"../../lib/workspace-management-location\";\nimport { useUiEventTarget } from \"../../lib/ui-events\";\n\nconst SessionSearchDialog = lazy(() => import(\"../session/session-search-dialog\"));\n\nconst RAIL_COLLAPSED_KEY = \"opengeni.rail.collapsed\";\nconst RAIL_WIDTH_KEY = \"opengeni.rail.width\";\n/** Below this viewport width the rail is an overlay drawer, not a fixed column. */\nexport const RAIL_DRAWER_BREAKPOINT = 1024;\n/**\n * A desktop app window is never a phone: it keeps the rail as a column down to\n * its minimum width, where the person can still collapse it.\n */\nconst DESKTOP_RAIL_DRAWER_BREAKPOINT = 640;\nconst railDrawerBreakpoint = desktopBridge\n ? DESKTOP_RAIL_DRAWER_BREAKPOINT\n : RAIL_DRAWER_BREAKPOINT;\n/** Resize bounds for the expanded desktop rail (px). */\nexport const RAIL_MIN_WIDTH = 220;\nexport const RAIL_MAX_WIDTH = 480;\n/**\n * A desktop app window is wider than most browser windows next to other tabs\n * and the sidebar is its main way around, so it starts wide enough for real\n * session titles beside each row's status and time.\n */\nexport const RAIL_DEFAULT_WIDTH = desktopBridge ? 288 : 244;\n\nfunction clampRailWidth(width: number): number {\n if (!Number.isFinite(width)) {\n return RAIL_DEFAULT_WIDTH;\n }\n return Math.min(RAIL_MAX_WIDTH, Math.max(RAIL_MIN_WIDTH, Math.round(width)));\n}\n\nexport type RailContextValue = {\n workspaceId: string;\n /** Icon-only rail (desktop). Ignored while the mobile drawer is in play. */\n collapsed: boolean;\n setCollapsed: (collapsed: boolean) => void;\n toggleCollapsed: () => void;\n /** User-chosen expanded-rail width (px), clamped to [RAIL_MIN, RAIL_MAX]. */\n width: number;\n /** Set the expanded-rail width; persisted to localStorage (clamped). */\n setWidth: (width: number) => void;\n /** Whether the viewport is narrow enough to use the overlay drawer. */\n isMobile: boolean;\n /** Mobile overlay-drawer open state. */\n drawerOpen: boolean;\n setDrawerOpen: (open: boolean) => void;\n /** Persistent opener outside the mobile drawer, also used after search. */\n drawerTriggerRef: RefObject<HTMLButtonElement | null>;\n /** Retiring drawers must not take focus from an open search dialog. */\n restoreDrawerFocus: () => void;\n /**\n * Close the phone drawer for a dialog that takes over from it (search, the\n * command menu). That dialog returns focus itself, so the retiring drawer\n * must not reclaim it when its exit animation ends.\n */\n handOffDrawer: () => void;\n /** Navigate to a workspace's sessions index (used by the switchers). */\n openWorkspace: (workspaceId: string) => void;\n /** Switch organization: navigate to the first workspace in the target org. */\n openOrg: (accountId: string) => void;\n /** Open a specific session in the current workspace. */\n openSession: (sessionId: string) => void;\n /** Start a new session (the sessions index composer). */\n startNewSession: () => void;\n};\n\nconst RailContext = createContext<RailContextValue | null>(null);\n\nexport function useRail(): RailContextValue {\n const value = useContext(RailContext);\n if (!value) {\n throw new Error(\"Rail context is not ready\");\n }\n return value;\n}\n\nfunction readStoredCollapsed(): boolean {\n if (typeof window === \"undefined\") {\n return false;\n }\n try {\n return window.localStorage.getItem(RAIL_COLLAPSED_KEY) === \"true\";\n } catch {\n return false;\n }\n}\n\nfunction readStoredWidth(): number {\n if (typeof window === \"undefined\") {\n return RAIL_DEFAULT_WIDTH;\n }\n try {\n const raw = window.localStorage.getItem(RAIL_WIDTH_KEY);\n return raw ? clampRailWidth(Number.parseInt(raw, 10)) : RAIL_DEFAULT_WIDTH;\n } catch {\n return RAIL_DEFAULT_WIDTH;\n }\n}\n\nexport function RailProvider({\n workspaceId,\n children,\n}: {\n workspaceId: string;\n children: ReactNode;\n}) {\n const windowEvents = useUiEventTarget(\"window\");\n const navigate = useNavigate();\n const router = useRouter();\n const appContext = useAppContext();\n const [searchOpen, setSearchOpen] = useState(false);\n const [searchMounted, setSearchMounted] = useState(false);\n // What to search for when the dialog opens from the ⌘K menu (\"Search messages for …\").\n const [searchSeed, setSearchSeed] = useState<{ query: string; nonce: number } | null>(null);\n const searchReturnFocus = useRef<HTMLElement | null>(null);\n const searchOpenRef = useRef(searchOpen);\n searchOpenRef.current = searchOpen;\n const drawerTriggerRef = useRef<HTMLButtonElement | null>(null);\n const suppressDrawerRestore = useRef(false);\n const [drawerOpen, setDrawerOpenState] = useState(false);\n const setDrawerOpen = useCallback((next: boolean) => {\n if (next) suppressDrawerRestore.current = false;\n setDrawerOpenState(next);\n }, []);\n const [isMobile, setIsMobile] = useState<boolean>(() =>\n typeof window !== \"undefined\" ? window.innerWidth < railDrawerBreakpoint : false,\n );\n const restoreDrawerFocus = useCallback(() => {\n // Search owns this close even if a result navigates before the drawer's\n // exit animation finishes. Do not let that retiring scope reclaim focus.\n if (suppressDrawerRestore.current) {\n suppressDrawerRestore.current = false;\n return;\n }\n if (!searchOpenRef.current) drawerTriggerRef.current?.focus({ preventScroll: true });\n }, []);\n const drawerOpenRef = useRef(drawerOpen);\n drawerOpenRef.current = drawerOpen;\n const handOffDrawer = useCallback(() => {\n if (!drawerOpenRef.current) return;\n suppressDrawerRestore.current = true;\n setDrawerOpenState(false);\n }, []);\n const changeSearchOpen = useCallback((next: boolean) => {\n searchOpenRef.current = next;\n setSearchOpen(next);\n }, []);\n useEffect(() => {\n const open = (event: Event) => {\n const detail = (\n event as CustomEvent<{\n workspaceId?: string | undefined;\n returnFocus?: HTMLElement | undefined;\n query?: string | undefined;\n }>\n ).detail;\n if (detail?.workspaceId !== workspaceId) return;\n if (!searchOpenRef.current) {\n searchReturnFocus.current = isMobile\n ? drawerTriggerRef.current\n : detail.returnFocus instanceof HTMLElement\n ? detail.returnFocus\n : document.activeElement instanceof HTMLElement\n ? document.activeElement\n : null;\n }\n if (typeof detail.query === \"string\" && detail.query) {\n const query = detail.query;\n setSearchSeed((current) => ({ query, nonce: (current?.nonce ?? 0) + 1 }));\n }\n setSearchMounted(true);\n changeSearchOpen(true);\n handOffDrawer();\n };\n windowEvents.addEventListener(OPEN_SESSION_SEARCH_EVENT, open);\n return () => windowEvents.removeEventListener(OPEN_SESSION_SEARCH_EVENT, open);\n }, [workspaceId, isMobile, changeSearchOpen, handOffDrawer, windowEvents]);\n useEffect(() => {\n searchReturnFocus.current = null;\n changeSearchOpen(false);\n }, [workspaceId, appContext.accessContext.subjectId, changeSearchOpen]);\n const [collapsed, setCollapsedState] = useState<boolean>(() => readStoredCollapsed());\n const [width, setWidthState] = useState<number>(() => readStoredWidth());\n\n useEffect(() => {\n if (typeof window === \"undefined\") {\n return;\n }\n const query = window.matchMedia(`(max-width: ${railDrawerBreakpoint - 1}px)`);\n const apply = () => setIsMobile(query.matches);\n apply();\n query.addEventListener(\"change\", apply);\n return () => query.removeEventListener(\"change\", apply);\n }, []);\n\n const setCollapsed = useCallback((next: boolean) => {\n setCollapsedState(next);\n try {\n window.localStorage.setItem(RAIL_COLLAPSED_KEY, String(next));\n } catch {\n // localStorage may be unavailable (private mode); keep the in-memory value.\n }\n }, []);\n\n const toggleCollapsed = useCallback(() => setCollapsed(!collapsed), [collapsed, setCollapsed]);\n\n const setWidth = useCallback((next: number) => {\n const clamped = clampRailWidth(next);\n setWidthState(clamped);\n try {\n window.localStorage.setItem(RAIL_WIDTH_KEY, String(clamped));\n } catch {\n // localStorage may be unavailable (private mode); keep the in-memory value.\n }\n }, []);\n\n const openWorkspace = useCallback(\n (nextWorkspaceId: string) => {\n appContext.resetSessionView();\n setDrawerOpen(false);\n // In settings, switching workspace keeps the same settings page.\n const current = router.state.location;\n const settings = workspaceManagementLocation(\n current.pathname,\n workspaceId,\n (current.search as { section?: unknown }).section,\n );\n if (settings?.kind === \"settings\") {\n void navigate({\n to: \"/workspaces/$workspaceId/settings\",\n params: { workspaceId: nextWorkspaceId },\n search: settings.section ? { section: settings.section } : {},\n });\n return;\n }\n if (settings?.kind === \"page\") {\n void navigate({ to: settings.target, params: { workspaceId: nextWorkspaceId } });\n return;\n }\n if (settings?.kind === \"organization\") {\n void navigate({\n to: \"/workspaces/$workspaceId/organization\",\n params: { workspaceId: nextWorkspaceId },\n search: settings.section ? { section: settings.section } : {},\n });\n return;\n }\n void navigate({\n to: \"/workspaces/$workspaceId/sessions\",\n params: { workspaceId: nextWorkspaceId },\n });\n },\n [appContext, navigate, router, workspaceId, setDrawerOpen],\n );\n\n const openOrg = useCallback(\n (accountId: string) => {\n const target = appContext.workspaces.find((workspace) => workspace.accountId === accountId);\n if (!target) {\n return;\n }\n appContext.resetSessionView();\n setDrawerOpen(false);\n void navigate({\n to: \"/workspaces/$workspaceId/sessions\",\n params: { workspaceId: target.id },\n });\n },\n [appContext, navigate, setDrawerOpen],\n );\n\n const openSession = useCallback(\n (sessionId: string) => {\n setDrawerOpen(false);\n void navigate({\n to: \"/workspaces/$workspaceId/sessions/$sessionId\",\n params: { workspaceId, sessionId },\n });\n },\n [navigate, workspaceId, setDrawerOpen],\n );\n\n const startNewSession = useCallback(() => {\n appContext.resetSessionView();\n setDrawerOpen(false);\n void navigate({ to: \"/workspaces/$workspaceId/sessions\", params: { workspaceId } }).then(() => {\n // Same-route: create composer stays mounted, so autoFocus will not re-run.\n requestCreateComposerFocus(windowEvents);\n });\n }, [appContext, navigate, workspaceId, setDrawerOpen, windowEvents]);\n\n // The desktop app's menu bar and shortcuts: New Session, Search Sessions,\n // Toggle Sidebar and Inbox act on this workspace.\n useEffect(() => {\n const bridge = desktopCapability(\"commands\");\n if (!bridge) return;\n return bridge.commands.onCommand((command) => {\n if (command === \"newSession\") startNewSession();\n else if (command === \"searchSessions\") requestCommandMenu(windowEvents);\n else if (command === \"toggleSidebar\") toggleCollapsed();\n else if (command === \"openInbox\") {\n setDrawerOpen(false);\n void navigate({ to: \"/workspaces/$workspaceId/inbox\", params: { workspaceId } });\n }\n });\n }, [navigate, setDrawerOpen, startNewSession, toggleCollapsed, windowEvents, workspaceId]);\n\n const value = useMemo<RailContextValue>(\n () => ({\n workspaceId,\n // The drawer always renders expanded content; collapse only applies to the\n // fixed desktop column.\n collapsed: isMobile ? false : collapsed,\n setCollapsed,\n toggleCollapsed,\n width,\n setWidth,\n isMobile,\n drawerOpen,\n setDrawerOpen,\n drawerTriggerRef,\n restoreDrawerFocus,\n handOffDrawer,\n openWorkspace,\n openOrg,\n openSession,\n startNewSession,\n }),\n [\n workspaceId,\n collapsed,\n width,\n setWidth,\n isMobile,\n drawerOpen,\n setDrawerOpen,\n restoreDrawerFocus,\n handOffDrawer,\n setCollapsed,\n toggleCollapsed,\n openWorkspace,\n openOrg,\n openSession,\n startNewSession,\n ],\n );\n\n return (\n <RailContext.Provider value={value}>\n {children}\n {searchMounted ? (\n <Suspense fallback={null}>\n <SessionSearchDialog\n key={`${appContext.accessContext.subjectId}:${workspaceId}`}\n workspaceId={workspaceId}\n open={searchOpen}\n onOpenChange={changeSearchOpen}\n returnFocus={searchReturnFocus}\n seed={searchSeed}\n />\n </Suspense>\n ) : null}\n </RailContext.Provider>\n );\n}\n","/** Page events that reach the action system from outside React's tree. */\n\n/** Opens the ⌘K menu (older desktop menu commands, buttons). Sent on the window target. */\nexport const OPEN_COMMAND_MENU_EVENT = \"opengeni:open-command-menu\";\n/** Asks the chat header to start renaming the chat on screen. Sent on the document target. */\nexport const RENAME_CURRENT_CHAT_EVENT = \"opengeni:rename-current-chat\";\n\nexport function requestCommandMenu(target: EventTarget): void {\n target.dispatchEvent(new Event(OPEN_COMMAND_MENU_EVENT));\n}\n"],"mappings":"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","names":[]}
@@ -8,31 +8,22 @@ import {
8
8
  deviceVerificationUri,
9
9
  installCommandFor
10
10
  } from "./chunk-KV6GUPL2.js";
11
+ import {
12
+ Disclosure
13
+ } from "./chunk-S66SBBFQ.js";
11
14
  import {
12
15
  ChoiceCard,
13
16
  ChoiceCards
14
- } from "./chunk-VAIESMPY.js";
15
- import {
16
- Disclosure
17
- } from "./chunk-QZRDCFHI.js";
17
+ } from "./chunk-YVBHGMKC.js";
18
18
  import {
19
19
  isMachineComputeSelectable
20
20
  } from "./chunk-3O3ZUGMX.js";
21
- import {
22
- StatusBadge
23
- } from "./chunk-EPCPGUIF.js";
24
- import {
25
- SegmentedControl
26
- } from "./chunk-SWWYYGQO.js";
27
- import {
28
- LogoTile
29
- } from "./chunk-FQQEZUSN.js";
30
21
  import {
31
22
  Switch
32
23
  } from "./chunk-IZMUUUYD.js";
33
24
  import {
34
- Notice
35
- } from "./chunk-WLEDGIVS.js";
25
+ SegmentedControl
26
+ } from "./chunk-325C2TCI.js";
36
27
  import {
37
28
  Dialog,
38
29
  DialogContent,
@@ -42,17 +33,26 @@ import {
42
33
  DialogTitle
43
34
  } from "./chunk-HZUL2CUH.js";
44
35
  import {
45
- t
46
- } from "./chunk-PT7MTXRE.js";
36
+ LogoTile
37
+ } from "./chunk-FQQEZUSN.js";
47
38
  import {
48
- userErrorText
49
- } from "./chunk-L4OF77LE.js";
39
+ StatusBadge
40
+ } from "./chunk-EPCPGUIF.js";
41
+ import {
42
+ t
43
+ } from "./chunk-MAOCN7J6.js";
50
44
  import {
51
45
  useAppContext
52
46
  } from "./chunk-W6KAUGXO.js";
47
+ import {
48
+ Notice
49
+ } from "./chunk-WLEDGIVS.js";
53
50
  import {
54
51
  Button
55
52
  } from "./chunk-HMU5IELG.js";
53
+ import {
54
+ userErrorText
55
+ } from "./chunk-L4OF77LE.js";
56
56
  import {
57
57
  machineDisplayName,
58
58
  machineScopeLabel
@@ -560,4 +560,4 @@ export {
560
560
  formatConnectExpiry,
561
561
  ConnectMachineDialog
562
562
  };
563
- //# sourceMappingURL=chunk-FBJ2HK7A.js.map
563
+ //# sourceMappingURL=chunk-SGPJ3YS2.js.map
@@ -1,13 +1,13 @@
1
1
  "use client";
2
- import {
3
- useMessageContextPills
4
- } from "./chunk-IZUAIHR4.js";
5
2
  import {
6
3
  Tooltip,
7
4
  TooltipContent,
8
5
  TooltipProvider,
9
6
  TooltipTrigger
10
7
  } from "./chunk-OLTGED2Q.js";
8
+ import {
9
+ useMessageContextPills
10
+ } from "./chunk-IZUAIHR4.js";
11
11
  import {
12
12
  cn
13
13
  } from "./chunk-TXS65BB2.js";
@@ -64,4 +64,4 @@ function MessageContextPills() {
64
64
  export {
65
65
  MessageContextPills
66
66
  };
67
- //# sourceMappingURL=chunk-A2EWJQXX.js.map
67
+ //# sourceMappingURL=chunk-SM5QX6UK.js.map
@@ -0,0 +1,40 @@
1
+ "use client";
2
+ import {
3
+ formatMoneyMicros
4
+ } from "./chunk-5TLEWXAB.js";
5
+
6
+ // src/app/lib/credit-coverage.tsx
7
+ import { modelDisplayName } from "@opengeni/sdk/model-display";
8
+ function modelListSummary(labels, { limit = 2 } = {}) {
9
+ if (labels.length === 0) return "";
10
+ if (labels.length <= limit + 1) {
11
+ if (labels.length === 1) return labels[0];
12
+ return `${labels.slice(0, -1).join(", ")} and ${labels.at(-1)}`;
13
+ }
14
+ return `${labels.slice(0, limit).join(", ")} and ${labels.length - limit} more`;
15
+ }
16
+ function coveredModelsSummary(eligibleModelIds) {
17
+ return modelListSummary(eligibleModelIds.map((id) => modelDisplayName(id)));
18
+ }
19
+ function creditBalanceSplit(balance) {
20
+ const scopedMicros = (balance.promotionalCredits ?? []).reduce(
21
+ (total, grant) => total + Math.max(0, grant.remainingMicros),
22
+ 0
23
+ );
24
+ if (scopedMicros <= 0) return null;
25
+ const general = balance.generalBalanceMicros ?? balance.balanceMicros - scopedMicros;
26
+ return { generalMicros: Math.max(0, general), scopedMicros };
27
+ }
28
+ function creditBalanceSplitLabel(balance) {
29
+ const split = creditBalanceSplit(balance);
30
+ if (!split) return null;
31
+ return `${formatMoneyMicros(split.generalMicros, balance.currency)} for any model \xB7 ${formatMoneyMicros(split.scopedMicros, balance.currency)} for selected models`;
32
+ }
33
+
34
+ export {
35
+ modelListSummary,
36
+ coveredModelsSummary,
37
+ creditBalanceSplit,
38
+ creditBalanceSplitLabel
39
+ };
40
+ //# sourceMappingURL=chunk-SWCLN6JE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/app/lib/credit-coverage.tsx"],"sourcesContent":["import { modelDisplayName } from \"@opengeni/sdk/model-display\";\nimport { formatMoneyMicros } from \"./format\";\nimport type { BillingSummary } from \"../types\";\n\n/**\n * Short, readable list of models: \"GPT-6 Sol, GPT-6 Luna and 3 more\". Labels\n * come from the caller (catalog rows) or the shared display-name table.\n */\nexport function modelListSummary(\n labels: readonly string[],\n { limit = 2 }: { limit?: number } = {},\n): string {\n if (labels.length === 0) return \"\";\n if (labels.length <= limit + 1) {\n if (labels.length === 1) return labels[0]!;\n return `${labels.slice(0, -1).join(\", \")} and ${labels.at(-1)!}`;\n }\n return `${labels.slice(0, limit).join(\", \")} and ${labels.length - limit} more`;\n}\n\n/** The models a scoped credit grant pays for, by display name. */\nexport function coveredModelsSummary(eligibleModelIds: readonly string[]): string {\n return modelListSummary(eligibleModelIds.map((id) => modelDisplayName(id)));\n}\n\n/**\n * Splits a balance into credit any credits-billed model can spend and credit\n * only some models can spend. The total alone overstates what an uncovered\n * model can use, so compact rows show both parts. Null without scoped credit.\n */\nexport function creditBalanceSplit(\n balance: BillingSummary[\"balance\"],\n): { generalMicros: number; scopedMicros: number } | null {\n const scopedMicros = (balance.promotionalCredits ?? []).reduce(\n (total, grant) => total + Math.max(0, grant.remainingMicros),\n 0,\n );\n if (scopedMicros <= 0) return null;\n const general = balance.generalBalanceMicros ?? balance.balanceMicros - scopedMicros;\n return { generalMicros: Math.max(0, general), scopedMicros };\n}\n\n/** \"$0.00 for any model · $100.00 for selected models\", or null without scoped credit. */\nexport function creditBalanceSplitLabel(balance: BillingSummary[\"balance\"]): string | null {\n const split = creditBalanceSplit(balance);\n if (!split) return null;\n return `${formatMoneyMicros(split.generalMicros, balance.currency)} for any model · ${formatMoneyMicros(split.scopedMicros, balance.currency)} for selected models`;\n}\n"],"mappings":";;;;;;AAAA,SAAS,wBAAwB;AAQ1B,SAAS,iBACd,QACA,EAAE,QAAQ,EAAE,IAAwB,CAAC,GAC7B;AACR,MAAI,OAAO,WAAW,EAAG,QAAO;AAChC,MAAI,OAAO,UAAU,QAAQ,GAAG;AAC9B,QAAI,OAAO,WAAW,EAAG,QAAO,OAAO,CAAC;AACxC,WAAO,GAAG,OAAO,MAAM,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,QAAQ,OAAO,GAAG,EAAE,CAAE;AAAA,EAChE;AACA,SAAO,GAAG,OAAO,MAAM,GAAG,KAAK,EAAE,KAAK,IAAI,CAAC,QAAQ,OAAO,SAAS,KAAK;AAC1E;AAGO,SAAS,qBAAqB,kBAA6C;AAChF,SAAO,iBAAiB,iBAAiB,IAAI,CAAC,OAAO,iBAAiB,EAAE,CAAC,CAAC;AAC5E;AAOO,SAAS,mBACd,SACwD;AACxD,QAAM,gBAAgB,QAAQ,sBAAsB,CAAC,GAAG;AAAA,IACtD,CAAC,OAAO,UAAU,QAAQ,KAAK,IAAI,GAAG,MAAM,eAAe;AAAA,IAC3D;AAAA,EACF;AACA,MAAI,gBAAgB,EAAG,QAAO;AAC9B,QAAM,UAAU,QAAQ,wBAAwB,QAAQ,gBAAgB;AACxE,SAAO,EAAE,eAAe,KAAK,IAAI,GAAG,OAAO,GAAG,aAAa;AAC7D;AAGO,SAAS,wBAAwB,SAAmD;AACzF,QAAM,QAAQ,mBAAmB,OAAO;AACxC,MAAI,CAAC,MAAO,QAAO;AACnB,SAAO,GAAG,kBAAkB,MAAM,eAAe,QAAQ,QAAQ,CAAC,uBAAoB,kBAAkB,MAAM,cAAc,QAAQ,QAAQ,CAAC;AAC/I;","names":[]}
@@ -8,7 +8,7 @@ import {
8
8
  isCreditExhaustion,
9
9
  presentFailure,
10
10
  tryParseJson
11
- } from "./chunk-UYSZKDQY.js";
11
+ } from "./chunk-MK54JLE4.js";
12
12
 
13
13
  // src/timeline/projection.ts
14
14
  import {
@@ -567,6 +567,8 @@ function timelineAnnotationToolOutputText(output) {
567
567
  }
568
568
  function buildTimeline(t, events, options = {}) {
569
569
  const items = [];
570
+ const toolCallsById = /* @__PURE__ */ new Map();
571
+ const callsById = /* @__PURE__ */ new Map();
570
572
  const allowanceNotices = /* @__PURE__ */ new Set();
571
573
  const learningRefusalNotices = /* @__PURE__ */ new Set();
572
574
  const allowanceNotice = (event, turnId) => {
@@ -1059,7 +1061,7 @@ function buildTimeline(t, events, options = {}) {
1059
1061
  if (toolMatchesLeaf(name, WORKER_SPAWN_TOOL) || toolMatchesLeaf(name, WORKER_MESSAGE_TOOL)) {
1060
1062
  const spawn = toolMatchesLeaf(name, WORKER_SPAWN_TOOL);
1061
1063
  const title = spawn ? workerTitle(args) : null;
1062
- items.push({
1064
+ const item2 = {
1063
1065
  kind: "worker",
1064
1066
  id: event.id,
1065
1067
  turnId,
@@ -1071,16 +1073,16 @@ function buildTimeline(t, events, options = {}) {
1071
1073
  failure: null,
1072
1074
  status: "running",
1073
1075
  occurredAt: event.occurredAt
1074
- });
1076
+ };
1077
+ items.push(item2);
1078
+ if (callId) callsById.set(callId, item2);
1075
1079
  break;
1076
1080
  }
1077
1081
  if (LANDMARK_ONLY_TOOL_LEAVES.has(mcpToolLeaf(name))) {
1078
1082
  break;
1079
1083
  }
1080
1084
  if (callId) {
1081
- const existing = [...items].reverse().find(
1082
- (item) => item.kind === "tool-call" && item.callId === callId
1083
- );
1085
+ const existing = toolCallsById.get(callId);
1084
1086
  if (existing) {
1085
1087
  if (display) existing.display = display;
1086
1088
  if (args != null) {
@@ -1093,7 +1095,7 @@ function buildTimeline(t, events, options = {}) {
1093
1095
  break;
1094
1096
  }
1095
1097
  }
1096
- items.push({
1098
+ const item = {
1097
1099
  kind: "tool-call",
1098
1100
  id: event.id,
1099
1101
  turnId,
@@ -1108,12 +1110,17 @@ function buildTimeline(t, events, options = {}) {
1108
1110
  raw: payload.raw,
1109
1111
  status: providerNativeToolStatus(payload.raw),
1110
1112
  occurredAt: event.occurredAt
1111
- });
1113
+ };
1114
+ items.push(item);
1115
+ if (callId) {
1116
+ toolCallsById.set(callId, item);
1117
+ callsById.set(callId, item);
1118
+ }
1112
1119
  break;
1113
1120
  }
1114
1121
  case "agent.toolCall.output": {
1115
1122
  const callId = typeof payload.id === "string" ? payload.id : null;
1116
- const target = findOpenCall(items, callId);
1123
+ const target = findOpenCall(items, callId, callsById);
1117
1124
  if (!target) {
1118
1125
  break;
1119
1126
  }
@@ -3082,19 +3089,17 @@ function toolCallTruncation(payload) {
3082
3089
  }
3083
3090
  };
3084
3091
  }
3085
- function findOpenCall(items, callId) {
3086
- const reversed = [...items].reverse();
3087
- const isCall = (item) => item.kind === "tool-call" || item.kind === "worker";
3092
+ function findOpenCall(items, callId, callsById) {
3088
3093
  if (callId) {
3089
- const byId = reversed.find((item) => isCall(item) && item.callId === callId);
3090
- if (byId) {
3091
- return byId;
3094
+ return callsById.get(callId);
3095
+ }
3096
+ for (let index = items.length - 1; index >= 0; index -= 1) {
3097
+ const item = items[index];
3098
+ if ((item.kind === "tool-call" || item.kind === "worker") && item.status === "running") {
3099
+ return item;
3092
3100
  }
3093
- return void 0;
3094
3101
  }
3095
- return reversed.find(
3096
- (item) => isCall(item) && item.status === "running"
3097
- );
3102
+ return void 0;
3098
3103
  }
3099
3104
  function findOpenSandbox(items, name) {
3100
3105
  return [...items].reverse().find(
@@ -3405,14 +3410,14 @@ function looksLikeId(value) {
3405
3410
  }
3406
3411
 
3407
3412
  export {
3408
- learningRefusalTitle,
3409
- learningRefusalBody,
3410
- learningRefusalPlace,
3411
- learningRefusalPlaceLabel,
3412
3413
  compactionSkipTitle,
3413
3414
  compactionSkipSubtitle,
3414
3415
  compactionFailureDetails,
3415
3416
  presentTurnFailureText,
3417
+ learningRefusalTitle,
3418
+ learningRefusalBody,
3419
+ learningRefusalPlace,
3420
+ learningRefusalPlaceLabel,
3416
3421
  isToolOutputPreviewEvent,
3417
3422
  useToolOutputReads,
3418
3423
  isTimelineUserQuestion,
@@ -3424,4 +3429,4 @@ export {
3424
3429
  isTurnExecutionEvidence,
3425
3430
  extractSessionRef
3426
3431
  };
3427
- //# sourceMappingURL=chunk-OS3EQOIS.js.map
3432
+ //# sourceMappingURL=chunk-T4F5TW2X.js.map