@opengeni/react 4.5.0 → 4.6.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 (530) hide show
  1. package/dist/app/app-state.js +25 -25
  2. package/dist/app/components/Composer.js +25 -25
  3. package/dist/app/components/agent/agent-capability-picker.js +4 -4
  4. package/dist/app/components/artifacts/artifact-library.js +17 -17
  5. package/dist/app/components/artifacts/chat-interactive-block.js +16 -16
  6. package/dist/app/components/artifacts/inline-chat-image.js +29 -29
  7. package/dist/app/components/artifacts/retained-file-preview.js +33 -33
  8. package/dist/app/components/artifacts/retained-text-preview.js +5 -5
  9. package/dist/app/components/artifacts/site-audience.js +4 -4
  10. package/dist/app/components/artifacts/site-conversations.js +20 -20
  11. package/dist/app/components/artifacts/site-data.js +22 -20
  12. package/dist/app/components/artifacts/site-publishing.js +38 -38
  13. package/dist/app/components/artifacts/site-settings.js +47 -47
  14. package/dist/app/components/billing-class-mark.js +5 -5
  15. package/dist/app/components/capabilities/capability-detail-sheet.js +8 -8
  16. package/dist/app/components/capabilities/capability-logo-source.js +12 -12
  17. package/dist/app/components/capabilities/connector-tool-permissions.js +3 -3
  18. package/dist/app/components/capabilities/native-connect-setup.js +15 -15
  19. package/dist/app/components/capabilities/perform-capability-action.js +1 -1
  20. package/dist/app/components/capabilities/prepared-mcp-setup-card.js +15 -15
  21. package/dist/app/components/capabilities/session-capability-card.js +75 -75
  22. package/dist/app/components/capabilities/session-chrome-card.js +36 -36
  23. package/dist/app/components/capabilities/session-custom-mcp-card.js +20 -20
  24. package/dist/app/components/capabilities/session-github-card.js +24 -24
  25. package/dist/app/components/capabilities/session-machine-card.js +35 -35
  26. package/dist/app/components/capabilities/use-capabilities-catalog.js +3 -3
  27. package/dist/app/components/capabilities/use-connection-accounts.js +1 -1
  28. package/dist/app/components/command-menu/chat-status.js +19 -18
  29. package/dist/app/components/command-menu/chat-switcher.js +23 -22
  30. package/dist/app/components/command-menu/chat-switcher.js.map +1 -1
  31. package/dist/app/components/command-menu/command-menu.js +35 -34
  32. package/dist/app/components/command-menu/command-menu.js.map +1 -1
  33. package/dist/app/components/command-menu/shortcut-sheet.js +16 -16
  34. package/dist/app/components/composer-capabilities-menu-body.js +3 -3
  35. package/dist/app/components/composer-mobile-plus-panel.js +20 -20
  36. package/dist/app/components/composer-mobile-plus.js +1 -1
  37. package/dist/app/components/credit-required-gate.js +1 -1
  38. package/dist/app/components/credit-required-prompt.js +15 -13
  39. package/dist/app/components/credit-required-prompt.js.map +1 -1
  40. package/dist/app/components/credits/credit-refusal-notice.js +5 -3
  41. package/dist/app/components/desktop/app-shots.js +6 -6
  42. package/dist/app/components/desktop/this-computer.js +4 -4
  43. package/dist/app/components/feedback.js +4 -4
  44. package/dist/app/components/follow-up-repository-menu-body.js +8 -6
  45. package/dist/app/components/follow-up-repository-menu-body.js.map +1 -1
  46. package/dist/app/components/follow-up-repository-picker.js +4 -2
  47. package/dist/app/components/github-app-connect-launcher.js +1 -1
  48. package/dist/app/components/knowledge/agent-learning-settings.js +3 -3
  49. package/dist/app/components/machines/connect-machine-dialog.js +18 -18
  50. package/dist/app/components/markdown.js +9 -9
  51. package/dist/app/components/message-context-pills.js +2 -2
  52. package/dist/app/components/models/models-ui.js +8 -8
  53. package/dist/app/components/pickers.js +9 -9
  54. package/dist/app/components/rail/rail-context.js +2 -2
  55. package/dist/app/components/rail/rail-sections.js +63 -62
  56. package/dist/app/components/rail/session-header.js +48 -48
  57. package/dist/app/components/rail/session-list.js +62 -61
  58. package/dist/app/components/rail/session-row-content.js +4 -2
  59. package/dist/app/components/rail/session-row-hover-details.js +25 -24
  60. package/dist/app/components/rail/session-shell.js +100 -99
  61. package/dist/app/components/rail/site-session-group-heading.js +13 -12
  62. package/dist/app/components/repository-picker.js +8 -6
  63. package/dist/app/components/secrets/session-secrets-panel.js +3 -3
  64. package/dist/app/components/session/agent-configuration-panel.js +35 -35
  65. package/dist/app/components/session/artifact-session-page.js +2 -2
  66. package/dist/app/components/session/banners.js +14 -12
  67. package/dist/app/components/session/codex-account-indicator.js +10 -10
  68. package/dist/app/components/session/editable-artifacts-workspace.js +43 -43
  69. package/dist/app/components/session/failed-session-banner.js +10 -10
  70. package/dist/app/components/session/human-input.js +56 -56
  71. package/dist/app/components/session/inspector.js +90 -89
  72. package/dist/app/components/session/inspector.js.map +1 -1
  73. package/dist/app/components/session/message-actions.js +4 -4
  74. package/dist/app/components/session/message-resource-attachments.js +20 -20
  75. package/dist/app/components/session/model-account-indicator.js +9 -9
  76. package/dist/app/components/session/model-context-inspector.js +2 -2
  77. package/dist/app/components/session/model-recovery-notice.js +3 -3
  78. package/dist/app/components/session/new-session-settings-menu.js +11 -11
  79. package/dist/app/components/session/sandbox-switcher.js +14 -14
  80. package/dist/app/components/session/sandbox-workspace.js +73 -73
  81. package/dist/app/components/session/search-markdown-highlight.js +10 -10
  82. package/dist/app/components/session/search-results-view.js +11 -11
  83. package/dist/app/components/session/session-admin-access.js +9 -9
  84. package/dist/app/components/session/session-admission-notice.js +5 -5
  85. package/dist/app/components/session/session-machine-access-notice.js +5 -5
  86. package/dist/app/components/session/session-retention.js +4 -4
  87. package/dist/app/components/session/session-search-dialog.js +11 -11
  88. package/dist/app/components/session/session-skill-reviews.js +1 -1
  89. package/dist/app/components/session/session-tenancy-control.js +22 -22
  90. package/dist/app/components/session/session-usage-limit-section.js +10 -10
  91. package/dist/app/components/session/session-wait-status.js +9 -9
  92. package/dist/app/components/session/subagents.js +16 -16
  93. package/dist/app/components/session-connectors-menu-body.js +5 -5
  94. package/dist/app/components/settings/row-select.js +1 -1
  95. package/dist/app/components/transcription-settings.js +2 -2
  96. package/dist/app/components/ui/destructive-confirm.js +6 -6
  97. package/dist/app/components/usage/usage-entry.js +6 -6
  98. package/dist/app/components/workspace-composer-plus.js +21 -21
  99. package/dist/app/embed/session-app.js +265 -265
  100. package/dist/app/lib/actions/actions-provider.js +13 -13
  101. package/dist/app/lib/codex-usage-query.js +3 -3
  102. package/dist/app/lib/composer-connectors.js +13 -13
  103. package/dist/app/lib/console-text.js +2 -2
  104. package/dist/app/lib/credit-coverage.js +4 -2
  105. package/dist/app/lib/events.js +17 -17
  106. package/dist/app/lib/failed-session-copy.js +3 -3
  107. package/dist/app/lib/format.d.ts +2 -7
  108. package/dist/app/lib/format.js +5 -2
  109. package/dist/app/lib/model-access-onboarding.js +3 -3
  110. package/dist/app/lib/move-chat-to-machine.js +3 -3
  111. package/dist/app/lib/session-branch-cache.js +15 -14
  112. package/dist/app/lib/session-create.js +2 -2
  113. package/dist/app/lib/session-group-pagination.js +15 -14
  114. package/dist/app/lib/session-hover-facts.js +16 -15
  115. package/dist/app/lib/session-model.js +3 -3
  116. package/dist/app/lib/session-rail.js +9 -9
  117. package/dist/app/lib/session-rename.js +3 -3
  118. package/dist/app/lib/sessions-group.js +15 -14
  119. package/dist/app/lib/turn-failure-analytics.js +5 -5
  120. package/dist/app/lib/use-duplicate-site.js +2 -2
  121. package/dist/app/lib/use-follow-up-repositories.js +3 -3
  122. package/dist/app/lib/use-workspace-machines.js +5 -5
  123. package/dist/app/lib/use-workspace-model-catalog.js +5 -5
  124. package/dist/app/lib/use-workspace-rigs.js +4 -4
  125. package/dist/app/lib/workspace-navigation-preference.js +5 -5
  126. package/dist/app/lib/workspace-scope-context.js +4 -4
  127. package/dist/app/routes/artifacts.js +128 -127
  128. package/dist/app/routes/artifacts.js.map +1 -1
  129. package/dist/app/routes/retained-artifact.js +67 -67
  130. package/dist/app/routes/session-unavailable.js +3 -3
  131. package/dist/app/routes/session.js +169 -169
  132. package/dist/app/routes/sessions-index-hydration.js +3 -3
  133. package/dist/app/routes/sessions-index.js +121 -120
  134. package/dist/app/routes/site-view.js +89 -88
  135. package/dist/app/routes/site-view.js.map +1 -1
  136. package/dist/artifacts-document.js +4 -4
  137. package/dist/artifacts-presentation.js +4 -4
  138. package/dist/artifacts-spreadsheet.js +4 -4
  139. package/dist/artifacts.js +39 -39
  140. package/dist/{browser-viewer-QMCNV4RI.js → browser-viewer-YQC6BFMS.js} +7 -7
  141. package/dist/{chat-interactive-block-PMIAUXSO.js → chat-interactive-block-Z22YHDRU.js} +6 -6
  142. package/dist/{chunk-YJPKDRI2.js → chunk-24POWVUY.js} +15 -15
  143. package/dist/{chunk-35BC2FU2.js → chunk-26P7B46A.js} +19 -19
  144. package/dist/{chunk-ZVVT72MT.js → chunk-27EORKJ4.js} +2 -2
  145. package/dist/{chunk-2NC7NZCE.js → chunk-2K27S6LK.js} +6 -6
  146. package/dist/{chunk-2QBYDGWO.js → chunk-2LUO22FR.js} +9 -9
  147. package/dist/{chunk-FSP334UU.js → chunk-2SZ3KC5S.js} +2 -2
  148. package/dist/{chunk-3X5FKDYQ.js → chunk-32HA7DXJ.js} +26 -26
  149. package/dist/{chunk-CFFNT2OY.js → chunk-3GLAPCVI.js} +8 -8
  150. package/dist/{chunk-PCJLH45G.js → chunk-3MQM4ZOC.js} +3 -3
  151. package/dist/{chunk-BXQYAAVE.js → chunk-3XOISKZC.js} +4 -4
  152. package/dist/{chunk-IDXTASGN.js → chunk-3ZZOE4SN.js} +4 -4
  153. package/dist/{chunk-N3ZP4IDU.js → chunk-45WYYFP6.js} +2 -2
  154. package/dist/{chunk-NEK4WB5P.js → chunk-467VRP4E.js} +3 -3
  155. package/dist/{chunk-PCFK7HKD.js → chunk-4BF3DD6R.js} +18 -18
  156. package/dist/{chunk-552UYIQ7.js → chunk-4ICPJZAB.js} +20 -20
  157. package/dist/{chunk-ITX2TB4K.js → chunk-4PC7LIQK.js} +6 -6
  158. package/dist/{chunk-D5OWJZQR.js → chunk-4RY64KQY.js} +2 -2
  159. package/dist/{chunk-PUTS4DYW.js → chunk-4VJOZJDV.js} +2 -2
  160. package/dist/{chunk-7P4AQMGA.js → chunk-4XKT4ENZ.js} +12 -12
  161. package/dist/{chunk-4VK2R5QC.js → chunk-4XO346BW.js} +3 -3
  162. package/dist/{chunk-IBA5FMRE.js → chunk-65K5LV4L.js} +136 -136
  163. package/dist/{chunk-S2U4CDAC.js → chunk-6AFSZKZA.js} +149 -149
  164. package/dist/chunk-6AFSZKZA.js.map +1 -0
  165. package/dist/{chunk-5Y2FPLZE.js → chunk-6JF7C3U3.js} +8 -8
  166. package/dist/{chunk-LQ47YL6E.js → chunk-6K3WNTRI.js} +2 -2
  167. package/dist/{chunk-UUGR3X5I.js → chunk-6MRY2RUZ.js} +5 -5
  168. package/dist/{chunk-CCR33J7L.js → chunk-6N7W3TOV.js} +2 -2
  169. package/dist/chunk-6NXQCOLD.js +71 -0
  170. package/dist/chunk-6NXQCOLD.js.map +1 -0
  171. package/dist/{chunk-ILDOW2IQ.js → chunk-6PQBKMUL.js} +3 -3
  172. package/dist/{chunk-SY2AAZNB.js → chunk-6VITVQ23.js} +4 -4
  173. package/dist/{chunk-AIEXYO2X.js → chunk-6YDXUE5H.js} +2 -2
  174. package/dist/{chunk-GXW2I2M2.js → chunk-72XEFLMD.js} +2 -2
  175. package/dist/{chunk-KEXYBG7Q.js → chunk-74NIHMAT.js} +3 -3
  176. package/dist/{chunk-FTX5CNHA.js → chunk-767WCGAX.js} +4 -4
  177. package/dist/{chunk-5MJHH72T.js → chunk-7EGWIME2.js} +4 -4
  178. package/dist/{chunk-Z7IGO5EA.js → chunk-7H2D4VNU.js} +2 -2
  179. package/dist/{chunk-EJ7WARW7.js → chunk-7J7PZB4S.js} +2 -2
  180. package/dist/{chunk-4SAGYEVB.js → chunk-7JZSFJHB.js} +2 -2
  181. package/dist/{chunk-AJPW3SV4.js → chunk-7OIBLMDP.js} +2 -2
  182. package/dist/{chunk-SM5QX6UK.js → chunk-A2EWJQXX.js} +4 -4
  183. package/dist/{chunk-5YFY4SFC.js → chunk-AJ7PY4FJ.js} +2 -2
  184. package/dist/{chunk-RFLYID6H.js → chunk-AT4K4F6S.js} +4 -4
  185. package/dist/{chunk-YV56F4UP.js → chunk-AW3QEFOF.js} +179 -179
  186. package/dist/chunk-AW3QEFOF.js.map +1 -0
  187. package/dist/{chunk-3ABPIUCK.js → chunk-B254JG72.js} +2 -2
  188. package/dist/{chunk-7TCT7KPQ.js → chunk-BCFHMBMK.js} +228 -228
  189. package/dist/chunk-BCFHMBMK.js.map +1 -0
  190. package/dist/{chunk-TJQDL3JH.js → chunk-BPD4IJBG.js} +2 -2
  191. package/dist/{chunk-S37GP7LX.js → chunk-BQWUXC55.js} +21 -21
  192. package/dist/{chunk-DGLRZMXL.js → chunk-BWKZEW6K.js} +3 -3
  193. package/dist/{chunk-LF5CBAOS.js → chunk-C535KSTY.js} +4 -4
  194. package/dist/{chunk-MOKYT3X3.js → chunk-C6JL6PBL.js} +3 -3
  195. package/dist/{chunk-4XQC7VLT.js → chunk-CA64OZLZ.js} +13 -13
  196. package/dist/{chunk-EQE3MNQN.js → chunk-CEQUNJJY.js} +5 -5
  197. package/dist/{chunk-JO6R5EXF.js → chunk-CKA4SJRK.js} +5 -5
  198. package/dist/{chunk-LHLK7FUA.js → chunk-CPKD2YGK.js} +6 -6
  199. package/dist/{chunk-4GLLWX33.js → chunk-CYO5HL4C.js} +17 -33
  200. package/dist/chunk-CYO5HL4C.js.map +1 -0
  201. package/dist/{chunk-5FEN3KYH.js → chunk-D4QOZXPM.js} +11 -11
  202. package/dist/{chunk-UP7I3W6O.js → chunk-DAQG3C4W.js} +55 -55
  203. package/dist/{chunk-RIYZFKIM.js → chunk-DNLXQUBX.js} +36 -36
  204. package/dist/{chunk-UYNCMZX5.js → chunk-DNWBLT4U.js} +4 -4
  205. package/dist/{chunk-MXLKI7BI.js → chunk-DNYD7AUG.js} +3 -3
  206. package/dist/{chunk-7KIENXRE.js → chunk-DZH2HTTB.js} +1 -1
  207. package/dist/{chunk-CD3MO3IC.js → chunk-E36IC3LU.js} +2 -2
  208. package/dist/{chunk-Z6E6TUAE.js → chunk-EURDMOXZ.js} +2 -2
  209. package/dist/{chunk-22JFMNMF.js → chunk-F2RMKGDQ.js} +4 -4
  210. package/dist/{chunk-62VER7O4.js → chunk-F3NERYBQ.js} +6 -6
  211. package/dist/{chunk-YXA2EKV3.js → chunk-F4B2YYCN.js} +3 -3
  212. package/dist/{chunk-ENS6E4RZ.js → chunk-FH75NNLB.js} +2 -2
  213. package/dist/{chunk-GGV4NSG3.js → chunk-FMATVQFW.js} +8 -8
  214. package/dist/{chunk-7XO7YKPC.js → chunk-FVCLVASD.js} +73 -73
  215. package/dist/{chunk-3RQUWFZT.js → chunk-G3FU2IF7.js} +67 -67
  216. package/dist/{chunk-3RQUWFZT.js.map → chunk-G3FU2IF7.js.map} +1 -1
  217. package/dist/{chunk-HU6JTNWF.js → chunk-GMVKCEBG.js} +2 -2
  218. package/dist/{chunk-SWCLN6JE.js → chunk-GRNE5ANU.js} +2 -2
  219. package/dist/{chunk-FWOBNL2A.js → chunk-GTR2WUBA.js} +1 -1
  220. package/dist/{chunk-BT2MVGHT.js → chunk-GTR5NLVP.js} +2 -2
  221. package/dist/{chunk-J22HD2PB.js → chunk-GUIZDI5T.js} +6 -6
  222. package/dist/{chunk-ULJAOMJA.js → chunk-GXK4CUAB.js} +4 -4
  223. package/dist/{chunk-XN7NSPE6.js → chunk-HCCSAECI.js} +2 -2
  224. package/dist/{chunk-22FFOHPT.js → chunk-HJTTDLF6.js} +11 -11
  225. package/dist/{chunk-YEROLKOA.js → chunk-HSQRYJ4P.js} +15 -15
  226. package/dist/{chunk-73WI7FL2.js → chunk-HTKVYEVB.js} +19 -19
  227. package/dist/{chunk-4RMN4E2Y.js → chunk-HXZIX7MR.js} +11 -11
  228. package/dist/{chunk-DJFTH2DI.js → chunk-I57HZMMA.js} +2 -2
  229. package/dist/{chunk-3GU7AWG7.js → chunk-I74J2UZ2.js} +19 -19
  230. package/dist/{chunk-FDAV72IX.js → chunk-IC7KNOBB.js} +7 -7
  231. package/dist/{chunk-5TLEWXAB.js → chunk-IKQMSROV.js} +1 -13
  232. package/dist/chunk-IKQMSROV.js.map +1 -0
  233. package/dist/{chunk-TIQPKOFW.js → chunk-IWIMIRV3.js} +4 -4
  234. package/dist/{chunk-U6MPB3K6.js → chunk-JI6WPLZB.js} +9 -9
  235. package/dist/{chunk-GT7JFQ4E.js → chunk-JJ7VMIEQ.js} +119 -119
  236. package/dist/{chunk-GDLDBR6B.js → chunk-JQKURO3S.js} +2 -2
  237. package/dist/{chunk-O2SBHS2N.js → chunk-K4FDZVMQ.js} +2 -2
  238. package/dist/{chunk-JXT5QDJC.js → chunk-KNFDWNCH.js} +5 -5
  239. package/dist/{chunk-TLL22FFO.js → chunk-KUO5WFXG.js} +2 -2
  240. package/dist/{chunk-KUNFUSZ7.js → chunk-KVMFT6FN.js} +2 -2
  241. package/dist/{chunk-5W6ZDKRR.js → chunk-KW53DBY7.js} +5 -5
  242. package/dist/{chunk-5DSKMG2I.js → chunk-LEXPBQ56.js} +4 -4
  243. package/dist/{chunk-3RMKPHBL.js → chunk-LG67ZNRU.js} +3 -3
  244. package/dist/{chunk-WKHUZIOW.js → chunk-LJZNHDKI.js} +2 -2
  245. package/dist/{chunk-4YXAQMTD.js → chunk-LR7U3HCD.js} +12 -12
  246. package/dist/{chunk-2FPS5H2D.js → chunk-M5E3CKSE.js} +2 -2
  247. package/dist/{chunk-3PEXVG4D.js → chunk-M7A226EQ.js} +2 -2
  248. package/dist/{chunk-PO3BH3KQ.js → chunk-M7YEZR6X.js} +2 -2
  249. package/dist/{chunk-YYCOSTUU.js → chunk-MB2DTUEG.js} +17 -17
  250. package/dist/{chunk-HQWVDQXW.js → chunk-MDRLP5DO.js} +7 -7
  251. package/dist/{chunk-ACL2V2KE.js → chunk-MHIYYHCL.js} +23 -23
  252. package/dist/{chunk-JQCGPTZ6.js → chunk-MM7OKOTE.js} +9 -9
  253. package/dist/{chunk-5W7KJ5NQ.js → chunk-MY6VZVCP.js} +37 -37
  254. package/dist/{chunk-CMLJSF2F.js → chunk-NF6Q4XTN.js} +11 -11
  255. package/dist/{chunk-EYS4ZOF5.js → chunk-NML44AW2.js} +2 -2
  256. package/dist/{chunk-QFMLAT7L.js → chunk-NPDL4W4Y.js} +183 -183
  257. package/dist/{chunk-TL7BOFFL.js → chunk-NURA4KUR.js} +3 -3
  258. package/dist/{chunk-3STBLX4O.js → chunk-NV5OYV3G.js} +8 -8
  259. package/dist/{chunk-MIECLOQC.js → chunk-NZMQDUOD.js} +7 -7
  260. package/dist/{chunk-SSOO4GWN.js → chunk-O4AWXTZQ.js} +116 -116
  261. package/dist/{chunk-SSOO4GWN.js.map → chunk-O4AWXTZQ.js.map} +1 -1
  262. package/dist/{chunk-CP7ZQHBW.js → chunk-O4DYOSOL.js} +13 -13
  263. package/dist/{chunk-VH5EGTH2.js → chunk-O5UOCMH4.js} +3 -3
  264. package/dist/{chunk-Y5BSA3I7.js → chunk-O73DRA77.js} +5 -5
  265. package/dist/{chunk-GRSODLVO.js → chunk-OANSIX34.js} +4 -4
  266. package/dist/{chunk-RQNZDTKT.js → chunk-OHG2UQ2O.js} +16 -16
  267. package/dist/{chunk-5JHRMUAZ.js → chunk-OLUG4IFF.js} +12 -12
  268. package/dist/{chunk-EPWD4KRA.js → chunk-OOEO4MKY.js} +2 -2
  269. package/dist/{chunk-7NPCEBZE.js → chunk-OWJD3V4V.js} +5 -5
  270. package/dist/{chunk-4HEXNAFI.js → chunk-PEGNFZ3F.js} +19 -19
  271. package/dist/chunk-PEGNFZ3F.js.map +1 -0
  272. package/dist/{chunk-CDEXRJB6.js → chunk-PEKPWK5M.js} +4 -4
  273. package/dist/{chunk-FWYEZ3LE.js → chunk-PQCFW2KT.js} +35 -35
  274. package/dist/{chunk-LMPTC4CX.js → chunk-QLDMF7MH.js} +2 -2
  275. package/dist/{chunk-JM4HQPAI.js → chunk-QZRDCFHI.js} +5 -5
  276. package/dist/{chunk-DYJGYGPB.js → chunk-R5YZ3ROM.js} +2 -2
  277. package/dist/{chunk-I6KIQKU6.js → chunk-RABKQFTA.js} +3 -3
  278. package/dist/{chunk-7FJMRJDG.js → chunk-RNBH5TSM.js} +2 -2
  279. package/dist/{chunk-J7FBBLHF.js → chunk-RXMIXKB3.js} +37 -37
  280. package/dist/{chunk-JFK7NTEA.js → chunk-S6WJ6TUT.js} +7 -1
  281. package/dist/{chunk-JFK7NTEA.js.map → chunk-S6WJ6TUT.js.map} +1 -1
  282. package/dist/{chunk-A4BD4ZVB.js → chunk-S7PVL7XH.js} +4 -4
  283. package/dist/{chunk-4LPA25NQ.js → chunk-SD2K5ZN5.js} +4 -4
  284. package/dist/{chunk-UXXFMF4X.js → chunk-SJPAKWWP.js} +2 -2
  285. package/dist/{chunk-FRP64DEK.js → chunk-SK57RWSA.js} +2 -2
  286. package/dist/{chunk-ZS2UQ3DV.js → chunk-SOXZ4LGS.js} +4 -4
  287. package/dist/{chunk-WSZQNTVN.js → chunk-SSZROOOI.js} +2 -2
  288. package/dist/{chunk-MCTTONOW.js → chunk-TM2ZLY3Q.js} +26 -26
  289. package/dist/{chunk-J5MEDX7C.js → chunk-U47YDYLQ.js} +8 -8
  290. package/dist/{chunk-TV6BWONY.js → chunk-UHMMRQGU.js} +3 -3
  291. package/dist/{chunk-YVBHGMKC.js → chunk-VAIESMPY.js} +4 -4
  292. package/dist/{chunk-WCMG4HYI.js → chunk-W57QFLQD.js} +10 -10
  293. package/dist/{chunk-RYSRFAHN.js → chunk-WLZVXCPZ.js} +20 -20
  294. package/dist/{chunk-PFAUGEV5.js → chunk-WN2MIB4Q.js} +2 -2
  295. package/dist/{chunk-5FA455GR.js → chunk-WNG757ID.js} +4 -4
  296. package/dist/{chunk-G4HQUBO4.js → chunk-WSLPZ43N.js} +12 -12
  297. package/dist/{chunk-QXEDIDBZ.js → chunk-WWM7WVD2.js} +2 -2
  298. package/dist/{chunk-V4QZ7UBK.js → chunk-WYEPUXGL.js} +2 -2
  299. package/dist/{chunk-AX6YJA5U.js → chunk-X7Z4B5GK.js} +2 -2
  300. package/dist/{chunk-GZS37O3G.js → chunk-XDCZBOEY.js} +1 -1
  301. package/dist/{chunk-52WK2GGK.js → chunk-XGE75VPK.js} +8 -8
  302. package/dist/{chunk-XMNUZUUA.js → chunk-Z2DAWUO3.js} +6 -6
  303. package/dist/{chunk-BCM7C3MJ.js → chunk-Z4GJB24B.js} +8 -8
  304. package/dist/{chunk-LT4J7RHI.js → chunk-ZPZYYSHW.js} +12 -12
  305. package/dist/{chunk-GHHM6WN4.js → chunk-ZRB4M3GG.js} +4 -4
  306. package/dist/{chunk-FFNPUSVO.js → chunk-ZWACUOU5.js} +7 -7
  307. package/dist/{chunk-ZEIFJ6PX.js → chunk-ZZUKJ5HQ.js} +7 -7
  308. package/dist/composer.js +13 -13
  309. package/dist/{computer-viewer-25AJIDYA.js → computer-viewer-BWVNDFTO.js} +8 -8
  310. package/dist/connect.js +11 -11
  311. package/dist/desktop.js +2 -2
  312. package/dist/editor.js +2 -2
  313. package/dist/{embedded-new-voice-RZZEJT6M.js → embedded-new-voice-GBXSZ3TO.js} +8 -8
  314. package/dist/{embedded-voice-6OKSSPLW.js → embedded-voice-MGI7EK7C.js} +8 -8
  315. package/dist/{fleet-decision-row-NN2HXDX3.js → fleet-decision-row-35S3GAUN.js} +2 -2
  316. package/dist/index.js +220 -220
  317. package/dist/interaction.js +9 -9
  318. package/dist/{latest-question-2PFWQSSG.js → latest-question-4WDBECXB.js} +2 -2
  319. package/dist/machines.js +4 -4
  320. package/dist/messages/en.d.ts +6 -0
  321. package/dist/messages.js +1 -1
  322. package/dist/{model-policy-picker-menu-VVFGGAI6.js → model-policy-picker-menu-KP53N6UJ.js} +6 -6
  323. package/dist/native-previews.js +3 -3
  324. package/dist/{platform-activity-row-ENQVIFTL.js → platform-activity-row-ISMXR7NJ.js} +2 -2
  325. package/dist/{queue-surface-implementation-4SHOQPQQ.js → queue-surface-implementation-ULW7DDJA.js} +7 -7
  326. package/dist/realtime.js +7 -7
  327. package/dist/{sandbox-files-CCOTGXXA.js → sandbox-files-QYSD4XCZ.js} +10 -10
  328. package/dist/session-agents-model.d.ts +23 -1
  329. package/dist/session-agents-model.js +6 -1
  330. package/dist/session-app.js +265 -265
  331. package/dist/session-list-model.js +2 -2
  332. package/dist/{session-realtime-JNKDSGH7.js → session-realtime-JXRLPNUH.js} +3 -3
  333. package/dist/session-realtime.js +2 -2
  334. package/dist/session-ui.js +68 -68
  335. package/dist/session.js +22 -22
  336. package/dist/sites.js +2 -2
  337. package/dist/terminal.js +2 -2
  338. package/dist/this-computer.js +3 -3
  339. package/dist/{timeline-annotation-markers-KHNYNY2J.js → timeline-annotation-markers-OJYKHBEO.js} +5 -5
  340. package/dist/{timeline-annotation-selection-AXEDJHBP.js → timeline-annotation-selection-6OAZLXFU.js} +7 -7
  341. package/dist/{timeline-annotations-dialog-AV4ZBXRC.js → timeline-annotations-dialog-5M6DP5FX.js} +9 -9
  342. package/dist/timeline-model.js +27 -27
  343. package/dist/ui/access-list.js +20 -20
  344. package/dist/ui/choice-cards.js +2 -2
  345. package/dist/ui/detail-page.js +2 -2
  346. package/dist/ui/detail-sheet.js +2 -2
  347. package/dist/ui/diff-view.js +2 -2
  348. package/dist/ui/disclosure.js +4 -4
  349. package/dist/ui/flush-form-page.js +3 -3
  350. package/dist/ui/form-dialog.js +2 -2
  351. package/dist/ui/list-row.js +5 -5
  352. package/dist/ui/revision-history.js +11 -11
  353. package/dist/ui/role-select.js +6 -6
  354. package/dist/ui/settings-nav.js +3 -3
  355. package/dist/usage.js +2 -2
  356. package/dist/workbench.js +11 -11
  357. package/package.json +4 -4
  358. package/src/app/components/session/subagents.tsx +6 -28
  359. package/src/app/lib/format.tsx +2 -17
  360. package/src/messages/en.ts +6 -0
  361. package/src/session-agents-model.ts +75 -1
  362. package/dist/chunk-4GLLWX33.js.map +0 -1
  363. package/dist/chunk-4HEXNAFI.js.map +0 -1
  364. package/dist/chunk-5TLEWXAB.js.map +0 -1
  365. package/dist/chunk-7TCT7KPQ.js.map +0 -1
  366. package/dist/chunk-IE5YUCOT.js +0 -26
  367. package/dist/chunk-IE5YUCOT.js.map +0 -1
  368. package/dist/chunk-S2U4CDAC.js.map +0 -1
  369. package/dist/chunk-YV56F4UP.js.map +0 -1
  370. /package/dist/{browser-viewer-QMCNV4RI.js.map → browser-viewer-YQC6BFMS.js.map} +0 -0
  371. /package/dist/{chat-interactive-block-PMIAUXSO.js.map → chat-interactive-block-Z22YHDRU.js.map} +0 -0
  372. /package/dist/{chunk-YJPKDRI2.js.map → chunk-24POWVUY.js.map} +0 -0
  373. /package/dist/{chunk-35BC2FU2.js.map → chunk-26P7B46A.js.map} +0 -0
  374. /package/dist/{chunk-ZVVT72MT.js.map → chunk-27EORKJ4.js.map} +0 -0
  375. /package/dist/{chunk-2NC7NZCE.js.map → chunk-2K27S6LK.js.map} +0 -0
  376. /package/dist/{chunk-2QBYDGWO.js.map → chunk-2LUO22FR.js.map} +0 -0
  377. /package/dist/{chunk-FSP334UU.js.map → chunk-2SZ3KC5S.js.map} +0 -0
  378. /package/dist/{chunk-3X5FKDYQ.js.map → chunk-32HA7DXJ.js.map} +0 -0
  379. /package/dist/{chunk-CFFNT2OY.js.map → chunk-3GLAPCVI.js.map} +0 -0
  380. /package/dist/{chunk-PCJLH45G.js.map → chunk-3MQM4ZOC.js.map} +0 -0
  381. /package/dist/{chunk-BXQYAAVE.js.map → chunk-3XOISKZC.js.map} +0 -0
  382. /package/dist/{chunk-IDXTASGN.js.map → chunk-3ZZOE4SN.js.map} +0 -0
  383. /package/dist/{chunk-N3ZP4IDU.js.map → chunk-45WYYFP6.js.map} +0 -0
  384. /package/dist/{chunk-NEK4WB5P.js.map → chunk-467VRP4E.js.map} +0 -0
  385. /package/dist/{chunk-PCFK7HKD.js.map → chunk-4BF3DD6R.js.map} +0 -0
  386. /package/dist/{chunk-552UYIQ7.js.map → chunk-4ICPJZAB.js.map} +0 -0
  387. /package/dist/{chunk-ITX2TB4K.js.map → chunk-4PC7LIQK.js.map} +0 -0
  388. /package/dist/{chunk-D5OWJZQR.js.map → chunk-4RY64KQY.js.map} +0 -0
  389. /package/dist/{chunk-PUTS4DYW.js.map → chunk-4VJOZJDV.js.map} +0 -0
  390. /package/dist/{chunk-7P4AQMGA.js.map → chunk-4XKT4ENZ.js.map} +0 -0
  391. /package/dist/{chunk-4VK2R5QC.js.map → chunk-4XO346BW.js.map} +0 -0
  392. /package/dist/{chunk-IBA5FMRE.js.map → chunk-65K5LV4L.js.map} +0 -0
  393. /package/dist/{chunk-5Y2FPLZE.js.map → chunk-6JF7C3U3.js.map} +0 -0
  394. /package/dist/{chunk-LQ47YL6E.js.map → chunk-6K3WNTRI.js.map} +0 -0
  395. /package/dist/{chunk-UUGR3X5I.js.map → chunk-6MRY2RUZ.js.map} +0 -0
  396. /package/dist/{chunk-CCR33J7L.js.map → chunk-6N7W3TOV.js.map} +0 -0
  397. /package/dist/{chunk-ILDOW2IQ.js.map → chunk-6PQBKMUL.js.map} +0 -0
  398. /package/dist/{chunk-SY2AAZNB.js.map → chunk-6VITVQ23.js.map} +0 -0
  399. /package/dist/{chunk-AIEXYO2X.js.map → chunk-6YDXUE5H.js.map} +0 -0
  400. /package/dist/{chunk-GXW2I2M2.js.map → chunk-72XEFLMD.js.map} +0 -0
  401. /package/dist/{chunk-KEXYBG7Q.js.map → chunk-74NIHMAT.js.map} +0 -0
  402. /package/dist/{chunk-FTX5CNHA.js.map → chunk-767WCGAX.js.map} +0 -0
  403. /package/dist/{chunk-5MJHH72T.js.map → chunk-7EGWIME2.js.map} +0 -0
  404. /package/dist/{chunk-Z7IGO5EA.js.map → chunk-7H2D4VNU.js.map} +0 -0
  405. /package/dist/{chunk-EJ7WARW7.js.map → chunk-7J7PZB4S.js.map} +0 -0
  406. /package/dist/{chunk-4SAGYEVB.js.map → chunk-7JZSFJHB.js.map} +0 -0
  407. /package/dist/{chunk-AJPW3SV4.js.map → chunk-7OIBLMDP.js.map} +0 -0
  408. /package/dist/{chunk-SM5QX6UK.js.map → chunk-A2EWJQXX.js.map} +0 -0
  409. /package/dist/{chunk-5YFY4SFC.js.map → chunk-AJ7PY4FJ.js.map} +0 -0
  410. /package/dist/{chunk-RFLYID6H.js.map → chunk-AT4K4F6S.js.map} +0 -0
  411. /package/dist/{chunk-3ABPIUCK.js.map → chunk-B254JG72.js.map} +0 -0
  412. /package/dist/{chunk-TJQDL3JH.js.map → chunk-BPD4IJBG.js.map} +0 -0
  413. /package/dist/{chunk-S37GP7LX.js.map → chunk-BQWUXC55.js.map} +0 -0
  414. /package/dist/{chunk-DGLRZMXL.js.map → chunk-BWKZEW6K.js.map} +0 -0
  415. /package/dist/{chunk-LF5CBAOS.js.map → chunk-C535KSTY.js.map} +0 -0
  416. /package/dist/{chunk-MOKYT3X3.js.map → chunk-C6JL6PBL.js.map} +0 -0
  417. /package/dist/{chunk-4XQC7VLT.js.map → chunk-CA64OZLZ.js.map} +0 -0
  418. /package/dist/{chunk-EQE3MNQN.js.map → chunk-CEQUNJJY.js.map} +0 -0
  419. /package/dist/{chunk-JO6R5EXF.js.map → chunk-CKA4SJRK.js.map} +0 -0
  420. /package/dist/{chunk-LHLK7FUA.js.map → chunk-CPKD2YGK.js.map} +0 -0
  421. /package/dist/{chunk-5FEN3KYH.js.map → chunk-D4QOZXPM.js.map} +0 -0
  422. /package/dist/{chunk-UP7I3W6O.js.map → chunk-DAQG3C4W.js.map} +0 -0
  423. /package/dist/{chunk-RIYZFKIM.js.map → chunk-DNLXQUBX.js.map} +0 -0
  424. /package/dist/{chunk-UYNCMZX5.js.map → chunk-DNWBLT4U.js.map} +0 -0
  425. /package/dist/{chunk-MXLKI7BI.js.map → chunk-DNYD7AUG.js.map} +0 -0
  426. /package/dist/{chunk-7KIENXRE.js.map → chunk-DZH2HTTB.js.map} +0 -0
  427. /package/dist/{chunk-CD3MO3IC.js.map → chunk-E36IC3LU.js.map} +0 -0
  428. /package/dist/{chunk-Z6E6TUAE.js.map → chunk-EURDMOXZ.js.map} +0 -0
  429. /package/dist/{chunk-22JFMNMF.js.map → chunk-F2RMKGDQ.js.map} +0 -0
  430. /package/dist/{chunk-62VER7O4.js.map → chunk-F3NERYBQ.js.map} +0 -0
  431. /package/dist/{chunk-YXA2EKV3.js.map → chunk-F4B2YYCN.js.map} +0 -0
  432. /package/dist/{chunk-ENS6E4RZ.js.map → chunk-FH75NNLB.js.map} +0 -0
  433. /package/dist/{chunk-GGV4NSG3.js.map → chunk-FMATVQFW.js.map} +0 -0
  434. /package/dist/{chunk-7XO7YKPC.js.map → chunk-FVCLVASD.js.map} +0 -0
  435. /package/dist/{chunk-HU6JTNWF.js.map → chunk-GMVKCEBG.js.map} +0 -0
  436. /package/dist/{chunk-SWCLN6JE.js.map → chunk-GRNE5ANU.js.map} +0 -0
  437. /package/dist/{chunk-FWOBNL2A.js.map → chunk-GTR2WUBA.js.map} +0 -0
  438. /package/dist/{chunk-BT2MVGHT.js.map → chunk-GTR5NLVP.js.map} +0 -0
  439. /package/dist/{chunk-J22HD2PB.js.map → chunk-GUIZDI5T.js.map} +0 -0
  440. /package/dist/{chunk-ULJAOMJA.js.map → chunk-GXK4CUAB.js.map} +0 -0
  441. /package/dist/{chunk-XN7NSPE6.js.map → chunk-HCCSAECI.js.map} +0 -0
  442. /package/dist/{chunk-22FFOHPT.js.map → chunk-HJTTDLF6.js.map} +0 -0
  443. /package/dist/{chunk-YEROLKOA.js.map → chunk-HSQRYJ4P.js.map} +0 -0
  444. /package/dist/{chunk-73WI7FL2.js.map → chunk-HTKVYEVB.js.map} +0 -0
  445. /package/dist/{chunk-4RMN4E2Y.js.map → chunk-HXZIX7MR.js.map} +0 -0
  446. /package/dist/{chunk-DJFTH2DI.js.map → chunk-I57HZMMA.js.map} +0 -0
  447. /package/dist/{chunk-3GU7AWG7.js.map → chunk-I74J2UZ2.js.map} +0 -0
  448. /package/dist/{chunk-FDAV72IX.js.map → chunk-IC7KNOBB.js.map} +0 -0
  449. /package/dist/{chunk-TIQPKOFW.js.map → chunk-IWIMIRV3.js.map} +0 -0
  450. /package/dist/{chunk-U6MPB3K6.js.map → chunk-JI6WPLZB.js.map} +0 -0
  451. /package/dist/{chunk-GT7JFQ4E.js.map → chunk-JJ7VMIEQ.js.map} +0 -0
  452. /package/dist/{chunk-GDLDBR6B.js.map → chunk-JQKURO3S.js.map} +0 -0
  453. /package/dist/{chunk-O2SBHS2N.js.map → chunk-K4FDZVMQ.js.map} +0 -0
  454. /package/dist/{chunk-JXT5QDJC.js.map → chunk-KNFDWNCH.js.map} +0 -0
  455. /package/dist/{chunk-TLL22FFO.js.map → chunk-KUO5WFXG.js.map} +0 -0
  456. /package/dist/{chunk-KUNFUSZ7.js.map → chunk-KVMFT6FN.js.map} +0 -0
  457. /package/dist/{chunk-5W6ZDKRR.js.map → chunk-KW53DBY7.js.map} +0 -0
  458. /package/dist/{chunk-5DSKMG2I.js.map → chunk-LEXPBQ56.js.map} +0 -0
  459. /package/dist/{chunk-3RMKPHBL.js.map → chunk-LG67ZNRU.js.map} +0 -0
  460. /package/dist/{chunk-WKHUZIOW.js.map → chunk-LJZNHDKI.js.map} +0 -0
  461. /package/dist/{chunk-4YXAQMTD.js.map → chunk-LR7U3HCD.js.map} +0 -0
  462. /package/dist/{chunk-2FPS5H2D.js.map → chunk-M5E3CKSE.js.map} +0 -0
  463. /package/dist/{chunk-3PEXVG4D.js.map → chunk-M7A226EQ.js.map} +0 -0
  464. /package/dist/{chunk-PO3BH3KQ.js.map → chunk-M7YEZR6X.js.map} +0 -0
  465. /package/dist/{chunk-YYCOSTUU.js.map → chunk-MB2DTUEG.js.map} +0 -0
  466. /package/dist/{chunk-HQWVDQXW.js.map → chunk-MDRLP5DO.js.map} +0 -0
  467. /package/dist/{chunk-ACL2V2KE.js.map → chunk-MHIYYHCL.js.map} +0 -0
  468. /package/dist/{chunk-JQCGPTZ6.js.map → chunk-MM7OKOTE.js.map} +0 -0
  469. /package/dist/{chunk-5W7KJ5NQ.js.map → chunk-MY6VZVCP.js.map} +0 -0
  470. /package/dist/{chunk-CMLJSF2F.js.map → chunk-NF6Q4XTN.js.map} +0 -0
  471. /package/dist/{chunk-EYS4ZOF5.js.map → chunk-NML44AW2.js.map} +0 -0
  472. /package/dist/{chunk-QFMLAT7L.js.map → chunk-NPDL4W4Y.js.map} +0 -0
  473. /package/dist/{chunk-TL7BOFFL.js.map → chunk-NURA4KUR.js.map} +0 -0
  474. /package/dist/{chunk-3STBLX4O.js.map → chunk-NV5OYV3G.js.map} +0 -0
  475. /package/dist/{chunk-MIECLOQC.js.map → chunk-NZMQDUOD.js.map} +0 -0
  476. /package/dist/{chunk-CP7ZQHBW.js.map → chunk-O4DYOSOL.js.map} +0 -0
  477. /package/dist/{chunk-VH5EGTH2.js.map → chunk-O5UOCMH4.js.map} +0 -0
  478. /package/dist/{chunk-Y5BSA3I7.js.map → chunk-O73DRA77.js.map} +0 -0
  479. /package/dist/{chunk-GRSODLVO.js.map → chunk-OANSIX34.js.map} +0 -0
  480. /package/dist/{chunk-RQNZDTKT.js.map → chunk-OHG2UQ2O.js.map} +0 -0
  481. /package/dist/{chunk-5JHRMUAZ.js.map → chunk-OLUG4IFF.js.map} +0 -0
  482. /package/dist/{chunk-EPWD4KRA.js.map → chunk-OOEO4MKY.js.map} +0 -0
  483. /package/dist/{chunk-7NPCEBZE.js.map → chunk-OWJD3V4V.js.map} +0 -0
  484. /package/dist/{chunk-CDEXRJB6.js.map → chunk-PEKPWK5M.js.map} +0 -0
  485. /package/dist/{chunk-FWYEZ3LE.js.map → chunk-PQCFW2KT.js.map} +0 -0
  486. /package/dist/{chunk-LMPTC4CX.js.map → chunk-QLDMF7MH.js.map} +0 -0
  487. /package/dist/{chunk-JM4HQPAI.js.map → chunk-QZRDCFHI.js.map} +0 -0
  488. /package/dist/{chunk-DYJGYGPB.js.map → chunk-R5YZ3ROM.js.map} +0 -0
  489. /package/dist/{chunk-I6KIQKU6.js.map → chunk-RABKQFTA.js.map} +0 -0
  490. /package/dist/{chunk-7FJMRJDG.js.map → chunk-RNBH5TSM.js.map} +0 -0
  491. /package/dist/{chunk-J7FBBLHF.js.map → chunk-RXMIXKB3.js.map} +0 -0
  492. /package/dist/{chunk-A4BD4ZVB.js.map → chunk-S7PVL7XH.js.map} +0 -0
  493. /package/dist/{chunk-4LPA25NQ.js.map → chunk-SD2K5ZN5.js.map} +0 -0
  494. /package/dist/{chunk-UXXFMF4X.js.map → chunk-SJPAKWWP.js.map} +0 -0
  495. /package/dist/{chunk-FRP64DEK.js.map → chunk-SK57RWSA.js.map} +0 -0
  496. /package/dist/{chunk-ZS2UQ3DV.js.map → chunk-SOXZ4LGS.js.map} +0 -0
  497. /package/dist/{chunk-WSZQNTVN.js.map → chunk-SSZROOOI.js.map} +0 -0
  498. /package/dist/{chunk-MCTTONOW.js.map → chunk-TM2ZLY3Q.js.map} +0 -0
  499. /package/dist/{chunk-J5MEDX7C.js.map → chunk-U47YDYLQ.js.map} +0 -0
  500. /package/dist/{chunk-TV6BWONY.js.map → chunk-UHMMRQGU.js.map} +0 -0
  501. /package/dist/{chunk-YVBHGMKC.js.map → chunk-VAIESMPY.js.map} +0 -0
  502. /package/dist/{chunk-WCMG4HYI.js.map → chunk-W57QFLQD.js.map} +0 -0
  503. /package/dist/{chunk-RYSRFAHN.js.map → chunk-WLZVXCPZ.js.map} +0 -0
  504. /package/dist/{chunk-PFAUGEV5.js.map → chunk-WN2MIB4Q.js.map} +0 -0
  505. /package/dist/{chunk-5FA455GR.js.map → chunk-WNG757ID.js.map} +0 -0
  506. /package/dist/{chunk-G4HQUBO4.js.map → chunk-WSLPZ43N.js.map} +0 -0
  507. /package/dist/{chunk-QXEDIDBZ.js.map → chunk-WWM7WVD2.js.map} +0 -0
  508. /package/dist/{chunk-V4QZ7UBK.js.map → chunk-WYEPUXGL.js.map} +0 -0
  509. /package/dist/{chunk-AX6YJA5U.js.map → chunk-X7Z4B5GK.js.map} +0 -0
  510. /package/dist/{chunk-GZS37O3G.js.map → chunk-XDCZBOEY.js.map} +0 -0
  511. /package/dist/{chunk-52WK2GGK.js.map → chunk-XGE75VPK.js.map} +0 -0
  512. /package/dist/{chunk-XMNUZUUA.js.map → chunk-Z2DAWUO3.js.map} +0 -0
  513. /package/dist/{chunk-BCM7C3MJ.js.map → chunk-Z4GJB24B.js.map} +0 -0
  514. /package/dist/{chunk-LT4J7RHI.js.map → chunk-ZPZYYSHW.js.map} +0 -0
  515. /package/dist/{chunk-GHHM6WN4.js.map → chunk-ZRB4M3GG.js.map} +0 -0
  516. /package/dist/{chunk-FFNPUSVO.js.map → chunk-ZWACUOU5.js.map} +0 -0
  517. /package/dist/{chunk-ZEIFJ6PX.js.map → chunk-ZZUKJ5HQ.js.map} +0 -0
  518. /package/dist/{computer-viewer-25AJIDYA.js.map → computer-viewer-BWVNDFTO.js.map} +0 -0
  519. /package/dist/{embedded-new-voice-RZZEJT6M.js.map → embedded-new-voice-GBXSZ3TO.js.map} +0 -0
  520. /package/dist/{embedded-voice-6OKSSPLW.js.map → embedded-voice-MGI7EK7C.js.map} +0 -0
  521. /package/dist/{fleet-decision-row-NN2HXDX3.js.map → fleet-decision-row-35S3GAUN.js.map} +0 -0
  522. /package/dist/{latest-question-2PFWQSSG.js.map → latest-question-4WDBECXB.js.map} +0 -0
  523. /package/dist/{model-policy-picker-menu-VVFGGAI6.js.map → model-policy-picker-menu-KP53N6UJ.js.map} +0 -0
  524. /package/dist/{platform-activity-row-ENQVIFTL.js.map → platform-activity-row-ISMXR7NJ.js.map} +0 -0
  525. /package/dist/{queue-surface-implementation-4SHOQPQQ.js.map → queue-surface-implementation-ULW7DDJA.js.map} +0 -0
  526. /package/dist/{sandbox-files-CCOTGXXA.js.map → sandbox-files-QYSD4XCZ.js.map} +0 -0
  527. /package/dist/{session-realtime-JNKDSGH7.js.map → session-realtime-JXRLPNUH.js.map} +0 -0
  528. /package/dist/{timeline-annotation-markers-KHNYNY2J.js.map → timeline-annotation-markers-OJYKHBEO.js.map} +0 -0
  529. /package/dist/{timeline-annotation-selection-AXEDJHBP.js.map → timeline-annotation-selection-6OAZLXFU.js.map} +0 -0
  530. /package/dist/{timeline-annotations-dialog-AV4ZBXRC.js.map → timeline-annotations-dialog-5M6DP5FX.js.map} +0 -0
