@opengeni/react 4.4.1 → 4.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (700) hide show
  1. package/dist/app/app-state.js +25 -25
  2. package/dist/app/components/Composer.js +27 -27
  3. package/dist/app/components/agent/agent-capability-picker.js +4 -4
  4. package/dist/app/components/artifacts/artifact-browse-controls.js +3 -3
  5. package/dist/app/components/artifacts/artifact-library.js +19 -19
  6. package/dist/app/components/artifacts/artifact-page-chrome.js +2 -2
  7. package/dist/app/components/artifacts/chat-interactive-block.js +15 -15
  8. package/dist/app/components/artifacts/inline-chat-image.js +30 -29
  9. package/dist/app/components/artifacts/retained-file-preview.js +34 -33
  10. package/dist/app/components/artifacts/retained-text-preview.js +5 -5
  11. package/dist/app/components/artifacts/site-audience.js +4 -4
  12. package/dist/app/components/artifacts/site-conversations.js +20 -19
  13. package/dist/app/components/artifacts/site-data.js +18 -18
  14. package/dist/app/components/artifacts/site-publishing.js +39 -39
  15. package/dist/app/components/artifacts/site-settings.js +46 -46
  16. package/dist/app/components/billing-class-mark.js +5 -5
  17. package/dist/app/components/capabilities/capability-detail-sheet.js +8 -8
  18. package/dist/app/components/capabilities/capability-logo-source.js +11 -11
  19. package/dist/app/components/capabilities/connector-tool-permissions.js +4 -4
  20. package/dist/app/components/capabilities/native-connect-setup.js +14 -14
  21. package/dist/app/components/capabilities/perform-capability-action.js +1 -1
  22. package/dist/app/components/capabilities/prepared-mcp-setup-card.js +15 -15
  23. package/dist/app/components/capabilities/session-capability-card.js +77 -75
  24. package/dist/app/components/capabilities/session-capability-card.js.map +1 -1
  25. package/dist/app/components/capabilities/session-chrome-card.js +35 -33
  26. package/dist/app/components/capabilities/session-custom-mcp-card.js +19 -19
  27. package/dist/app/components/capabilities/session-github-card.js +22 -22
  28. package/dist/app/components/capabilities/session-machine-card.js +34 -32
  29. package/dist/app/components/capabilities/use-capabilities-catalog.js +3 -3
  30. package/dist/app/components/capabilities/use-connection-accounts.js +1 -1
  31. package/dist/app/components/command-menu/chat-status.js +15 -14
  32. package/dist/app/components/command-menu/chat-switcher.js +16 -15
  33. package/dist/app/components/command-menu/chat-switcher.js.map +1 -1
  34. package/dist/app/components/command-menu/command-menu.js +32 -110
  35. package/dist/app/components/command-menu/command-menu.js.map +1 -1
  36. package/dist/app/components/command-menu/shortcut-sheet.js +15 -15
  37. package/dist/app/components/composer-capabilities-menu-body.js +3 -3
  38. package/dist/app/components/composer-mobile-plus-panel.js +17 -17
  39. package/dist/app/components/composer-mobile-plus.js +1 -1
  40. package/dist/app/components/credit-required-gate.js +1 -1
  41. package/dist/app/components/credit-required-prompt.js +9 -9
  42. package/dist/app/components/credits/coupon-redeem.js +2 -2
  43. package/dist/app/components/credits/credit-refusal-notice.js +2 -2
  44. package/dist/app/components/desktop/app-shots.js +6 -6
  45. package/dist/app/components/desktop/this-computer.js +4 -4
  46. package/dist/app/components/feedback.js +4 -4
  47. package/dist/app/components/follow-up-repository-menu-body.js +4 -4
  48. package/dist/app/components/follow-up-repository-picker.js +1 -1
  49. package/dist/app/components/github-app-connect-launcher.js +2 -2
  50. package/dist/app/components/in-app-help-link.js +2 -2
  51. package/dist/app/components/knowledge/agent-learning-settings.js +3 -3
  52. package/dist/app/components/machines/connect-machine-dialog.js +18 -18
  53. package/dist/app/components/markdown.js +8 -8
  54. package/dist/app/components/message-context-pills.js +2 -2
  55. package/dist/app/components/models/models-ui.js +8 -8
  56. package/dist/app/components/new-session-starters.js +2 -2
  57. package/dist/app/components/pickers.js +8 -8
  58. package/dist/app/components/rail/rail-context.js +3 -3
  59. package/dist/app/components/rail/rail-sections.js +65 -62
  60. package/dist/app/components/rail/session-header.js +48 -47
  61. package/dist/app/components/rail/session-list.js +64 -61
  62. package/dist/app/components/rail/session-row-content.d.ts +6 -2
  63. package/dist/app/components/rail/session-row-content.js +1 -1
  64. package/dist/app/components/rail/session-row-hover-details.js +20 -19
  65. package/dist/app/components/rail/session-shell.js +104 -101
  66. package/dist/app/components/rail/site-session-group-heading.d.ts +7 -1
  67. package/dist/app/components/rail/site-session-group-heading.js +20 -3
  68. package/dist/app/components/repository-picker.js +4 -4
  69. package/dist/app/components/secrets/session-secrets-panel.js +3 -3
  70. package/dist/app/components/session/agent-configuration-panel.js +33 -33
  71. package/dist/app/components/session/artifact-link-boundary.js +2 -2
  72. package/dist/app/components/session/artifact-session-page.js +5 -5
  73. package/dist/app/components/session/banners.js +10 -10
  74. package/dist/app/components/session/codex-account-indicator.js +11 -11
  75. package/dist/app/components/session/editable-artifacts-workspace.js +44 -44
  76. package/dist/app/components/session/failed-session-banner.js +10 -10
  77. package/dist/app/components/session/human-input.js +57 -53
  78. package/dist/app/components/session/inspector.js +94 -90
  79. package/dist/app/components/session/inspector.js.map +1 -1
  80. package/dist/app/components/session/message-actions.js +4 -4
  81. package/dist/app/components/session/message-resource-attachments.js +20 -19
  82. package/dist/app/components/session/message-resource-attachments.js.map +1 -1
  83. package/dist/app/components/session/model-account-indicator.js +11 -11
  84. package/dist/app/components/session/model-context-inspector.js +2 -2
  85. package/dist/app/components/session/model-recovery-notice.js +3 -3
  86. package/dist/app/components/session/new-session-settings-menu.js +9 -9
  87. package/dist/app/components/session/sandbox-switcher.js +16 -16
  88. package/dist/app/components/session/sandbox-workspace.js +81 -77
  89. package/dist/app/components/session/search-markdown-highlight.js +9 -9
  90. package/dist/app/components/session/search-results-view.js +10 -10
  91. package/dist/app/components/session/session-admin-access.js +8 -8
  92. package/dist/app/components/session/session-admission-notice.js +6 -6
  93. package/dist/app/components/session/session-machine-access-notice.js +6 -6
  94. package/dist/app/components/session/session-retention.js +4 -4
  95. package/dist/app/components/session/session-search-dialog.js +11 -11
  96. package/dist/app/components/session/session-skill-reviews.js +1 -1
  97. package/dist/app/components/session/session-tenancy-control.d.ts +2 -0
  98. package/dist/app/components/session/session-tenancy-control.js +40 -25
  99. package/dist/app/components/session/session-tenancy-control.js.map +1 -1
  100. package/dist/app/components/session/session-usage-limit-section.js +11 -11
  101. package/dist/app/components/session/session-wait-status.js +9 -8
  102. package/dist/app/components/session/session-wait-status.js.map +1 -1
  103. package/dist/app/components/session/site-origin-link.d.ts +1 -0
  104. package/dist/app/components/session/site-origin-link.js +2 -2
  105. package/dist/app/components/session/subagents.js +16 -15
  106. package/dist/app/components/session-connectors-menu-body.js +5 -5
  107. package/dist/app/components/settings/row-select.js +3 -3
  108. package/dist/app/components/transcription-settings.js +4 -4
  109. package/dist/app/components/ui/destructive-confirm.js +6 -6
  110. package/dist/app/components/usage/usage-entry.js +8 -8
  111. package/dist/app/components/workspace-composer-plus.js +21 -21
  112. package/dist/app/embed/memory-navigation.js +2 -2
  113. package/dist/app/embed/session-app.js +256 -250
  114. package/dist/app/lib/actions/actions-provider.js +15 -15
  115. package/dist/app/lib/actions/held-modifier.d.ts +11 -0
  116. package/dist/app/lib/app-surfaces.js +2 -2
  117. package/dist/app/lib/codex-usage-query.js +6 -6
  118. package/dist/app/lib/composer-connectors.js +12 -12
  119. package/dist/app/lib/console-site.d.ts +6 -0
  120. package/dist/app/lib/console-site.js +14 -0
  121. package/dist/app/lib/console-text.js +2 -2
  122. package/dist/app/lib/events.js +17 -16
  123. package/dist/app/lib/failed-session-copy.js +3 -3
  124. package/dist/app/lib/model-access-onboarding.js +3 -3
  125. package/dist/app/lib/move-chat-to-machine.js +3 -3
  126. package/dist/app/lib/navigation.d.ts +5 -0
  127. package/dist/app/lib/navigation.js +1 -1
  128. package/dist/app/lib/routes.d.ts +17 -0
  129. package/dist/app/lib/routes.js +9 -3
  130. package/dist/app/lib/session-branch-cache.js +13 -12
  131. package/dist/app/lib/session-deep-link.js +2 -2
  132. package/dist/app/lib/session-failure-toasts.d.ts +8 -0
  133. package/dist/app/lib/session-group-pagination.js +13 -12
  134. package/dist/app/lib/session-hover-facts.js +14 -13
  135. package/dist/app/lib/session-model.js +3 -3
  136. package/dist/app/lib/session-rail.js +9 -8
  137. package/dist/app/lib/session-rename.js +3 -3
  138. package/dist/app/lib/session-ui-features.d.ts +6 -1
  139. package/dist/app/lib/session-ui-features.js +1 -1
  140. package/dist/app/lib/sessions-group.d.ts +43 -3
  141. package/dist/app/lib/sessions-group.js +21 -14
  142. package/dist/app/lib/shared-query.js +3 -3
  143. package/dist/app/lib/site-opened.d.ts +6 -0
  144. package/dist/app/lib/site-opened.js +10 -0
  145. package/dist/app/lib/turn-failure-analytics.js +4 -4
  146. package/dist/app/lib/use-duplicate-site.js +3 -3
  147. package/dist/app/lib/use-follow-up-repositories.js +4 -4
  148. package/dist/app/lib/use-session-list-hint-refresh.d.ts +20 -2
  149. package/dist/app/lib/use-session-list-hint-refresh.js +5 -1
  150. package/dist/app/lib/use-workspace-machines.js +6 -6
  151. package/dist/app/lib/use-workspace-model-catalog.js +7 -7
  152. package/dist/app/lib/use-workspace-rigs.js +8 -8
  153. package/dist/app/lib/workspace-navigation-preference.js +5 -5
  154. package/dist/app/lib/workspace-scope-context.js +4 -4
  155. package/dist/app/routes/artifacts.js +132 -149
  156. package/dist/app/routes/artifacts.js.map +1 -1
  157. package/dist/app/routes/retained-artifact.js +63 -62
  158. package/dist/app/routes/retained-artifact.js.map +1 -1
  159. package/dist/app/routes/session-unavailable.js +7 -5
  160. package/dist/app/routes/session.js +170 -166
  161. package/dist/app/routes/sessions-index.js +110 -108
  162. package/dist/app/routes/site-view.d.ts +11 -0
  163. package/dist/app/routes/site-view.js +597 -0
  164. package/dist/app/routes/site-view.js.map +1 -0
  165. package/dist/artifacts-document.js +4 -4
  166. package/dist/artifacts-presentation.js +4 -4
  167. package/dist/artifacts-spreadsheet.js +4 -4
  168. package/dist/artifacts.js +39 -39
  169. package/dist/{browser-viewer-RYYQSRTC.js → browser-viewer-QMCNV4RI.js} +9 -7
  170. package/dist/{chat-interactive-block-ABCRKXJ4.js → chat-interactive-block-PMIAUXSO.js} +6 -6
  171. package/dist/{chunk-TGVVEGZG.js → chunk-22FFOHPT.js} +9 -9
  172. package/dist/chunk-22GTC4MZ.js +15 -0
  173. package/dist/chunk-22GTC4MZ.js.map +1 -0
  174. package/dist/{chunk-Z5WMLJKI.js → chunk-22JFMNMF.js} +92 -4
  175. package/dist/chunk-22JFMNMF.js.map +1 -0
  176. package/dist/{chunk-UHFWF6ZU.js → chunk-2FPS5H2D.js} +2 -2
  177. package/dist/{chunk-NAWXARTY.js → chunk-2KO2G3RI.js} +72 -6
  178. package/dist/chunk-2KO2G3RI.js.map +1 -0
  179. package/dist/{chunk-5POTDNQT.js → chunk-2NC7NZCE.js} +6 -6
  180. package/dist/{chunk-ZKYYZH6L.js → chunk-2QBYDGWO.js} +9 -9
  181. package/dist/{chunk-TWXIFWBD.js → chunk-34EU25RL.js} +2 -2
  182. package/dist/{chunk-R63QEVPK.js → chunk-35BC2FU2.js} +16 -16
  183. package/dist/{chunk-PTGRFAMH.js → chunk-3ABPIUCK.js} +2 -2
  184. package/dist/{chunk-S4SC5SSV.js → chunk-3GU7AWG7.js} +18 -18
  185. package/dist/{chunk-722UO6YQ.js → chunk-3PEXVG4D.js} +2 -2
  186. package/dist/{chunk-63VGE4OH.js → chunk-3RMKPHBL.js} +3 -3
  187. package/dist/{chunk-6JKZILLF.js → chunk-3RQUWFZT.js} +67 -67
  188. package/dist/{chunk-6JKZILLF.js.map → chunk-3RQUWFZT.js.map} +1 -1
  189. package/dist/{chunk-RQDFYQHA.js → chunk-3STBLX4O.js} +9 -9
  190. package/dist/{chunk-S4EZ3JUB.js → chunk-3X5FKDYQ.js} +23 -23
  191. package/dist/{chunk-KTRKZRID.js → chunk-4GLLWX33.js} +11 -11
  192. package/dist/{chunk-ROQOVH4N.js → chunk-4HEXNAFI.js} +20 -20
  193. package/dist/chunk-4HEXNAFI.js.map +1 -0
  194. package/dist/{chunk-SD2K5ZN5.js → chunk-4LPA25NQ.js} +4 -4
  195. package/dist/{chunk-KWKGBGAF.js → chunk-4RMN4E2Y.js} +9 -9
  196. package/dist/{chunk-X7ASQHR6.js → chunk-4SAGYEVB.js} +2 -2
  197. package/dist/{chunk-HTT3FB7T.js → chunk-4VK2R5QC.js} +3 -3
  198. package/dist/{chunk-DDK4WFJ3.js → chunk-4XQC7VLT.js} +9 -9
  199. package/dist/{chunk-IVOA3DXA.js → chunk-4YXAQMTD.js} +12 -12
  200. package/dist/{chunk-HOJGAJAB.js → chunk-52WK2GGK.js} +8 -8
  201. package/dist/{chunk-NYZQ7LO7.js → chunk-552UYIQ7.js} +20 -20
  202. package/dist/{chunk-LEXPBQ56.js → chunk-5DSKMG2I.js} +4 -4
  203. package/dist/{chunk-WNG757ID.js → chunk-5FA455GR.js} +4 -4
  204. package/dist/{chunk-HWDGJFM4.js → chunk-5FEN3KYH.js} +11 -11
  205. package/dist/{chunk-OSVHU2WU.js → chunk-5JHRMUAZ.js} +12 -12
  206. package/dist/{chunk-PM3OSANE.js → chunk-5MJHH72T.js} +14 -3
  207. package/dist/chunk-5MJHH72T.js.map +1 -0
  208. package/dist/{chunk-RKB2Z457.js → chunk-5VGJXWQ2.js} +2 -2
  209. package/dist/{chunk-GFUUFM2O.js → chunk-5W6ZDKRR.js} +6 -6
  210. package/dist/{chunk-6PQNLL4E.js → chunk-5W7KJ5NQ.js} +37 -37
  211. package/dist/{chunk-Q35YZVDZ.js → chunk-5Y2FPLZE.js} +9 -9
  212. package/dist/{chunk-6W3LF3DB.js → chunk-5YFY4SFC.js} +2 -12
  213. package/dist/chunk-5YFY4SFC.js.map +1 -0
  214. package/dist/{chunk-F3NERYBQ.js → chunk-62VER7O4.js} +6 -6
  215. package/dist/{chunk-FBMU3VK5.js → chunk-6DCEDIF6.js} +2 -2
  216. package/dist/{chunk-LE2EDBXU.js → chunk-73WI7FL2.js} +18 -18
  217. package/dist/chunk-756MKA2J.js +45 -0
  218. package/dist/chunk-756MKA2J.js.map +1 -0
  219. package/dist/{chunk-ZRJCGBVV.js → chunk-7FJMRJDG.js} +2 -2
  220. package/dist/{chunk-7KGKDWWR.js → chunk-7HFLYNWN.js} +2 -2
  221. package/dist/{chunk-72J6C2AJ.js → chunk-7KIENXRE.js} +2 -2
  222. package/dist/{chunk-CBY5CXBD.js → chunk-7NPCEBZE.js} +5 -5
  223. package/dist/{chunk-46VBQG2D.js → chunk-7P4AQMGA.js} +13 -13
  224. package/dist/{chunk-X7L4H4VG.js → chunk-7TCT7KPQ.js} +742 -644
  225. package/dist/chunk-7TCT7KPQ.js.map +1 -0
  226. package/dist/{chunk-CVG4FILQ.js → chunk-7XO7YKPC.js} +280 -1035
  227. package/dist/chunk-7XO7YKPC.js.map +1 -0
  228. package/dist/{chunk-S7PVL7XH.js → chunk-A4BD4ZVB.js} +4 -4
  229. package/dist/{chunk-EF5SYXAY.js → chunk-ACL2V2KE.js} +30 -22
  230. package/dist/chunk-ACL2V2KE.js.map +1 -0
  231. package/dist/{chunk-73SOCVLS.js → chunk-AIEXYO2X.js} +3 -3
  232. package/dist/{chunk-U7TC2XJQ.js → chunk-AJPW3SV4.js} +3 -3
  233. package/dist/{chunk-HRJQAFKR.js → chunk-AX6YJA5U.js} +2 -2
  234. package/dist/{chunk-P5WABK2H.js → chunk-BCM7C3MJ.js} +9 -9
  235. package/dist/{chunk-DT7BORXG.js → chunk-BMJTNPWK.js} +2 -2
  236. package/dist/{chunk-HIHO2QE7.js → chunk-BT2MVGHT.js} +2 -2
  237. package/dist/{chunk-3XOISKZC.js → chunk-BXQYAAVE.js} +4 -4
  238. package/dist/{chunk-IBTXYLBW.js → chunk-CCFWY4GF.js} +2 -2
  239. package/dist/{chunk-ZOC3OP6F.js → chunk-CCR33J7L.js} +2 -2
  240. package/dist/{chunk-GTQ3SNEI.js → chunk-CD3MO3IC.js} +2 -2
  241. package/dist/{chunk-WSMYOLHG.js → chunk-CDEXRJB6.js} +5 -5
  242. package/dist/{chunk-3GLAPCVI.js → chunk-CFFNT2OY.js} +8 -8
  243. package/dist/{chunk-HO5Y2OOX.js → chunk-CMLJSF2F.js} +10 -10
  244. package/dist/{chunk-RA3FNMWF.js → chunk-CP7ZQHBW.js} +10 -10
  245. package/dist/{chunk-IOKSNX74.js → chunk-D5OWJZQR.js} +2 -2
  246. package/dist/{chunk-SQGXMHJO.js → chunk-DGLRZMXL.js} +3 -3
  247. package/dist/{chunk-GNEHAPKV.js → chunk-DJFTH2DI.js} +3 -3
  248. package/dist/{chunk-HQG4SLTE.js → chunk-DYJGYGPB.js} +2 -2
  249. package/dist/{chunk-4EAF3HSD.js → chunk-EJ7WARW7.js} +2 -2
  250. package/dist/{chunk-3AA6RNGE.js → chunk-ENS6E4RZ.js} +2 -2
  251. package/dist/{chunk-OOEO4MKY.js → chunk-EPWD4KRA.js} +2 -2
  252. package/dist/{chunk-PN66T6JA.js → chunk-EQE3MNQN.js} +5 -5
  253. package/dist/{chunk-TSBE4KOQ.js → chunk-EWL6NDOO.js} +3 -3
  254. package/dist/{chunk-OO2T63BY.js → chunk-EYS4ZOF5.js} +2 -2
  255. package/dist/{chunk-7CZTKBTI.js → chunk-FDAV72IX.js} +5 -5
  256. package/dist/{chunk-AG7VGUIW.js → chunk-FFNPUSVO.js} +7 -7
  257. package/dist/{chunk-P5T36BA3.js → chunk-FRP64DEK.js} +2 -2
  258. package/dist/{chunk-KBF3SE7G.js → chunk-FSP334UU.js} +2 -2
  259. package/dist/{chunk-BSX2R4CW.js → chunk-FTX5CNHA.js} +4 -4
  260. package/dist/{chunk-O756O2I7.js → chunk-FWOBNL2A.js} +1 -1
  261. package/dist/{chunk-6NIB2KGJ.js → chunk-FWYEZ3LE.js} +33 -33
  262. package/dist/{chunk-DLOYMWUQ.js → chunk-G4HQUBO4.js} +7 -7
  263. package/dist/{chunk-CSHBR2IZ.js → chunk-GDLDBR6B.js} +2 -2
  264. package/dist/chunk-GGV4NSG3.js +792 -0
  265. package/dist/chunk-GGV4NSG3.js.map +1 -0
  266. package/dist/{chunk-U36PO27Q.js → chunk-GHHM6WN4.js} +3 -3
  267. package/dist/{chunk-OANSIX34.js → chunk-GRSODLVO.js} +4 -4
  268. package/dist/{chunk-4R3JCVID.js → chunk-GT7JFQ4E.js} +410 -153
  269. package/dist/chunk-GT7JFQ4E.js.map +1 -0
  270. package/dist/{chunk-EU6XSQFM.js → chunk-GXW2I2M2.js} +2 -2
  271. package/dist/{chunk-5JEIDFPD.js → chunk-GZS37O3G.js} +1 -1
  272. package/dist/{chunk-XFNLU7EW.js → chunk-H5M33DAL.js} +15 -6
  273. package/dist/chunk-H5M33DAL.js.map +1 -0
  274. package/dist/{chunk-HNYJEAES.js → chunk-HQWVDQXW.js} +7 -7
  275. package/dist/{chunk-YXOKAG66.js → chunk-HU6JTNWF.js} +2 -2
  276. package/dist/{chunk-QRVNI5V6.js → chunk-I6KIQKU6.js} +3 -3
  277. package/dist/{chunk-APU42QDI.js → chunk-IBA5FMRE.js} +115 -111
  278. package/dist/chunk-IBA5FMRE.js.map +1 -0
  279. package/dist/{chunk-BNUPYHHZ.js → chunk-IDXTASGN.js} +4 -4
  280. package/dist/{chunk-KF3MF6FP.js → chunk-IECRGM6K.js} +3 -2
  281. package/dist/chunk-IECRGM6K.js.map +1 -0
  282. package/dist/chunk-IJYL5BZM.js +38 -0
  283. package/dist/chunk-IJYL5BZM.js.map +1 -0
  284. package/dist/{chunk-L6RXRRN3.js → chunk-ILDOW2IQ.js} +3 -3
  285. package/dist/{chunk-VUHPA3XQ.js → chunk-ITX2TB4K.js} +6 -6
  286. package/dist/{chunk-BXRIQZAH.js → chunk-J22HD2PB.js} +5 -5
  287. package/dist/{chunk-U47YDYLQ.js → chunk-J5MEDX7C.js} +8 -8
  288. package/dist/{chunk-F6LBGYS6.js → chunk-J7FBBLHF.js} +35 -35
  289. package/dist/{chunk-5JZYPZ72.js → chunk-JFK7NTEA.js} +4 -4
  290. package/dist/chunk-JFK7NTEA.js.map +1 -0
  291. package/dist/{chunk-QZRDCFHI.js → chunk-JM4HQPAI.js} +5 -5
  292. package/dist/{chunk-PIVGX42P.js → chunk-JNY5MT3I.js} +2 -2
  293. package/dist/{chunk-XWWXIZFP.js → chunk-JO6R5EXF.js} +7 -7
  294. package/dist/{chunk-NWZW2WHN.js → chunk-JQCGPTZ6.js} +9 -9
  295. package/dist/chunk-JRSNCSZN.js +37 -0
  296. package/dist/chunk-JRSNCSZN.js.map +1 -0
  297. package/dist/{chunk-OR37STQZ.js → chunk-KEXYBG7Q.js} +3 -3
  298. package/dist/{chunk-AZVANYMB.js → chunk-KUNFUSZ7.js} +2 -2
  299. package/dist/{chunk-DXZNDKQD.js → chunk-LEEJBZ5B.js} +2 -2
  300. package/dist/{chunk-STUCI6QA.js → chunk-LEKBNKLD.js} +1 -1
  301. package/dist/{chunk-STUCI6QA.js.map → chunk-LEKBNKLD.js.map} +1 -1
  302. package/dist/{chunk-AOLE4IRZ.js → chunk-LF5CBAOS.js} +5 -5
  303. package/dist/{chunk-BJIZ7PL7.js → chunk-LHLK7FUA.js} +145 -29
  304. package/dist/chunk-LHLK7FUA.js.map +1 -0
  305. package/dist/{chunk-RIMKJBCD.js → chunk-LMPTC4CX.js} +2 -2
  306. package/dist/{chunk-3KVWXKD6.js → chunk-LQ47YL6E.js} +2 -2
  307. package/dist/{chunk-RSNYGEVZ.js → chunk-LT4J7RHI.js} +13 -13
  308. package/dist/{chunk-U3HSFCON.js → chunk-MCTTONOW.js} +28 -28
  309. package/dist/{chunk-7DU35P5J.js → chunk-MIECLOQC.js} +9 -9
  310. package/dist/{chunk-FM4OUCC2.js → chunk-MOKYT3X3.js} +3 -3
  311. package/dist/{chunk-GZ64CASI.js → chunk-MVZYNZXE.js} +5 -4
  312. package/dist/chunk-MVZYNZXE.js.map +1 -0
  313. package/dist/{chunk-L7YURQI2.js → chunk-MXLKI7BI.js} +3 -3
  314. package/dist/{chunk-XRRSFQEV.js → chunk-NAZZLAWX.js} +2 -2
  315. package/dist/{chunk-UWJ5P5CU.js → chunk-NEK4WB5P.js} +3 -3
  316. package/dist/{chunk-6L7U46Y2.js → chunk-NKNVIO66.js} +2 -2
  317. package/dist/{chunk-JKUICTLM.js → chunk-NLAFNMPK.js} +2 -2
  318. package/dist/{chunk-4LKNIGHB.js → chunk-O2SBHS2N.js} +2 -2
  319. package/dist/{chunk-DWPOQ3S5.js → chunk-OTMWHZBY.js} +2 -2
  320. package/dist/{chunk-JTN3T4QN.js → chunk-PCFK7HKD.js} +14 -14
  321. package/dist/{chunk-VVCDB2T7.js → chunk-PCJLH45G.js} +3 -3
  322. package/dist/{chunk-PZ24CYDO.js → chunk-PFAUGEV5.js} +2 -2
  323. package/dist/{chunk-HGMWMK5K.js → chunk-PO3BH3KQ.js} +2 -2
  324. package/dist/{chunk-B74GSYR6.js → chunk-PUTS4DYW.js} +2 -2
  325. package/dist/{chunk-JSIDLTTG.js → chunk-PZ2V2XIK.js} +2 -2
  326. package/dist/{chunk-TMEQPODK.js → chunk-PZ37VDB5.js} +2 -2
  327. package/dist/{chunk-Q35DT6I6.js → chunk-QFMLAT7L.js} +234 -225
  328. package/dist/chunk-QFMLAT7L.js.map +1 -0
  329. package/dist/{chunk-LVONK3YQ.js → chunk-QRKTESVE.js} +2 -2
  330. package/dist/{chunk-HT5WSUC7.js → chunk-QXEDIDBZ.js} +3 -3
  331. package/dist/{chunk-WURSS6MP.js → chunk-R66YMYJU.js} +2 -2
  332. package/dist/{chunk-HDHK3SXK.js → chunk-RFLYID6H.js} +5 -5
  333. package/dist/{chunk-ADJJQSYC.js → chunk-RIYZFKIM.js} +39 -37
  334. package/dist/chunk-RIYZFKIM.js.map +1 -0
  335. package/dist/{chunk-JK7C5A4I.js → chunk-RQNZDTKT.js} +19 -19
  336. package/dist/{chunk-EHCUFCXM.js → chunk-RYSRFAHN.js} +32 -22
  337. package/dist/chunk-RYSRFAHN.js.map +1 -0
  338. package/dist/{chunk-I6VUUEXH.js → chunk-S2U4CDAC.js} +150 -150
  339. package/dist/chunk-S2U4CDAC.js.map +1 -0
  340. package/dist/{chunk-ST22GONV.js → chunk-S37GP7LX.js} +19 -19
  341. package/dist/{chunk-A2EWJQXX.js → chunk-SM5QX6UK.js} +4 -4
  342. package/dist/{chunk-FBE6AIIW.js → chunk-SOKNCW5U.js} +2 -2
  343. package/dist/{chunk-4W7VISE7.js → chunk-SSOO4GWN.js} +193 -194
  344. package/dist/chunk-SSOO4GWN.js.map +1 -0
  345. package/dist/{chunk-UP4BE32Y.js → chunk-SY2AAZNB.js} +5 -5
  346. package/dist/{chunk-33TPANCR.js → chunk-TFK4KFKA.js} +4 -4
  347. package/dist/{chunk-4432A3HQ.js → chunk-TIQPKOFW.js} +4 -4
  348. package/dist/{chunk-HPPKLBTJ.js → chunk-TJQDL3JH.js} +2 -2
  349. package/dist/chunk-TL7BOFFL.js +89 -0
  350. package/dist/chunk-TL7BOFFL.js.map +1 -0
  351. package/dist/{chunk-FD4Q5KFL.js → chunk-TLL22FFO.js} +2 -2
  352. package/dist/{chunk-QM5H4FPT.js → chunk-TV6BWONY.js} +3 -3
  353. package/dist/{chunk-4VKA5O7T.js → chunk-U6MPB3K6.js} +4 -4
  354. package/dist/{chunk-XOFUXMPP.js → chunk-ULJAOMJA.js} +2 -2
  355. package/dist/chunk-ULYQEFNH.js +529 -0
  356. package/dist/chunk-ULYQEFNH.js.map +1 -0
  357. package/dist/{chunk-H5EVWF6L.js → chunk-UNNJUJVD.js} +2 -2
  358. package/dist/{chunk-RGW24ZZM.js → chunk-UP7I3W6O.js} +51 -49
  359. package/dist/chunk-UP7I3W6O.js.map +1 -0
  360. package/dist/{chunk-5MZTJMZ3.js → chunk-UUGR3X5I.js} +17 -11
  361. package/dist/chunk-UUGR3X5I.js.map +1 -0
  362. package/dist/{chunk-Z6DKXQG7.js → chunk-UXXFMF4X.js} +2 -2
  363. package/dist/{chunk-OBQVTCTW.js → chunk-UYNCMZX5.js} +4 -4
  364. package/dist/{chunk-RGPYMHKI.js → chunk-V3K4RQO7.js} +9 -3
  365. package/dist/chunk-V3K4RQO7.js.map +1 -0
  366. package/dist/{chunk-KZHW27BV.js → chunk-V4QZ7UBK.js} +2 -2
  367. package/dist/{chunk-SUVEDKE2.js → chunk-VH5EGTH2.js} +3 -3
  368. package/dist/{chunk-MYNUBDU7.js → chunk-VYKW6TB2.js} +1 -1
  369. package/dist/chunk-VYKW6TB2.js.map +1 -0
  370. package/dist/{chunk-QEJTQTF5.js → chunk-W6T5HR3Z.js} +3 -3
  371. package/dist/{chunk-VP62LPLW.js → chunk-WCMG4HYI.js} +10 -10
  372. package/dist/{chunk-GZLLDA6P.js → chunk-WEFN327U.js} +2 -2
  373. package/dist/{chunk-7BST7BA6.js → chunk-WKHUZIOW.js} +1 -1
  374. package/dist/{chunk-ANHUMDJX.js → chunk-WNDTLK44.js} +2 -2
  375. package/dist/{chunk-2DS4UOYQ.js → chunk-WSZQNTVN.js} +2 -2
  376. package/dist/{chunk-GALB2G3W.js → chunk-X2AH4DRF.js} +2 -2
  377. package/dist/{chunk-Z2DAWUO3.js → chunk-XMNUZUUA.js} +6 -6
  378. package/dist/{chunk-GAIM5RNE.js → chunk-XN7NSPE6.js} +3 -3
  379. package/dist/chunk-XV6ZYRHK.js +59 -0
  380. package/dist/chunk-XV6ZYRHK.js.map +1 -0
  381. package/dist/{chunk-FLGUVRR7.js → chunk-Y5BSA3I7.js} +5 -5
  382. package/dist/{chunk-WRLWLGEF.js → chunk-Y5E3XQ2S.js} +25 -2
  383. package/dist/{chunk-WRLWLGEF.js.map → chunk-Y5E3XQ2S.js.map} +1 -1
  384. package/dist/{chunk-QCD5Y7K5.js → chunk-YEROLKOA.js} +16 -16
  385. package/dist/{chunk-NDF3SH3X.js → chunk-YJPKDRI2.js} +15 -15
  386. package/dist/{chunk-TQGJN5UZ.js → chunk-YV56F4UP.js} +318 -700
  387. package/dist/chunk-YV56F4UP.js.map +1 -0
  388. package/dist/{chunk-VAIESMPY.js → chunk-YVBHGMKC.js} +4 -4
  389. package/dist/{chunk-AD22P5X3.js → chunk-YXA2EKV3.js} +3 -3
  390. package/dist/{chunk-FDNJVZRE.js → chunk-YYCOSTUU.js} +17 -17
  391. package/dist/{chunk-NLMTNEWW.js → chunk-Z6E6TUAE.js} +2 -2
  392. package/dist/{chunk-BJW7G6EF.js → chunk-Z7IGO5EA.js} +3 -3
  393. package/dist/{chunk-NCX5SAQY.js → chunk-ZEIFJ6PX.js} +5 -5
  394. package/dist/{chunk-JRXHSVD5.js → chunk-ZS2UQ3DV.js} +65 -8
  395. package/dist/chunk-ZS2UQ3DV.js.map +1 -0
  396. package/dist/{chunk-4EONHNJU.js → chunk-ZVVT72MT.js} +2 -2
  397. package/dist/components/browser-viewer.d.ts +1 -1
  398. package/dist/composer.js +13 -13
  399. package/dist/{computer-viewer-KEDVLD42.js → computer-viewer-25AJIDYA.js} +9 -9
  400. package/dist/connect.js +10 -10
  401. package/dist/desktop.js +2 -2
  402. package/dist/editor.js +2 -2
  403. package/dist/{embedded-new-voice-LFHWWYD2.js → embedded-new-voice-RZZEJT6M.js} +7 -7
  404. package/dist/{embedded-voice-6QS4ANNX.js → embedded-voice-6OKSSPLW.js} +7 -7
  405. package/dist/{fleet-decision-row-QNSTP3VX.js → fleet-decision-row-NN2HXDX3.js} +2 -2
  406. package/dist/hooks/internal.d.ts +38 -0
  407. package/dist/hooks/use-client-config-flags.d.ts +12 -0
  408. package/dist/hooks/use-workspace-sessions.d.ts +10 -1
  409. package/dist/index.js +233 -227
  410. package/dist/interaction.js +11 -9
  411. package/dist/interaction.js.map +1 -1
  412. package/dist/{latest-question-AW3PPDUM.js → latest-question-2PFWQSSG.js} +4 -3
  413. package/dist/{latest-question-AW3PPDUM.js.map → latest-question-2PFWQSSG.js.map} +1 -1
  414. package/dist/machines.js +5 -5
  415. package/dist/messages/en.d.ts +3 -3
  416. package/dist/messages.js +1 -1
  417. package/dist/{model-policy-picker-menu-CURJ247L.js → model-policy-picker-menu-VVFGGAI6.js} +6 -6
  418. package/dist/native-previews.js +3 -3
  419. package/dist/{platform-activity-row-BMXXNZKX.js → platform-activity-row-ENQVIFTL.js} +2 -2
  420. package/dist/{queue-surface-implementation-2X5AXB6I.js → queue-surface-implementation-4SHOQPQQ.js} +10 -8
  421. package/dist/{queue-surface-implementation-2X5AXB6I.js.map → queue-surface-implementation-4SHOQPQQ.js.map} +1 -1
  422. package/dist/realtime.js +6 -6
  423. package/dist/{sandbox-files-4FBG3GS2.js → sandbox-files-CCOTGXXA.js} +11 -11
  424. package/dist/sandbox-files-CCOTGXXA.js.map +1 -0
  425. package/dist/session-app.js +258 -252
  426. package/dist/session-list-model.d.ts +1 -0
  427. package/dist/session-list-model.js +8 -2
  428. package/dist/{session-realtime-2XIB254N.js → session-realtime-JNKDSGH7.js} +3 -3
  429. package/dist/session-realtime-JNKDSGH7.js.map +1 -0
  430. package/dist/session-realtime.js +2 -2
  431. package/dist/session-ui.js +76 -71
  432. package/dist/session.js +24 -22
  433. package/dist/sites.js +2 -2
  434. package/dist/terminal.js +2 -2
  435. package/dist/this-computer.js +3 -3
  436. package/dist/timeline/invoked-tool.d.ts +5 -0
  437. package/dist/timeline/tool-display-name.d.ts +2 -2
  438. package/dist/timeline/tool-icon.d.ts +14 -0
  439. package/dist/timeline/tool-presentation.d.ts +8 -3
  440. package/dist/{timeline-annotation-markers-X4K2IEOO.js → timeline-annotation-markers-KHNYNY2J.js} +5 -5
  441. package/dist/{timeline-annotation-selection-MEHBW676.js → timeline-annotation-selection-AXEDJHBP.js} +7 -7
  442. package/dist/{timeline-annotations-dialog-U2FPQ3UY.js → timeline-annotations-dialog-AV4ZBXRC.js} +9 -9
  443. package/dist/timeline-model.js +25 -23
  444. package/dist/ui/access-list.js +18 -18
  445. package/dist/ui/cadence-picker.js +2 -2
  446. package/dist/ui/choice-cards.js +2 -2
  447. package/dist/ui/detail-page.js +2 -2
  448. package/dist/ui/detail-sheet.js +2 -2
  449. package/dist/ui/diff-view.js +2 -2
  450. package/dist/ui/disclosure.js +4 -4
  451. package/dist/ui/flush-form-page.js +3 -3
  452. package/dist/ui/form-dialog.js +2 -2
  453. package/dist/ui/list-row.js +4 -4
  454. package/dist/ui/revision-history.js +11 -11
  455. package/dist/ui/role-select.js +7 -7
  456. package/dist/ui/select-menu.js +2 -2
  457. package/dist/ui/settings-nav.js +3 -3
  458. package/dist/usage.js +3 -3
  459. package/dist/workbench.js +11 -11
  460. package/package.json +4 -4
  461. package/src/app/app-state.tsx +3 -1
  462. package/src/app/components/capabilities/session-machine-card.tsx +9 -2
  463. package/src/app/components/rail/session-list.tsx +254 -44
  464. package/src/app/components/rail/session-row-content.tsx +24 -2
  465. package/src/app/components/rail/session-shell.tsx +14 -9
  466. package/src/app/components/rail/site-session-group-heading.tsx +59 -20
  467. package/src/app/components/session/session-tenancy-control.tsx +18 -0
  468. package/src/app/components/session/site-origin-link.test.tsx +73 -0
  469. package/src/app/components/session/site-origin-link.tsx +4 -2
  470. package/src/app/embed/memory-navigation.tsx +1 -0
  471. package/src/app/lib/actions/held-modifier.test.ts +101 -0
  472. package/src/app/lib/actions/held-modifier.ts +108 -0
  473. package/src/app/lib/console-site.tsx +38 -0
  474. package/src/app/lib/navigation.tsx +4 -0
  475. package/src/app/lib/routes.tsx +42 -0
  476. package/src/app/lib/session-failure-toasts.ts +26 -0
  477. package/src/app/lib/session-ui-features.tsx +18 -4
  478. package/src/app/lib/sessions-group.tsx +219 -30
  479. package/src/app/lib/site-opened.tsx +48 -0
  480. package/src/app/lib/site-session-groups.test.ts +173 -6
  481. package/src/app/lib/site-view-routes.test.ts +55 -0
  482. package/src/app/lib/use-session-list-hint-refresh.tsx +44 -4
  483. package/src/app/routes/artifacts.tsx +2 -29
  484. package/src/app/routes/session-transient-failures.test.tsx +343 -0
  485. package/src/app/routes/session-unavailable.tsx +74 -3
  486. package/src/app/routes/session.tsx +4 -13
  487. package/src/app/routes/sessions-index.tsx +13 -9
  488. package/src/app/routes/site-view.test.tsx +476 -0
  489. package/src/app/routes/site-view.tsx +583 -0
  490. package/src/components/browser-viewer.tsx +16 -2
  491. package/src/hooks/internal.ts +129 -6
  492. package/src/hooks/use-client-config-flags.ts +8 -0
  493. package/src/hooks/use-session-events.ts +83 -9
  494. package/src/hooks/use-workspace-sessions.ts +21 -1
  495. package/src/messages/en.ts +3 -3
  496. package/src/session-list-model.ts +4 -0
  497. package/src/timeline/activity-rail.tsx +3 -2
  498. package/src/timeline/invoked-tool.ts +14 -4
  499. package/src/timeline/projection.ts +11 -6
  500. package/src/timeline/rolling-activity.tsx +6 -2
  501. package/src/timeline/tool-display-name.ts +2 -2
  502. package/src/timeline/tool-icon.tsx +165 -0
  503. package/src/timeline/tool-presentation.ts +207 -48
  504. package/src/timeline/tool-renderers.tsx +1 -70
  505. package/styles/compiled.css +38 -0
  506. package/dist/chunk-22ZBT6CN.js +0 -50
  507. package/dist/chunk-22ZBT6CN.js.map +0 -1
  508. package/dist/chunk-4R3JCVID.js.map +0 -1
  509. package/dist/chunk-4W7VISE7.js.map +0 -1
  510. package/dist/chunk-5JZYPZ72.js.map +0 -1
  511. package/dist/chunk-5MZTJMZ3.js.map +0 -1
  512. package/dist/chunk-6W3LF3DB.js.map +0 -1
  513. package/dist/chunk-ADJJQSYC.js.map +0 -1
  514. package/dist/chunk-APU42QDI.js.map +0 -1
  515. package/dist/chunk-BJIZ7PL7.js.map +0 -1
  516. package/dist/chunk-CVG4FILQ.js.map +0 -1
  517. package/dist/chunk-EF5SYXAY.js.map +0 -1
  518. package/dist/chunk-EHCUFCXM.js.map +0 -1
  519. package/dist/chunk-GZ64CASI.js.map +0 -1
  520. package/dist/chunk-I6VUUEXH.js.map +0 -1
  521. package/dist/chunk-JRXHSVD5.js.map +0 -1
  522. package/dist/chunk-KF3MF6FP.js.map +0 -1
  523. package/dist/chunk-MYNUBDU7.js.map +0 -1
  524. package/dist/chunk-NAWXARTY.js.map +0 -1
  525. package/dist/chunk-PM3OSANE.js.map +0 -1
  526. package/dist/chunk-Q35DT6I6.js.map +0 -1
  527. package/dist/chunk-R25ZKOZR.js +0 -24
  528. package/dist/chunk-R25ZKOZR.js.map +0 -1
  529. package/dist/chunk-RGPYMHKI.js.map +0 -1
  530. package/dist/chunk-RGW24ZZM.js.map +0 -1
  531. package/dist/chunk-ROQOVH4N.js.map +0 -1
  532. package/dist/chunk-TQGJN5UZ.js.map +0 -1
  533. package/dist/chunk-X7L4H4VG.js.map +0 -1
  534. package/dist/chunk-XFNLU7EW.js.map +0 -1
  535. package/dist/chunk-Z5WMLJKI.js.map +0 -1
  536. /package/dist/{browser-viewer-RYYQSRTC.js.map → app/lib/console-site.js.map} +0 -0
  537. /package/dist/{chat-interactive-block-ABCRKXJ4.js.map → app/lib/site-opened.js.map} +0 -0
  538. /package/dist/{computer-viewer-KEDVLD42.js.map → browser-viewer-QMCNV4RI.js.map} +0 -0
  539. /package/dist/{embedded-new-voice-LFHWWYD2.js.map → chat-interactive-block-PMIAUXSO.js.map} +0 -0
  540. /package/dist/{chunk-TGVVEGZG.js.map → chunk-22FFOHPT.js.map} +0 -0
  541. /package/dist/{chunk-UHFWF6ZU.js.map → chunk-2FPS5H2D.js.map} +0 -0
  542. /package/dist/{chunk-5POTDNQT.js.map → chunk-2NC7NZCE.js.map} +0 -0
  543. /package/dist/{chunk-ZKYYZH6L.js.map → chunk-2QBYDGWO.js.map} +0 -0
  544. /package/dist/{chunk-TWXIFWBD.js.map → chunk-34EU25RL.js.map} +0 -0
  545. /package/dist/{chunk-R63QEVPK.js.map → chunk-35BC2FU2.js.map} +0 -0
  546. /package/dist/{chunk-PTGRFAMH.js.map → chunk-3ABPIUCK.js.map} +0 -0
  547. /package/dist/{chunk-S4SC5SSV.js.map → chunk-3GU7AWG7.js.map} +0 -0
  548. /package/dist/{chunk-722UO6YQ.js.map → chunk-3PEXVG4D.js.map} +0 -0
  549. /package/dist/{chunk-63VGE4OH.js.map → chunk-3RMKPHBL.js.map} +0 -0
  550. /package/dist/{chunk-RQDFYQHA.js.map → chunk-3STBLX4O.js.map} +0 -0
  551. /package/dist/{chunk-S4EZ3JUB.js.map → chunk-3X5FKDYQ.js.map} +0 -0
  552. /package/dist/{chunk-KTRKZRID.js.map → chunk-4GLLWX33.js.map} +0 -0
  553. /package/dist/{chunk-SD2K5ZN5.js.map → chunk-4LPA25NQ.js.map} +0 -0
  554. /package/dist/{chunk-KWKGBGAF.js.map → chunk-4RMN4E2Y.js.map} +0 -0
  555. /package/dist/{chunk-X7ASQHR6.js.map → chunk-4SAGYEVB.js.map} +0 -0
  556. /package/dist/{chunk-HTT3FB7T.js.map → chunk-4VK2R5QC.js.map} +0 -0
  557. /package/dist/{chunk-DDK4WFJ3.js.map → chunk-4XQC7VLT.js.map} +0 -0
  558. /package/dist/{chunk-IVOA3DXA.js.map → chunk-4YXAQMTD.js.map} +0 -0
  559. /package/dist/{chunk-HOJGAJAB.js.map → chunk-52WK2GGK.js.map} +0 -0
  560. /package/dist/{chunk-NYZQ7LO7.js.map → chunk-552UYIQ7.js.map} +0 -0
  561. /package/dist/{chunk-LEXPBQ56.js.map → chunk-5DSKMG2I.js.map} +0 -0
  562. /package/dist/{chunk-WNG757ID.js.map → chunk-5FA455GR.js.map} +0 -0
  563. /package/dist/{chunk-HWDGJFM4.js.map → chunk-5FEN3KYH.js.map} +0 -0
  564. /package/dist/{chunk-OSVHU2WU.js.map → chunk-5JHRMUAZ.js.map} +0 -0
  565. /package/dist/{chunk-RKB2Z457.js.map → chunk-5VGJXWQ2.js.map} +0 -0
  566. /package/dist/{chunk-GFUUFM2O.js.map → chunk-5W6ZDKRR.js.map} +0 -0
  567. /package/dist/{chunk-6PQNLL4E.js.map → chunk-5W7KJ5NQ.js.map} +0 -0
  568. /package/dist/{chunk-Q35YZVDZ.js.map → chunk-5Y2FPLZE.js.map} +0 -0
  569. /package/dist/{chunk-F3NERYBQ.js.map → chunk-62VER7O4.js.map} +0 -0
  570. /package/dist/{chunk-FBMU3VK5.js.map → chunk-6DCEDIF6.js.map} +0 -0
  571. /package/dist/{chunk-LE2EDBXU.js.map → chunk-73WI7FL2.js.map} +0 -0
  572. /package/dist/{chunk-ZRJCGBVV.js.map → chunk-7FJMRJDG.js.map} +0 -0
  573. /package/dist/{chunk-7KGKDWWR.js.map → chunk-7HFLYNWN.js.map} +0 -0
  574. /package/dist/{chunk-72J6C2AJ.js.map → chunk-7KIENXRE.js.map} +0 -0
  575. /package/dist/{chunk-CBY5CXBD.js.map → chunk-7NPCEBZE.js.map} +0 -0
  576. /package/dist/{chunk-46VBQG2D.js.map → chunk-7P4AQMGA.js.map} +0 -0
  577. /package/dist/{chunk-S7PVL7XH.js.map → chunk-A4BD4ZVB.js.map} +0 -0
  578. /package/dist/{chunk-73SOCVLS.js.map → chunk-AIEXYO2X.js.map} +0 -0
  579. /package/dist/{chunk-U7TC2XJQ.js.map → chunk-AJPW3SV4.js.map} +0 -0
  580. /package/dist/{chunk-HRJQAFKR.js.map → chunk-AX6YJA5U.js.map} +0 -0
  581. /package/dist/{chunk-P5WABK2H.js.map → chunk-BCM7C3MJ.js.map} +0 -0
  582. /package/dist/{chunk-DT7BORXG.js.map → chunk-BMJTNPWK.js.map} +0 -0
  583. /package/dist/{chunk-HIHO2QE7.js.map → chunk-BT2MVGHT.js.map} +0 -0
  584. /package/dist/{chunk-3XOISKZC.js.map → chunk-BXQYAAVE.js.map} +0 -0
  585. /package/dist/{chunk-IBTXYLBW.js.map → chunk-CCFWY4GF.js.map} +0 -0
  586. /package/dist/{chunk-ZOC3OP6F.js.map → chunk-CCR33J7L.js.map} +0 -0
  587. /package/dist/{chunk-GTQ3SNEI.js.map → chunk-CD3MO3IC.js.map} +0 -0
  588. /package/dist/{chunk-WSMYOLHG.js.map → chunk-CDEXRJB6.js.map} +0 -0
  589. /package/dist/{chunk-3GLAPCVI.js.map → chunk-CFFNT2OY.js.map} +0 -0
  590. /package/dist/{chunk-HO5Y2OOX.js.map → chunk-CMLJSF2F.js.map} +0 -0
  591. /package/dist/{chunk-RA3FNMWF.js.map → chunk-CP7ZQHBW.js.map} +0 -0
  592. /package/dist/{chunk-IOKSNX74.js.map → chunk-D5OWJZQR.js.map} +0 -0
  593. /package/dist/{chunk-SQGXMHJO.js.map → chunk-DGLRZMXL.js.map} +0 -0
  594. /package/dist/{chunk-GNEHAPKV.js.map → chunk-DJFTH2DI.js.map} +0 -0
  595. /package/dist/{chunk-HQG4SLTE.js.map → chunk-DYJGYGPB.js.map} +0 -0
  596. /package/dist/{chunk-4EAF3HSD.js.map → chunk-EJ7WARW7.js.map} +0 -0
  597. /package/dist/{chunk-3AA6RNGE.js.map → chunk-ENS6E4RZ.js.map} +0 -0
  598. /package/dist/{chunk-OOEO4MKY.js.map → chunk-EPWD4KRA.js.map} +0 -0
  599. /package/dist/{chunk-PN66T6JA.js.map → chunk-EQE3MNQN.js.map} +0 -0
  600. /package/dist/{chunk-TSBE4KOQ.js.map → chunk-EWL6NDOO.js.map} +0 -0
  601. /package/dist/{chunk-OO2T63BY.js.map → chunk-EYS4ZOF5.js.map} +0 -0
  602. /package/dist/{chunk-7CZTKBTI.js.map → chunk-FDAV72IX.js.map} +0 -0
  603. /package/dist/{chunk-AG7VGUIW.js.map → chunk-FFNPUSVO.js.map} +0 -0
  604. /package/dist/{chunk-P5T36BA3.js.map → chunk-FRP64DEK.js.map} +0 -0
  605. /package/dist/{chunk-KBF3SE7G.js.map → chunk-FSP334UU.js.map} +0 -0
  606. /package/dist/{chunk-BSX2R4CW.js.map → chunk-FTX5CNHA.js.map} +0 -0
  607. /package/dist/{chunk-O756O2I7.js.map → chunk-FWOBNL2A.js.map} +0 -0
  608. /package/dist/{chunk-6NIB2KGJ.js.map → chunk-FWYEZ3LE.js.map} +0 -0
  609. /package/dist/{chunk-DLOYMWUQ.js.map → chunk-G4HQUBO4.js.map} +0 -0
  610. /package/dist/{chunk-CSHBR2IZ.js.map → chunk-GDLDBR6B.js.map} +0 -0
  611. /package/dist/{chunk-U36PO27Q.js.map → chunk-GHHM6WN4.js.map} +0 -0
  612. /package/dist/{chunk-OANSIX34.js.map → chunk-GRSODLVO.js.map} +0 -0
  613. /package/dist/{chunk-EU6XSQFM.js.map → chunk-GXW2I2M2.js.map} +0 -0
  614. /package/dist/{chunk-5JEIDFPD.js.map → chunk-GZS37O3G.js.map} +0 -0
  615. /package/dist/{chunk-HNYJEAES.js.map → chunk-HQWVDQXW.js.map} +0 -0
  616. /package/dist/{chunk-YXOKAG66.js.map → chunk-HU6JTNWF.js.map} +0 -0
  617. /package/dist/{chunk-QRVNI5V6.js.map → chunk-I6KIQKU6.js.map} +0 -0
  618. /package/dist/{chunk-BNUPYHHZ.js.map → chunk-IDXTASGN.js.map} +0 -0
  619. /package/dist/{chunk-L6RXRRN3.js.map → chunk-ILDOW2IQ.js.map} +0 -0
  620. /package/dist/{chunk-VUHPA3XQ.js.map → chunk-ITX2TB4K.js.map} +0 -0
  621. /package/dist/{chunk-BXRIQZAH.js.map → chunk-J22HD2PB.js.map} +0 -0
  622. /package/dist/{chunk-U47YDYLQ.js.map → chunk-J5MEDX7C.js.map} +0 -0
  623. /package/dist/{chunk-F6LBGYS6.js.map → chunk-J7FBBLHF.js.map} +0 -0
  624. /package/dist/{chunk-QZRDCFHI.js.map → chunk-JM4HQPAI.js.map} +0 -0
  625. /package/dist/{chunk-PIVGX42P.js.map → chunk-JNY5MT3I.js.map} +0 -0
  626. /package/dist/{chunk-XWWXIZFP.js.map → chunk-JO6R5EXF.js.map} +0 -0
  627. /package/dist/{chunk-NWZW2WHN.js.map → chunk-JQCGPTZ6.js.map} +0 -0
  628. /package/dist/{chunk-OR37STQZ.js.map → chunk-KEXYBG7Q.js.map} +0 -0
  629. /package/dist/{chunk-AZVANYMB.js.map → chunk-KUNFUSZ7.js.map} +0 -0
  630. /package/dist/{chunk-DXZNDKQD.js.map → chunk-LEEJBZ5B.js.map} +0 -0
  631. /package/dist/{chunk-AOLE4IRZ.js.map → chunk-LF5CBAOS.js.map} +0 -0
  632. /package/dist/{chunk-RIMKJBCD.js.map → chunk-LMPTC4CX.js.map} +0 -0
  633. /package/dist/{chunk-3KVWXKD6.js.map → chunk-LQ47YL6E.js.map} +0 -0
  634. /package/dist/{chunk-RSNYGEVZ.js.map → chunk-LT4J7RHI.js.map} +0 -0
  635. /package/dist/{chunk-U3HSFCON.js.map → chunk-MCTTONOW.js.map} +0 -0
  636. /package/dist/{chunk-7DU35P5J.js.map → chunk-MIECLOQC.js.map} +0 -0
  637. /package/dist/{chunk-FM4OUCC2.js.map → chunk-MOKYT3X3.js.map} +0 -0
  638. /package/dist/{chunk-L7YURQI2.js.map → chunk-MXLKI7BI.js.map} +0 -0
  639. /package/dist/{chunk-XRRSFQEV.js.map → chunk-NAZZLAWX.js.map} +0 -0
  640. /package/dist/{chunk-UWJ5P5CU.js.map → chunk-NEK4WB5P.js.map} +0 -0
  641. /package/dist/{chunk-6L7U46Y2.js.map → chunk-NKNVIO66.js.map} +0 -0
  642. /package/dist/{chunk-JKUICTLM.js.map → chunk-NLAFNMPK.js.map} +0 -0
  643. /package/dist/{chunk-4LKNIGHB.js.map → chunk-O2SBHS2N.js.map} +0 -0
  644. /package/dist/{chunk-DWPOQ3S5.js.map → chunk-OTMWHZBY.js.map} +0 -0
  645. /package/dist/{chunk-JTN3T4QN.js.map → chunk-PCFK7HKD.js.map} +0 -0
  646. /package/dist/{chunk-VVCDB2T7.js.map → chunk-PCJLH45G.js.map} +0 -0
  647. /package/dist/{chunk-PZ24CYDO.js.map → chunk-PFAUGEV5.js.map} +0 -0
  648. /package/dist/{chunk-HGMWMK5K.js.map → chunk-PO3BH3KQ.js.map} +0 -0
  649. /package/dist/{chunk-B74GSYR6.js.map → chunk-PUTS4DYW.js.map} +0 -0
  650. /package/dist/{chunk-JSIDLTTG.js.map → chunk-PZ2V2XIK.js.map} +0 -0
  651. /package/dist/{chunk-TMEQPODK.js.map → chunk-PZ37VDB5.js.map} +0 -0
  652. /package/dist/{chunk-LVONK3YQ.js.map → chunk-QRKTESVE.js.map} +0 -0
  653. /package/dist/{chunk-HT5WSUC7.js.map → chunk-QXEDIDBZ.js.map} +0 -0
  654. /package/dist/{chunk-WURSS6MP.js.map → chunk-R66YMYJU.js.map} +0 -0
  655. /package/dist/{chunk-HDHK3SXK.js.map → chunk-RFLYID6H.js.map} +0 -0
  656. /package/dist/{chunk-JK7C5A4I.js.map → chunk-RQNZDTKT.js.map} +0 -0
  657. /package/dist/{chunk-ST22GONV.js.map → chunk-S37GP7LX.js.map} +0 -0
  658. /package/dist/{chunk-A2EWJQXX.js.map → chunk-SM5QX6UK.js.map} +0 -0
  659. /package/dist/{chunk-FBE6AIIW.js.map → chunk-SOKNCW5U.js.map} +0 -0
  660. /package/dist/{chunk-UP4BE32Y.js.map → chunk-SY2AAZNB.js.map} +0 -0
  661. /package/dist/{chunk-33TPANCR.js.map → chunk-TFK4KFKA.js.map} +0 -0
  662. /package/dist/{chunk-4432A3HQ.js.map → chunk-TIQPKOFW.js.map} +0 -0
  663. /package/dist/{chunk-HPPKLBTJ.js.map → chunk-TJQDL3JH.js.map} +0 -0
  664. /package/dist/{chunk-FD4Q5KFL.js.map → chunk-TLL22FFO.js.map} +0 -0
  665. /package/dist/{chunk-QM5H4FPT.js.map → chunk-TV6BWONY.js.map} +0 -0
  666. /package/dist/{chunk-4VKA5O7T.js.map → chunk-U6MPB3K6.js.map} +0 -0
  667. /package/dist/{chunk-XOFUXMPP.js.map → chunk-ULJAOMJA.js.map} +0 -0
  668. /package/dist/{chunk-H5EVWF6L.js.map → chunk-UNNJUJVD.js.map} +0 -0
  669. /package/dist/{chunk-Z6DKXQG7.js.map → chunk-UXXFMF4X.js.map} +0 -0
  670. /package/dist/{chunk-OBQVTCTW.js.map → chunk-UYNCMZX5.js.map} +0 -0
  671. /package/dist/{chunk-KZHW27BV.js.map → chunk-V4QZ7UBK.js.map} +0 -0
  672. /package/dist/{chunk-SUVEDKE2.js.map → chunk-VH5EGTH2.js.map} +0 -0
  673. /package/dist/{chunk-QEJTQTF5.js.map → chunk-W6T5HR3Z.js.map} +0 -0
  674. /package/dist/{chunk-VP62LPLW.js.map → chunk-WCMG4HYI.js.map} +0 -0
  675. /package/dist/{chunk-GZLLDA6P.js.map → chunk-WEFN327U.js.map} +0 -0
  676. /package/dist/{chunk-7BST7BA6.js.map → chunk-WKHUZIOW.js.map} +0 -0
  677. /package/dist/{chunk-ANHUMDJX.js.map → chunk-WNDTLK44.js.map} +0 -0
  678. /package/dist/{chunk-2DS4UOYQ.js.map → chunk-WSZQNTVN.js.map} +0 -0
  679. /package/dist/{chunk-GALB2G3W.js.map → chunk-X2AH4DRF.js.map} +0 -0
  680. /package/dist/{chunk-Z2DAWUO3.js.map → chunk-XMNUZUUA.js.map} +0 -0
  681. /package/dist/{chunk-GAIM5RNE.js.map → chunk-XN7NSPE6.js.map} +0 -0
  682. /package/dist/{chunk-FLGUVRR7.js.map → chunk-Y5BSA3I7.js.map} +0 -0
  683. /package/dist/{chunk-QCD5Y7K5.js.map → chunk-YEROLKOA.js.map} +0 -0
  684. /package/dist/{chunk-NDF3SH3X.js.map → chunk-YJPKDRI2.js.map} +0 -0
  685. /package/dist/{chunk-VAIESMPY.js.map → chunk-YVBHGMKC.js.map} +0 -0
  686. /package/dist/{chunk-AD22P5X3.js.map → chunk-YXA2EKV3.js.map} +0 -0
  687. /package/dist/{chunk-FDNJVZRE.js.map → chunk-YYCOSTUU.js.map} +0 -0
  688. /package/dist/{chunk-NLMTNEWW.js.map → chunk-Z6E6TUAE.js.map} +0 -0
  689. /package/dist/{chunk-BJW7G6EF.js.map → chunk-Z7IGO5EA.js.map} +0 -0
  690. /package/dist/{chunk-NCX5SAQY.js.map → chunk-ZEIFJ6PX.js.map} +0 -0
  691. /package/dist/{chunk-4EONHNJU.js.map → chunk-ZVVT72MT.js.map} +0 -0
  692. /package/dist/{embedded-voice-6QS4ANNX.js.map → computer-viewer-25AJIDYA.js.map} +0 -0
  693. /package/dist/{model-policy-picker-menu-CURJ247L.js.map → embedded-new-voice-RZZEJT6M.js.map} +0 -0
  694. /package/dist/{sandbox-files-4FBG3GS2.js.map → embedded-voice-6OKSSPLW.js.map} +0 -0
  695. /package/dist/{fleet-decision-row-QNSTP3VX.js.map → fleet-decision-row-NN2HXDX3.js.map} +0 -0
  696. /package/dist/{session-realtime-2XIB254N.js.map → model-policy-picker-menu-VVFGGAI6.js.map} +0 -0
  697. /package/dist/{platform-activity-row-BMXXNZKX.js.map → platform-activity-row-ENQVIFTL.js.map} +0 -0
  698. /package/dist/{timeline-annotation-markers-X4K2IEOO.js.map → timeline-annotation-markers-KHNYNY2J.js.map} +0 -0
  699. /package/dist/{timeline-annotation-selection-MEHBW676.js.map → timeline-annotation-selection-AXEDJHBP.js.map} +0 -0
  700. /package/dist/{timeline-annotations-dialog-U2FPQ3UY.js.map → timeline-annotations-dialog-AV4ZBXRC.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/queue-surface.tsx","../src/components/session-list.tsx","../src/components/open-geni-chat.tsx","../src/components/session-commands-panel.tsx","../src/hooks/use-session-background-commands.ts","../src/components/session-commands.tsx","../src/timeline/startup-timings.tsx"],"sourcesContent":["import { Loader2Icon } from \"lucide-react\";\nimport { lazy, Suspense, type ComponentType } from \"react\";\n\nimport type { QueueSurfaceProps } from \"./queue-surface-implementation\";\nexport { requestQueueDraftEdit } from \"./queue-draft-policy\";\nimport { EmptyQueueStateSurface } from \"./queue-surface-state\";\nimport { useOpenGeniText } from \"../messages/runtime\";\n\nexport type { QueueSurfaceProps } from \"./queue-surface-implementation\";\n\nconst loadQueueSurface = () => import(\"./queue-surface-implementation\");\ntype QueueSurfaceModule = { QueueSurface: ComponentType<QueueSurfaceProps> };\ntype QueueSurfaceLoader = () => Promise<QueueSurfaceModule>;\n\n/** The sole pending-input surface: compact above Goal, Agents, and composer. */\nexport const QueueSurface = createQueueSurface(loadQueueSurface);\n\n/** @internal Deterministic Suspense seam for the QueueSurface regression suite. */\nexport function createQueueSurfaceForTest(loadImplementation: QueueSurfaceLoader) {\n return createQueueSurface(loadImplementation);\n}\n\nfunction createQueueSurface(loadImplementation: QueueSurfaceLoader) {\n const LazyQueueSurface = lazy(async () => ({\n default: (await loadImplementation()).QueueSurface,\n }));\n\n return function QueueSurfaceBoundary(props: QueueSurfaceProps) {\n const { queue } = props;\n if (queue.queue.length + queue.pendingInputs.length === 0) {\n if (!queue.stoppingPreviousAttempt && !queue.error && !queue.mutationError) return null;\n return <EmptyQueueStateSurface queue={queue} />;\n }\n\n return (\n <Suspense fallback={<QueueSurfaceFallback />}>\n <LazyQueueSurface {...props} />\n </Suspense>\n );\n };\n}\n\nfunction QueueSurfaceFallback() {\n const t = useOpenGeniText();\n return (\n <div\n aria-live=\"polite\"\n className=\"og-root mx-auto mb-2 w-full max-w-3xl shrink-0 px-4 sm:px-6\"\n data-testid=\"queue-surface-loading\"\n role=\"status\"\n >\n <div className=\"overflow-hidden rounded-lg border border-border bg-surface/80 shadow-sm\">\n <div className=\"flex items-center gap-2 px-3 py-2 text-og-control text-fg-muted pointer-coarse:min-h-[44px]\">\n <Loader2Icon\n aria-hidden=\"true\"\n className=\"size-3.5 shrink-0 animate-spin motion-reduce:animate-none\"\n />\n {t(\"queueSurface.loadingInputs\")}\n </div>\n </div>\n </div>\n );\n}\n","import { deriveSessionDisplayTitle, type OpenGeniClient, type Session } from \"@opengeni/sdk\";\nimport { ArchiveIcon, PencilIcon, PlusIcon } from \"lucide-react\";\nimport { useEffect, useRef, useState, type FormEvent } from \"react\";\nimport { useClientConfigFlags } from \"../hooks/use-client-config-flags\";\nimport { useWorkspaceSessions } from \"../hooks/use-workspace-sessions\";\nimport { cn } from \"../lib/cn\";\nimport { formatRelativeTime } from \"../lib/format\";\nimport { useErrorMessage } from \"../lib/error-message\";\nimport { useOpenGeni, type ClientOverride } from \"../session-context\";\nimport { useOpenGeniText, type OpenGeniText } from \"../messages/runtime\";\n\nexport type SessionListLabels = {\n heading: string;\n newChat: string;\n empty: string;\n loading: string;\n loadMore: string;\n rename: string;\n archive: string;\n save: string;\n cancel: string;\n};\n\nconst DEFAULT_LABELS = (t: OpenGeniText): SessionListLabels => ({\n heading: t(\"sessionList.chats\"),\n newChat: t(\"sessionList.newChat\"),\n empty: t(\"sessionList.noChatsYet\"),\n loading: t(\"sessionList.loadingChats\"),\n loadMore: t(\"sessionList.showMore\"),\n rename: t(\"sessionList.rename\"),\n archive: t(\"sessionList.archive\"),\n save: t(\"sessionList.save\"),\n cancel: t(\"sessionList.cancel\"),\n});\n\nexport type SessionListProps = ClientOverride & {\n selectedSessionId?: string | null | undefined;\n onSelect: (sessionId: string) => void;\n /** Shown as a \"New chat\" button when provided. */\n onNewChat?: (() => void) | undefined;\n /** Allow inline rename (`updateSession`). Defaults to true. */\n rename?: boolean | undefined;\n /**\n * Allow archiving (`updateSessionArchive`). Defaults to true; hidden when the\n * session proxy reports archive disabled (`archive: false`).\n */\n archive?: boolean | undefined;\n /** Called after the selected chat was archived, so the host can move on. */\n onArchived?: ((sessionId: string) => void) | undefined;\n pageSize?: number | undefined;\n /** Change the reference to force a refetch (for example after creating a chat). */\n refreshKey?: unknown;\n labels?: Partial<SessionListLabels> | undefined;\n className?: string | undefined;\n};\n\ntype ArchiveClient = Partial<Pick<OpenGeniClient, \"updateSessionArchive\">>;\n\n/**\n * The workspace's root chats for the current user, newest activity first.\n * Through `createSessionProxyHandler` the list is limited to the chats the\n * resolved user created (or everything they may read, with `sessionList:\n * \"visible\"`); Opengeni enforces visibility either way.\n */\nexport function SessionList({\n client,\n workspaceId,\n selectedSessionId,\n onSelect,\n onNewChat,\n rename = true,\n archive = true,\n onArchived,\n pageSize = 30,\n refreshKey,\n labels: labelOverrides,\n className,\n}: SessionListProps) {\n const t = useOpenGeniText();\n const labels = { ...DEFAULT_LABELS(t), ...labelOverrides };\n const scope = { client, workspaceId };\n const context = useOpenGeni(scope);\n const [limit, setLimit] = useState(pageSize);\n const list = useWorkspaceSessions({\n ...scope,\n parentSessionId: null,\n archiveStatus: \"active\",\n sortBy: \"updatedAt\",\n limit,\n });\n const refresh = list.refresh;\n const firstRefreshKey = useRef(refreshKey);\n useEffect(() => {\n if (Object.is(refreshKey, firstRefreshKey.current)) return;\n firstRefreshKey.current = refreshKey;\n void refresh();\n }, [refresh, refreshKey]);\n const [editing, setEditing] = useState<{ id: string; title: string } | null>(null);\n const [busy, setBusy] = useState<string | null>(null);\n const [error, setError] = useState<{ cause: unknown } | null>(null);\n const formatError = useErrorMessage();\n const archiveClient = context.client as unknown as ArchiveClient;\n // A session proxy with `archive: false` reports it; hide what would fail.\n const config = useClientConfigFlags(context.client as never);\n const canArchive =\n archive && config.archive && typeof archiveClient.updateSessionArchive === \"function\";\n\n const run = async (id: string, action: () => Promise<unknown>) => {\n setBusy(id);\n setError(null);\n try {\n await action();\n await list.refresh();\n } catch (cause) {\n setError({ cause });\n } finally {\n setBusy(null);\n }\n };\n\n const saveTitle = (event: FormEvent) => {\n event.preventDefault();\n const current = editing;\n if (!current) return;\n const title = current.title.trim();\n setEditing(null);\n if (!title) return;\n void run(current.id, () =>\n context.client.updateSession(context.workspaceId, current.id, { title }),\n );\n };\n\n const archiveSession = (session: Session) =>\n void run(session.id, async () => {\n await archiveClient.updateSessionArchive!(context.workspaceId, session.id, {\n archived: true,\n });\n onArchived?.(session.id);\n });\n\n const sessions = list.sessions;\n return (\n <nav\n className={cn(\"flex min-h-0 min-w-0 flex-col gap-1 text-og-fg\", className)}\n aria-label={labels.heading}\n data-og-session-list=\"\"\n >\n <div className=\"flex items-center justify-between gap-2 px-2 pb-1 pt-2\">\n <h2 className=\"text-og-sm font-semibold text-og-fg-muted\">{labels.heading}</h2>\n {onNewChat ? (\n <button\n type=\"button\"\n onClick={onNewChat}\n className=\"inline-flex items-center gap-1 rounded-md px-2 py-1 text-og-control text-og-fg hover:bg-og-surface-2\"\n data-og-new-chat=\"\"\n >\n <PlusIcon className=\"size-3.5\" aria-hidden />\n {labels.newChat}\n </button>\n ) : null}\n </div>\n {error || list.error ? (\n <p role=\"alert\" className=\"px-2 text-og-xs text-og-status-failed\">\n {formatError(error ? error.cause : list.error)}\n </p>\n ) : null}\n <ul className=\"flex min-h-0 flex-1 flex-col gap-0.5 overflow-y-auto px-1 pb-2\">\n {list.loading && sessions.length === 0 ? (\n <li className=\"px-2 py-2 text-og-xs text-og-fg-subtle\">{labels.loading}</li>\n ) : null}\n {!list.loading && !list.error && sessions.length === 0 ? (\n <li className=\"px-2 py-2 text-og-xs text-og-fg-subtle\">{labels.empty}</li>\n ) : null}\n {sessions.map((session) => {\n const selected = session.id === selectedSessionId;\n const title = deriveSessionDisplayTitle(session);\n if (editing?.id === session.id) {\n return (\n <li key={session.id}>\n <form onSubmit={saveTitle} className=\"flex items-center gap-1 px-1 py-1\">\n <input\n aria-label={labels.rename}\n value={editing.title}\n maxLength={200}\n autoFocus\n onChange={(event) => setEditing({ id: session.id, title: event.target.value })}\n onKeyDown={(event) => {\n if (event.key === \"Escape\") setEditing(null);\n }}\n className=\"min-w-0 flex-1 rounded-md border border-og-border bg-og-bg px-2 py-1 text-og-sm text-og-fg\"\n />\n <button\n type=\"submit\"\n className=\"rounded-md px-2 py-1 text-og-xs text-og-fg hover:bg-og-surface-2\"\n >\n {labels.save}\n </button>\n </form>\n </li>\n );\n }\n return (\n <li key={session.id} className=\"group relative\">\n <button\n type=\"button\"\n onClick={() => onSelect(session.id)}\n aria-current={selected ? \"true\" : undefined}\n disabled={busy === session.id}\n className={cn(\n \"flex w-full min-w-0 flex-col items-start rounded-md px-2 py-1.5 text-left\",\n selected ? \"bg-og-surface-2\" : \"hover:bg-og-surface-1\",\n )}\n data-og-session-row=\"\"\n >\n <span className=\"w-full truncate pr-12 text-og-sm text-og-fg\">{title}</span>\n <span className=\"text-og-xs text-og-fg-subtle\">\n {formatRelativeTime(t, session.updatedAt)}\n </span>\n </button>\n <span className=\"absolute right-1 top-1.5 hidden gap-0.5 group-focus-within:flex group-hover:flex pointer-coarse:flex\">\n {rename ? (\n <button\n type=\"button\"\n aria-label={`${labels.rename}: ${title}`}\n onClick={() => setEditing({ id: session.id, title: session.title ?? title })}\n className=\"rounded p-1 text-og-fg-subtle hover:bg-og-surface-3 hover:text-og-fg\"\n >\n <PencilIcon className=\"size-3.5\" aria-hidden />\n </button>\n ) : null}\n {canArchive ? (\n <button\n type=\"button\"\n aria-label={`${labels.archive}: ${title}`}\n onClick={() => archiveSession(session)}\n className=\"rounded p-1 text-og-fg-subtle hover:bg-og-surface-3 hover:text-og-fg\"\n >\n <ArchiveIcon className=\"size-3.5\" aria-hidden />\n </button>\n ) : null}\n </span>\n </li>\n );\n })}\n {list.nextCursor ? (\n <li>\n <button\n type=\"button\"\n onClick={() => setLimit((current) => current + pageSize)}\n className=\"w-full rounded-md px-2 py-1.5 text-left text-og-xs text-og-fg-muted hover:bg-og-surface-1\"\n >\n {labels.loadMore}\n </button>\n </li>\n ) : null}\n </ul>\n </nav>\n );\n}\n","import { MenuIcon, XIcon } from \"lucide-react\";\nimport { useCallback, useEffect, useRef, useState, type CSSProperties } from \"react\";\nimport type {\n CreatedConversation,\n NewConversationCreateOptions,\n} from \"../hooks/use-new-conversation\";\nimport { cn } from \"../lib/cn\";\nimport { notifyObserver } from \"../lib/notify-observer\";\nimport {\n useHostTheme,\n type HostSurfacePreference,\n type HostThemePreference,\n} from \"../lib/host-theme\";\nimport { useOpenGeni, type ClientOverride } from \"../session-context\";\nimport { NewConversation } from \"./new-conversation\";\nimport { useClientConfigFlags } from \"../hooks/use-client-config-flags\";\nimport { SessionConversation, type SessionConversationProps } from \"./session-conversation\";\nimport { SessionList, type SessionListLabels, type SessionListProps } from \"./session-list\";\nimport { SessionProxyScope, type SessionProxyBaseUrl } from \"./session-proxy-scope\";\nimport { useOpenGeniText, type OpenGeniText } from \"../messages/runtime\";\n\nexport type OpenGeniChatLabels = SessionListLabels & {\n openChats: string;\n closeChats: string;\n newChatPlaceholder: string;\n /** Heading above the new-chat composer; empty hides it. */\n newChatTitle: string;\n send: string;\n newChatUnavailable: string;\n newChatRetry?: string | undefined;\n newChatPending?: string | undefined;\n newChatFinishingUploads?: string | undefined;\n};\n\nconst DEFAULT_LABELS = (t: OpenGeniText): Omit<OpenGeniChatLabels, keyof SessionListLabels> => ({\n openChats: t(\"openGeniChat.openChats\"),\n closeChats: t(\"openGeniChat.closeChats\"),\n newChatPlaceholder: t(\"openGeniChat.askAnything\"),\n newChatTitle: t(\"openGeniChat.howCanIHelp\"),\n send: t(\"openGeniChat.send\"),\n newChatUnavailable: t(\"openGeniChat.newChatsAreNotEnabled\"),\n});\n\n/** What the first message carries besides its text. */\nexport type OpenGeniChatCreateOptions = NewConversationCreateOptions;\n\nexport type OpenGeniChatProps = ClientOverride &\n SessionProxyBaseUrl & {\n /** Controlled selection. `null` shows the new-chat composer. */\n sessionId?: string | null | undefined;\n /** Initial selection when uncontrolled. Defaults to a new chat. */\n defaultSessionId?: string | null | undefined;\n onSessionChange?: ((sessionId: string | null) => void) | undefined;\n /**\n * Create a chat from its first message. Defaults to `client.createSession`\n * with `{ initialMessage, idempotencyKey }` plus the attached files and any\n * model choice, which `createSessionProxyHandler` accepts when the server\n * supplies a `createSession` hook. Return the new id.\n */\n createSession?:\n | ((\n initialMessage: string,\n idempotencyKey: string,\n options: OpenGeniChatCreateOptions,\n ) => Promise<string>)\n | undefined;\n /**\n * Hide the \"New chat\" entry point. It is also hidden when the session proxy\n * reports chat creation unavailable (no `createSession` hook) and no\n * `createSession` prop is given.\n */\n newChat?: boolean | undefined;\n /**\n * Forwarded to the conversation (message rendering, tool renderers,\n * composer...). `attachments`, `modelPicker`, `modelPickerProps`, and\n * `composerProps` also apply to the new-chat composer.\n */\n conversationProps?: Omit<\n SessionConversationProps,\n \"sessionId\" | \"client\" | \"workspaceId\" | \"baseUrl\" | \"headers\" | \"fetch\"\n >;\n /** Forwarded to the list (rename/archive toggles, page size). */\n listProps?: Pick<SessionListProps, \"rename\" | \"archive\" | \"pageSize\"> | undefined;\n labels?: Partial<OpenGeniChatLabels> | undefined;\n className?: string | undefined;\n /** Defaults to filling the host. */\n height?: CSSProperties[\"height\"];\n /**\n * Light or dark. Defaults to `auto`: follow the host page (an enclosing\n * `data-og-theme`, `class=\"dark\"`/`data-theme` on <html> or <body>, the\n * host's `color-scheme`, then its background), not the OS setting alone.\n */\n theme?: HostThemePreference | undefined;\n /**\n * `host` (default) derives backgrounds and cards from the host background so\n * the chat blends in; `theme` uses the `--og-color-*` surface tokens as they\n * are. Customized surface tokens are always kept.\n */\n surface?: HostSurfacePreference | undefined;\n };\n\n/**\n * A complete chat experience: the user's chat list plus the conversation.\n * The list is a sidebar when the component is wide and a drawer when narrow\n * (container-based, so it adapts inside panels as well as full pages).\n * `<OpenGeniChat baseUrl=\"/api/opengeni\" />` needs no provider: it talks to\n * your session proxy and uses the workspace the proxy resolves.\n */\nexport function OpenGeniChat({ baseUrl, headers, fetch, ...props }: OpenGeniChatProps) {\n if (baseUrl === undefined) return <Chat {...props} />;\n const { client, workspaceId, ...rest } = props;\n return (\n <SessionProxyScope\n baseUrl={baseUrl}\n workspaceId={workspaceId}\n client={client}\n headers={headers}\n fetch={fetch}\n >\n <Chat {...rest} />\n </SessionProxyScope>\n );\n}\n\nfunction Chat({\n client,\n workspaceId,\n sessionId: controlledSessionId,\n defaultSessionId = null,\n onSessionChange,\n createSession,\n newChat = true,\n conversationProps,\n listProps,\n labels: labelOverrides,\n className,\n height = \"100%\",\n theme,\n surface,\n}: Omit<OpenGeniChatProps, \"baseUrl\" | \"headers\" | \"fetch\">) {\n const t = useOpenGeniText();\n const labels = { ...DEFAULT_LABELS(t), ...labelOverrides } as OpenGeniChatLabels;\n const scope = { client, workspaceId };\n const context = useOpenGeni(scope);\n const [uncontrolled, setUncontrolled] = useState<string | null>(defaultSessionId);\n const selected = controlledSessionId !== undefined ? controlledSessionId : uncontrolled;\n const [drawerOpen, setDrawerOpen] = useState(false);\n const [listRevision, setListRevision] = useState(0);\n const [handoff, setHandoff] = useState<CreatedConversation | null>(null);\n const root = useRef<HTMLDivElement>(null);\n const hostTheme = useHostTheme(root, { theme, surface });\n const config = useClientConfigFlags(context.client);\n // A host creator replaces the proxy route; otherwise trust the proxy's report.\n const canCreate = createSession !== undefined || config.sessionCreation;\n\n const select = useCallback(\n (next: string | null) => {\n setHandoff(null);\n if (controlledSessionId === undefined) setUncontrolled(next);\n notifyObserver(onSessionChange, next);\n setDrawerOpen(false);\n },\n [controlledSessionId, onSessionChange],\n );\n\n useEffect(() => {\n if (!handoff) return;\n // The child's native composer captures its seed on mount. Do not seed it\n // again after later navigation; voice keeps its separate one-shot handoff\n // until the lazy control reports consumption.\n if (selected === handoff.sessionId && !handoff.realtimeModel) setHandoff(null);\n else if (selected !== null && selected !== handoff.sessionId) setHandoff(null);\n }, [handoff, selected]);\n\n const list = (\n <SessionList\n {...scope}\n {...listProps}\n labels={labels}\n selectedSessionId={selected}\n onSelect={select}\n onNewChat={newChat && canCreate ? () => select(null) : undefined}\n onArchived={(archivedId) => {\n if (archivedId === selected) select(null);\n }}\n refreshKey={listRevision}\n className=\"h-full\"\n />\n );\n\n return (\n <div\n ref={root}\n className={cn(\n \"og-root og-chat relative flex min-h-0 min-w-0 bg-og-bg text-og-base text-og-fg\",\n className,\n )}\n style={{ ...hostTheme.style, height }}\n data-og-theme={hostTheme.attribute}\n data-og-host-theme=\"\"\n data-og-chat=\"\"\n >\n <aside\n className=\"og-chat-sidebar min-h-0 w-64 shrink-0 flex-col border-r border-og-border\"\n data-og-chat-sidebar=\"\"\n >\n {list}\n </aside>\n {drawerOpen ? (\n <div className=\"og-chat-drawer absolute inset-0 z-30 flex\" data-og-chat-drawer=\"\">\n <div className=\"flex h-full w-[min(20rem,85%)] flex-col border-r border-og-border bg-og-bg shadow-og-lg\">\n <div className=\"flex justify-end p-1\">\n <button\n type=\"button\"\n aria-label={labels.closeChats}\n onClick={() => setDrawerOpen(false)}\n className=\"rounded p-1.5 text-og-fg-muted hover:bg-og-surface-2\"\n >\n <XIcon className=\"size-4\" aria-hidden />\n </button>\n </div>\n <div className=\"min-h-0 flex-1\">{list}</div>\n </div>\n <button\n type=\"button\"\n aria-label={labels.closeChats}\n className=\"flex-1 bg-black/25\"\n onClick={() => setDrawerOpen(false)}\n />\n </div>\n ) : null}\n <main className=\"flex min-h-0 min-w-0 flex-1 flex-col\">\n <div className=\"og-chat-menu flex items-center gap-2 px-2 py-1\">\n <button\n type=\"button\"\n aria-label={labels.openChats}\n aria-expanded={drawerOpen}\n onClick={() => setDrawerOpen(true)}\n className=\"rounded p-1.5 text-og-fg-muted hover:bg-og-surface-2\"\n data-og-chat-menu=\"\"\n >\n <MenuIcon className=\"size-4\" aria-hidden />\n </button>\n <span className=\"text-og-sm font-semibold text-og-fg-muted\">{labels.heading}</span>\n </div>\n <div className=\"og-chat-main min-h-0 flex-1 px-3 pb-3 pt-1\">\n {selected ? (\n <SessionConversation\n {...conversationProps}\n // The first prompt and its startup row show from the first frame.\n {...(handoff?.sessionId === selected && handoff.initialMessage\n ? { pendingPrompt: { text: handoff.initialMessage, sentAt: handoff.sentAt } }\n : {})}\n composerOptions={{\n ...conversationProps?.composerOptions,\n ...(handoff?.sessionId === selected ? { initialDraft: handoff.draft } : {}),\n }}\n realtimeVoiceProps={{\n ...conversationProps?.realtimeVoiceProps,\n ...(handoff?.sessionId === selected && handoff.realtimeModel\n ? {\n realtimeAutostartModel: handoff.realtimeModel,\n onRealtimeAutostartConsumed: () => {\n setHandoff(null);\n notifyObserver(\n conversationProps?.realtimeVoiceProps?.onRealtimeAutostartConsumed,\n );\n },\n }\n : {}),\n }}\n // Sub-agent chats open in place, like a chat from the list.\n onOpenSession={conversationProps?.onOpenSession ?? select}\n {...scope}\n sessionId={selected}\n height=\"100%\"\n />\n ) : (\n <NewConversation\n {...scope}\n attachments={conversationProps?.attachments}\n modelPicker={conversationProps?.modelPicker}\n modelPickerProps={conversationProps?.modelPickerProps}\n composerProps={conversationProps?.composerProps}\n voiceInput={conversationProps?.voiceInput}\n realtimeVoice={conversationProps?.realtimeVoice}\n realtimeVoiceProps={conversationProps?.realtimeVoiceProps}\n labels={{\n ...(labels.newChatRetry ? { retry: labels.newChatRetry } : {}),\n ...(labels.newChatPending ? { pending: labels.newChatPending } : {}),\n ...(labels.newChatFinishingUploads\n ? { finishingUploads: labels.newChatFinishingUploads }\n : {}),\n title: labels.newChatTitle,\n send: labels.send,\n unavailable: labels.newChatUnavailable,\n placeholder:\n labelOverrides?.newChatPlaceholder ??\n conversationProps?.composerProps?.placeholder ??\n labels.newChatPlaceholder,\n }}\n enabled={canCreate}\n createSession={createSession}\n onCreated={(created) => {\n setListRevision((revision) => revision + 1);\n select(created.sessionId);\n setHandoff(created);\n }}\n />\n )}\n </div>\n </main>\n </div>\n );\n}\n","import { ChevronRightIcon, Loader2Icon, SquareIcon } from \"lucide-react\";\nimport { useState, type ReactNode } from \"react\";\nimport type { SessionBackgroundCommand } from \"@opengeni/sdk\";\nimport type { UseSessionBackgroundCommandsResult } from \"../hooks/use-session-background-commands\";\nimport { formatClockTime } from \"../lib/format\";\nimport { useErrorMessage } from \"../lib/error-message\";\nimport { useOpenGeniText } from \"../messages/runtime\";\n\n/** The current session's live commands. Settled commands belong to the timeline. */\nexport function SessionCommandsPanel({\n commands: state,\n readOnly = false,\n renderMetadata,\n compact = true,\n}: {\n commands: UseSessionBackgroundCommandsResult;\n readOnly?: boolean;\n renderMetadata?: (command: SessionBackgroundCommand) => ReactNode;\n compact?: boolean;\n}) {\n const t = useOpenGeniText();\n const formatError = useErrorMessage();\n const [pending, setPending] = useState<string | null>(null);\n const [error, setError] = useState<string | null>(null);\n const active = state.commands.filter(\n (command) => command.state === \"running\" || command.state === \"stopping\",\n );\n const stop = async (id: string) => {\n setPending(id);\n setError(null);\n try {\n await state.cancel(id);\n } catch (cause) {\n setError(formatError(cause));\n } finally {\n setPending(null);\n }\n };\n return (\n <div\n className={`space-y-2 ${compact ? \"text-og-xs\" : \"text-og-sm\"}`}\n data-og-session-commands=\"\"\n >\n {state.loading && active.length === 0 ? (\n <p role=\"status\" className=\"text-og-fg-muted\">\n {t(\"sessionCommandsPanel.loadingCommands\")}\n </p>\n ) : null}\n {state.error ? (\n <div role=\"alert\" className=\"flex items-center justify-between gap-2 text-og-danger\">\n <span>{t(\"sessionCommandsPanel.commandsUnavailable\")}</span>\n <button\n type=\"button\"\n className=\"underline outline-hidden focus-visible:ring-2 focus-visible:ring-og-accent/40\"\n onClick={() => void state.refresh()}\n >\n {t(\"sessionCommandsPanel.retry\")}\n </button>\n </div>\n ) : null}\n {!state.loading && !state.error && active.length === 0 ? (\n <p role=\"status\" className=\"text-og-fg-muted\">\n {t(\"sessionCommandsPanel.noBackgroundCommandsRunning\")}\n </p>\n ) : null}\n {active.length > 0 ? (\n <ul\n className={`${compact ? \"max-h-64 overflow-y-auto overscroll-contain\" : \"\"} divide-y divide-og-border/40`}\n >\n {active.map((command) => (\n <li key={command.id} className=\"flex items-start gap-3 py-2 first:pt-0 last:pb-0\">\n <div className=\"min-w-0 flex-1\">\n {renderMetadata?.(command)}\n <details className=\"group/command\">\n <summary\n className=\"flex cursor-pointer list-none items-center gap-1.5 rounded-og-sm font-mono text-og-fg outline-hidden focus-visible:ring-2 focus-visible:ring-og-accent/40\"\n title={t(\"sessionCommandsPanel.expandCommand\")}\n >\n <ChevronRightIcon className=\"size-3 shrink-0 text-og-fg-subtle transition-transform group-open/command:rotate-90\" />\n <span\n className=\"min-w-0 truncate\"\n title={\n command.commandText ??\n (command.commandPreview || t(\"sessionCommandsPanel.backgroundCommand\"))\n }\n >\n {command.commandText ??\n (command.commandPreview || t(\"sessionCommandsPanel.backgroundCommand\"))}\n </span>\n </summary>\n <div className=\"mt-2 space-y-1\">\n <p className=\"whitespace-pre-wrap break-all font-mono text-og-fg-muted\">\n {command.commandText ??\n (command.commandPreview || t(\"sessionCommandsPanel.backgroundCommand\"))}\n </p>\n <time\n className=\"block text-og-fg-subtle\"\n dateTime={command.startedAt}\n title={new Date(command.startedAt).toLocaleString(t.locale)}\n >\n {t(\"sessionCommandsPanel.startedClocktime\", {\n clockTime: formatClockTime(t, command.startedAt),\n })}\n </time>\n </div>\n </details>\n <p className=\"mt-1 text-og-fg-subtle\">\n {command.observationStatus === \"unavailable\"\n ? command.state === \"stopping\"\n ? t(\"sessionCommandsPanel.stopRequestedStatusUnavailable\")\n : t(\"sessionCommandsPanel.commandStatusUnavailable\")\n : command.state === \"stopping\"\n ? t(\"sessionCommandsPanel.stopping\")\n : t(\"sessionCommandsPanel.running\")}\n </p>\n </div>\n {!readOnly ? (\n <button\n type=\"button\"\n aria-label={t(\"sessionCommandsPanel.stopCommandpreview\", {\n commandPreview:\n command.commandPreview || t(\"sessionCommandsPanel.backgroundCommand2\"),\n })}\n disabled={pending !== null || command.state === \"stopping\"}\n onClick={() => void stop(command.id)}\n className=\"inline-flex min-h-7 shrink-0 items-center gap-1 rounded-og-sm px-2 text-og-fg-muted outline-hidden hover:bg-og-surface-3/70 hover:text-og-fg focus-visible:ring-2 focus-visible:ring-og-accent/40 disabled:opacity-50 pointer-coarse:min-h-11\"\n >\n {pending === command.id || command.state === \"stopping\" ? (\n <Loader2Icon className=\"size-3 animate-og-spin motion-reduce:animate-none\" />\n ) : (\n <SquareIcon className=\"size-3\" />\n )}\n {t(\"sessionCommandsPanel.stop\")}\n </button>\n ) : null}\n </li>\n ))}\n </ul>\n ) : null}\n {error ? (\n <p role=\"alert\" className=\"text-og-danger\">\n {error}\n </p>\n ) : null}\n </div>\n );\n}\n","import type { SessionBackgroundCommand } from \"@opengeni/sdk\";\nimport { useCallback, useEffect, useRef } from \"react\";\n\nimport { useOpenGeni, type ClientOverride } from \"../provider\";\nimport { usePolledValue } from \"./internal\";\n\nexport type UseSessionBackgroundCommandsOptions = ClientOverride & {\n pollIntervalMs?: number | undefined;\n enabled?: boolean | undefined;\n};\n\nexport type UseSessionBackgroundCommandsResult = {\n commands: SessionBackgroundCommand[];\n loading: boolean;\n error: Error | null;\n refresh: () => Promise<void>;\n cancel: (commandId: string) => Promise<void>;\n};\n\nexport function useSessionBackgroundCommands(\n sessionId: string | null | undefined,\n options: UseSessionBackgroundCommandsOptions = {},\n): UseSessionBackgroundCommandsResult {\n const { client, workspaceId } = useOpenGeni(options);\n const enabled = (options.enabled ?? true) && Boolean(sessionId);\n const load = useCallback(\n async (signal?: AbortSignal) => {\n if (!sessionId) return { commands: [] };\n if (!client.listSessionBackgroundCommands) {\n throw new Error(\"The configured Opengeni client does not support background commands\");\n }\n return await client.listSessionBackgroundCommands(workspaceId, sessionId, { signal });\n },\n [client, workspaceId, sessionId],\n );\n const state = usePolledValue(load, {\n enabled,\n pollIntervalMs: options.pollIntervalMs,\n });\n const refresh = state.refresh;\n const generation = useRef(0);\n useEffect(() => {\n generation.current += 1;\n return () => {\n generation.current += 1;\n };\n }, [client, workspaceId, sessionId, enabled]);\n const cancel = useCallback(\n async (commandId: string): Promise<void> => {\n if (!sessionId) return;\n if (!client.cancelSessionBackgroundCommand) {\n throw new Error(\"The configured Opengeni client does not support background commands\");\n }\n const ticket = generation.current;\n await client.cancelSessionBackgroundCommand(workspaceId, sessionId, commandId);\n if (enabled && ticket === generation.current) await refresh();\n },\n [client, workspaceId, sessionId, refresh, enabled],\n );\n return {\n commands: state.data?.commands ?? [],\n loading: state.loading,\n error: state.error,\n refresh,\n cancel,\n };\n}\n","import {\n useSessionBackgroundCommands,\n type UseSessionBackgroundCommandsOptions,\n} from \"../hooks/use-session-background-commands\";\nimport { SessionCommandsPanel } from \"./session-commands-panel\";\n\n/** Mount in the open activity panel so closed chrome never polls commands. */\nexport function SessionCommands({\n sessionId,\n readOnly = false,\n ...options\n}: UseSessionBackgroundCommandsOptions & { sessionId: string; readOnly?: boolean }) {\n const commands = useSessionBackgroundCommands(sessionId, {\n pollIntervalMs: 3_000,\n ...options,\n });\n return <SessionCommandsPanel commands={commands} readOnly={readOnly} />;\n}\n","import type { StartupPhaseItem } from \"./types\";\nimport { useOpenGeniText, type OpenGeniText } from \"../messages/runtime\";\n\nconst LABELS = (t: OpenGeniText): Record<StartupPhaseItem[\"phase\"], string> => ({\n queue: t(\"timeline.startupTimings.workerQueue\"),\n sandbox: t(\"timeline.startupTimings.sandbox\"),\n rig: t(\"timeline.startupTimings.sandboxEnvironment\"),\n repository: t(\"timeline.startupTimings.repository\"),\n files: t(\"timeline.startupTimings.files\"),\n tools: t(\"timeline.startupTimings.tools\"),\n model_preparation: t(\"timeline.startupTimings.runtimeModelRequest\"),\n provider_first_byte: t(\"timeline.startupTimings.firstModelResponse\"),\n});\n\nexport function StartupTimings({ phases }: { phases: StartupPhaseItem[] }) {\n const t = useOpenGeniText();\n if (!phases.length)\n return (\n <p className=\"text-og-sm text-og-fg-subtle\">\n {t(\"timeline.startupTimings.noStartupTimingsRecordedYet\")}\n </p>\n );\n const byTurn = new Map<string | null, StartupPhaseItem[]>();\n for (const phase of phases) {\n const group = byTurn.get(phase.turnId) ?? [];\n group.push(phase);\n byTurn.set(phase.turnId, group);\n }\n const turns = [...byTurn.entries()]\n .map(([turnId, turnPhases]) => ({\n turnId,\n phases: turnPhases,\n startedAt: turnPhases.reduce(\n (earliest, phase) => (phase.startedAt < earliest ? phase.startedAt : earliest),\n turnPhases[0]!.startedAt,\n ),\n }))\n .sort((a, b) => b.startedAt.localeCompare(a.startedAt));\n return (\n <div className=\"space-y-3\">\n <p className=\"text-og-xs text-og-fg-subtle\">\n {t(\"timeline.startupTimings.eachTurnHasItsOwn\")}\n </p>\n {turns.map((turn, index) => (\n <StartupTurn\n key={turn.turnId ?? \"unassigned\"}\n {...turn}\n latest={index === 0 && turn.turnId !== null}\n />\n ))}\n </div>\n );\n}\n\nfunction StartupTurn({\n turnId,\n phases,\n startedAt,\n latest,\n}: {\n turnId: string | null;\n phases: StartupPhaseItem[];\n startedAt: string;\n latest: boolean;\n}) {\n const t = useOpenGeniText();\n const failed = phases.some((phase) => phase.status === \"failed\");\n const status = failed\n ? t(\"timeline.startupTimings.failed\")\n : phases.some((phase) => phase.status === \"running\")\n ? t(\"timeline.startupTimings.inProgress\")\n : phases.some((phase) => phase.status === \"cancelled\")\n ? t(\"timeline.startupTimings.interrupted\")\n : t(\"timeline.startupTimings.ready\");\n return (\n <details open={latest} className=\"group border-b border-og-border pb-3\">\n <summary className=\"cursor-pointer rounded py-3 text-og-sm text-og-fg-muted focus-visible:outline-2 focus-visible:outline-og-accent\">\n <span className=\"font-medium\">\n {turnId === null\n ? t(\"timeline.startupTimings.unassignedEvents\")\n : latest\n ? t(\"timeline.startupTimings.latestTurn\")\n : t(\"timeline.startupTimings.earlierTurn\")}\n </span>\n <span className=\"ml-2 text-og-xs text-og-fg-subtle\">\n {new Date(startedAt).toLocaleTimeString(t.locale, {\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n })}\n </span>\n <span\n className={\n failed ? \"ml-2 text-og-xs text-og-status-failed\" : \"ml-2 text-og-xs text-og-fg-subtle\"\n }\n >\n {status}\n </span>\n <span className=\"mt-1 block break-all pl-4 font-og-mono text-og-xs text-og-fg-subtle\">\n {turnId ?? t(\"timeline.startupTimings.noTurnIdRecorded\")}\n </span>\n </summary>\n <div className=\"pb-2\">\n <p className=\"text-og-xs text-og-fg-subtle\">\n {t(\"timeline.startupTimings.started\")}{\" \"}\n <time dateTime={startedAt}>{new Date(startedAt).toLocaleString(t.locale)}</time>\n </p>\n <div className=\"overflow-x-auto\">\n <table className=\"w-full text-left text-og-xs\">\n <caption className=\"sr-only\">\n {t(\"timeline.startupTimings.startupPhasesFor\")}{\" \"}\n {turnId ?? t(\"timeline.startupTimings.unassignedEvents2\")}\n </caption>\n <thead>\n <tr className=\"border-b border-og-border text-og-fg-subtle\">\n <th scope=\"col\" className=\"py-2 font-medium\">\n {t(\"timeline.startupTimings.phase\")}\n </th>\n <th scope=\"col\" className=\"px-3 py-2 font-medium\">\n {t(\"timeline.startupTimings.status\")}\n </th>\n <th scope=\"col\" className=\"py-2 text-right font-medium\">\n {t(\"timeline.startupTimings.duration\")}\n </th>\n </tr>\n </thead>\n <tbody>\n {phases.map((phase) => (\n <tr\n key={phase.id}\n className=\"border-b border-og-border/40\"\n title={t(\"timeline.startupTimings.turnTurnidStartedStartedat\", {\n turnId: phase.turnId ?? t(\"timeline.startupTimings.unknownTurn\"),\n startedAt: phase.startedAt,\n })}\n >\n <th scope=\"row\" className=\"py-2.5 font-normal text-og-fg-muted\">\n {LABELS(t)[phase.phase]}\n </th>\n <td\n className={`px-3 py-2.5 ${phase.status === \"failed\" ? \"text-og-status-failed\" : \"text-og-fg-subtle\"}`}\n >\n {phase.status === \"running\"\n ? t(\"timeline.startupTimings.inProgress\")\n : phase.status}\n </td>\n <td className=\"py-2.5 text-right font-og-mono tabular-nums text-og-fg-muted\">\n {phase.durationMs === null\n ? \"—\"\n : phase.durationMs < 1000\n ? t(\"timeline.startupTimings.roundMs\", {\n round: Math.round(phase.durationMs),\n })\n : `${(phase.durationMs / 1000).toFixed(1)} s`}\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n </details>\n );\n}\n"],"mappings":"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","names":["jsx","jsxs","useEffect","useRef","useState","jsx","jsxs","DEFAULT_LABELS","useState","useRef","useEffect","Loader2Icon","useState","jsx","jsxs","useState","Loader2Icon","useCallback","useEffect","useRef","useCallback","useRef","useEffect","jsx","jsx","jsxs"]}
@@ -5,7 +5,7 @@ import {
5
5
  } from "./chunk-LT2CPZRB.js";
6
6
  import {
7
7
  MarkdownText
8
- } from "./chunk-YXOKAG66.js";
8
+ } from "./chunk-HU6JTNWF.js";
9
9
  import {
10
10
  formatTimestamp
11
11
  } from "./chunk-5TLEWXAB.js";
@@ -14,7 +14,7 @@ import {
14
14
  } from "./chunk-HMU5IELG.js";
15
15
  import {
16
16
  UserMessageBody
17
- } from "./chunk-L7YURQI2.js";
17
+ } from "./chunk-MXLKI7BI.js";
18
18
 
19
19
  // src/app/components/session/banners.tsx
20
20
  import { AlertTriangleIcon, ArrowLeftIcon, AudioLinesIcon, TerminalIcon } from "lucide-react";
@@ -109,4 +109,4 @@ export {
109
109
  TerminalSessionArchive,
110
110
  UserMessageBody2 as UserMessageBody
111
111
  };
112
- //# sourceMappingURL=chunk-U36PO27Q.js.map
112
+ //# sourceMappingURL=chunk-GHHM6WN4.js.map
@@ -2,13 +2,13 @@
2
2
  import {
3
3
  cn
4
4
  } from "./chunk-A3MTTRCX.js";
5
- import {
6
- ConnectorAction
7
- } from "./chunk-6P44NG6Y.js";
8
5
  import {
9
6
  ComposerMenuHeader,
10
7
  ComposerMenuSwitchIndicator
11
8
  } from "./chunk-O2LGEYG4.js";
9
+ import {
10
+ ConnectorAction
11
+ } from "./chunk-6P44NG6Y.js";
12
12
  import {
13
13
  AGENT_CAPABILITY_GROUPS,
14
14
  UNAVAILABLE_CAPABILITY_REASON,
@@ -185,4 +185,4 @@ function ComposerCapabilitiesMenuBody(props) {
185
185
  export {
186
186
  ComposerCapabilitiesMenuBody
187
187
  };
188
- //# sourceMappingURL=chunk-OANSIX34.js.map
188
+ //# sourceMappingURL=chunk-GRSODLVO.js.map