@@ -1,13 +1,13 @@
1
1
  "use client";
2
2
  import {
3
3
  ArtifactButton
4
- } from "./chunk-CCR33J7L.js";
4
+ } from "./chunk-6N7W3TOV.js";
5
5
  import {
6
6
  cn
7
7
  } from "./chunk-TXS65BB2.js";
8
8
  import {
9
9
  useOpenGeniText
10
- } from "./chunk-JFK7NTEA.js";
10
+ } from "./chunk-S6WJ6TUT.js";
11
11
 
12
12
  // src/components/artifacts/artifact-surface.tsx
13
13
  import {
@@ -87,11 +87,65 @@ function ArtifactSurface({
87
87
  );
88
88
  }
89
89
 
90
+ // src/components/artifacts/artifact-submissions.tsx
91
+ import { createContext, useContext, useState } from "react";
92
+ import { jsx as jsx2 } from "react/jsx-runtime";
93
+ function createSubmissionQueue() {
94
+ let pending = 0;
95
+ const listeners = /* @__PURE__ */ new Set();
96
+ const emit = () => {
97
+ for (const listener of listeners) listener();
98
+ };
99
+ return {
100
+ getPending: () => pending,
101
+ subscribe: (listener) => {
102
+ listeners.add(listener);
103
+ return () => {
104
+ listeners.delete(listener);
105
+ };
106
+ },
107
+ async run(invoke) {
108
+ pending++;
109
+ emit();
110
+ try {
111
+ return await invoke();
112
+ } finally {
113
+ pending--;
114
+ emit();
115
+ }
116
+ }
117
+ };
118
+ }
119
+ var standaloneQueue = {
120
+ getPending: () => 0,
121
+ subscribe: (_listener) => () => {
122
+ },
123
+ run: (invoke) => invoke()
124
+ };
125
+ var SubmissionContext = createContext(null);
126
+ function ArtifactSubmissionProvider({ children }) {
127
+ const [queue] = useState(createSubmissionQueue);
128
+ return /* @__PURE__ */ jsx2(SubmissionContext.Provider, { value: queue, children });
129
+ }
130
+ function useArtifactSubmissions() {
131
+ return useContext(SubmissionContext) ?? standaloneQueue;
132
+ }
133
+ var SESSION_KEYS = /* @__PURE__ */ new WeakMap();
134
+ var nextSessionKey = 0;
135
+ function artifactSubmissionSessionKey(session) {
136
+ let key = SESSION_KEYS.get(session);
137
+ if (key === void 0) {
138
+ key = ++nextSessionKey;
139
+ SESSION_KEYS.set(session, key);
140
+ }
141
+ return key;
142
+ }
143
+
90
144
  // src/components/artifacts/editable-artifact-ui.tsx
91
- import { useEffect, useState } from "react";
92
- import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
145
+ import { useEffect, useState as useState2 } from "react";
146
+ import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
93
147
  function useEditableArtifactView(session) {
94
- const [view, setView] = useState(() => session.getView());
148
+ const [view, setView] = useState2(() => session.getView());
95
149
  useEffect(() => {
96
150
  setView(session.getView());
97
151
  return session.subscribe(setView);
@@ -142,10 +196,10 @@ function EditableArtifactMessage({
142
196
  }) {
143
197
  const t = useOpenGeniText();
144
198
  const retryLabel = retryLabelProp === void 0 ? t("artifacts.editableArtifactUi.retry") : retryLabelProp;
145
- return /* @__PURE__ */ jsx2("div", { className: "grid h-full min-h-56 place-items-center bg-og-bg p-6 text-center", children: /* @__PURE__ */ jsxs2("div", { children: [
146
- /* @__PURE__ */ jsx2("p", { className: "text-og-base font-medium text-og-fg", children: title }),
147
- /* @__PURE__ */ jsx2("p", { className: "mt-1 max-w-lg text-og-sm text-og-fg-muted", children: detail }),
148
- retry ? /* @__PURE__ */ jsx2(
199
+ return /* @__PURE__ */ jsx3("div", { className: "grid h-full min-h-56 place-items-center bg-og-bg p-6 text-center", children: /* @__PURE__ */ jsxs2("div", { children: [
200
+ /* @__PURE__ */ jsx3("p", { className: "text-og-base font-medium text-og-fg", children: title }),
201
+ /* @__PURE__ */ jsx3("p", { className: "mt-1 max-w-lg text-og-sm text-og-fg-muted", children: detail }),
202
+ retry ? /* @__PURE__ */ jsx3(
149
203
  "button",
150
204
  {
151
205
  type: "button",
@@ -160,60 +214,6 @@ function asEditableArtifactError(cause, fallback) {
160
214
  return cause instanceof Error ? cause : new Error(fallback);
161
215
  }
162
216
 
163
- // src/components/artifacts/artifact-submissions.tsx
164
- import { createContext, useContext, useState as useState2 } from "react";
165
- import { jsx as jsx3 } from "react/jsx-runtime";
166
- function createSubmissionQueue() {
167
- let pending = 0;
168
- const listeners = /* @__PURE__ */ new Set();
169
- const emit = () => {
170
- for (const listener of listeners) listener();
171
- };
172
- return {
173
- getPending: () => pending,
174
- subscribe: (listener) => {
175
- listeners.add(listener);
176
- return () => {
177
- listeners.delete(listener);
178
- };
179
- },
180
- async run(invoke) {
181
- pending++;
182
- emit();
183
- try {
184
- return await invoke();
185
- } finally {
186
- pending--;
187
- emit();
188
- }
189
- }
190
- };
191
- }
192
- var standaloneQueue = {
193
- getPending: () => 0,
194
- subscribe: (_listener) => () => {
195
- },
196
- run: (invoke) => invoke()
197
- };
198
- var SubmissionContext = createContext(null);
199
- function ArtifactSubmissionProvider({ children }) {
200
- const [queue] = useState2(createSubmissionQueue);
201
- return /* @__PURE__ */ jsx3(SubmissionContext.Provider, { value: queue, children });
202
- }
203
- function useArtifactSubmissions() {
204
- return useContext(SubmissionContext) ?? standaloneQueue;
205
- }
206
- var SESSION_KEYS = /* @__PURE__ */ new WeakMap();
207
- var nextSessionKey = 0;
208
- function artifactSubmissionSessionKey(session) {
209
- let key = SESSION_KEYS.get(session);
210
- if (key === void 0) {
211
- key = ++nextSessionKey;
212
- SESSION_KEYS.set(session, key);
213
- }
214
- return key;
215
- }
216
-
217
217
  // src/components/artifacts/artifact-download.tsx
218
218
  import { DownloadIcon, LoaderCircleIcon as LoaderCircleIcon2 } from "lucide-react";
219
219
  import { useEffect as useEffect2, useRef, useState as useState3, useSyncExternalStore } from "react";
@@ -325,15 +325,15 @@ function downloadFileName(title, format, fallback) {
325
325
 
326
326
  export {
327
327
  ArtifactSurface,
328
+ ArtifactSubmissionProvider,
329
+ useArtifactSubmissions,
330
+ artifactSubmissionSessionKey,
328
331
  useEditableArtifactView,
329
332
  editableArtifactProjectionKey,
330
333
  editableArtifactStatusLabel,
331
334
  editableArtifactAccessRevoked,
332
335
  EditableArtifactMessage,
333
336
  asEditableArtifactError,
334
- ArtifactSubmissionProvider,
335
- useArtifactSubmissions,
336
- artifactSubmissionSessionKey,
337
337
  EditableArtifactDownloadButton
338
338
  };
339
- //# sourceMappingURL=chunk-3RQUWFZT.js.map
339
+ //# sourceMappingURL=chunk-G3FU2IF7.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/artifacts/artifact-surface.tsx","../src/components/artifacts/editable-artifact-ui.tsx","../src/components/artifacts/artifact-submissions.tsx","../src/components/artifacts/artifact-download.tsx"],"sourcesContent":["import {\n FileSpreadsheetIcon,\n FileTextIcon,\n LoaderCircleIcon,\n PresentationIcon,\n} from \"lucide-react\";\nimport type { ReactNode } from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport { useOpenGeniText, type OpenGeniText } from \"../../messages/runtime\";\n\nexport type ArtifactModality = \"spreadsheet\" | \"document\" | \"presentation\";\n\nexport type ArtifactSurfaceProps = {\n modality: ArtifactModality;\n title: string;\n /** An embedding host may already provide the artifact title and navigation. */\n showHeader?: boolean | undefined;\n subtitle?: ReactNode | undefined;\n actions?: ReactNode | undefined;\n children: ReactNode;\n footer?: ReactNode | undefined;\n busy?: boolean | undefined;\n className?: string | undefined;\n};\n\nconst MODALITY_LABEL = (t: OpenGeniText): Record<ArtifactModality, string> => ({\n spreadsheet: t(\"artifacts.artifactSurface.spreadsheet\"),\n document: t(\"artifacts.artifactSurface.document\"),\n presentation: t(\"artifacts.artifactSurface.presentation\"),\n});\n\nfunction ModalityIcon({ modality }: { modality: ArtifactModality }) {\n switch (modality) {\n case \"spreadsheet\":\n return <FileSpreadsheetIcon className=\"size-4\" />;\n case \"document\":\n return <FileTextIcon className=\"size-4\" />;\n case \"presentation\":\n return <PresentationIcon className=\"size-4\" />;\n }\n}\n\n/**\n * Modality-neutral artifact chrome. It deliberately owns no file, session, or\n * persistence state: hosts can use the same surface for a local draft, a\n * durable Opengeni artifact, or a collaborative projection.\n */\nexport function ArtifactSurface({\n modality,\n title,\n showHeader = true,\n subtitle,\n actions,\n children,\n footer,\n busy = false,\n className,\n}: ArtifactSurfaceProps) {\n const t = useOpenGeniText();\n return (\n <section\n aria-label={`${MODALITY_LABEL(t)[modality]}: ${title}`}\n aria-busy={busy || undefined}\n data-og-artifact-modality={modality}\n className={cn(\n \"og-root flex h-full min-h-0 min-w-0 flex-col overflow-hidden rounded-og-lg border border-og-border bg-og-surface-1 text-og-fg shadow-og-md\",\n className,\n )}\n >\n {showHeader ? (\n <header className=\"flex min-h-11 shrink-0 items-center gap-2 border-b border-og-border bg-og-surface-2 px-3\">\n <span\n aria-hidden\n className=\"grid size-7 shrink-0 place-items-center rounded-og-sm bg-og-surface-3 text-og-fg-muted\"\n >\n <ModalityIcon modality={modality} />\n </span>\n <div className=\"min-w-0 flex-1\">\n <h2 className=\"truncate text-og-base font-medium text-og-fg\">{title}</h2>\n {subtitle ? (\n <div className=\"truncate text-og-xs text-og-fg-muted\">{subtitle}</div>\n ) : null}\n </div>\n {busy ? (\n <LoaderCircleIcon\n aria-label={t(\"artifacts.artifactSurface.updatingArtifact\")}\n className=\"size-4 shrink-0 animate-spin text-og-fg-muted\"\n />\n ) : null}\n {actions ? <div className=\"flex shrink-0 items-center gap-1\">{actions}</div> : null}\n </header>\n ) : (\n <>\n {typeof subtitle === \"string\" || typeof subtitle === \"number\" ? (\n <span role=\"status\" className=\"sr-only\">\n {subtitle}\n </span>\n ) : null}\n {actions ? (\n <div className=\"flex shrink-0 items-center justify-end gap-1 border-b border-og-border px-3 py-1\">\n {actions}\n </div>\n ) : null}\n </>\n )}\n\n <div className=\"min-h-0 min-w-0 flex-1\">{children}</div>\n\n {footer ? (\n <footer className=\"shrink-0 border-t border-og-border bg-og-surface-2\">{footer}</footer>\n ) : null}\n </section>\n );\n}\n","import type {\n EditableArtifactSession,\n EditableArtifactSyncView,\n} from \"@opengeni/sdk/editable-artifacts\";\nimport { useEffect, useState } from \"react\";\nimport { type OpenGeniText } from \"../../messages/runtime\";\nimport { useOpenGeniText } from \"../../messages/runtime\";\n\nexport function useEditableArtifactView(\n session: EditableArtifactSession,\n): EditableArtifactSyncView {\n const [view, setView] = useState(() => session.getView());\n useEffect(() => {\n setView(session.getView());\n return session.subscribe(setView);\n }, [session]);\n return view;\n}\n\n/** Changes whenever the Worker-resident speculative projection may have changed. */\nexport function editableArtifactProjectionKey(view: EditableArtifactSyncView): string {\n return [\n view.state,\n view.cursor,\n view.headSequence,\n view.pendingTransactions,\n view.blockedPending.map((entry) => `${entry.clientTransactionId}:${entry.code}`).join(\",\"),\n ].join(\":\");\n}\n\nexport function editableArtifactStatusLabel(\n t: OpenGeniText,\n view: EditableArtifactSyncView,\n): string {\n switch (view.state) {\n case \"idle\":\n case \"connecting\":\n return t(\"artifacts.editableArtifactUi.connecting\");\n case \"syncing\":\n case \"resyncing\":\n return t(\"artifacts.editableArtifactUi.syncing\");\n case \"reconnecting\":\n return t(\"artifacts.editableArtifactUi.reconnecting\");\n case \"unsupported\":\n return t(\"artifacts.editableArtifactUi.thisArtifactVersionIsNot\");\n case \"failed\":\n if (editableArtifactAccessRevoked(view)) {\n return t(\"artifacts.editableArtifactUi.youNoLongerHaveAccess\");\n }\n return view.lastError?.message ?? t(\"artifacts.editableArtifactUi.couldNotOpenThisArtifact\");\n case \"closed\":\n return t(\"artifacts.editableArtifactUi.artifactSessionClosed\");\n case \"live\":\n return view.writable\n ? t(\"artifacts.editableArtifactUi.live\")\n : t(\"artifacts.editableArtifactUi.liveReadOnly\");\n }\n}\n\n/** Revoked read authority must hide any projection retained before invalidation. */\nexport function editableArtifactAccessRevoked(view: EditableArtifactSyncView): boolean {\n if (view.state !== \"failed\" || !view.lastError) return false;\n return (view.lastError as Error & Readonly<{ code?: unknown }>).code === \"permission_changed\";\n}\n\nexport function EditableArtifactMessage({\n title,\n detail,\n retry,\n retryLabel: retryLabelProp,\n}: {\n title: string;\n detail: string;\n retry?: (() => void) | undefined;\n retryLabel?: string | undefined;\n}) {\n const t = useOpenGeniText();\n const retryLabel =\n retryLabelProp === undefined ? t(\"artifacts.editableArtifactUi.retry\") : retryLabelProp;\n return (\n <div className=\"grid h-full min-h-56 place-items-center bg-og-bg p-6 text-center\">\n <div>\n <p className=\"text-og-base font-medium text-og-fg\">{title}</p>\n <p className=\"mt-1 max-w-lg text-og-sm text-og-fg-muted\">{detail}</p>\n {retry ? (\n <button\n type=\"button\"\n onClick={retry}\n className=\"mt-3 rounded-og-sm border border-og-primary-border bg-og-primary text-og-primary-fg px-3 py-1.5 text-og-sm font-medium hover:bg-og-primary-hover outline-hidden focus-visible:ring-2 focus-visible:ring-og-accent\"\n >\n {retryLabel}\n </button>\n ) : null}\n </div>\n </div>\n );\n}\n\nexport function asEditableArtifactError(cause: unknown, fallback: string): Error {\n return cause instanceof Error ? cause : new Error(fallback);\n}\n","import type { EditableArtifactSession } from \"@opengeni/sdk/editable-artifacts\";\nimport { createContext, useContext, useState, type ReactNode } from \"react\";\n\nfunction createSubmissionQueue() {\n let pending = 0;\n const listeners = new Set<() => void>();\n const emit = () => {\n for (const listener of listeners) listener();\n };\n return {\n getPending: () => pending,\n subscribe: (listener: () => void) => {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n async run<T>(invoke: () => Promise<T>): Promise<T> {\n // The SDK's causal queue and Worker authoring precede pendingTransactions.\n // Latch synchronously so a same-event blur/click cannot export an older head.\n pending++;\n emit();\n try {\n return await invoke();\n } finally {\n pending--;\n emit();\n }\n },\n };\n}\n\nexport type ArtifactSubmissions = Readonly<{\n getPending: () => number;\n subscribe: (listener: () => void) => () => void;\n run: <T>(invoke: () => Promise<T>) => Promise<T>;\n}>;\n\nconst standaloneQueue: ArtifactSubmissions = {\n getPending: () => 0,\n subscribe: (_listener: () => void) => () => {},\n run: <T,>(invoke: () => Promise<T>) => invoke(),\n};\nconst SubmissionContext = createContext<ArtifactSubmissions | null>(null);\n\nexport function ArtifactSubmissionProvider({ children }: { children: ReactNode }) {\n const [queue] = useState(createSubmissionQueue);\n return <SubmissionContext.Provider value={queue}>{children}</SubmissionContext.Provider>;\n}\n\n/** UI authoring submissions not yet visible as SDK pending transactions. */\nexport function useArtifactSubmissions(): ArtifactSubmissions {\n return useContext(SubmissionContext) ?? standaloneQueue;\n}\n\nconst SESSION_KEYS = new WeakMap<EditableArtifactSession, number>();\nlet nextSessionKey = 0;\n\n/** Stable per-session React key so a replaced session never inherits queued state. */\nexport function artifactSubmissionSessionKey(session: EditableArtifactSession): number {\n let key = SESSION_KEYS.get(session);\n if (key === undefined) {\n key = ++nextSessionKey;\n SESSION_KEYS.set(session, key);\n }\n return key;\n}\n","import type { EditableArtifactSession } from \"@opengeni/sdk/editable-artifacts\";\nimport { DownloadIcon, LoaderCircleIcon } from \"lucide-react\";\nimport { useEffect, useRef, useState, useSyncExternalStore } from \"react\";\n\nimport { ArtifactButton } from \"./artifact-chrome\";\nimport { useArtifactSubmissions } from \"./artifact-submissions\";\nimport { useEditableArtifactView } from \"./editable-artifact-ui\";\nimport { useOpenGeniText } from \"../../messages/runtime\";\n\n/** Host-authenticated export of the saved native head as an Office file. */\nexport type EditableArtifactDownload = (signal: AbortSignal) => Promise<Blob>;\nexport type EditableArtifactDownloadFormat = \"xlsx\" | \"docx\" | \"pptx\";\n\nconst LABELS = {\n xlsx: {\n download: \"artifacts.spreadsheetDownload.download\",\n preparing: \"artifacts.spreadsheetDownload.preparing\",\n failed: \"artifacts.spreadsheetDownload.downloadFailedTryAgain\",\n title: \"artifacts.spreadsheetDownload.downloadWorkbookAsXlsx\",\n wait: \"artifacts.spreadsheetDownload.waitForWorkbookChangesTo\",\n fallbackName: \"artifacts.spreadsheetDownload.workbook\",\n },\n docx: {\n download: \"artifacts.artifactDownload.download\",\n preparing: \"artifacts.artifactDownload.preparing\",\n failed: \"artifacts.artifactDownload.downloadFailedTryAgain\",\n title: \"artifacts.artifactDownload.downloadDocumentAsDocx\",\n wait: \"artifacts.artifactDownload.waitForDocumentChangesTo\",\n fallbackName: \"artifacts.artifactDownload.document\",\n },\n pptx: {\n download: \"artifacts.artifactDownload.download\",\n preparing: \"artifacts.artifactDownload.preparing\",\n failed: \"artifacts.artifactDownload.downloadFailedTryAgain\",\n title: \"artifacts.artifactDownload.downloadPresentationAsPptx\",\n wait: \"artifacts.artifactDownload.waitForPresentationChangesTo\",\n fallbackName: \"artifacts.artifactDownload.presentation\",\n },\n} as const;\n\n/**\n * Download action shared by every editable modality. It waits for live sync\n * with no pending or still-submitting edits, so the export is the latest head.\n */\nexport function EditableArtifactDownloadButton({\n session,\n title,\n download,\n format,\n}: {\n session: EditableArtifactSession;\n title: string;\n download: EditableArtifactDownload;\n format: EditableArtifactDownloadFormat;\n}) {\n const t = useOpenGeniText();\n const labels = LABELS[format];\n const view = useEditableArtifactView(session);\n const submissions = useArtifactSubmissions();\n const submitting = useSyncExternalStore(\n submissions.subscribe,\n submissions.getPending,\n submissions.getPending,\n );\n const active = useRef<AbortController | null>(null);\n const [busy, setBusy] = useState(false);\n const [error, setError] = useState(false);\n const ready =\n view.state === \"live\" &&\n submitting === 0 &&\n view.pendingTransactions === 0 &&\n view.blockedPending.length === 0 &&\n !view.authoringBlockedReason;\n useEffect(() => () => active.current?.abort(), [session]);\n useEffect(() => {\n if (view.state === \"failed\" || view.state === \"closed\") {\n active.current?.abort();\n active.current = null;\n setBusy(false);\n }\n }, [view.state]);\n\n const start = async () => {\n if (active.current || !ready || submissions.getPending()) return;\n // Re-read the live view: a just-committed edit may precede React's next render.\n const current = session.getView();\n if (\n current.state !== \"live\" ||\n current.pendingTransactions ||\n current.blockedPending.length ||\n current.authoringBlockedReason\n )\n return;\n const controller = new AbortController();\n active.current = controller;\n setBusy(true);\n setError(false);\n try {\n const blob = await download(controller.signal);\n if (controller.signal.aborted) return;\n const url = URL.createObjectURL(blob);\n try {\n const anchor = document.createElement(\"a\");\n anchor.href = url;\n anchor.download = downloadFileName(title, format, t(labels.fallbackName));\n anchor.rel = \"noopener\";\n anchor.click();\n } finally {\n setTimeout(() => URL.revokeObjectURL(url), 0);\n }\n } catch {\n if (!controller.signal.aborted) setError(true);\n } finally {\n if (!controller.signal.aborted) {\n active.current = null;\n setBusy(false);\n }\n }\n };\n\n return (\n <>\n {error ? (\n <span role=\"alert\" className=\"text-og-xs text-og-fg-muted\">\n {t(labels.failed)}\n </span>\n ) : null}\n <ArtifactButton\n onClick={() => void start()}\n disabled={busy || !ready}\n title={ready ? t(labels.title) : t(labels.wait)}\n >\n {busy ? (\n <LoaderCircleIcon className=\"animate-spin\" aria-hidden />\n ) : (\n <DownloadIcon aria-hidden />\n )}\n {busy ? t(labels.preparing) : t(labels.download)}\n </ArtifactButton>\n </>\n );\n}\n\n/** Safe local file name: the artifact title with exactly one matching extension. */\nexport function downloadFileName(\n title: string,\n format: EditableArtifactDownloadFormat,\n fallback: string,\n): string {\n const base =\n title\n .replace(/[\\\\/:*?\"<>|\\u0000-\\u001f]/g, \"_\")\n .replace(new RegExp(`\\\\.${format}$`, \"i\"), \"\")\n .trim() || fallback;\n return `${base}.${format}`;\n}\n"],"mappings":"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","names":["jsx","jsxs","useState","jsx","LoaderCircleIcon","useEffect","useState","Fragment","jsx","jsxs","useState","useEffect","LoaderCircleIcon"]}
1
+ {"version":3,"sources":["../src/components/artifacts/artifact-surface.tsx","../src/components/artifacts/artifact-submissions.tsx","../src/components/artifacts/editable-artifact-ui.tsx","../src/components/artifacts/artifact-download.tsx"],"sourcesContent":["import {\n FileSpreadsheetIcon,\n FileTextIcon,\n LoaderCircleIcon,\n PresentationIcon,\n} from \"lucide-react\";\nimport type { ReactNode } from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport { useOpenGeniText, type OpenGeniText } from \"../../messages/runtime\";\n\nexport type ArtifactModality = \"spreadsheet\" | \"document\" | \"presentation\";\n\nexport type ArtifactSurfaceProps = {\n modality: ArtifactModality;\n title: string;\n /** An embedding host may already provide the artifact title and navigation. */\n showHeader?: boolean | undefined;\n subtitle?: ReactNode | undefined;\n actions?: ReactNode | undefined;\n children: ReactNode;\n footer?: ReactNode | undefined;\n busy?: boolean | undefined;\n className?: string | undefined;\n};\n\nconst MODALITY_LABEL = (t: OpenGeniText): Record<ArtifactModality, string> => ({\n spreadsheet: t(\"artifacts.artifactSurface.spreadsheet\"),\n document: t(\"artifacts.artifactSurface.document\"),\n presentation: t(\"artifacts.artifactSurface.presentation\"),\n});\n\nfunction ModalityIcon({ modality }: { modality: ArtifactModality }) {\n switch (modality) {\n case \"spreadsheet\":\n return <FileSpreadsheetIcon className=\"size-4\" />;\n case \"document\":\n return <FileTextIcon className=\"size-4\" />;\n case \"presentation\":\n return <PresentationIcon className=\"size-4\" />;\n }\n}\n\n/**\n * Modality-neutral artifact chrome. It deliberately owns no file, session, or\n * persistence state: hosts can use the same surface for a local draft, a\n * durable Opengeni artifact, or a collaborative projection.\n */\nexport function ArtifactSurface({\n modality,\n title,\n showHeader = true,\n subtitle,\n actions,\n children,\n footer,\n busy = false,\n className,\n}: ArtifactSurfaceProps) {\n const t = useOpenGeniText();\n return (\n <section\n aria-label={`${MODALITY_LABEL(t)[modality]}: ${title}`}\n aria-busy={busy || undefined}\n data-og-artifact-modality={modality}\n className={cn(\n \"og-root flex h-full min-h-0 min-w-0 flex-col overflow-hidden rounded-og-lg border border-og-border bg-og-surface-1 text-og-fg shadow-og-md\",\n className,\n )}\n >\n {showHeader ? (\n <header className=\"flex min-h-11 shrink-0 items-center gap-2 border-b border-og-border bg-og-surface-2 px-3\">\n <span\n aria-hidden\n className=\"grid size-7 shrink-0 place-items-center rounded-og-sm bg-og-surface-3 text-og-fg-muted\"\n >\n <ModalityIcon modality={modality} />\n </span>\n <div className=\"min-w-0 flex-1\">\n <h2 className=\"truncate text-og-base font-medium text-og-fg\">{title}</h2>\n {subtitle ? (\n <div className=\"truncate text-og-xs text-og-fg-muted\">{subtitle}</div>\n ) : null}\n </div>\n {busy ? (\n <LoaderCircleIcon\n aria-label={t(\"artifacts.artifactSurface.updatingArtifact\")}\n className=\"size-4 shrink-0 animate-spin text-og-fg-muted\"\n />\n ) : null}\n {actions ? <div className=\"flex shrink-0 items-center gap-1\">{actions}</div> : null}\n </header>\n ) : (\n <>\n {typeof subtitle === \"string\" || typeof subtitle === \"number\" ? (\n <span role=\"status\" className=\"sr-only\">\n {subtitle}\n </span>\n ) : null}\n {actions ? (\n <div className=\"flex shrink-0 items-center justify-end gap-1 border-b border-og-border px-3 py-1\">\n {actions}\n </div>\n ) : null}\n </>\n )}\n\n <div className=\"min-h-0 min-w-0 flex-1\">{children}</div>\n\n {footer ? (\n <footer className=\"shrink-0 border-t border-og-border bg-og-surface-2\">{footer}</footer>\n ) : null}\n </section>\n );\n}\n","import type { EditableArtifactSession } from \"@opengeni/sdk/editable-artifacts\";\nimport { createContext, useContext, useState, type ReactNode } from \"react\";\n\nfunction createSubmissionQueue() {\n let pending = 0;\n const listeners = new Set<() => void>();\n const emit = () => {\n for (const listener of listeners) listener();\n };\n return {\n getPending: () => pending,\n subscribe: (listener: () => void) => {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n async run<T>(invoke: () => Promise<T>): Promise<T> {\n // The SDK's causal queue and Worker authoring precede pendingTransactions.\n // Latch synchronously so a same-event blur/click cannot export an older head.\n pending++;\n emit();\n try {\n return await invoke();\n } finally {\n pending--;\n emit();\n }\n },\n };\n}\n\nexport type ArtifactSubmissions = Readonly<{\n getPending: () => number;\n subscribe: (listener: () => void) => () => void;\n run: <T>(invoke: () => Promise<T>) => Promise<T>;\n}>;\n\nconst standaloneQueue: ArtifactSubmissions = {\n getPending: () => 0,\n subscribe: (_listener: () => void) => () => {},\n run: <T,>(invoke: () => Promise<T>) => invoke(),\n};\nconst SubmissionContext = createContext<ArtifactSubmissions | null>(null);\n\nexport function ArtifactSubmissionProvider({ children }: { children: ReactNode }) {\n const [queue] = useState(createSubmissionQueue);\n return <SubmissionContext.Provider value={queue}>{children}</SubmissionContext.Provider>;\n}\n\n/** UI authoring submissions not yet visible as SDK pending transactions. */\nexport function useArtifactSubmissions(): ArtifactSubmissions {\n return useContext(SubmissionContext) ?? standaloneQueue;\n}\n\nconst SESSION_KEYS = new WeakMap<EditableArtifactSession, number>();\nlet nextSessionKey = 0;\n\n/** Stable per-session React key so a replaced session never inherits queued state. */\nexport function artifactSubmissionSessionKey(session: EditableArtifactSession): number {\n let key = SESSION_KEYS.get(session);\n if (key === undefined) {\n key = ++nextSessionKey;\n SESSION_KEYS.set(session, key);\n }\n return key;\n}\n","import type {\n EditableArtifactSession,\n EditableArtifactSyncView,\n} from \"@opengeni/sdk/editable-artifacts\";\nimport { useEffect, useState } from \"react\";\nimport { type OpenGeniText } from \"../../messages/runtime\";\nimport { useOpenGeniText } from \"../../messages/runtime\";\n\nexport function useEditableArtifactView(\n session: EditableArtifactSession,\n): EditableArtifactSyncView {\n const [view, setView] = useState(() => session.getView());\n useEffect(() => {\n setView(session.getView());\n return session.subscribe(setView);\n }, [session]);\n return view;\n}\n\n/** Changes whenever the Worker-resident speculative projection may have changed. */\nexport function editableArtifactProjectionKey(view: EditableArtifactSyncView): string {\n return [\n view.state,\n view.cursor,\n view.headSequence,\n view.pendingTransactions,\n view.blockedPending.map((entry) => `${entry.clientTransactionId}:${entry.code}`).join(\",\"),\n ].join(\":\");\n}\n\nexport function editableArtifactStatusLabel(\n t: OpenGeniText,\n view: EditableArtifactSyncView,\n): string {\n switch (view.state) {\n case \"idle\":\n case \"connecting\":\n return t(\"artifacts.editableArtifactUi.connecting\");\n case \"syncing\":\n case \"resyncing\":\n return t(\"artifacts.editableArtifactUi.syncing\");\n case \"reconnecting\":\n return t(\"artifacts.editableArtifactUi.reconnecting\");\n case \"unsupported\":\n return t(\"artifacts.editableArtifactUi.thisArtifactVersionIsNot\");\n case \"failed\":\n if (editableArtifactAccessRevoked(view)) {\n return t(\"artifacts.editableArtifactUi.youNoLongerHaveAccess\");\n }\n return view.lastError?.message ?? t(\"artifacts.editableArtifactUi.couldNotOpenThisArtifact\");\n case \"closed\":\n return t(\"artifacts.editableArtifactUi.artifactSessionClosed\");\n case \"live\":\n return view.writable\n ? t(\"artifacts.editableArtifactUi.live\")\n : t(\"artifacts.editableArtifactUi.liveReadOnly\");\n }\n}\n\n/** Revoked read authority must hide any projection retained before invalidation. */\nexport function editableArtifactAccessRevoked(view: EditableArtifactSyncView): boolean {\n if (view.state !== \"failed\" || !view.lastError) return false;\n return (view.lastError as Error & Readonly<{ code?: unknown }>).code === \"permission_changed\";\n}\n\nexport function EditableArtifactMessage({\n title,\n detail,\n retry,\n retryLabel: retryLabelProp,\n}: {\n title: string;\n detail: string;\n retry?: (() => void) | undefined;\n retryLabel?: string | undefined;\n}) {\n const t = useOpenGeniText();\n const retryLabel =\n retryLabelProp === undefined ? t(\"artifacts.editableArtifactUi.retry\") : retryLabelProp;\n return (\n <div className=\"grid h-full min-h-56 place-items-center bg-og-bg p-6 text-center\">\n <div>\n <p className=\"text-og-base font-medium text-og-fg\">{title}</p>\n <p className=\"mt-1 max-w-lg text-og-sm text-og-fg-muted\">{detail}</p>\n {retry ? (\n <button\n type=\"button\"\n onClick={retry}\n className=\"mt-3 rounded-og-sm border border-og-primary-border bg-og-primary text-og-primary-fg px-3 py-1.5 text-og-sm font-medium hover:bg-og-primary-hover outline-hidden focus-visible:ring-2 focus-visible:ring-og-accent\"\n >\n {retryLabel}\n </button>\n ) : null}\n </div>\n </div>\n );\n}\n\nexport function asEditableArtifactError(cause: unknown, fallback: string): Error {\n return cause instanceof Error ? cause : new Error(fallback);\n}\n","import type { EditableArtifactSession } from \"@opengeni/sdk/editable-artifacts\";\nimport { DownloadIcon, LoaderCircleIcon } from \"lucide-react\";\nimport { useEffect, useRef, useState, useSyncExternalStore } from \"react\";\n\nimport { ArtifactButton } from \"./artifact-chrome\";\nimport { useArtifactSubmissions } from \"./artifact-submissions\";\nimport { useEditableArtifactView } from \"./editable-artifact-ui\";\nimport { useOpenGeniText } from \"../../messages/runtime\";\n\n/** Host-authenticated export of the saved native head as an Office file. */\nexport type EditableArtifactDownload = (signal: AbortSignal) => Promise<Blob>;\nexport type EditableArtifactDownloadFormat = \"xlsx\" | \"docx\" | \"pptx\";\n\nconst LABELS = {\n xlsx: {\n download: \"artifacts.spreadsheetDownload.download\",\n preparing: \"artifacts.spreadsheetDownload.preparing\",\n failed: \"artifacts.spreadsheetDownload.downloadFailedTryAgain\",\n title: \"artifacts.spreadsheetDownload.downloadWorkbookAsXlsx\",\n wait: \"artifacts.spreadsheetDownload.waitForWorkbookChangesTo\",\n fallbackName: \"artifacts.spreadsheetDownload.workbook\",\n },\n docx: {\n download: \"artifacts.artifactDownload.download\",\n preparing: \"artifacts.artifactDownload.preparing\",\n failed: \"artifacts.artifactDownload.downloadFailedTryAgain\",\n title: \"artifacts.artifactDownload.downloadDocumentAsDocx\",\n wait: \"artifacts.artifactDownload.waitForDocumentChangesTo\",\n fallbackName: \"artifacts.artifactDownload.document\",\n },\n pptx: {\n download: \"artifacts.artifactDownload.download\",\n preparing: \"artifacts.artifactDownload.preparing\",\n failed: \"artifacts.artifactDownload.downloadFailedTryAgain\",\n title: \"artifacts.artifactDownload.downloadPresentationAsPptx\",\n wait: \"artifacts.artifactDownload.waitForPresentationChangesTo\",\n fallbackName: \"artifacts.artifactDownload.presentation\",\n },\n} as const;\n\n/**\n * Download action shared by every editable modality. It waits for live sync\n * with no pending or still-submitting edits, so the export is the latest head.\n */\nexport function EditableArtifactDownloadButton({\n session,\n title,\n download,\n format,\n}: {\n session: EditableArtifactSession;\n title: string;\n download: EditableArtifactDownload;\n format: EditableArtifactDownloadFormat;\n}) {\n const t = useOpenGeniText();\n const labels = LABELS[format];\n const view = useEditableArtifactView(session);\n const submissions = useArtifactSubmissions();\n const submitting = useSyncExternalStore(\n submissions.subscribe,\n submissions.getPending,\n submissions.getPending,\n );\n const active = useRef<AbortController | null>(null);\n const [busy, setBusy] = useState(false);\n const [error, setError] = useState(false);\n const ready =\n view.state === \"live\" &&\n submitting === 0 &&\n view.pendingTransactions === 0 &&\n view.blockedPending.length === 0 &&\n !view.authoringBlockedReason;\n useEffect(() => () => active.current?.abort(), [session]);\n useEffect(() => {\n if (view.state === \"failed\" || view.state === \"closed\") {\n active.current?.abort();\n active.current = null;\n setBusy(false);\n }\n }, [view.state]);\n\n const start = async () => {\n if (active.current || !ready || submissions.getPending()) return;\n // Re-read the live view: a just-committed edit may precede React's next render.\n const current = session.getView();\n if (\n current.state !== \"live\" ||\n current.pendingTransactions ||\n current.blockedPending.length ||\n current.authoringBlockedReason\n )\n return;\n const controller = new AbortController();\n active.current = controller;\n setBusy(true);\n setError(false);\n try {\n const blob = await download(controller.signal);\n if (controller.signal.aborted) return;\n const url = URL.createObjectURL(blob);\n try {\n const anchor = document.createElement(\"a\");\n anchor.href = url;\n anchor.download = downloadFileName(title, format, t(labels.fallbackName));\n anchor.rel = \"noopener\";\n anchor.click();\n } finally {\n setTimeout(() => URL.revokeObjectURL(url), 0);\n }\n } catch {\n if (!controller.signal.aborted) setError(true);\n } finally {\n if (!controller.signal.aborted) {\n active.current = null;\n setBusy(false);\n }\n }\n };\n\n return (\n <>\n {error ? (\n <span role=\"alert\" className=\"text-og-xs text-og-fg-muted\">\n {t(labels.failed)}\n </span>\n ) : null}\n <ArtifactButton\n onClick={() => void start()}\n disabled={busy || !ready}\n title={ready ? t(labels.title) : t(labels.wait)}\n >\n {busy ? (\n <LoaderCircleIcon className=\"animate-spin\" aria-hidden />\n ) : (\n <DownloadIcon aria-hidden />\n )}\n {busy ? t(labels.preparing) : t(labels.download)}\n </ArtifactButton>\n </>\n );\n}\n\n/** Safe local file name: the artifact title with exactly one matching extension. */\nexport function downloadFileName(\n title: string,\n format: EditableArtifactDownloadFormat,\n fallback: string,\n): string {\n const base =\n title\n .replace(/[\\\\/:*?\"<>|\\u0000-\\u001f]/g, \"_\")\n .replace(new RegExp(`\\\\.${format}$`, \"i\"), \"\")\n .trim() || fallback;\n return `${base}.${format}`;\n}\n"],"mappings":"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","names":["jsx","useState","jsx","jsxs","useState","LoaderCircleIcon","useEffect","useState","Fragment","jsx","jsxs","useState","useEffect","LoaderCircleIcon"]}
@@ -7,7 +7,7 @@ import {
7
7
  } from "./chunk-A3MTTRCX.js";
8
8
  import {
9
9
  Markdown
10
- } from "./chunk-35BC2FU2.js";
10
+ } from "./chunk-26P7B46A.js";
11
11
 
12
12
  // src/app/components/markdown.tsx
13
13
  import { jsx } from "react/jsx-runtime";
@@ -44,4 +44,4 @@ function MarkdownText({
44
44
  export {
45
45
  MarkdownText
46
46
  };
47
- //# sourceMappingURL=chunk-HU6JTNWF.js.map
47
+ //# sourceMappingURL=chunk-GMVKCEBG.js.map
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  formatMoneyMicros
4
- } from "./chunk-5TLEWXAB.js";
4
+ } from "./chunk-IKQMSROV.js";
5
5
 
6
6
  // src/app/lib/credit-coverage.tsx
7
7
  import { modelDisplayName } from "@opengeni/sdk/model-display";
@@ -37,4 +37,4 @@ export {
37
37
  creditBalanceSplit,
38
38
  creditBalanceSplitLabel
39
39
  };
40
- //# sourceMappingURL=chunk-SWCLN6JE.js.map
40
+ //# sourceMappingURL=chunk-GRNE5ANU.js.map
@@ -133,4 +133,4 @@ function ComposerMobilePlus(props) {
133
133
  export {
134
134
  ComposerMobilePlus
135
135
  };
136
- //# sourceMappingURL=chunk-FWOBNL2A.js.map
136
+ //# sourceMappingURL=chunk-GTR2WUBA.js.map
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-TVQCDDSZ.js";
5
5
  import {
6
6
  useOpenGeniText
7
- } from "./chunk-JFK7NTEA.js";
7
+ } from "./chunk-S6WJ6TUT.js";
8
8
 
9
9
  // src/realtime/session-realtime.ts
10
10
  import {
@@ -596,4 +596,4 @@ export {
596
596
  sessionRealtimeLifecycleIsActive,
597
597
  useRealtimeModelSelection
598
598
  };
599
- //# sourceMappingURL=chunk-BT2MVGHT.js.map
599
+ //# sourceMappingURL=chunk-GTR5NLVP.js.map
@@ -19,16 +19,16 @@ import {
19
19
  import {
20
20
  ComposerMenuHeader
21
21
  } from "./chunk-O2LGEYG4.js";
22
- import {
23
- DropdownMenuItem
24
- } from "./chunk-TREHTIBD.js";
25
22
  import {
26
23
  rememberedMachineFolder,
27
24
  workspaceDefaultRigOptionLabel
28
- } from "./chunk-JXT5QDJC.js";
25
+ } from "./chunk-KNFDWNCH.js";
29
26
  import {
30
27
  t
31
- } from "./chunk-TJQDL3JH.js";
28
+ } from "./chunk-BPD4IJBG.js";
29
+ import {
30
+ DropdownMenuItem
31
+ } from "./chunk-TREHTIBD.js";
32
32
  import {
33
33
  MENU_LABEL_CLASS,
34
34
  MENU_NOTE_CLASS,
@@ -493,4 +493,4 @@ export {
493
493
  VisibilityMenuBody,
494
494
  UsageLimitMenuBody
495
495
  };
496
- //# sourceMappingURL=chunk-J22HD2PB.js.map
496
+ //# sourceMappingURL=chunk-GUIZDI5T.js.map
@@ -1,4 +1,7 @@
1
1
  "use client";
2
+ import {
3
+ sessionHoverFacts
4
+ } from "./chunk-XGE75VPK.js";
2
5
  import {
3
6
  modelDisplayName
4
7
  } from "./chunk-7Y3ZFM5U.js";
@@ -9,9 +12,6 @@ import {
9
12
  creatorInitials,
10
13
  creatorLabel
11
14
  } from "./chunk-KJJBQ3KV.js";
12
- import {
13
- sessionHoverFacts
14
- } from "./chunk-52WK2GGK.js";
15
15
  import {
16
16
  cn
17
17
  } from "./chunk-A3MTTRCX.js";
@@ -155,4 +155,4 @@ function SessionRowHoverDetails({
155
155
  export {
156
156
  SessionRowHoverDetails
157
157
  };
158
- //# sourceMappingURL=chunk-ULJAOMJA.js.map
158
+ //# sourceMappingURL=chunk-GXK4CUAB.js.map
@@ -7,7 +7,7 @@ import {
7
7
  } from "./chunk-3SMJ2BIQ.js";
8
8
  import {
9
9
  BillingClassMark
10
- } from "./chunk-PO3BH3KQ.js";
10
+ } from "./chunk-M7YEZR6X.js";
11
11
  import {
12
12
  useSessionModelAccount
13
13
  } from "./chunk-BMJTNPWK.js";
@@ -129,4 +129,4 @@ function ModelAccountIndicator({
129
129
  export {
130
130
  ModelAccountIndicator
131
131
  };
132
- //# sourceMappingURL=chunk-XN7NSPE6.js.map
132
+ //# sourceMappingURL=chunk-HCCSAECI.js.map
@@ -1,11 +1,11 @@
1
1
  "use client";
2
- import {
3
- openGeniGroupPresentation
4
- } from "./chunk-PO3BH3KQ.js";
5
2
  import {
6
3
  capabilityGroupSelection,
7
4
  sessionCapabilityGroupsFor
8
5
  } from "./chunk-4NTPH5M6.js";
6
+ import {
7
+ openGeniGroupPresentation
8
+ } from "./chunk-M7YEZR6X.js";
9
9
  import {
10
10
  cn
11
11
  } from "./chunk-A3MTTRCX.js";
@@ -15,23 +15,23 @@ import {
15
15
  ComposerMenuRowsSkeleton,
16
16
  lazyComposerPanel
17
17
  } from "./chunk-O2LGEYG4.js";
18
+ import {
19
+ isComposerConnector
20
+ } from "./chunk-L6Y4ALSM.js";
18
21
  import {
19
22
  DropdownMenu,
20
23
  DropdownMenuContent,
21
24
  DropdownMenuTrigger
22
25
  } from "./chunk-TREHTIBD.js";
23
- import {
24
- isComposerConnector
25
- } from "./chunk-L6Y4ALSM.js";
26
- import {
27
- ModelPolicyPickerMenu
28
- } from "./chunk-2NC7NZCE.js";
29
26
  import {
30
27
  Button
31
28
  } from "./chunk-HMU5IELG.js";
29
+ import {
30
+ ModelPolicyPickerMenu
31
+ } from "./chunk-2K27S6LK.js";
32
32
  import {
33
33
  ModelPolicyPicker
34
- } from "./chunk-FFNPUSVO.js";
34
+ } from "./chunk-ZWACUOU5.js";
35
35
 
36
36
  // src/app/components/pickers.tsx
37
37
  import { ChevronDownIcon, PlugIcon } from "lucide-react";
@@ -175,4 +175,4 @@ export {
175
175
  sessionToolSelectionSummary,
176
176
  SessionToolPicker
177
177
  };
178
- //# sourceMappingURL=chunk-22FFOHPT.js.map
178
+ //# sourceMappingURL=chunk-HJTTDLF6.js.map
@@ -1,23 +1,23 @@
1
1
  "use client";
2
+ import {
3
+ ListRow,
4
+ ListRowSkeleton,
5
+ RowList
6
+ } from "./chunk-MM7OKOTE.js";
2
7
  import {
3
8
  Toolbar,
4
9
  ToolbarGroup,
5
10
  ToolbarSearch
6
11
  } from "./chunk-BBWKPNJB.js";
7
- import {
8
- ListRow,
9
- ListRowSkeleton,
10
- RowList
11
- } from "./chunk-JQCGPTZ6.js";
12
12
  import {
13
13
  sessionStateLabel
14
- } from "./chunk-CD3MO3IC.js";
15
- import {
16
- SegmentedControl
17
- } from "./chunk-325C2TCI.js";
14
+ } from "./chunk-E36IC3LU.js";
18
15
  import {
19
16
  EmptyState
20
17
  } from "./chunk-5CIUQX6D.js";
18
+ import {
19
+ SegmentedControl
20
+ } from "./chunk-325C2TCI.js";
21
21
  import {
22
22
  LogoTile
23
23
  } from "./chunk-FQQEZUSN.js";
@@ -27,21 +27,21 @@ import {
27
27
  import {
28
28
  useNavigate
29
29
  } from "./chunk-VYKW6TB2.js";
30
- import {
31
- useAppContext
32
- } from "./chunk-W6KAUGXO.js";
33
30
  import {
34
31
  userErrorText
35
32
  } from "./chunk-L4OF77LE.js";
36
33
  import {
37
- sessionDisplayTitle
38
- } from "./chunk-22JFMNMF.js";
34
+ useAppContext
35
+ } from "./chunk-W6KAUGXO.js";
39
36
  import {
40
37
  Notice
41
38
  } from "./chunk-WLEDGIVS.js";
42
39
  import {
43
40
  Button
44
41
  } from "./chunk-HMU5IELG.js";
42
+ import {
43
+ sessionDisplayTitle
44
+ } from "./chunk-F2RMKGDQ.js";
45
45
 
46
46
  // src/app/components/artifacts/site-conversations.tsx
47
47
  import { useCallback, useEffect, useRef, useState } from "react";
@@ -248,4 +248,4 @@ export {
248
248
  SiteConversations,
249
249
  SiteConversationsPanel
250
250
  };
251
- //# sourceMappingURL=chunk-YEROLKOA.js.map
251
+ //# sourceMappingURL=chunk-HSQRYJ4P.js.map
@@ -1,10 +1,10 @@
1
1
  "use client";
2
2
  import {
3
3
  DestructiveConfirm
4
- } from "./chunk-CFFNT2OY.js";
4
+ } from "./chunk-3GLAPCVI.js";
5
5
  import {
6
- DetailMeta
7
- } from "./chunk-NIITHJEE.js";
6
+ UsageMeter
7
+ } from "./chunk-JB4X3TQI.js";
8
8
  import {
9
9
  MoreMenu,
10
10
  RowButton
@@ -13,16 +13,22 @@ import {
13
13
  ListRow,
14
14
  ListRowSkeleton,
15
15
  RowList
16
- } from "./chunk-JQCGPTZ6.js";
16
+ } from "./chunk-MM7OKOTE.js";
17
17
  import {
18
- BackLink
19
- } from "./chunk-5DSKMG2I.js";
18
+ DetailMeta
19
+ } from "./chunk-NIITHJEE.js";
20
20
  import {
21
- UsageMeter
22
- } from "./chunk-JB4X3TQI.js";
21
+ BackLink
22
+ } from "./chunk-LEXPBQ56.js";
23
23
  import {
24
24
  formatBytes
25
- } from "./chunk-5TLEWXAB.js";
25
+ } from "./chunk-IKQMSROV.js";
26
+ import {
27
+ EmptyState
28
+ } from "./chunk-5CIUQX6D.js";
29
+ import {
30
+ LogoTile
31
+ } from "./chunk-FQQEZUSN.js";
26
32
  import {
27
33
  Switch
28
34
  } from "./chunk-IZMUUUYD.js";
@@ -30,15 +36,6 @@ import {
30
36
  SettingRow,
31
37
  SettingRowGroup
32
38
  } from "./chunk-XSOPQZGH.js";
33
- import {
34
- DropdownMenuItem
35
- } from "./chunk-TREHTIBD.js";
36
- import {
37
- EmptyState
38
- } from "./chunk-5CIUQX6D.js";
39
- import {
40
- LogoTile
41
- } from "./chunk-FQQEZUSN.js";
42
39
  import {
43
40
  toast
44
41
  } from "./chunk-YG6NARQY.js";
@@ -48,6 +45,9 @@ import {
48
45
  import {
49
46
  RelativeTime
50
47
  } from "./chunk-XG57V2BN.js";
48
+ import {
49
+ DropdownMenuItem
50
+ } from "./chunk-TREHTIBD.js";
51
51
  import {
52
52
  Notice
53
53
  } from "./chunk-WLEDGIVS.js";
@@ -518,4 +518,4 @@ export {
518
518
  SiteDataPanel,
519
519
  siteSqlSummary
520
520
  };
521
- //# sourceMappingURL=chunk-73WI7FL2.js.map
521
+ //# sourceMappingURL=chunk-HTKVYEVB.js.map
@@ -4,30 +4,30 @@ import {
4
4
  presentationPermissions
5
5
  } from "./chunk-Y6TTMPZC.js";
6
6
  import {
7
- OwnershipSelector
8
- } from "./chunk-FIPSOCVC.js";
7
+ OnePasswordCatalogLink
8
+ } from "./chunk-V3RHG7CF.js";
9
9
  import {
10
10
  ConnectorToolPermissions,
11
11
  hasConnectorToolPermissionTarget
12
- } from "./chunk-LF5CBAOS.js";
12
+ } from "./chunk-C535KSTY.js";
13
13
  import {
14
- ExcelAddinSetupSteps
15
- } from "./chunk-5N6XZ7LG.js";
14
+ OwnershipSelector
15
+ } from "./chunk-FIPSOCVC.js";
16
16
  import {
17
17
  McpAuthDiscoveryNotice
18
18
  } from "./chunk-VHDCIO4V.js";
19
- import {
20
- OnePasswordCatalogLink
21
- } from "./chunk-V3RHG7CF.js";
22
19
  import {
23
20
  CapabilityDialogContent
24
21
  } from "./chunk-IYEI5OZL.js";
25
22
  import {
26
- CapabilityLogo
27
- } from "./chunk-LEDS7L3I.js";
23
+ ExcelAddinSetupSteps
24
+ } from "./chunk-5N6XZ7LG.js";
28
25
  import {
29
26
  focusCapabilitySuccessor
30
27
  } from "./chunk-MKG5VTIJ.js";
28
+ import {
29
+ CapabilityLogo
30
+ } from "./chunk-LEDS7L3I.js";
31
31
  import {
32
32
  GENERIC_API_KEY_FIELD,
33
33
  capabilityCategoryLabel,
@@ -975,4 +975,4 @@ export {
975
975
  CredentialForm,
976
976
  ConnectionStatus
977
977
  };
978
- //# sourceMappingURL=chunk-4RMN4E2Y.js.map
978
+ //# sourceMappingURL=chunk-HXZIX7MR.js.map
@@ -20,7 +20,7 @@ import {
20
20
  } from "./chunk-SJGAHTY5.js";
21
21
  import {
22
22
  useOpenGeniText
23
- } from "./chunk-JFK7NTEA.js";
23
+ } from "./chunk-S6WJ6TUT.js";
24
24
 
25
25
  // src/hooks/use-composer.ts
26
26
  import {
@@ -2241,4 +2241,4 @@ export {
2241
2241
  shouldSubmitOnKey,
2242
2242
  shouldSteerOnKey
2243
2243
  };
2244
- //# sourceMappingURL=chunk-DJFTH2DI.js.map
2244
+ //# sourceMappingURL=chunk-I57HZMMA.js.map