@opengeni/react 6.7.0 → 6.7.1-canary.41759707569001

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (758) hide show
  1. package/dist/app/app-state.js +9 -9
  2. package/dist/app/components/Composer.js +19 -19
  3. package/dist/app/components/agent/agent-capability-picker.js +6 -6
  4. package/dist/app/components/artifacts/artifact-browse-controls.js +2 -2
  5. package/dist/app/components/artifacts/artifact-library.js +13 -13
  6. package/dist/app/components/artifacts/artifact-viewer.js +21 -21
  7. package/dist/app/components/artifacts/chat-interactive-block.js +14 -14
  8. package/dist/app/components/artifacts/copy-artifact-link.js +2 -2
  9. package/dist/app/components/artifacts/file-reach-dialog.js +7 -7
  10. package/dist/app/components/artifacts/inline-chat-image.js +22 -22
  11. package/dist/app/components/artifacts/retained-file-preview.js +23 -23
  12. package/dist/app/components/artifacts/retained-text-preview.js +3 -3
  13. package/dist/app/components/artifacts/site-actions.d.ts +43 -0
  14. package/dist/app/components/artifacts/site-actions.js +38 -0
  15. package/dist/app/components/artifacts/site-audience.js +5 -5
  16. package/dist/app/components/artifacts/site-conversations.js +13 -13
  17. package/dist/app/components/artifacts/site-data.js +14 -14
  18. package/dist/app/components/artifacts/site-publishing-page.js +31 -31
  19. package/dist/app/components/artifacts/site-publishing.js +25 -25
  20. package/dist/app/components/artifacts/site-settings.js +30 -30
  21. package/dist/app/components/artifacts/site-version-menu.js +3 -3
  22. package/dist/app/components/billing-class-mark.js +3 -3
  23. package/dist/app/components/bots/bot-launch-strip.js +23 -23
  24. package/dist/app/components/bots/bot-template-dialog.js +30 -30
  25. package/dist/app/components/bots/bot-template-shortcuts.js +23 -23
  26. package/dist/app/components/bots/bot-templates-page.js +37 -37
  27. package/dist/app/components/capabilities/capability-detail-sheet.js +9 -9
  28. package/dist/app/components/capabilities/capability-logo-source.js +15 -16
  29. package/dist/app/components/capabilities/connection-ownership-selector.js +4 -4
  30. package/dist/app/components/capabilities/connector-tool-permissions.js +4 -4
  31. package/dist/app/components/capabilities/detail-dialog.js +3 -3
  32. package/dist/app/components/capabilities/native-connect-setup.js +17 -18
  33. package/dist/app/components/capabilities/native-connect-setup.js.map +1 -1
  34. package/dist/app/components/capabilities/own-logins-shared-heads-up.js +3 -3
  35. package/dist/app/components/capabilities/prepared-mcp-setup-card.js +17 -18
  36. package/dist/app/components/capabilities/session-capability-card.js +55 -56
  37. package/dist/app/components/capabilities/session-capability-card.js.map +1 -1
  38. package/dist/app/components/capabilities/session-chrome-card.js +24 -25
  39. package/dist/app/components/capabilities/session-custom-mcp-card.js +18 -19
  40. package/dist/app/components/capabilities/session-github-card.js +18 -19
  41. package/dist/app/components/capabilities/session-machine-card.js +23 -24
  42. package/dist/app/components/capabilities/session-personal-github-card.js +16 -17
  43. package/dist/app/components/capabilities/session-plugin-card.js +9 -10
  44. package/dist/app/components/capabilities/use-connection-accounts.js +2 -2
  45. package/dist/app/components/command-menu/chat-status.js +19 -19
  46. package/dist/app/components/command-menu/chat-switcher.js +35 -35
  47. package/dist/app/components/command-menu/command-menu.js +42 -42
  48. package/dist/app/components/command-menu/shortcut-sheet.js +11 -11
  49. package/dist/app/components/composer-capabilities-menu-body.js +4 -4
  50. package/dist/app/components/composer-mobile-plus-panel.js +10 -10
  51. package/dist/app/components/composer-mobile-plus.js +3 -3
  52. package/dist/app/components/credit-required-gate.js +1 -1
  53. package/dist/app/components/credit-required-prompt.js +4 -4
  54. package/dist/app/components/credits/checkout-credits-celebration.js +3 -3
  55. package/dist/app/components/credits/checkout-return.js +3 -3
  56. package/dist/app/components/credits/credit-refusal-notice.js +2 -2
  57. package/dist/app/components/desktop/app-shots.js +6 -6
  58. package/dist/app/components/desktop/computer-use.js +2 -2
  59. package/dist/app/components/desktop/this-computer.js +5 -5
  60. package/dist/app/components/feedback.js +5 -5
  61. package/dist/app/components/github-app-connect-launcher.js +1 -1
  62. package/dist/app/components/machines/connect-machine-dialog.js +14 -14
  63. package/dist/app/components/markdown.js +7 -7
  64. package/dist/app/components/models/models-ui.js +6 -6
  65. package/dist/app/components/my-things.js +6 -6
  66. package/dist/app/components/own-where-it-works.js +5 -5
  67. package/dist/app/components/personal-resource-attachment-surface.js +4 -4
  68. package/dist/app/components/pickers.js +5 -5
  69. package/dist/app/components/rail/channel-create-dialog.js +5 -5
  70. package/dist/app/components/rail/project-glyph.js +23 -23
  71. package/dist/app/components/rail/project-profile.js +32 -32
  72. package/dist/app/components/rail/rail-context.js +1 -1
  73. package/dist/app/components/rail/rail-sections.js +69 -60
  74. package/dist/app/components/rail/session-header.js +54 -53
  75. package/dist/app/components/rail/session-list.js +67 -58
  76. package/dist/app/components/rail/session-row-content.js +4 -4
  77. package/dist/app/components/rail/session-row-hover-details.js +18 -18
  78. package/dist/app/components/rail/session-shell.js +86 -77
  79. package/dist/app/components/rail/site-session-group-heading.js +29 -12
  80. package/dist/app/components/session/agent-configuration-panel.js +14 -14
  81. package/dist/app/components/session/artifact-session-page.js +5 -5
  82. package/dist/app/components/session/banners.js +9 -9
  83. package/dist/app/components/session/console-new-conversation.js +42 -43
  84. package/dist/app/components/session/descendant-requests.js +38 -39
  85. package/dist/app/components/session/descendant-requests.js.map +1 -1
  86. package/dist/app/components/session/editable-artifacts-workspace.js +27 -27
  87. package/dist/app/components/session/failed-session-banner.js +9 -9
  88. package/dist/app/components/session/failure-recovery-boundary.js +3 -3
  89. package/dist/app/components/session/human-input-delegation-record.js +2 -2
  90. package/dist/app/components/session/human-input.js +36 -37
  91. package/dist/app/components/session/inspector.js +45 -46
  92. package/dist/app/components/session/inspector.js.map +1 -1
  93. package/dist/app/components/session/message-actions.js +5 -5
  94. package/dist/app/components/session/message-resource-attachments.js +13 -13
  95. package/dist/app/components/session/model-recovery-notice.js +3 -3
  96. package/dist/app/components/session/new-session-settings-menu.js +6 -6
  97. package/dist/app/components/session/new-session-setup-strip.js +24 -24
  98. package/dist/app/components/session/sandbox-recovery-actions.js +5 -5
  99. package/dist/app/components/session/sandbox-switcher.js +8 -8
  100. package/dist/app/components/session/sandbox-workspace.js +52 -53
  101. package/dist/app/components/session/search-markdown-highlight.js +8 -8
  102. package/dist/app/components/session/search-results-view.js +9 -9
  103. package/dist/app/components/session/session-admin-access.js +5 -5
  104. package/dist/app/components/session/session-admission-notice.js +4 -4
  105. package/dist/app/components/session/session-avatar-picker.js +24 -24
  106. package/dist/app/components/session/session-avatar.js +22 -22
  107. package/dist/app/components/session/session-machine-access-notice.js +4 -4
  108. package/dist/app/components/session/session-profile-dialog.js +29 -29
  109. package/dist/app/components/session/session-profile-editor.js +30 -30
  110. package/dist/app/components/session/session-retention.js +3 -3
  111. package/dist/app/components/session/session-search-dialog.js +11 -11
  112. package/dist/app/components/session/session-tenancy-control.js +4 -4
  113. package/dist/app/components/session/session-usage-limit-section.js +4 -4
  114. package/dist/app/components/session/share-chat-dialog.js +7 -7
  115. package/dist/app/components/session/subagents.js +12 -12
  116. package/dist/app/components/session/subscription-account-indicator.js +6 -6
  117. package/dist/app/components/settings/row-select.js +4 -4
  118. package/dist/app/components/transcription-settings.js +6 -6
  119. package/dist/app/components/ui/destructive-confirm.js +7 -7
  120. package/dist/app/components/usage/usage-entry.js +3 -3
  121. package/dist/app/components/window-bar.d.ts +3 -1
  122. package/dist/app/components/window-bar.js +13 -11
  123. package/dist/app/components/workspace-composer-plus.js +20 -21
  124. package/dist/app/components/workspace-reach.js +4 -4
  125. package/dist/app/embed/session-app.js +168 -162
  126. package/dist/app/lib/actions/actions-provider.js +9 -9
  127. package/dist/app/lib/agent-capabilities.js +3 -3
  128. package/dist/app/lib/codex-usage-query.js +2 -2
  129. package/dist/app/lib/composer-connectors.js +16 -17
  130. package/dist/app/lib/composer-send-blocking.d.ts +135 -1
  131. package/dist/app/lib/composer-send-blocking.js +30 -3
  132. package/dist/app/lib/console-site.js +2 -2
  133. package/dist/app/lib/console-text.js +2 -2
  134. package/dist/app/lib/copy-link.d.ts +2 -0
  135. package/dist/app/lib/events.js +15 -15
  136. package/dist/app/lib/failed-session-copy.js +4 -4
  137. package/dist/app/lib/model-access-onboarding.js +3 -3
  138. package/dist/app/lib/model-access.js +2 -2
  139. package/dist/app/lib/move-chat-to-machine.js +3 -3
  140. package/dist/app/lib/session-branch-cache.js +12 -12
  141. package/dist/app/lib/session-composer-readiness.d.ts +2 -2
  142. package/dist/app/lib/session-create.js +4 -4
  143. package/dist/app/lib/session-group-pagination.js +12 -12
  144. package/dist/app/lib/session-hover-facts.js +17 -17
  145. package/dist/app/lib/session-model.js +2 -2
  146. package/dist/app/lib/session-rail.js +9 -9
  147. package/dist/app/lib/session-rename.js +3 -3
  148. package/dist/app/lib/sessions-group.js +11 -11
  149. package/dist/app/lib/site-sidebar-bridge.d.ts +24 -0
  150. package/dist/app/lib/site-tool-consent-dialog.js +10 -11
  151. package/dist/app/lib/site-tool-consent-dialog.js.map +1 -1
  152. package/dist/app/lib/site-tool-consent.js +1 -1
  153. package/dist/app/lib/turn-failure-analytics.js +5 -5
  154. package/dist/app/lib/use-follow-up-repositories.js +5 -5
  155. package/dist/app/lib/use-workspace-machines.js +5 -5
  156. package/dist/app/lib/use-workspace-model-catalog.js +3 -3
  157. package/dist/app/lib/use-workspace-rigs.js +2 -2
  158. package/dist/app/lib/workspace-navigation-preference.js +4 -4
  159. package/dist/app/lib/workspace-scope-context.js +3 -3
  160. package/dist/app/routes/artifacts.js +70 -70
  161. package/dist/app/routes/retained-artifact.js +50 -50
  162. package/dist/app/routes/session.js +98 -99
  163. package/dist/app/routes/sessions-index-hydration.js +5 -5
  164. package/dist/app/routes/sessions-index.js +85 -85
  165. package/dist/app/routes/site-view.js +174 -82
  166. package/dist/app/routes/site-view.js.map +1 -1
  167. package/dist/artifacts-document.js +4 -4
  168. package/dist/artifacts-presentation.js +4 -4
  169. package/dist/artifacts-spreadsheet.js +4 -4
  170. package/dist/artifacts.js +13 -13
  171. package/dist/automations.js +12 -12
  172. package/dist/{browser-viewer-TC27OCIP.js → browser-viewer-ZHQDVHZ2.js} +5 -5
  173. package/dist/{chat-interactive-block-RWPQBHVS.js → chat-interactive-block-VSDD6X3M.js} +5 -5
  174. package/dist/{chunk-5MOJZORA.js → chunk-2EA4IRIP.js} +34 -3
  175. package/dist/chunk-2EA4IRIP.js.map +1 -0
  176. package/dist/{chunk-C43KRXGA.js → chunk-2GCHGWNE.js} +3 -3
  177. package/dist/{chunk-XLH7QY2R.js → chunk-2J77TWGH.js} +3 -3
  178. package/dist/{chunk-Q3DPEYX4.js → chunk-2LMJXRXK.js} +7 -7
  179. package/dist/{chunk-77WAKEAH.js → chunk-2OXSB2OL.js} +2 -2
  180. package/dist/{chunk-H3T7IWNA.js → chunk-2VJOSU4H.js} +2 -2
  181. package/dist/{chunk-IMDQUHBJ.js → chunk-2ZAQA5GE.js} +6 -6
  182. package/dist/{chunk-L7YTNTIK.js → chunk-3CDJSKDW.js} +3 -3
  183. package/dist/{chunk-EWSOC6WF.js → chunk-3DRLCX5V.js} +2 -2
  184. package/dist/{chunk-JEUPAVYY.js → chunk-3L465FBR.js} +6 -6
  185. package/dist/{chunk-4SAWSRAA.js → chunk-3LTSLMVL.js} +5 -5
  186. package/dist/{chunk-5NWEKLDZ.js → chunk-3NNAC43A.js} +2 -2
  187. package/dist/{chunk-EDI6SJ2N.js → chunk-3OK7Y6ES.js} +2 -2
  188. package/dist/{chunk-AWKES45Y.js → chunk-3PM3M2Q6.js} +2 -2
  189. package/dist/{chunk-I7XIZRFD.js → chunk-3PZ3LRPV.js} +3 -3
  190. package/dist/{chunk-6BCXNDEI.js → chunk-3RGLQG6S.js} +69 -55
  191. package/dist/chunk-3RGLQG6S.js.map +1 -0
  192. package/dist/{chunk-2M3J7ZWQ.js → chunk-467WDSOK.js} +2 -2
  193. package/dist/{chunk-UTIAXH52.js → chunk-477DTTMH.js} +3 -3
  194. package/dist/{chunk-J5F5HPPW.js → chunk-4BWMAGJJ.js} +3 -3
  195. package/dist/{chunk-YSJEAAOL.js → chunk-4F3AEJI6.js} +4 -4
  196. package/dist/{chunk-LHPNABDH.js → chunk-4JXPLTWV.js} +2 -2
  197. package/dist/{chunk-NUNZS36W.js → chunk-4O2XWOLZ.js} +3 -3
  198. package/dist/{chunk-BHNSJVBC.js → chunk-4OTNYMJH.js} +5 -5
  199. package/dist/{chunk-2Z3NQNTM.js → chunk-4POXUODO.js} +15 -15
  200. package/dist/{chunk-QB2KMIDP.js → chunk-4SJAEPM2.js} +2 -2
  201. package/dist/{chunk-TAT5USZN.js → chunk-4T3NE262.js} +3 -3
  202. package/dist/{chunk-6JHU2UBS.js → chunk-4Z5X7PLC.js} +3 -3
  203. package/dist/{chunk-2STUPWEL.js → chunk-54U6ZBEX.js} +3 -3
  204. package/dist/{chunk-XXSOHN35.js → chunk-5FLYHX5R.js} +2 -2
  205. package/dist/{chunk-MIYFS2XN.js → chunk-5MHMCE2G.js} +3 -3
  206. package/dist/{chunk-YWVI6ZMK.js → chunk-5MIBQ4P5.js} +2 -2
  207. package/dist/{chunk-HAX4LCR5.js → chunk-5TKTWXAU.js} +3 -3
  208. package/dist/chunk-6B73WNLR.js +173 -0
  209. package/dist/chunk-6B73WNLR.js.map +1 -0
  210. package/dist/{chunk-F2OPHAUN.js → chunk-6HRYJERP.js} +5 -5
  211. package/dist/{chunk-5O2FCCHZ.js → chunk-6JGB4XGH.js} +3 -3
  212. package/dist/{chunk-RPVREAU7.js → chunk-736RUNIA.js} +4 -4
  213. package/dist/{chunk-2KALVELR.js → chunk-74CBR5YE.js} +3 -3
  214. package/dist/{chunk-5IE76VCY.js → chunk-752WXSDN.js} +2 -2
  215. package/dist/{chunk-SEO7TICN.js → chunk-76MC7KOE.js} +1 -1
  216. package/dist/{chunk-OPJJSKUK.js → chunk-77B6UCNK.js} +6 -6
  217. package/dist/{chunk-ZUA3JMI6.js → chunk-77SYIH6O.js} +2 -2
  218. package/dist/{chunk-ILDXWY37.js → chunk-7AI4E7PV.js} +2 -2
  219. package/dist/{chunk-7X6SDK2C.js → chunk-7HESG3ET.js} +3 -3
  220. package/dist/{chunk-2RG7NIAS.js → chunk-7MY3XB6I.js} +7 -7
  221. package/dist/{chunk-C372BFOV.js → chunk-7NLF35YL.js} +4 -4
  222. package/dist/{chunk-IFB3WJ36.js → chunk-7YTR3UFO.js} +4 -4
  223. package/dist/{chunk-BMICEQZQ.js → chunk-7Z76QP64.js} +3 -3
  224. package/dist/{chunk-YWIFM7D7.js → chunk-AAS7OWV6.js} +3 -3
  225. package/dist/{chunk-5QAY6K77.js → chunk-AB5IW227.js} +3 -3
  226. package/dist/{chunk-ZBIXBQNI.js → chunk-ABJZDRW2.js} +2 -2
  227. package/dist/{chunk-4DVJ6ONS.js → chunk-AH3DGOTK.js} +2 -2
  228. package/dist/{chunk-HGKTHF2U.js → chunk-AJBDAVX3.js} +8 -8
  229. package/dist/{chunk-HD5X76TP.js → chunk-AQQT2FIC.js} +5 -5
  230. package/dist/chunk-AQQT2FIC.js.map +1 -0
  231. package/dist/{chunk-SC6RRD2D.js → chunk-ARTEEI2E.js} +11 -2
  232. package/dist/{chunk-SC6RRD2D.js.map → chunk-ARTEEI2E.js.map} +1 -1
  233. package/dist/{chunk-IXPTECSC.js → chunk-AVXDIRRW.js} +2 -2
  234. package/dist/{chunk-QK5EFEUT.js → chunk-BASI553K.js} +4 -4
  235. package/dist/{chunk-AW2MQB37.js → chunk-BD5FMBO4.js} +2 -2
  236. package/dist/{chunk-CRU35QQH.js → chunk-BFFNINCC.js} +108 -66
  237. package/dist/chunk-BFFNINCC.js.map +1 -0
  238. package/dist/{chunk-OVKYVZMW.js → chunk-BIHGCQXA.js} +2 -2
  239. package/dist/{chunk-Z4FMAFNH.js → chunk-BQYRZIZ7.js} +2 -2
  240. package/dist/{chunk-DZWARC4M.js → chunk-BWMIWRUK.js} +3 -3
  241. package/dist/{chunk-Y4OBB2VN.js → chunk-CV4VVLPZ.js} +2 -2
  242. package/dist/{chunk-JQL7ZH6C.js → chunk-CXAN2FHF.js} +7 -7
  243. package/dist/{chunk-3PZ7JZI2.js → chunk-D3PTVN2I.js} +2 -2
  244. package/dist/{chunk-FPXASDG5.js → chunk-D5TIVCXG.js} +2 -2
  245. package/dist/{chunk-7W37NS3I.js → chunk-D74Z2N4K.js} +2 -2
  246. package/dist/{chunk-MNZG4OHU.js → chunk-DCEQCGVN.js} +2 -2
  247. package/dist/{chunk-ND2BXV3P.js → chunk-DEHLWZSI.js} +4 -4
  248. package/dist/{chunk-ZTPXACWB.js → chunk-DHIGEK6P.js} +6 -6
  249. package/dist/{chunk-2YUOVM3G.js → chunk-DIP7YALH.js} +2 -2
  250. package/dist/{chunk-6PZ7OBYU.js → chunk-DLVIRJGK.js} +4 -4
  251. package/dist/{chunk-KLEUWIMZ.js → chunk-DQPIEQGP.js} +2 -2
  252. package/dist/{chunk-T2QX3FDP.js → chunk-DWJ6J3YW.js} +4 -4
  253. package/dist/{chunk-3CPWWGNK.js → chunk-E5KOWRDU.js} +2 -2
  254. package/dist/{chunk-6WGRDRMA.js → chunk-EBIVTDEG.js} +2 -2
  255. package/dist/{chunk-5CPEEAFD.js → chunk-EDDKPIIV.js} +2 -2
  256. package/dist/{chunk-TX3VECZU.js → chunk-EGKARC53.js} +2 -2
  257. package/dist/{chunk-JEA3QDX7.js → chunk-EKJHOWTZ.js} +4 -4
  258. package/dist/{chunk-UVN5TMHU.js → chunk-ESXAECZ3.js} +2 -2
  259. package/dist/{chunk-3SOIESJM.js → chunk-EWZ2RLNG.js} +2 -2
  260. package/dist/{chunk-ORJPS5VN.js → chunk-F4GCGN7J.js} +91 -31
  261. package/dist/chunk-F4GCGN7J.js.map +1 -0
  262. package/dist/{chunk-NW53H5RW.js → chunk-F7GARVTE.js} +160 -59
  263. package/dist/chunk-F7GARVTE.js.map +1 -0
  264. package/dist/{chunk-CMKGILJK.js → chunk-FBA2NXYH.js} +4 -4
  265. package/dist/{chunk-O6N4ABCA.js → chunk-FER6EVIY.js} +2 -2
  266. package/dist/{chunk-DF5EAHDN.js → chunk-FLWQJDJ5.js} +5 -5
  267. package/dist/{chunk-PTAG4PDC.js → chunk-FNXCFIPW.js} +2 -2
  268. package/dist/chunk-FPSS23S4.js +36 -0
  269. package/dist/chunk-FPSS23S4.js.map +1 -0
  270. package/dist/{chunk-BJEJFISW.js → chunk-FSDQQQIA.js} +3 -3
  271. package/dist/{chunk-FVXBNBHO.js → chunk-FTIC5VXR.js} +6 -6
  272. package/dist/{chunk-PTF5B7TJ.js → chunk-G5UQBTXY.js} +2 -2
  273. package/dist/{chunk-4E3ZJRTZ.js → chunk-G6ICCGJ3.js} +2 -2
  274. package/dist/{chunk-5YKW2K6I.js → chunk-GB5SOTIB.js} +12 -12
  275. package/dist/{chunk-NRTE7DNV.js → chunk-GIWFLWXG.js} +4 -4
  276. package/dist/{chunk-MM4FNWI4.js → chunk-GMHIOYB7.js} +4 -4
  277. package/dist/{chunk-6DK6Z4UN.js → chunk-GOCODNQS.js} +3 -3
  278. package/dist/{chunk-TPQTRNER.js → chunk-GSCGKJNK.js} +2 -2
  279. package/dist/{chunk-7VMZGLYI.js → chunk-GTHCHCWW.js} +3 -3
  280. package/dist/{chunk-SQJIKMN3.js → chunk-GTRAH4FG.js} +2 -2
  281. package/dist/{chunk-ZYAZUPPV.js → chunk-GU7T2S5N.js} +3 -3
  282. package/dist/{chunk-JKHKLL5W.js → chunk-H6BX6WOW.js} +3 -3
  283. package/dist/{chunk-IMZCQBOT.js → chunk-H6MJFMHZ.js} +3 -3
  284. package/dist/{chunk-HSOXMJOT.js → chunk-HEGV4QMS.js} +2 -2
  285. package/dist/{chunk-JDTGRRNU.js → chunk-HGS5KMZS.js} +45 -27
  286. package/dist/chunk-HGS5KMZS.js.map +1 -0
  287. package/dist/chunk-HROITVQJ.js +85 -0
  288. package/dist/chunk-HROITVQJ.js.map +1 -0
  289. package/dist/{chunk-OF4TIKYC.js → chunk-HTMQGS63.js} +17 -9
  290. package/dist/chunk-HTMQGS63.js.map +1 -0
  291. package/dist/{chunk-NC7PVOEK.js → chunk-HWVPLFIW.js} +2 -2
  292. package/dist/{chunk-ECJBYNLJ.js → chunk-ICAMYP5M.js} +2 -2
  293. package/dist/{chunk-DJAXC5OK.js → chunk-IFSXVU2S.js} +2 -2
  294. package/dist/{chunk-N6AACDUW.js → chunk-IHLRYWA7.js} +4 -4
  295. package/dist/{chunk-I4MRDSUF.js → chunk-IJR6VOLU.js} +3 -3
  296. package/dist/{chunk-YCVD6CI3.js → chunk-IN3VQFKS.js} +2 -2
  297. package/dist/{chunk-TXLIEOJX.js → chunk-IWKHF2FN.js} +106 -75
  298. package/dist/chunk-IWKHF2FN.js.map +1 -0
  299. package/dist/{chunk-MFROMEKA.js → chunk-J2BTILRR.js} +3 -3
  300. package/dist/{chunk-NCYMNCJO.js → chunk-J2WY42FA.js} +2 -2
  301. package/dist/{chunk-DGMR6JEJ.js → chunk-J4XSTXZP.js} +2 -2
  302. package/dist/{chunk-P77WNZDY.js → chunk-JMHEFZOB.js} +2 -2
  303. package/dist/{chunk-GVN5SZLX.js → chunk-JMI53ZMU.js} +3 -3
  304. package/dist/{chunk-IDANQPRH.js → chunk-JV3UI7BH.js} +3 -3
  305. package/dist/{chunk-XEQMZB3C.js → chunk-K4DQS2ML.js} +24 -6
  306. package/dist/chunk-K4DQS2ML.js.map +1 -0
  307. package/dist/{chunk-GKVJIDHF.js → chunk-KFNZZ2N6.js} +2 -2
  308. package/dist/{chunk-I4QEJ62Y.js → chunk-KI46GKMD.js} +7 -7
  309. package/dist/{chunk-SIRLACNZ.js → chunk-KO3OHHY2.js} +3 -3
  310. package/dist/{chunk-NULUNM7H.js → chunk-KUE5BOQE.js} +5 -5
  311. package/dist/{chunk-O3LKCBP5.js → chunk-LIJNVIT3.js} +3 -3
  312. package/dist/{chunk-JWB44UGJ.js → chunk-LIJPDVYP.js} +2 -2
  313. package/dist/{chunk-BJFH6JI5.js → chunk-LN4DJOMX.js} +13 -13
  314. package/dist/{chunk-KYS77RPN.js → chunk-LPKJ77EK.js} +2 -2
  315. package/dist/{chunk-RMFKVOM7.js → chunk-LQKVNREV.js} +4 -4
  316. package/dist/{chunk-E7XERZWC.js → chunk-LTJFV2JI.js} +2 -2
  317. package/dist/{chunk-INXGSG3J.js → chunk-LVDNY5RC.js} +2 -2
  318. package/dist/{chunk-2INLDVK3.js → chunk-LVELUUK6.js} +2 -2
  319. package/dist/{chunk-5EWSRZ2Y.js → chunk-M3HGBO2Y.js} +1 -1
  320. package/dist/{chunk-J3DY5HWQ.js → chunk-M5IQVMLR.js} +4 -4
  321. package/dist/{chunk-53AGXXZM.js → chunk-MKDFYE2E.js} +2 -2
  322. package/dist/{chunk-2I7HDP53.js → chunk-MT2R57SF.js} +2 -2
  323. package/dist/{chunk-Z7Y523PS.js → chunk-MV2CLIO6.js} +6 -6
  324. package/dist/{chunk-JZ4NLCAP.js → chunk-MZY3VKKM.js} +2 -2
  325. package/dist/{chunk-YENLNISG.js → chunk-N3FM4BNA.js} +2 -2
  326. package/dist/{chunk-RQKLF42C.js → chunk-NPGLNXYI.js} +4 -4
  327. package/dist/{chunk-I5QZJODL.js → chunk-NQ2CPQJF.js} +3 -3
  328. package/dist/{chunk-6DVCC7QS.js → chunk-OBGOLHCP.js} +164 -43
  329. package/dist/chunk-OBGOLHCP.js.map +1 -0
  330. package/dist/{chunk-CUIWCGMA.js → chunk-OCXEY7HE.js} +2 -2
  331. package/dist/{chunk-KRDR5RJD.js → chunk-OGU73VUN.js} +2 -2
  332. package/dist/{chunk-YIRVLKAX.js → chunk-OI6VI6SU.js} +9 -9
  333. package/dist/{chunk-X6KAJI3V.js → chunk-OK7BQMCI.js} +9 -9
  334. package/dist/chunk-OP2GD6QW.js +166 -0
  335. package/dist/chunk-OP2GD6QW.js.map +1 -0
  336. package/dist/{chunk-TUIN4MB7.js → chunk-ORV7EFSL.js} +4 -4
  337. package/dist/{chunk-3IK6UYO6.js → chunk-OTW25A6I.js} +3 -3
  338. package/dist/{chunk-NPGISCU6.js → chunk-OWET7EY2.js} +16 -16
  339. package/dist/{chunk-3ED2U6XE.js → chunk-OYCK4JRS.js} +2 -2
  340. package/dist/{chunk-YQXTDZSU.js → chunk-OYOFPNLC.js} +4 -4
  341. package/dist/{chunk-4NQHXYMW.js → chunk-PD7NWM7V.js} +2 -2
  342. package/dist/{chunk-4YCA2Y73.js → chunk-PF2WU2IL.js} +3 -3
  343. package/dist/{chunk-Z654FWNU.js → chunk-PLYVGZIN.js} +2 -2
  344. package/dist/{chunk-MVW6HNPI.js → chunk-PRT4J2DL.js} +2 -2
  345. package/dist/{chunk-OPWCMA4D.js → chunk-PUUEI4W3.js} +6 -6
  346. package/dist/{chunk-RLBKLAEY.js → chunk-PVB4YVDP.js} +2 -2
  347. package/dist/{chunk-NXCMHIKI.js → chunk-PWUSSSSL.js} +2 -2
  348. package/dist/{chunk-MJUCFQMS.js → chunk-PYB4BFEC.js} +3 -3
  349. package/dist/{chunk-2FSBSCZJ.js → chunk-PZKHST7A.js} +2 -2
  350. package/dist/{chunk-QZAAUQRN.js → chunk-Q5EZNBPI.js} +3 -3
  351. package/dist/{chunk-ZHDFQITM.js → chunk-Q5K2J5GG.js} +2 -2
  352. package/dist/{chunk-DZXEDSQI.js → chunk-QKBFIJE7.js} +5 -5
  353. package/dist/{chunk-FZC5N55X.js → chunk-QL5NQ3JX.js} +8 -8
  354. package/dist/{chunk-7T2ZE3VT.js → chunk-QPQ7R77C.js} +8 -1
  355. package/dist/chunk-QPQ7R77C.js.map +1 -0
  356. package/dist/{chunk-OV6QJRT4.js → chunk-QRECBCJM.js} +2 -2
  357. package/dist/{chunk-3GZA4BUW.js → chunk-QURYQFDN.js} +2 -2
  358. package/dist/{chunk-I5B5L6Q4.js → chunk-QVZVUROX.js} +1 -1
  359. package/dist/{chunk-VS7AHPCZ.js → chunk-R33SBMB7.js} +3 -3
  360. package/dist/{chunk-KCBMFSMS.js → chunk-R4JA5JFI.js} +3 -3
  361. package/dist/{chunk-HC4JFZVU.js → chunk-R5QAL43H.js} +2 -2
  362. package/dist/{chunk-QPSGCC5D.js → chunk-RGR57NYY.js} +2 -2
  363. package/dist/{chunk-XWFAMUZQ.js → chunk-RHXYO4H2.js} +2 -2
  364. package/dist/{chunk-Y4BB2KS2.js → chunk-RISUROBM.js} +7 -7
  365. package/dist/{chunk-U3DN4HEY.js → chunk-RMCLFSMX.js} +2 -2
  366. package/dist/{chunk-YK7756IF.js → chunk-RTZANSSC.js} +3 -3
  367. package/dist/{chunk-ZEG4VPBL.js → chunk-S27VZ5DO.js} +6 -6
  368. package/dist/{chunk-54YW6SZZ.js → chunk-SBXSKRFA.js} +3 -3
  369. package/dist/{chunk-QIOQ2NPQ.js → chunk-SGH7I7OY.js} +2 -2
  370. package/dist/{chunk-K2A5PXQ5.js → chunk-SJYTQLN3.js} +3 -3
  371. package/dist/{chunk-X3MWB2QU.js → chunk-SN2WENRP.js} +3 -3
  372. package/dist/{chunk-OSY5K7L7.js → chunk-SP44O3OU.js} +2 -2
  373. package/dist/{chunk-OZCBM3UC.js → chunk-SSR4ZX52.js} +2 -2
  374. package/dist/{chunk-QCSJ4CWE.js → chunk-SXGJL7UT.js} +14 -14
  375. package/dist/{chunk-NC55IFN3.js → chunk-T67LTMSW.js} +10 -10
  376. package/dist/{chunk-AXHZYXUV.js → chunk-TDTD66BK.js} +2 -2
  377. package/dist/{chunk-NGJJJPZZ.js → chunk-TK5FWVZR.js} +3 -3
  378. package/dist/{chunk-YPWU5KPE.js → chunk-TKQL7EDB.js} +56 -19
  379. package/dist/chunk-TKQL7EDB.js.map +1 -0
  380. package/dist/{chunk-2OP6WLGV.js → chunk-TNSJFZ6Q.js} +4 -4
  381. package/dist/{chunk-O732GAFC.js → chunk-U4LTPFD2.js} +2 -2
  382. package/dist/{chunk-4DVNUCRR.js → chunk-U5UGM5XD.js} +6 -6
  383. package/dist/{chunk-UJK53QFL.js → chunk-UBRQ3PQD.js} +2 -2
  384. package/dist/{chunk-SODC7T6L.js → chunk-UMX6DZME.js} +2 -2
  385. package/dist/{chunk-YLS6QE5G.js → chunk-UO35OEOX.js} +4 -4
  386. package/dist/{chunk-VTTAJOQ7.js → chunk-UO3X52YM.js} +2 -2
  387. package/dist/{chunk-SHHJCL7X.js → chunk-UTRNLNCW.js} +3 -3
  388. package/dist/{chunk-HEFPPMBQ.js → chunk-UU5FBVRX.js} +2 -2
  389. package/dist/{chunk-GQXZPKK7.js → chunk-V6UOVHW3.js} +2 -2
  390. package/dist/{chunk-7TIX2UAR.js → chunk-VCJQQYRE.js} +4 -4
  391. package/dist/{chunk-6WD2INST.js → chunk-WDASYY4S.js} +7 -7
  392. package/dist/{chunk-DXBYWSL5.js → chunk-WIFDNUKD.js} +3 -3
  393. package/dist/{chunk-RT7CJMER.js → chunk-WIXHUBQN.js} +2 -2
  394. package/dist/{chunk-57AZS3IE.js → chunk-WRMUXZ7C.js} +3 -3
  395. package/dist/{chunk-CRAOSVHC.js → chunk-WSDBQSPP.js} +2 -2
  396. package/dist/{chunk-2CLNIEK4.js → chunk-WTSQUCHB.js} +3 -3
  397. package/dist/{chunk-MIHN76LX.js → chunk-WYGTAQMX.js} +3 -3
  398. package/dist/{chunk-GAVYGBFI.js → chunk-X2R73NGG.js} +2 -2
  399. package/dist/{chunk-T7OXJZCX.js → chunk-XOIDUM2H.js} +1 -1
  400. package/dist/{chunk-XHIQ5I6N.js → chunk-XVLEBB4Y.js} +2 -2
  401. package/dist/{chunk-T3OWFVMS.js → chunk-Y3XZEKDQ.js} +2 -2
  402. package/dist/{chunk-ROKQU7WG.js → chunk-YMI27QPF.js} +2 -2
  403. package/dist/{chunk-U7XM7CB4.js → chunk-YNTLWCF4.js} +4 -4
  404. package/dist/{chunk-ZQCND77P.js → chunk-YRYF76OE.js} +2 -2
  405. package/dist/{chunk-2BDT3UZQ.js → chunk-ZAX4XQLN.js} +3 -3
  406. package/dist/{chunk-DXR5PDFP.js → chunk-ZBHGNE2J.js} +3 -3
  407. package/dist/{chunk-KODELWYT.js → chunk-ZF6ZS77B.js} +3 -3
  408. package/dist/{chunk-KUDGXAF7.js → chunk-ZM5YP5NJ.js} +10 -10
  409. package/dist/{chunk-I7ITSXSJ.js → chunk-ZR5EKJT6.js} +2 -2
  410. package/dist/{chunk-IZXHMZQ6.js → chunk-ZW5YTIH3.js} +4 -4
  411. package/dist/components/artifacts/artifact-sandbox.d.ts +6 -1
  412. package/dist/components/artifacts/site-view.d.ts +4 -2
  413. package/dist/components/timeline-anchor.d.ts +8 -3
  414. package/dist/components/timeline-reading-progress.d.ts +1 -1
  415. package/dist/components/timeline-settlement.d.ts +1 -1
  416. package/dist/composer-messages.js +2 -2
  417. package/dist/composer.js +9 -9
  418. package/dist/{computer-viewer-TDDO25AV.js → computer-viewer-5LKRCEVQ.js} +5 -5
  419. package/dist/connect.js +14 -15
  420. package/dist/desktop-dictation.js +7 -7
  421. package/dist/desktop.js +2 -2
  422. package/dist/editor.js +2 -2
  423. package/dist/{embedded-new-voice-2G3VLPVQ.js → embedded-new-voice-GHJRY3YL.js} +5 -5
  424. package/dist/{embedded-voice-T5IWOWGD.js → embedded-voice-ASQXBSTX.js} +5 -5
  425. package/dist/{fleet-decision-row-WM64KXP3.js → fleet-decision-row-U7LDVBEM.js} +2 -2
  426. package/dist/in-chat-connect-model.js +6 -6
  427. package/dist/index.js +53 -54
  428. package/dist/interaction.js +6 -6
  429. package/dist/{latest-question-OX56OVQ5.js → latest-question-RNVF262Q.js} +5 -5
  430. package/dist/lib/format.d.ts +10 -0
  431. package/dist/machines.js +4 -4
  432. package/dist/meetings-recorder.js +1 -1
  433. package/dist/meetings.js +24 -24
  434. package/dist/messages/en.d.ts +7 -0
  435. package/dist/messages.js +1 -1
  436. package/dist/{model-policy-picker-menu-SMC6J6QN.js → model-policy-picker-menu-E6XKMFTA.js} +4 -4
  437. package/dist/{payment-page-card-G4U63KUV.js → payment-page-card-DJDKV2LW.js} +6 -5
  438. package/dist/{payment-page-card-G4U63KUV.js.map → payment-page-card-DJDKV2LW.js.map} +1 -1
  439. package/dist/{platform-activity-row-BUZGZAKZ.js → platform-activity-row-MSDCSMET.js} +17 -7
  440. package/dist/platform-activity-row-MSDCSMET.js.map +1 -0
  441. package/dist/{queue-surface-implementation-4KUZ4PJV.js → queue-surface-implementation-GUAIG6TK.js} +5 -5
  442. package/dist/realtime.js +4 -4
  443. package/dist/{recorder-host-WF2RRR56.js → recorder-host-2MYDJPQW.js} +4 -4
  444. package/dist/recordings.js +3 -3
  445. package/dist/{sandbox-files-ESDMOFSD.js → sandbox-files-W5W2LW4K.js} +6 -6
  446. package/dist/session-app.js +168 -162
  447. package/dist/{session-connect-cards-Q53KMMYY.js → session-connect-cards-TUY62MVP.js} +10 -11
  448. package/dist/session-list-model.js +2 -2
  449. package/dist/{session-realtime-CF3I35WJ.js → session-realtime-SDTKFFIR.js} +3 -3
  450. package/dist/session-realtime-SDTKFFIR.js.map +1 -0
  451. package/dist/session-realtime.js +2 -2
  452. package/dist/session-ui.js +36 -37
  453. package/dist/session.js +9 -9
  454. package/dist/sites.js +2 -2
  455. package/dist/terminal.js +2 -2
  456. package/dist/this-computer.js +3 -3
  457. package/dist/timeline/shared.d.ts +2 -0
  458. package/dist/{timeline-annotation-markers-CJK4RYZ4.js → timeline-annotation-markers-FNILLWNU.js} +2 -2
  459. package/dist/{timeline-annotation-selection-67GF5H26.js → timeline-annotation-selection-MBCIDO2Q.js} +2 -2
  460. package/dist/{timeline-annotations-dialog-ONJPQDJQ.js → timeline-annotations-dialog-JPNKLOTE.js} +3 -3
  461. package/dist/timeline-model.js +6 -6
  462. package/dist/ui/access-list.js +6 -6
  463. package/dist/ui/cadence-picker.js +4 -4
  464. package/dist/ui/choice-cards.js +3 -3
  465. package/dist/ui/confirm-dialog.js +4 -4
  466. package/dist/ui/copy-field.js +3 -3
  467. package/dist/ui/detail-page.js +5 -5
  468. package/dist/ui/detail-sheet.js +4 -4
  469. package/dist/ui/dialog.js +2 -2
  470. package/dist/ui/disclosure.js +5 -5
  471. package/dist/ui/email-chips-input.js +3 -3
  472. package/dist/ui/field.js +2 -2
  473. package/dist/ui/flush-form-page.js +4 -4
  474. package/dist/ui/form-dialog.js +3 -3
  475. package/dist/ui/list-row.js +3 -3
  476. package/dist/ui/page-header.js +2 -2
  477. package/dist/ui/relative-time.js +2 -2
  478. package/dist/ui/revision-history.js +4 -4
  479. package/dist/ui/role-select.js +6 -6
  480. package/dist/ui/select-menu.js +3 -3
  481. package/dist/ui/sheet.js +2 -2
  482. package/dist/ui/usage-meter.js +3 -3
  483. package/dist/ui/window-bar-title.d.ts +7 -3
  484. package/dist/ui/window-bar-title.js +1 -1
  485. package/dist/usage.js +2 -2
  486. package/dist/workbench.js +4 -4
  487. package/package.json +6 -5
  488. package/src/app/components/artifacts/site-actions.tsx +105 -0
  489. package/src/app/components/rail/session-header-copy.test.tsx +172 -0
  490. package/src/app/components/rail/session-header.tsx +68 -12
  491. package/src/app/components/rail/session-list.tsx +20 -0
  492. package/src/app/components/rail/site-session-group-heading.test.tsx +210 -0
  493. package/src/app/components/rail/site-session-group-heading.tsx +119 -60
  494. package/src/app/components/session/failed-session-actions.test.tsx +4 -0
  495. package/src/app/components/window-bar.tsx +63 -15
  496. package/src/app/lib/composer-send-blocking.tsx +312 -1
  497. package/src/app/lib/copy-link.ts +10 -0
  498. package/src/app/lib/session-composer-readiness.ts +4 -3
  499. package/src/app/lib/site-sidebar-bridge.test.tsx +67 -0
  500. package/src/app/lib/site-sidebar-bridge.ts +57 -0
  501. package/src/app/routes/session.tsx +45 -12
  502. package/src/app/routes/sessions-index.tsx +164 -105
  503. package/src/app/routes/site-view.test.tsx +74 -6
  504. package/src/app/routes/site-view.tsx +135 -14
  505. package/src/components/approval-surface.tsx +78 -3
  506. package/src/components/artifacts/artifact-sandbox.tsx +27 -2
  507. package/src/components/artifacts/site-view.tsx +13 -1
  508. package/src/components/message-timeline.tsx +25 -52
  509. package/src/components/session-capability-frame.tsx +2 -30
  510. package/src/components/timeline-anchor.tsx +19 -14
  511. package/src/components/timeline-reading-progress.ts +1 -2
  512. package/src/components/timeline-settlement.ts +3 -3
  513. package/src/lib/format.ts +46 -1
  514. package/src/messages/en.ts +11 -0
  515. package/src/timeline/platform-activity-row.tsx +20 -8
  516. package/src/timeline/shared.tsx +203 -32
  517. package/src/ui/window-bar-title.test.tsx +37 -0
  518. package/src/ui/window-bar-title.tsx +13 -6
  519. package/styles/compiled.css +5 -0
  520. package/dist/chunk-5MOJZORA.js.map +0 -1
  521. package/dist/chunk-6BCXNDEI.js.map +0 -1
  522. package/dist/chunk-6DVCC7QS.js.map +0 -1
  523. package/dist/chunk-7T2ZE3VT.js.map +0 -1
  524. package/dist/chunk-AFRGP2VP.js +0 -17
  525. package/dist/chunk-AFRGP2VP.js.map +0 -1
  526. package/dist/chunk-CRU35QQH.js.map +0 -1
  527. package/dist/chunk-FO4LYKJL.js +0 -197
  528. package/dist/chunk-FO4LYKJL.js.map +0 -1
  529. package/dist/chunk-HD5X76TP.js.map +0 -1
  530. package/dist/chunk-JDTGRRNU.js.map +0 -1
  531. package/dist/chunk-NW53H5RW.js.map +0 -1
  532. package/dist/chunk-OF4TIKYC.js.map +0 -1
  533. package/dist/chunk-ORJPS5VN.js.map +0 -1
  534. package/dist/chunk-TXLIEOJX.js.map +0 -1
  535. package/dist/chunk-VBUVBHFJ.js +0 -16
  536. package/dist/chunk-VBUVBHFJ.js.map +0 -1
  537. package/dist/chunk-XEQMZB3C.js.map +0 -1
  538. package/dist/chunk-YPWU5KPE.js.map +0 -1
  539. package/dist/components/timeline-answer-follow.d.ts +0 -8
  540. package/dist/platform-activity-row-BUZGZAKZ.js.map +0 -1
  541. package/src/components/timeline-answer-follow.ts +0 -15
  542. /package/dist/{browser-viewer-TC27OCIP.js.map → app/components/artifacts/site-actions.js.map} +0 -0
  543. /package/dist/{chat-interactive-block-RWPQBHVS.js.map → browser-viewer-ZHQDVHZ2.js.map} +0 -0
  544. /package/dist/{computer-viewer-TDDO25AV.js.map → chat-interactive-block-VSDD6X3M.js.map} +0 -0
  545. /package/dist/{chunk-C43KRXGA.js.map → chunk-2GCHGWNE.js.map} +0 -0
  546. /package/dist/{chunk-XLH7QY2R.js.map → chunk-2J77TWGH.js.map} +0 -0
  547. /package/dist/{chunk-Q3DPEYX4.js.map → chunk-2LMJXRXK.js.map} +0 -0
  548. /package/dist/{chunk-77WAKEAH.js.map → chunk-2OXSB2OL.js.map} +0 -0
  549. /package/dist/{chunk-H3T7IWNA.js.map → chunk-2VJOSU4H.js.map} +0 -0
  550. /package/dist/{chunk-IMDQUHBJ.js.map → chunk-2ZAQA5GE.js.map} +0 -0
  551. /package/dist/{chunk-L7YTNTIK.js.map → chunk-3CDJSKDW.js.map} +0 -0
  552. /package/dist/{chunk-EWSOC6WF.js.map → chunk-3DRLCX5V.js.map} +0 -0
  553. /package/dist/{chunk-JEUPAVYY.js.map → chunk-3L465FBR.js.map} +0 -0
  554. /package/dist/{chunk-4SAWSRAA.js.map → chunk-3LTSLMVL.js.map} +0 -0
  555. /package/dist/{chunk-5NWEKLDZ.js.map → chunk-3NNAC43A.js.map} +0 -0
  556. /package/dist/{chunk-EDI6SJ2N.js.map → chunk-3OK7Y6ES.js.map} +0 -0
  557. /package/dist/{chunk-AWKES45Y.js.map → chunk-3PM3M2Q6.js.map} +0 -0
  558. /package/dist/{chunk-I7XIZRFD.js.map → chunk-3PZ3LRPV.js.map} +0 -0
  559. /package/dist/{chunk-2M3J7ZWQ.js.map → chunk-467WDSOK.js.map} +0 -0
  560. /package/dist/{chunk-UTIAXH52.js.map → chunk-477DTTMH.js.map} +0 -0
  561. /package/dist/{chunk-J5F5HPPW.js.map → chunk-4BWMAGJJ.js.map} +0 -0
  562. /package/dist/{chunk-YSJEAAOL.js.map → chunk-4F3AEJI6.js.map} +0 -0
  563. /package/dist/{chunk-LHPNABDH.js.map → chunk-4JXPLTWV.js.map} +0 -0
  564. /package/dist/{chunk-NUNZS36W.js.map → chunk-4O2XWOLZ.js.map} +0 -0
  565. /package/dist/{chunk-BHNSJVBC.js.map → chunk-4OTNYMJH.js.map} +0 -0
  566. /package/dist/{chunk-2Z3NQNTM.js.map → chunk-4POXUODO.js.map} +0 -0
  567. /package/dist/{chunk-QB2KMIDP.js.map → chunk-4SJAEPM2.js.map} +0 -0
  568. /package/dist/{chunk-TAT5USZN.js.map → chunk-4T3NE262.js.map} +0 -0
  569. /package/dist/{chunk-6JHU2UBS.js.map → chunk-4Z5X7PLC.js.map} +0 -0
  570. /package/dist/{chunk-2STUPWEL.js.map → chunk-54U6ZBEX.js.map} +0 -0
  571. /package/dist/{chunk-XXSOHN35.js.map → chunk-5FLYHX5R.js.map} +0 -0
  572. /package/dist/{chunk-MIYFS2XN.js.map → chunk-5MHMCE2G.js.map} +0 -0
  573. /package/dist/{chunk-YWVI6ZMK.js.map → chunk-5MIBQ4P5.js.map} +0 -0
  574. /package/dist/{chunk-HAX4LCR5.js.map → chunk-5TKTWXAU.js.map} +0 -0
  575. /package/dist/{chunk-F2OPHAUN.js.map → chunk-6HRYJERP.js.map} +0 -0
  576. /package/dist/{chunk-5O2FCCHZ.js.map → chunk-6JGB4XGH.js.map} +0 -0
  577. /package/dist/{chunk-RPVREAU7.js.map → chunk-736RUNIA.js.map} +0 -0
  578. /package/dist/{chunk-2KALVELR.js.map → chunk-74CBR5YE.js.map} +0 -0
  579. /package/dist/{chunk-5IE76VCY.js.map → chunk-752WXSDN.js.map} +0 -0
  580. /package/dist/{chunk-SEO7TICN.js.map → chunk-76MC7KOE.js.map} +0 -0
  581. /package/dist/{chunk-OPJJSKUK.js.map → chunk-77B6UCNK.js.map} +0 -0
  582. /package/dist/{chunk-ZUA3JMI6.js.map → chunk-77SYIH6O.js.map} +0 -0
  583. /package/dist/{chunk-ILDXWY37.js.map → chunk-7AI4E7PV.js.map} +0 -0
  584. /package/dist/{chunk-7X6SDK2C.js.map → chunk-7HESG3ET.js.map} +0 -0
  585. /package/dist/{chunk-2RG7NIAS.js.map → chunk-7MY3XB6I.js.map} +0 -0
  586. /package/dist/{chunk-C372BFOV.js.map → chunk-7NLF35YL.js.map} +0 -0
  587. /package/dist/{chunk-IFB3WJ36.js.map → chunk-7YTR3UFO.js.map} +0 -0
  588. /package/dist/{chunk-BMICEQZQ.js.map → chunk-7Z76QP64.js.map} +0 -0
  589. /package/dist/{chunk-YWIFM7D7.js.map → chunk-AAS7OWV6.js.map} +0 -0
  590. /package/dist/{chunk-5QAY6K77.js.map → chunk-AB5IW227.js.map} +0 -0
  591. /package/dist/{chunk-ZBIXBQNI.js.map → chunk-ABJZDRW2.js.map} +0 -0
  592. /package/dist/{chunk-4DVJ6ONS.js.map → chunk-AH3DGOTK.js.map} +0 -0
  593. /package/dist/{chunk-HGKTHF2U.js.map → chunk-AJBDAVX3.js.map} +0 -0
  594. /package/dist/{chunk-IXPTECSC.js.map → chunk-AVXDIRRW.js.map} +0 -0
  595. /package/dist/{chunk-QK5EFEUT.js.map → chunk-BASI553K.js.map} +0 -0
  596. /package/dist/{chunk-AW2MQB37.js.map → chunk-BD5FMBO4.js.map} +0 -0
  597. /package/dist/{chunk-OVKYVZMW.js.map → chunk-BIHGCQXA.js.map} +0 -0
  598. /package/dist/{chunk-Z4FMAFNH.js.map → chunk-BQYRZIZ7.js.map} +0 -0
  599. /package/dist/{chunk-DZWARC4M.js.map → chunk-BWMIWRUK.js.map} +0 -0
  600. /package/dist/{chunk-Y4OBB2VN.js.map → chunk-CV4VVLPZ.js.map} +0 -0
  601. /package/dist/{chunk-JQL7ZH6C.js.map → chunk-CXAN2FHF.js.map} +0 -0
  602. /package/dist/{chunk-3PZ7JZI2.js.map → chunk-D3PTVN2I.js.map} +0 -0
  603. /package/dist/{chunk-FPXASDG5.js.map → chunk-D5TIVCXG.js.map} +0 -0
  604. /package/dist/{chunk-7W37NS3I.js.map → chunk-D74Z2N4K.js.map} +0 -0
  605. /package/dist/{chunk-MNZG4OHU.js.map → chunk-DCEQCGVN.js.map} +0 -0
  606. /package/dist/{chunk-ND2BXV3P.js.map → chunk-DEHLWZSI.js.map} +0 -0
  607. /package/dist/{chunk-ZTPXACWB.js.map → chunk-DHIGEK6P.js.map} +0 -0
  608. /package/dist/{chunk-2YUOVM3G.js.map → chunk-DIP7YALH.js.map} +0 -0
  609. /package/dist/{chunk-6PZ7OBYU.js.map → chunk-DLVIRJGK.js.map} +0 -0
  610. /package/dist/{chunk-KLEUWIMZ.js.map → chunk-DQPIEQGP.js.map} +0 -0
  611. /package/dist/{chunk-T2QX3FDP.js.map → chunk-DWJ6J3YW.js.map} +0 -0
  612. /package/dist/{chunk-3CPWWGNK.js.map → chunk-E5KOWRDU.js.map} +0 -0
  613. /package/dist/{chunk-6WGRDRMA.js.map → chunk-EBIVTDEG.js.map} +0 -0
  614. /package/dist/{chunk-5CPEEAFD.js.map → chunk-EDDKPIIV.js.map} +0 -0
  615. /package/dist/{chunk-TX3VECZU.js.map → chunk-EGKARC53.js.map} +0 -0
  616. /package/dist/{chunk-JEA3QDX7.js.map → chunk-EKJHOWTZ.js.map} +0 -0
  617. /package/dist/{chunk-UVN5TMHU.js.map → chunk-ESXAECZ3.js.map} +0 -0
  618. /package/dist/{chunk-3SOIESJM.js.map → chunk-EWZ2RLNG.js.map} +0 -0
  619. /package/dist/{chunk-CMKGILJK.js.map → chunk-FBA2NXYH.js.map} +0 -0
  620. /package/dist/{chunk-O6N4ABCA.js.map → chunk-FER6EVIY.js.map} +0 -0
  621. /package/dist/{chunk-DF5EAHDN.js.map → chunk-FLWQJDJ5.js.map} +0 -0
  622. /package/dist/{chunk-PTAG4PDC.js.map → chunk-FNXCFIPW.js.map} +0 -0
  623. /package/dist/{chunk-BJEJFISW.js.map → chunk-FSDQQQIA.js.map} +0 -0
  624. /package/dist/{chunk-FVXBNBHO.js.map → chunk-FTIC5VXR.js.map} +0 -0
  625. /package/dist/{chunk-PTF5B7TJ.js.map → chunk-G5UQBTXY.js.map} +0 -0
  626. /package/dist/{chunk-4E3ZJRTZ.js.map → chunk-G6ICCGJ3.js.map} +0 -0
  627. /package/dist/{chunk-5YKW2K6I.js.map → chunk-GB5SOTIB.js.map} +0 -0
  628. /package/dist/{chunk-NRTE7DNV.js.map → chunk-GIWFLWXG.js.map} +0 -0
  629. /package/dist/{chunk-MM4FNWI4.js.map → chunk-GMHIOYB7.js.map} +0 -0
  630. /package/dist/{chunk-6DK6Z4UN.js.map → chunk-GOCODNQS.js.map} +0 -0
  631. /package/dist/{chunk-TPQTRNER.js.map → chunk-GSCGKJNK.js.map} +0 -0
  632. /package/dist/{chunk-7VMZGLYI.js.map → chunk-GTHCHCWW.js.map} +0 -0
  633. /package/dist/{chunk-SQJIKMN3.js.map → chunk-GTRAH4FG.js.map} +0 -0
  634. /package/dist/{chunk-ZYAZUPPV.js.map → chunk-GU7T2S5N.js.map} +0 -0
  635. /package/dist/{chunk-JKHKLL5W.js.map → chunk-H6BX6WOW.js.map} +0 -0
  636. /package/dist/{chunk-IMZCQBOT.js.map → chunk-H6MJFMHZ.js.map} +0 -0
  637. /package/dist/{chunk-HSOXMJOT.js.map → chunk-HEGV4QMS.js.map} +0 -0
  638. /package/dist/{chunk-NC7PVOEK.js.map → chunk-HWVPLFIW.js.map} +0 -0
  639. /package/dist/{chunk-ECJBYNLJ.js.map → chunk-ICAMYP5M.js.map} +0 -0
  640. /package/dist/{chunk-DJAXC5OK.js.map → chunk-IFSXVU2S.js.map} +0 -0
  641. /package/dist/{chunk-N6AACDUW.js.map → chunk-IHLRYWA7.js.map} +0 -0
  642. /package/dist/{chunk-I4MRDSUF.js.map → chunk-IJR6VOLU.js.map} +0 -0
  643. /package/dist/{chunk-YCVD6CI3.js.map → chunk-IN3VQFKS.js.map} +0 -0
  644. /package/dist/{chunk-MFROMEKA.js.map → chunk-J2BTILRR.js.map} +0 -0
  645. /package/dist/{chunk-NCYMNCJO.js.map → chunk-J2WY42FA.js.map} +0 -0
  646. /package/dist/{chunk-DGMR6JEJ.js.map → chunk-J4XSTXZP.js.map} +0 -0
  647. /package/dist/{chunk-P77WNZDY.js.map → chunk-JMHEFZOB.js.map} +0 -0
  648. /package/dist/{chunk-GVN5SZLX.js.map → chunk-JMI53ZMU.js.map} +0 -0
  649. /package/dist/{chunk-IDANQPRH.js.map → chunk-JV3UI7BH.js.map} +0 -0
  650. /package/dist/{chunk-GKVJIDHF.js.map → chunk-KFNZZ2N6.js.map} +0 -0
  651. /package/dist/{chunk-I4QEJ62Y.js.map → chunk-KI46GKMD.js.map} +0 -0
  652. /package/dist/{chunk-SIRLACNZ.js.map → chunk-KO3OHHY2.js.map} +0 -0
  653. /package/dist/{chunk-NULUNM7H.js.map → chunk-KUE5BOQE.js.map} +0 -0
  654. /package/dist/{chunk-O3LKCBP5.js.map → chunk-LIJNVIT3.js.map} +0 -0
  655. /package/dist/{chunk-JWB44UGJ.js.map → chunk-LIJPDVYP.js.map} +0 -0
  656. /package/dist/{chunk-BJFH6JI5.js.map → chunk-LN4DJOMX.js.map} +0 -0
  657. /package/dist/{chunk-KYS77RPN.js.map → chunk-LPKJ77EK.js.map} +0 -0
  658. /package/dist/{chunk-RMFKVOM7.js.map → chunk-LQKVNREV.js.map} +0 -0
  659. /package/dist/{chunk-E7XERZWC.js.map → chunk-LTJFV2JI.js.map} +0 -0
  660. /package/dist/{chunk-INXGSG3J.js.map → chunk-LVDNY5RC.js.map} +0 -0
  661. /package/dist/{chunk-2INLDVK3.js.map → chunk-LVELUUK6.js.map} +0 -0
  662. /package/dist/{chunk-5EWSRZ2Y.js.map → chunk-M3HGBO2Y.js.map} +0 -0
  663. /package/dist/{chunk-J3DY5HWQ.js.map → chunk-M5IQVMLR.js.map} +0 -0
  664. /package/dist/{chunk-53AGXXZM.js.map → chunk-MKDFYE2E.js.map} +0 -0
  665. /package/dist/{chunk-2I7HDP53.js.map → chunk-MT2R57SF.js.map} +0 -0
  666. /package/dist/{chunk-Z7Y523PS.js.map → chunk-MV2CLIO6.js.map} +0 -0
  667. /package/dist/{chunk-JZ4NLCAP.js.map → chunk-MZY3VKKM.js.map} +0 -0
  668. /package/dist/{chunk-YENLNISG.js.map → chunk-N3FM4BNA.js.map} +0 -0
  669. /package/dist/{chunk-RQKLF42C.js.map → chunk-NPGLNXYI.js.map} +0 -0
  670. /package/dist/{chunk-I5QZJODL.js.map → chunk-NQ2CPQJF.js.map} +0 -0
  671. /package/dist/{chunk-CUIWCGMA.js.map → chunk-OCXEY7HE.js.map} +0 -0
  672. /package/dist/{chunk-KRDR5RJD.js.map → chunk-OGU73VUN.js.map} +0 -0
  673. /package/dist/{chunk-YIRVLKAX.js.map → chunk-OI6VI6SU.js.map} +0 -0
  674. /package/dist/{chunk-X6KAJI3V.js.map → chunk-OK7BQMCI.js.map} +0 -0
  675. /package/dist/{chunk-TUIN4MB7.js.map → chunk-ORV7EFSL.js.map} +0 -0
  676. /package/dist/{chunk-3IK6UYO6.js.map → chunk-OTW25A6I.js.map} +0 -0
  677. /package/dist/{chunk-NPGISCU6.js.map → chunk-OWET7EY2.js.map} +0 -0
  678. /package/dist/{chunk-3ED2U6XE.js.map → chunk-OYCK4JRS.js.map} +0 -0
  679. /package/dist/{chunk-YQXTDZSU.js.map → chunk-OYOFPNLC.js.map} +0 -0
  680. /package/dist/{chunk-4NQHXYMW.js.map → chunk-PD7NWM7V.js.map} +0 -0
  681. /package/dist/{chunk-4YCA2Y73.js.map → chunk-PF2WU2IL.js.map} +0 -0
  682. /package/dist/{chunk-Z654FWNU.js.map → chunk-PLYVGZIN.js.map} +0 -0
  683. /package/dist/{chunk-MVW6HNPI.js.map → chunk-PRT4J2DL.js.map} +0 -0
  684. /package/dist/{chunk-OPWCMA4D.js.map → chunk-PUUEI4W3.js.map} +0 -0
  685. /package/dist/{chunk-RLBKLAEY.js.map → chunk-PVB4YVDP.js.map} +0 -0
  686. /package/dist/{chunk-NXCMHIKI.js.map → chunk-PWUSSSSL.js.map} +0 -0
  687. /package/dist/{chunk-MJUCFQMS.js.map → chunk-PYB4BFEC.js.map} +0 -0
  688. /package/dist/{chunk-2FSBSCZJ.js.map → chunk-PZKHST7A.js.map} +0 -0
  689. /package/dist/{chunk-QZAAUQRN.js.map → chunk-Q5EZNBPI.js.map} +0 -0
  690. /package/dist/{chunk-ZHDFQITM.js.map → chunk-Q5K2J5GG.js.map} +0 -0
  691. /package/dist/{chunk-DZXEDSQI.js.map → chunk-QKBFIJE7.js.map} +0 -0
  692. /package/dist/{chunk-FZC5N55X.js.map → chunk-QL5NQ3JX.js.map} +0 -0
  693. /package/dist/{chunk-OV6QJRT4.js.map → chunk-QRECBCJM.js.map} +0 -0
  694. /package/dist/{chunk-3GZA4BUW.js.map → chunk-QURYQFDN.js.map} +0 -0
  695. /package/dist/{chunk-I5B5L6Q4.js.map → chunk-QVZVUROX.js.map} +0 -0
  696. /package/dist/{chunk-VS7AHPCZ.js.map → chunk-R33SBMB7.js.map} +0 -0
  697. /package/dist/{chunk-KCBMFSMS.js.map → chunk-R4JA5JFI.js.map} +0 -0
  698. /package/dist/{chunk-HC4JFZVU.js.map → chunk-R5QAL43H.js.map} +0 -0
  699. /package/dist/{chunk-QPSGCC5D.js.map → chunk-RGR57NYY.js.map} +0 -0
  700. /package/dist/{chunk-XWFAMUZQ.js.map → chunk-RHXYO4H2.js.map} +0 -0
  701. /package/dist/{chunk-Y4BB2KS2.js.map → chunk-RISUROBM.js.map} +0 -0
  702. /package/dist/{chunk-U3DN4HEY.js.map → chunk-RMCLFSMX.js.map} +0 -0
  703. /package/dist/{chunk-YK7756IF.js.map → chunk-RTZANSSC.js.map} +0 -0
  704. /package/dist/{chunk-ZEG4VPBL.js.map → chunk-S27VZ5DO.js.map} +0 -0
  705. /package/dist/{chunk-54YW6SZZ.js.map → chunk-SBXSKRFA.js.map} +0 -0
  706. /package/dist/{chunk-QIOQ2NPQ.js.map → chunk-SGH7I7OY.js.map} +0 -0
  707. /package/dist/{chunk-K2A5PXQ5.js.map → chunk-SJYTQLN3.js.map} +0 -0
  708. /package/dist/{chunk-X3MWB2QU.js.map → chunk-SN2WENRP.js.map} +0 -0
  709. /package/dist/{chunk-OSY5K7L7.js.map → chunk-SP44O3OU.js.map} +0 -0
  710. /package/dist/{chunk-OZCBM3UC.js.map → chunk-SSR4ZX52.js.map} +0 -0
  711. /package/dist/{chunk-QCSJ4CWE.js.map → chunk-SXGJL7UT.js.map} +0 -0
  712. /package/dist/{chunk-NC55IFN3.js.map → chunk-T67LTMSW.js.map} +0 -0
  713. /package/dist/{chunk-AXHZYXUV.js.map → chunk-TDTD66BK.js.map} +0 -0
  714. /package/dist/{chunk-NGJJJPZZ.js.map → chunk-TK5FWVZR.js.map} +0 -0
  715. /package/dist/{chunk-2OP6WLGV.js.map → chunk-TNSJFZ6Q.js.map} +0 -0
  716. /package/dist/{chunk-O732GAFC.js.map → chunk-U4LTPFD2.js.map} +0 -0
  717. /package/dist/{chunk-4DVNUCRR.js.map → chunk-U5UGM5XD.js.map} +0 -0
  718. /package/dist/{chunk-UJK53QFL.js.map → chunk-UBRQ3PQD.js.map} +0 -0
  719. /package/dist/{chunk-SODC7T6L.js.map → chunk-UMX6DZME.js.map} +0 -0
  720. /package/dist/{chunk-YLS6QE5G.js.map → chunk-UO35OEOX.js.map} +0 -0
  721. /package/dist/{chunk-VTTAJOQ7.js.map → chunk-UO3X52YM.js.map} +0 -0
  722. /package/dist/{chunk-SHHJCL7X.js.map → chunk-UTRNLNCW.js.map} +0 -0
  723. /package/dist/{chunk-HEFPPMBQ.js.map → chunk-UU5FBVRX.js.map} +0 -0
  724. /package/dist/{chunk-GQXZPKK7.js.map → chunk-V6UOVHW3.js.map} +0 -0
  725. /package/dist/{chunk-7TIX2UAR.js.map → chunk-VCJQQYRE.js.map} +0 -0
  726. /package/dist/{chunk-6WD2INST.js.map → chunk-WDASYY4S.js.map} +0 -0
  727. /package/dist/{chunk-DXBYWSL5.js.map → chunk-WIFDNUKD.js.map} +0 -0
  728. /package/dist/{chunk-RT7CJMER.js.map → chunk-WIXHUBQN.js.map} +0 -0
  729. /package/dist/{chunk-57AZS3IE.js.map → chunk-WRMUXZ7C.js.map} +0 -0
  730. /package/dist/{chunk-CRAOSVHC.js.map → chunk-WSDBQSPP.js.map} +0 -0
  731. /package/dist/{chunk-2CLNIEK4.js.map → chunk-WTSQUCHB.js.map} +0 -0
  732. /package/dist/{chunk-MIHN76LX.js.map → chunk-WYGTAQMX.js.map} +0 -0
  733. /package/dist/{chunk-GAVYGBFI.js.map → chunk-X2R73NGG.js.map} +0 -0
  734. /package/dist/{chunk-T7OXJZCX.js.map → chunk-XOIDUM2H.js.map} +0 -0
  735. /package/dist/{chunk-XHIQ5I6N.js.map → chunk-XVLEBB4Y.js.map} +0 -0
  736. /package/dist/{chunk-T3OWFVMS.js.map → chunk-Y3XZEKDQ.js.map} +0 -0
  737. /package/dist/{chunk-ROKQU7WG.js.map → chunk-YMI27QPF.js.map} +0 -0
  738. /package/dist/{chunk-U7XM7CB4.js.map → chunk-YNTLWCF4.js.map} +0 -0
  739. /package/dist/{chunk-ZQCND77P.js.map → chunk-YRYF76OE.js.map} +0 -0
  740. /package/dist/{chunk-2BDT3UZQ.js.map → chunk-ZAX4XQLN.js.map} +0 -0
  741. /package/dist/{chunk-DXR5PDFP.js.map → chunk-ZBHGNE2J.js.map} +0 -0
  742. /package/dist/{chunk-KODELWYT.js.map → chunk-ZF6ZS77B.js.map} +0 -0
  743. /package/dist/{chunk-KUDGXAF7.js.map → chunk-ZM5YP5NJ.js.map} +0 -0
  744. /package/dist/{chunk-I7ITSXSJ.js.map → chunk-ZR5EKJT6.js.map} +0 -0
  745. /package/dist/{chunk-IZXHMZQ6.js.map → chunk-ZW5YTIH3.js.map} +0 -0
  746. /package/dist/{embedded-new-voice-2G3VLPVQ.js.map → computer-viewer-5LKRCEVQ.js.map} +0 -0
  747. /package/dist/{embedded-voice-T5IWOWGD.js.map → embedded-new-voice-GHJRY3YL.js.map} +0 -0
  748. /package/dist/{model-policy-picker-menu-SMC6J6QN.js.map → embedded-voice-ASQXBSTX.js.map} +0 -0
  749. /package/dist/{fleet-decision-row-WM64KXP3.js.map → fleet-decision-row-U7LDVBEM.js.map} +0 -0
  750. /package/dist/{latest-question-OX56OVQ5.js.map → latest-question-RNVF262Q.js.map} +0 -0
  751. /package/dist/{sandbox-files-ESDMOFSD.js.map → model-policy-picker-menu-E6XKMFTA.js.map} +0 -0
  752. /package/dist/{queue-surface-implementation-4KUZ4PJV.js.map → queue-surface-implementation-GUAIG6TK.js.map} +0 -0
  753. /package/dist/{recorder-host-WF2RRR56.js.map → recorder-host-2MYDJPQW.js.map} +0 -0
  754. /package/dist/{session-connect-cards-Q53KMMYY.js.map → sandbox-files-W5W2LW4K.js.map} +0 -0
  755. /package/dist/{session-realtime-CF3I35WJ.js.map → session-connect-cards-TUY62MVP.js.map} +0 -0
  756. /package/dist/{timeline-annotation-markers-CJK4RYZ4.js.map → timeline-annotation-markers-FNILLWNU.js.map} +0 -0
  757. /package/dist/{timeline-annotation-selection-67GF5H26.js.map → timeline-annotation-selection-MBCIDO2Q.js.map} +0 -0
  758. /package/dist/{timeline-annotations-dialog-ONJPQDJQ.js.map → timeline-annotations-dialog-JPNKLOTE.js.map} +0 -0
@@ -0,0 +1,85 @@
1
+ "use client";
2
+ import {
3
+ openPublishedSite,
4
+ publishedSiteLink,
5
+ useSitePublicationLink
6
+ } from "./chunk-NDBTFUO6.js";
7
+ import {
8
+ useDuplicateSite
9
+ } from "./chunk-T6XI5FLY.js";
10
+ import {
11
+ useCopyArtifactLink
12
+ } from "./chunk-LIJPDVYP.js";
13
+ import {
14
+ copyTitle
15
+ } from "./chunk-ARTEEI2E.js";
16
+ import {
17
+ hasWorkspacePermission
18
+ } from "./chunk-H2ALCTWC.js";
19
+ import {
20
+ useAppContext
21
+ } from "./chunk-JDFDPMKX.js";
22
+
23
+ // src/app/components/artifacts/site-actions.tsx
24
+ import { ArrowUpRightIcon } from "lucide-react";
25
+ import { jsx, jsxs } from "react/jsx-runtime";
26
+ function useSiteActions(workspaceId, origin, {
27
+ hasVersion = true
28
+ } = {}) {
29
+ const { accessContext } = useAppContext();
30
+ const copyArtifactLink = useCopyArtifactLink(workspaceId);
31
+ const copies = useDuplicateSite(workspaceId);
32
+ const canDuplicate = hasVersion && hasWorkspacePermission(accessContext, workspaceId, "artifacts:publish");
33
+ return {
34
+ copyTitle: () => void copyTitle(origin.title),
35
+ copyLink: () => void copyArtifactLink({ kind: "site", id: origin.siteId }),
36
+ duplicate: canDuplicate ? {
37
+ busy: copies.busy,
38
+ run: () => void copies.duplicate({ id: origin.siteId, title: origin.title })
39
+ } : null,
40
+ /** Site details: its Settings tab, which shows Versions to everyone. */
41
+ details: {
42
+ to: "/workspaces/$workspaceId/artifacts/$artifactId",
43
+ params: { workspaceId, artifactId: origin.siteId },
44
+ search: { tab: "settings" }
45
+ }
46
+ };
47
+ }
48
+ function OpenPublishedSiteItem(props) {
49
+ const { client } = useAppContext();
50
+ if (typeof client.getSitePublicationLink !== "function") return null;
51
+ return /* @__PURE__ */ jsx(PublishedSiteItem, { ...props, client });
52
+ }
53
+ function PublishedSiteItem({
54
+ item: Item,
55
+ workspaceId,
56
+ siteId,
57
+ client
58
+ }) {
59
+ const { load } = useSitePublicationLink({ client, workspaceId, siteId });
60
+ const link = publishedSiteLink(load);
61
+ if (!link) return null;
62
+ return /* @__PURE__ */ jsx(Item, { asChild: true, children: /* @__PURE__ */ jsxs(
63
+ "a",
64
+ {
65
+ href: link.url,
66
+ target: "_blank",
67
+ rel: "noopener noreferrer",
68
+ "data-site-action": "open-published",
69
+ onClick: (event) => {
70
+ if (event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return;
71
+ if (openPublishedSite(link.url)) event.preventDefault();
72
+ },
73
+ children: [
74
+ /* @__PURE__ */ jsx(ArrowUpRightIcon, { "aria-hidden": "true" }),
75
+ "Open published Site"
76
+ ]
77
+ }
78
+ ) });
79
+ }
80
+
81
+ export {
82
+ useSiteActions,
83
+ OpenPublishedSiteItem
84
+ };
85
+ //# sourceMappingURL=chunk-HROITVQJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/app/components/artifacts/site-actions.tsx"],"sourcesContent":["import { ArrowUpRightIcon } from \"lucide-react\";\nimport type { OpenGeniBrowserClient } from \"@opengeni/sdk/browser\";\nimport type { MouseEvent } from \"react\";\n\nimport { useAppContext } from \"../../app-context\";\nimport { copyTitle } from \"../../lib/copy-link\";\nimport { hasWorkspacePermission } from \"../../lib/permissions\";\nimport type { SessionSiteOrigin } from \"../../lib/session-site-origin\";\nimport { useDuplicateSite } from \"../../lib/use-duplicate-site\";\nimport { DropdownMenuItem } from \"../../../ui/dropdown-menu\";\nimport { useCopyArtifactLink } from \"./copy-artifact-link\";\nimport { openPublishedSite, publishedSiteLink, useSitePublicationLink } from \"./site-public-link\";\n\n/**\n * What a Site's row and its page both offer besides the sidebar's Pin,\n * Archive and Move: copy its title or address, duplicate it (for people who\n * can publish), and its details (versions, sharing, archive). Wired to the\n * same capabilities as the Artifacts page.\n */\nexport function useSiteActions(\n workspaceId: string,\n origin: SessionSiteOrigin,\n {\n hasVersion = true,\n }: {\n /** False for a Site with nothing published yet, which has nothing to copy. */\n hasVersion?: boolean;\n } = {},\n) {\n const { accessContext } = useAppContext();\n const copyArtifactLink = useCopyArtifactLink(workspaceId);\n const copies = useDuplicateSite(workspaceId);\n const canDuplicate =\n hasVersion && hasWorkspacePermission(accessContext, workspaceId, \"artifacts:publish\");\n return {\n copyTitle: () => void copyTitle(origin.title),\n copyLink: () => void copyArtifactLink({ kind: \"site\", id: origin.siteId }),\n duplicate: canDuplicate\n ? {\n busy: copies.busy,\n run: () => void copies.duplicate({ id: origin.siteId, title: origin.title }),\n }\n : null,\n /** Site details: its Settings tab, which shows Versions to everyone. */\n details: {\n to: \"/workspaces/$workspaceId/artifacts/$artifactId\",\n params: { workspaceId, artifactId: origin.siteId },\n search: { tab: \"settings\" },\n } as const,\n };\n}\n\nexport type SiteActions = ReturnType<typeof useSiteActions>;\n\ntype MenuItem = typeof DropdownMenuItem;\n\n/**\n * \"Open published Site\", once the menu it sits in has learned the Site is on\n * the web: it reads the address when the menu opens, and shows nothing for a\n * Site that isn't published (or while it doesn't know yet).\n */\nexport function OpenPublishedSiteItem(props: {\n item: MenuItem;\n workspaceId: string;\n siteId: string;\n}) {\n const { client } = useAppContext();\n // An embed's older client may not read publications.\n if (typeof client.getSitePublicationLink !== \"function\") return null;\n return <PublishedSiteItem {...props} client={client} />;\n}\n\nfunction PublishedSiteItem({\n item: Item,\n workspaceId,\n siteId,\n client,\n}: {\n item: MenuItem;\n workspaceId: string;\n siteId: string;\n client: Pick<OpenGeniBrowserClient, \"getSitePublicationLink\">;\n}) {\n const { load } = useSitePublicationLink({ client, workspaceId, siteId });\n const link = publishedSiteLink(load);\n if (!link) return null;\n return (\n <Item asChild>\n <a\n href={link.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n data-site-action=\"open-published\"\n onClick={(event: MouseEvent<HTMLAnchorElement>) => {\n if (event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return;\n // The desktop app opens it in the default browser.\n if (openPublishedSite(link.url)) event.preventDefault();\n }}\n >\n <ArrowUpRightIcon aria-hidden=\"true\" />\n Open published Site\n </a>\n </Item>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,wBAAwB;AAqExB,cAmBH,YAnBG;AAlDF,SAAS,eACd,aACA,QACA;AAAA,EACE,aAAa;AACf,IAGI,CAAC,GACL;AACA,QAAM,EAAE,cAAc,IAAI,cAAc;AACxC,QAAM,mBAAmB,oBAAoB,WAAW;AACxD,QAAM,SAAS,iBAAiB,WAAW;AAC3C,QAAM,eACJ,cAAc,uBAAuB,eAAe,aAAa,mBAAmB;AACtF,SAAO;AAAA,IACL,WAAW,MAAM,KAAK,UAAU,OAAO,KAAK;AAAA,IAC5C,UAAU,MAAM,KAAK,iBAAiB,EAAE,MAAM,QAAQ,IAAI,OAAO,OAAO,CAAC;AAAA,IACzE,WAAW,eACP;AAAA,MACE,MAAM,OAAO;AAAA,MACb,KAAK,MAAM,KAAK,OAAO,UAAU,EAAE,IAAI,OAAO,QAAQ,OAAO,OAAO,MAAM,CAAC;AAAA,IAC7E,IACA;AAAA;AAAA,IAEJ,SAAS;AAAA,MACP,IAAI;AAAA,MACJ,QAAQ,EAAE,aAAa,YAAY,OAAO,OAAO;AAAA,MACjD,QAAQ,EAAE,KAAK,WAAW;AAAA,IAC5B;AAAA,EACF;AACF;AAWO,SAAS,sBAAsB,OAInC;AACD,QAAM,EAAE,OAAO,IAAI,cAAc;AAEjC,MAAI,OAAO,OAAO,2BAA2B,WAAY,QAAO;AAChE,SAAO,oBAAC,qBAAmB,GAAG,OAAO,QAAgB;AACvD;AAEA,SAAS,kBAAkB;AAAA,EACzB,MAAM;AAAA,EACN;AAAA,EACA;AAAA,EACA;AACF,GAKG;AACD,QAAM,EAAE,KAAK,IAAI,uBAAuB,EAAE,QAAQ,aAAa,OAAO,CAAC;AACvE,QAAM,OAAO,kBAAkB,IAAI;AACnC,MAAI,CAAC,KAAM,QAAO;AAClB,SACE,oBAAC,QAAK,SAAO,MACX;AAAA,IAAC;AAAA;AAAA,MACC,MAAM,KAAK;AAAA,MACX,QAAO;AAAA,MACP,KAAI;AAAA,MACJ,oBAAiB;AAAA,MACjB,SAAS,CAAC,UAAyC;AACjD,YAAI,MAAM,WAAW,MAAM,WAAW,MAAM,YAAY,MAAM,OAAQ;AAEtE,YAAI,kBAAkB,KAAK,GAAG,EAAG,OAAM,eAAe;AAAA,MACxD;AAAA,MAEA;AAAA,4BAAC,oBAAiB,eAAY,QAAO;AAAA,QAAE;AAAA;AAAA;AAAA,EAEzC,GACF;AAEJ;","names":[]}
@@ -1,13 +1,13 @@
1
1
  "use client";
2
2
  import {
3
3
  ArtifactSandbox
4
- } from "./chunk-XEQMZB3C.js";
4
+ } from "./chunk-K4DQS2ML.js";
5
5
  import {
6
6
  EditablePresentationArtifactSurface
7
- } from "./chunk-DXBYWSL5.js";
7
+ } from "./chunk-WIFDNUKD.js";
8
8
  import {
9
9
  EditableSpreadsheetArtifactSurface
10
- } from "./chunk-X3MWB2QU.js";
10
+ } from "./chunk-SN2WENRP.js";
11
11
  import {
12
12
  loadSiteSnapshot
13
13
  } from "./chunk-IOYHDEP3.js";
@@ -19,10 +19,10 @@ import {
19
19
  } from "./chunk-TVQCDDSZ.js";
20
20
  import {
21
21
  EditableDocumentArtifactSurface
22
- } from "./chunk-57AZS3IE.js";
22
+ } from "./chunk-WRMUXZ7C.js";
23
23
  import {
24
24
  EditableArtifactMessage
25
- } from "./chunk-7VMZGLYI.js";
25
+ } from "./chunk-GTHCHCWW.js";
26
26
  import {
27
27
  ArtifactLabelsProvider,
28
28
  ArtifactLoading,
@@ -30,16 +30,22 @@ import {
30
30
  ArtifactViewerHeader,
31
31
  artifactLoadErrorView,
32
32
  useArtifactLabels
33
- } from "./chunk-PTF5B7TJ.js";
33
+ } from "./chunk-G5UQBTXY.js";
34
34
  import {
35
35
  cn
36
36
  } from "./chunk-TXS65BB2.js";
37
37
  import {
38
38
  useOpenGeniText
39
- } from "./chunk-7T2ZE3VT.js";
39
+ } from "./chunk-QPQ7R77C.js";
40
40
 
41
41
  // src/components/artifacts/site-view.tsx
42
- import { useCallback, useEffect, useMemo, useRef, useState } from "react";
42
+ import {
43
+ useCallback,
44
+ useEffect,
45
+ useMemo,
46
+ useRef,
47
+ useState
48
+ } from "react";
43
49
  import { jsx, jsxs } from "react/jsx-runtime";
44
50
  function SiteView({
45
51
  client,
@@ -52,6 +58,7 @@ function SiteView({
52
58
  theme,
53
59
  archivedMessage,
54
60
  showTitle = true,
61
+ renderTitle,
55
62
  loadingLabel,
56
63
  onTitle,
57
64
  showToolbar,
@@ -168,6 +175,7 @@ function SiteView({
168
175
  html: content.html,
169
176
  title: snapshot.detail.artifact.title,
170
177
  showTitle,
178
+ ...renderTitle ? { renderTitle } : {},
171
179
  versionLabel: !versionControl && snapshot.detail.artifact.currentVersion ? t("artifacts.siteView.vRevision", {
172
180
  revision: snapshot.detail.artifact.currentVersion.revision
173
181
  }) : void 0,
@@ -687,4 +695,4 @@ export {
687
695
  EditableArtifactView,
688
696
  SessionArtifactViewer
689
697
  };
690
- //# sourceMappingURL=chunk-OF4TIKYC.js.map
698
+ //# sourceMappingURL=chunk-HTMQGS63.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/artifacts/site-view.tsx","../src/components/artifacts/editable-artifact-view.tsx","../src/components/artifacts/editable-artifact-workbench.tsx","../src/components/artifacts/session-artifact-viewer.tsx"],"sourcesContent":["import {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ReactElement,\n type ReactNode,\n} from \"react\";\nimport type { SiteViewer } from \"@opengeni/sdk\";\n\nimport { loadSiteSnapshot } from \"../../sites-ui\";\nimport {\n ArtifactLoading,\n ArtifactProblem,\n artifactLoadErrorView,\n useArtifactLabels,\n} from \"./artifact-chrome\";\nimport { ArtifactSandbox } from \"./artifact-sandbox\";\nimport type { SiteLiveState } from \"./artifact-sandbox\";\nimport type { SiteSnapshotClient, SiteToolBridgeFactory } from \"./chat-interactive-block\";\nimport { useOpenGeniText } from \"../../messages/runtime\";\n\ntype Snapshot = Awaited<ReturnType<typeof loadSiteSnapshot>>;\n\nexport type SiteViewProps = {\n client: SiteSnapshotClient;\n workspaceId: string;\n siteId: string;\n /** Host-owned Site API access. Omit it and the Site renders without workspace tools. */\n toolBridge?: SiteToolBridgeFactory | undefined;\n /** Who is viewing, answered to the Site's `site.viewer`. */\n viewer?: SiteViewer | undefined;\n /**\n * The Site's own address (`/admin?tab=2`), answered to `site.location`;\n * with `onSiteLocationChange` the host keeps it, for example in its URL.\n * Omit both and the view keeps it itself, starting at `/`.\n */\n siteLocation?: string | undefined;\n /** The Site moved itself with `site.navigate`. */\n onSiteLocationChange?: ((href: string, options: { replace: boolean }) => void) | undefined;\n theme?: \"light\" | \"dark\" | undefined;\n /** Shown instead of the archived notice; the console links to its full page. */\n archivedMessage?: string | undefined;\n /** Show the Site title in the frame bar; hide it under a host header that already does. */\n showTitle?: boolean | undefined;\n /** Wraps the visible title (a host's menu on it); see ArtifactSandbox. */\n renderTitle?: ((title: ReactElement) => ReactNode) | undefined;\n /** Loading copy; defaults to \"Loading Site…\". */\n loadingLabel?: string | undefined;\n /** Called with the loaded title, for a host header. */\n onTitle?: ((title: string) => void) | undefined;\n /** Hide the frame toolbar under a host header that draws reload and full screen. */\n showToolbar?: boolean | undefined;\n /**\n * Replaces the toolbar's \"Live\" indicator, for example with a link to the\n * published Site; `null` shows nothing there. Omit it for the default.\n */\n liveStatus?: ReactNode | undefined;\n /** Reload the Site whenever this changes. */\n reloadToken?: number | undefined;\n /**\n * The Site's current version as the host last read it, for a host that\n * watches the Site for new versions. When it differs from the version\n * shown, the view loads it and the Site reloads in place; the version on\n * screen stays until the new one has loaded.\n */\n versionId?: string | null | undefined;\n /**\n * Whether the host's watch for new versions is working: `live` (the\n * default once `versionId` is given) or `reconnecting`. With it, the frame's\n * Live label tells the truth: Live, Updating while a new version loads, or\n * Reconnecting. Without `versionId` or this, the label stays as before.\n */\n watch?: \"live\" | \"reconnecting\" | undefined;\n /** Drawn instead of the version badge, for example a version history menu. */\n versionControl?: ReactNode | undefined;\n /**\n * The toolbar's first control, for example a Back to the page the Site was\n * opened from. It shows while the Site loads or can't be shown, too.\n */\n toolbarStart?: ReactNode | undefined;\n /** Host-controlled full screen; omit to let the frame manage it. */\n fullScreen?: boolean | undefined;\n onFullScreenChange?: ((fullScreen: boolean) => void) | undefined;\n className?: string | undefined;\n};\n\n/**\n * A published Site filling its container: the console's session dock and an\n * embedding host's artifact viewer render the same view.\n */\nexport function SiteView({\n client,\n workspaceId,\n siteId,\n toolBridge,\n viewer,\n siteLocation,\n onSiteLocationChange,\n theme,\n archivedMessage,\n showTitle = true,\n renderTitle,\n loadingLabel,\n onTitle,\n showToolbar,\n liveStatus,\n reloadToken,\n versionId,\n watch,\n versionControl,\n toolbarStart,\n fullScreen,\n onFullScreenChange,\n className,\n}: SiteViewProps) {\n const t = useOpenGeniText();\n const labels = useArtifactLabels();\n const [snapshot, setSnapshot] = useState<Snapshot | null>(null);\n const [error, setError] = useState<unknown>(null);\n // A newer version is loading (or failed to) behind the one on screen.\n const [refresh, setRefresh] = useState<\"idle\" | \"loading\" | \"failed\">(\"idle\");\n const readAbort = useRef<AbortController | null>(null);\n // Failed background loads in a row, for the wait before the next try.\n const [failures, setFailures] = useState(0);\n const onTitleRef = useRef(onTitle);\n onTitleRef.current = onTitle;\n const load = useCallback(\n async (background = false) => {\n readAbort.current?.abort();\n const abort = new AbortController();\n readAbort.current = abort;\n try {\n if (background) setRefresh(\"loading\");\n else setError(null);\n const next = await loadSiteSnapshot(client, workspaceId, siteId, {\n signal: abort.signal,\n includeArchivedContent: true,\n });\n if (abort.signal.aborted) return;\n setSnapshot(next);\n setError(null);\n setRefresh(\"idle\");\n setFailures(0);\n onTitleRef.current?.(next.detail.artifact.title);\n } catch (nextError) {\n if (abort.signal.aborted) return;\n // A failed update keeps the version on screen; the label says so.\n if (background) {\n setRefresh(\"failed\");\n setFailures((count) => count + 1);\n } else {\n setSnapshot(null);\n setError(nextError);\n }\n }\n },\n [client, siteId, workspaceId],\n );\n useEffect(() => {\n setSnapshot(null);\n setRefresh(\"idle\");\n void load();\n return () => readAbort.current?.abort();\n }, [load]);\n const content = snapshot?.content;\n const shownVersion = content?.versionId ?? null;\n // Follow the host's current version once something is on screen. Only a\n // change of `versionId` asks again, so a host that read an older version\n // than the one shown never makes the view load in a loop.\n const loaded = snapshot !== null;\n const shownRef = useRef(shownVersion);\n shownRef.current = shownVersion;\n useEffect(() => {\n if (!loaded || !versionId || versionId === shownRef.current) return;\n void load(true);\n }, [load, loaded, versionId]);\n // A failed update tries again, waiting longer each time (up to 30 s), until\n // the version on screen is the host's or the host moves on to another. A\n // hidden tab waits and tries once it is shown again.\n useEffect(() => {\n if (refresh !== \"failed\" || !versionId || versionId === shownRef.current) return;\n if (typeof document !== \"undefined\" && document.visibilityState === \"hidden\") {\n const onVisible = () => {\n if (document.visibilityState === \"visible\") void load(true);\n };\n document.addEventListener(\"visibilitychange\", onVisible);\n return () => document.removeEventListener(\"visibilitychange\", onVisible);\n }\n const delay = Math.min(30_000, 2_000 * 2 ** Math.max(0, failures - 1));\n const timer = setTimeout(() => void load(true), delay);\n return () => clearTimeout(timer);\n }, [failures, load, refresh, versionId]);\n const bridge = useMemo(\n () =>\n content\n ? toolBridge?.({\n artifactId: siteId,\n siteVersionId: content.versionId,\n requestedTools: content.requestedTools,\n })\n : undefined,\n [content, siteId, toolBridge],\n );\n // Without the Site there is no toolbar, but its first control stays, so a\n // Back never disappears while the Site loads or fails.\n const withStart = (state: ReactNode) =>\n toolbarStart ? (\n <div className=\"flex min-h-0 flex-1 flex-col\">\n <div className=\"flex min-h-12 shrink-0 items-center border-b border-border/80 px-3 sm:px-4\">\n {toolbarStart}\n </div>\n {state}\n </div>\n ) : (\n state\n );\n if (error)\n return withStart(\n <ArtifactProblem\n view={artifactLoadErrorView(t, error, \"site\", labels)}\n onRetry={() => void load()}\n />,\n );\n if (!snapshot || !content)\n return withStart(<ArtifactLoading label={loadingLabel ?? labels.loadingSite} />);\n if (snapshot.detail.artifact.status === \"archived\")\n return withStart(\n <div className=\"p-4 text-sm text-fg-muted\">{archivedMessage ?? labels.siteArchived}</div>,\n );\n const liveState: SiteLiveState | undefined =\n versionId === undefined && watch === undefined\n ? undefined\n : refresh === \"loading\" || (versionId && versionId !== shownVersion && refresh !== \"failed\")\n ? \"updating\"\n : watch === \"reconnecting\" || refresh === \"failed\"\n ? \"reconnecting\"\n : \"live\";\n return (\n <ArtifactSandbox\n html={content.html}\n title={snapshot.detail.artifact.title}\n showTitle={showTitle}\n {...(renderTitle ? { renderTitle } : {})}\n versionLabel={\n !versionControl && snapshot.detail.artifact.currentVersion\n ? t(\"artifacts.siteView.vRevision\", {\n revision: snapshot.detail.artifact.currentVersion.revision,\n })\n : undefined\n }\n headerControls={versionControl}\n {...(toolbarStart ? { toolbarStart } : {})}\n liveState={liveState}\n toolBridge={bridge}\n viewer={viewer}\n {...(siteLocation !== undefined ? { siteLocation } : {})}\n {...(onSiteLocationChange ? { onSiteLocationChange } : {})}\n connectedToolCount={content.requestedTools.length}\n theme={theme}\n {...(showToolbar !== undefined ? { showToolbar } : {})}\n {...(liveStatus !== undefined ? { liveStatus } : {})}\n {...(reloadToken !== undefined ? { reloadToken } : {})}\n // A new version is a new page, even when its HTML is unchanged (its\n // tool bridge is bound to the version); it replaces the frame in the\n // same render as its HTML, so the Site loads once.\n frameKey={content.versionId}\n {...(fullScreen !== undefined ? { fullScreen } : {})}\n {...(onFullScreenChange ? { onFullScreenChange } : {})}\n fill\n className={className ?? \"h-full rounded-none border-0\"}\n />\n );\n}\n","import type { EditableArtifactResource } from \"@opengeni/sdk/artifacts\";\nimport {\n createBrowserEditableArtifactSession,\n type CreateBrowserEditableArtifactSessionOptions,\n type EditableArtifactBrowserRuntime,\n type EditableArtifactCacheAuthority,\n type EditableArtifactModality,\n} from \"@opengeni/sdk/editable-artifacts\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport {\n ArtifactLoading,\n ArtifactProblem,\n artifactLoadErrorView,\n useArtifactLabels,\n type ArtifactLoadErrorView,\n} from \"./artifact-chrome\";\nimport { EditableArtifactWorkbenchHost } from \"./editable-artifact-workbench\";\nimport { useOpenGeniText } from \"../../messages/runtime\";\n\n/**\n * The browser kernels an editor needs, one per modality, plus the host-built\n * Worker URL (for Vite: `@opengeni/sdk/editable-artifacts/worker?worker&url`).\n * Kernels come from `@opengeni/artifact-kernel-wasm-{document,spreadsheet,presentation}`.\n */\nexport type EditableArtifactRuntimes = Readonly<{\n document: Omit<EditableArtifactBrowserRuntime, \"workerUrl\" | \"workerFactory\">;\n spreadsheet: Omit<EditableArtifactBrowserRuntime, \"workerUrl\" | \"workerFactory\">;\n presentation: Omit<EditableArtifactBrowserRuntime, \"workerUrl\" | \"workerFactory\">;\n workerUrl: string;\n applicationOrigin?: string | undefined;\n /** Loopback development only. */\n allowInsecureDevelopmentAssets?: boolean | undefined;\n}>;\n\n/** Everything needed to open one artifact for the current principal. */\nexport type OpenedEditableArtifact = Readonly<{\n artifact: EditableArtifactResource;\n authority: EditableArtifactCacheAuthority;\n replicaId: string;\n}>;\n\nexport type EditableArtifactViewProps = Readonly<{\n /** Absolute API (or session proxy) base the live transport talks to. */\n baseUrl: URL;\n workspaceId: string;\n artifactId: string;\n /** Resolve metadata, cache authority, and replica; called again on retry. */\n open: (signal: AbortSignal) => Promise<OpenedEditableArtifact>;\n runtimes: EditableArtifactRuntimes;\n transport?: CreateBrowserEditableArtifactSessionOptions[\"transport\"];\n /** Show the editor's own title header (hosts with their own header hide it). */\n showHeader?: boolean | undefined;\n /** Re-open when this changes (for example the host's credential version). */\n authorityKey?: string | undefined;\n describeError?: ((error: unknown) => ArtifactLoadErrorView) | undefined;\n onTitle?: ((title: string) => void) | undefined;\n /** Loading copy; defaults to the `opening` label. */\n loadingLabel?: string | undefined;\n /**\n * Host-authenticated Office export (DOCX, XLSX, or PPTX by modality); omitted\n * for hosts without export support. Every editor shows Download when set.\n */\n downloadArtifact?:\n | ((opened: OpenedEditableArtifact, signal: AbortSignal) => Promise<Blob>)\n | undefined;\n /** Spreadsheet-only XLSX export; `downloadArtifact` takes precedence when both are set. */\n downloadSpreadsheet?:\n | ((opened: OpenedEditableArtifact, signal: AbortSignal) => Promise<Blob>)\n | undefined;\n}>;\n\ntype LoadState =\n | Readonly<{ key: string | null; kind: \"loading\" }>\n | Readonly<{ key: string; kind: \"ready\"; value: OpenedEditableArtifact }>\n | Readonly<{ key: string; kind: \"error\"; error: unknown }>;\n\n/**\n * One editable document, spreadsheet, or presentation with its first-party\n * editor. The console dock/page and embedding hosts supply only data access.\n */\nexport function EditableArtifactView({\n baseUrl,\n workspaceId,\n artifactId,\n open,\n runtimes,\n transport,\n showHeader = true,\n authorityKey,\n describeError,\n onTitle,\n loadingLabel,\n downloadArtifact,\n downloadSpreadsheet,\n}: EditableArtifactViewProps) {\n const t = useOpenGeniText();\n const [loadEpoch, setLoadEpoch] = useState(0);\n const labels = useArtifactLabels();\n const loadKey = JSON.stringify([artifactId, authorityKey, baseUrl.href, workspaceId, loadEpoch]);\n const [state, setState] = useState<LoadState>({ key: null, kind: \"loading\" });\n const current = state.key === loadKey ? state : null;\n const openRef = useRef(open);\n openRef.current = open;\n const onTitleRef = useRef(onTitle);\n onTitleRef.current = onTitle;\n useEffect(() => {\n const abort = new AbortController();\n setState({ key: loadKey, kind: \"loading\" });\n void openRef\n .current(abort.signal)\n .then((value) => {\n if (abort.signal.aborted) return;\n setState({ key: loadKey, kind: \"ready\", value });\n onTitleRef.current?.(value.artifact.title);\n })\n .catch((error: unknown) => {\n if (!abort.signal.aborted) setState({ key: loadKey, kind: \"error\", error });\n });\n return () => abort.abort();\n }, [loadKey]);\n\n const ready = current?.kind === \"ready\" ? current.value : null;\n const transportRef = useRef(transport);\n transportRef.current = transport;\n const sessionKey = useMemo(\n () =>\n ready\n ? JSON.stringify({\n baseUrl: baseUrl.href,\n authorityKey,\n workspaceId,\n artifact: { id: ready.artifact.id, modality: ready.artifact.modality },\n authority: ready.authority,\n replicaId: ready.replicaId,\n workerUrl: runtimes.workerUrl,\n })\n : \"\",\n [authorityKey, baseUrl.href, ready, runtimes.workerUrl, workspaceId],\n );\n const createSession = useCallback(() => {\n if (!ready) throw new Error(\"Artifact is not open\");\n return createBrowserEditableArtifactSession({\n baseUrl,\n workspaceId,\n artifact: ready.artifact,\n storageAuthority: ready.authority,\n replicaId: ready.replicaId,\n runtime: {\n ...runtimeFor(runtimes, ready.artifact.modality),\n workerUrl: runtimes.workerUrl,\n ...(runtimes.applicationOrigin ? { applicationOrigin: runtimes.applicationOrigin } : {}),\n ...(runtimes.allowInsecureDevelopmentAssets\n ? { allowInsecureDevelopmentAssets: true }\n : {}),\n },\n ...(transportRef.current ? { transport: transportRef.current } : {}),\n });\n }, [baseUrl, ready, runtimes, workspaceId]);\n\n if (!current || current.kind === \"loading\")\n return <ArtifactLoading label={loadingLabel ?? labels.opening} />;\n if (current.kind === \"error\") {\n return (\n <ArtifactProblem\n view={\n describeError\n ? describeError(current.error)\n : artifactLoadErrorView(t, current.error, \"editable\", labels)\n }\n onRetry={() => setLoadEpoch((value) => value + 1)}\n />\n );\n }\n const { artifact } = current.value;\n const surface = { title: artifact.title, showHeader };\n const opened = current.value;\n const exportFor = (\n host: ((opened: OpenedEditableArtifact, signal: AbortSignal) => Promise<Blob>) | undefined,\n ) => (host ? (signal: AbortSignal) => host(opened, signal) : undefined);\n return (\n <div className=\"h-full min-h-0 bg-og-bg text-og-fg\">\n <EditableArtifactWorkbenchHost\n sessionKey={sessionKey}\n createSession={createSession}\n document={{ ...surface, download: exportFor(downloadArtifact) }}\n spreadsheet={{ ...surface, download: exportFor(downloadArtifact ?? downloadSpreadsheet) }}\n presentation={{ ...surface, download: exportFor(downloadArtifact) }}\n />\n </div>\n );\n}\n\nfunction runtimeFor(\n runtimes: EditableArtifactRuntimes,\n modality: EditableArtifactModality,\n): Omit<EditableArtifactBrowserRuntime, \"workerUrl\" | \"workerFactory\"> {\n switch (modality) {\n case \"document\":\n return runtimes.document;\n case \"spreadsheet\":\n return runtimes.spreadsheet;\n case \"presentation\":\n return runtimes.presentation;\n }\n}\n","import {\n createBrowserEditableArtifactSession,\n type CreateBrowserEditableArtifactSessionOptions,\n type EditableArtifactBrowserRuntime,\n type EditableArtifactSession,\n} from \"@opengeni/sdk/editable-artifacts\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\n\nimport { useArtifactLabels } from \"./artifact-chrome\";\nimport { EditableArtifactMessage } from \"./editable-artifact-ui\";\nimport {\n EditableDocumentArtifactSurface,\n type EditableDocumentArtifactSurfaceProps,\n} from \"./editable-document\";\nimport {\n EditablePresentationArtifactSurface,\n type EditablePresentationArtifactSurfaceProps,\n} from \"./editable-presentation\";\nimport {\n EditableSpreadsheetArtifactSurface,\n type EditableSpreadsheetArtifactSurfaceProps,\n} from \"./editable-spreadsheet\";\nimport { useOpenGeniText } from \"../../messages/runtime\";\n\nexport type EditableArtifactWorkbenchProps = Readonly<{\n session: EditableArtifactSession;\n document?: Omit<EditableDocumentArtifactSurfaceProps, \"session\">;\n spreadsheet?: Omit<EditableSpreadsheetArtifactSurfaceProps, \"session\">;\n presentation?: Omit<EditablePresentationArtifactSurfaceProps, \"session\">;\n}>;\n\nexport type EditableArtifactWorkbenchHostProps = Omit<EditableArtifactWorkbenchProps, \"session\"> &\n Readonly<{\n /**\n * Complete identity of the browser session authority. Change this when the\n * artifact, deployment, principal, or authorization epoch changes.\n */\n sessionKey: string;\n /** Called for the active keyed lifecycle and again only after replacement or retry. */\n createSession: () => EditableArtifactSession;\n }>;\n\ntype DefaultBrowserArtifactTransport = Omit<\n NonNullable<CreateBrowserEditableArtifactSessionOptions[\"transport\"]>,\n \"apiKey\" | \"fetch\" | \"headers\" | \"webSocketFactory\"\n> &\n Readonly<{\n /** Static deployment auth headers; rotate authorizationEpoch when they change. */\n headers?: Readonly<Record<string, string>>;\n }>;\n\nexport type BrowserEditableArtifactWorkbenchOptions = Omit<\n CreateBrowserEditableArtifactSessionOptions,\n \"runtime\" | \"storage\" | \"transport\"\n> &\n Readonly<{\n /** Default module Worker only; custom Worker hosts use EditableArtifactWorkbenchHost. */\n runtime: Omit<EditableArtifactBrowserRuntime, \"workerFactory\">;\n /** Default fetch/WebSocket only; static deployment auth headers are supported. */\n transport?: DefaultBrowserArtifactTransport;\n }>;\n\nexport type BrowserEditableArtifactWorkbenchProps = Omit<\n EditableArtifactWorkbenchProps,\n \"session\"\n> &\n Readonly<{ options: BrowserEditableArtifactWorkbenchOptions }>;\n\n/**\n * One modality-neutral SDK workbench. Embedding hosts keep one route/component;\n * each artifact still renders through its complete first-party editor surface.\n */\nexport function EditableArtifactWorkbench({\n session,\n document,\n spreadsheet,\n presentation,\n}: EditableArtifactWorkbenchProps) {\n const t = useOpenGeniText();\n switch (session.modality) {\n case \"document\":\n return (\n <EditableDocumentArtifactSurface\n {...document}\n session={session}\n title={document?.title ?? t(\"artifacts.editableArtifactWorkbench.document\")}\n />\n );\n case \"spreadsheet\":\n return <EditableSpreadsheetArtifactSurface {...spreadsheet} session={session} />;\n case \"presentation\":\n return <EditablePresentationArtifactSurface {...presentation} session={session} />;\n }\n}\n\n/**\n * Route/embed composition that owns exactly one SDK session. The host supplies\n * the authenticated SDK factory; React guarantees replacement and teardown.\n */\nexport function EditableArtifactWorkbenchHost({\n sessionKey,\n createSession,\n document,\n spreadsheet,\n presentation,\n}: EditableArtifactWorkbenchHostProps) {\n const createSessionRef = useRef(createSession);\n const [retryEpoch, setRetryEpoch] = useState(0);\n const [state, setState] = useState<\n | Readonly<{ key: string; session: EditableArtifactSession; error: null }>\n | Readonly<{ key: string | null; session: null; error: Error | null }>\n >({ key: null, session: null, error: null });\n\n useEffect(() => {\n createSessionRef.current = createSession;\n }, [createSession]);\n\n useEffect(() => {\n let owned: EditableArtifactSession | null = null;\n setState({ key: sessionKey, session: null, error: null });\n try {\n owned = createSessionRef.current();\n setState({ key: sessionKey, session: owned, error: null });\n } catch (cause) {\n setState({\n key: sessionKey,\n session: null,\n error: cause instanceof Error ? cause : new Error(\"Could not create artifact session\"),\n });\n }\n return () => {\n const closing = owned;\n owned = null;\n if (closing) void closing.close().catch(() => undefined);\n };\n }, [retryEpoch, sessionKey]);\n\n const retry = useCallback(() => setRetryEpoch((value) => value + 1), []);\n const labels = useArtifactLabels();\n const currentError = state.key === sessionKey ? state.error : null;\n if (state.key === sessionKey && state.session) {\n return (\n <EditableArtifactWorkbench\n session={state.session}\n {...(document ? { document } : {})}\n {...(spreadsheet ? { spreadsheet } : {})}\n {...(presentation ? { presentation } : {})}\n />\n );\n }\n return (\n <EditableArtifactMessage\n title={currentError ? labels.editableErrors.transient.title : labels.opening}\n detail={currentError?.message ?? labels.startingEditor}\n retry={currentError ? retry : undefined}\n retryLabel={labels.retry}\n />\n );\n}\n\n/**\n * Complete default-browser composition for embedders: verified WASM Worker,\n * durable IndexedDB state, authenticated live sync, teardown, and the matching\n * first-party editor. Advanced/custom transports compose the lower-level host.\n */\nexport function BrowserEditableArtifactWorkbench({\n options,\n document,\n spreadsheet,\n presentation,\n}: BrowserEditableArtifactWorkbenchProps) {\n const sessionKey = browserSessionKey(options);\n const createSession = useCallback(() => createBrowserEditableArtifactSession(options), [options]);\n return (\n <EditableArtifactWorkbenchHost\n sessionKey={sessionKey}\n createSession={createSession}\n {...(document ? { document } : {})}\n {...(spreadsheet ? { spreadsheet } : {})}\n {...(presentation ? { presentation } : {})}\n />\n );\n}\n\nfunction browserSessionKey(options: BrowserEditableArtifactWorkbenchOptions): string {\n const transport = options.transport\n ? {\n ...options.transport,\n // Credentials must not be copied into React lifecycle keys. The\n // authorization epoch is the explicit credential/grant rotation fence.\n headers: options.transport.headers\n ? Object.keys(options.transport.headers).sort()\n : undefined,\n }\n : null;\n return JSON.stringify(\n {\n baseUrl: options.baseUrl,\n workspaceId: options.workspaceId,\n artifact: { id: options.artifact.id, modality: options.artifact.modality },\n storageAuthority: options.storageAuthority,\n runtime: options.runtime,\n replicaId: options.replicaId ?? null,\n transport,\n },\n (_key, value: unknown) => (value instanceof URL ? value.href : value),\n );\n}\n","import { SESSION_SCOPE_HEADER, type ClientConfig, type OpenGeniClient } from \"@opengeni/sdk\";\nimport { createEditableArtifactReplicaId } from \"@opengeni/sdk/editable-artifacts\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport { joinClientConfigRead } from \"../../lib/client-config-read\";\nimport { useOpenGeni, type ClientOverride } from \"../../session-context\";\nimport {\n ArtifactLabelsProvider,\n ArtifactLoading,\n ArtifactProblem,\n ArtifactViewerHeader,\n artifactLoadErrorView,\n useArtifactLabels,\n type ArtifactKind,\n type ArtifactLabels,\n} from \"./artifact-chrome\";\nimport { EditableArtifactView, type EditableArtifactRuntimes } from \"./editable-artifact-view\";\nimport type { SiteToolBridgeFactory } from \"./chat-interactive-block\";\nimport { SiteView } from \"./site-view\";\nimport { useOpenGeniText } from \"../../messages/runtime\";\n\n/** An artifact opened from a session: the targets agent links and Site previews name. */\nexport type SessionArtifactTarget = Readonly<\n | { kind: \"editable-artifact\"; artifactId: string; title?: string | undefined }\n | { kind: \"site\"; artifactId: string; title?: string | undefined }\n>;\n\n/** Every string the viewer shows, including its Site frame and states. */\nexport type SessionArtifactViewerLabels = Partial<ArtifactLabels>;\n\nexport type SessionArtifactViewerProps = ClientOverride &\n Readonly<{\n /** The conversation the artifact belongs to; the proxy only serves its artifacts. */\n sessionId: string;\n target: SessionArtifactTarget;\n onClose: () => void;\n /** Show a Back control, for example to return to the conversation on phones. */\n onBack?: (() => void) | undefined;\n /** Browser kernels and Worker for documents, spreadsheets, and presentations. */\n editableRuntimes?: EditableArtifactRuntimes | undefined;\n theme?: \"light\" | \"dark\" | undefined;\n /** Host-owned Site API access; omit it and Sites render without workspace tools. */\n siteToolBridge?: SiteToolBridgeFactory | undefined;\n labels?: SessionArtifactViewerLabels | undefined;\n className?: string | undefined;\n }>;\n\ntype ViewerClient = Pick<\n OpenGeniClient,\n | \"withHeaders\"\n | \"apiUrl\"\n | \"fetchApi\"\n | \"getClientConfig\"\n | \"getEditableArtifact\"\n | \"getWorkspaceArtifact\"\n | \"getWorkspaceArtifactHtml\"\n>;\n\nconst viewerClientKeys = new WeakMap<ViewerClient, string>();\n\nfunction viewerClientKey(client: ViewerClient): string {\n let key = viewerClientKeys.get(client);\n if (!key) {\n key = crypto.randomUUID();\n viewerClientKeys.set(client, key);\n }\n return key;\n}\n\n/**\n * A host-mountable viewer for one editable artifact or Site from a session,\n * with its own header (title, Back, Close). Mount it in any sized container\n * (a side panel, a sheet); it fills it. Data flows through the provider's\n * client (for example through `createSessionProxyHandler`), scoped to\n * `sessionId`.\n */\nexport function SessionArtifactViewer({ labels, ...props }: SessionArtifactViewerProps) {\n return (\n <ArtifactLabelsProvider labels={labels}>\n <Viewer {...props} />\n </ArtifactLabelsProvider>\n );\n}\n\nfunction Viewer({\n client: clientOverride,\n workspaceId: workspaceOverride,\n sessionId,\n target,\n onClose,\n onBack,\n editableRuntimes,\n theme,\n siteToolBridge,\n className,\n}: Omit<SessionArtifactViewerProps, \"labels\">) {\n const labels = useArtifactLabels();\n const context = useOpenGeni({ client: clientOverride, workspaceId: workspaceOverride });\n const base = context.client as unknown as ViewerClient;\n const workspaceId = context.workspaceId;\n const client = useMemo(\n () => base.withHeaders({ [SESSION_SCOPE_HEADER]: sessionId }),\n [base, sessionId],\n );\n const [loaded, setLoaded] = useState<{\n key: string;\n client: ViewerClient;\n workspaceId: string;\n title: string;\n kind: ArtifactKind | null;\n } | null>(null);\n const targetKey = `${target.kind}:${target.artifactId}`;\n const current =\n loaded?.key === targetKey && loaded.client === client && loaded.workspaceId === workspaceId\n ? loaded\n : null;\n const kind: ArtifactKind | null = target.kind === \"site\" ? \"site\" : (current?.kind ?? null);\n const [unavailable, setUnavailable] = useState<{\n key: string;\n client: ViewerClient;\n workspaceId: string;\n } | null>(null);\n const markUnavailable = useCallback(\n () => setUnavailable({ key: targetKey, client, workspaceId }),\n [client, targetKey, workspaceId],\n );\n const title =\n current?.title ??\n target.title ??\n (unavailable?.key === targetKey &&\n unavailable.client === client &&\n unavailable.workspaceId === workspaceId\n ? labels.artifact\n : labels.opening);\n return (\n <section\n aria-label={title}\n data-og-artifact-viewer={target.kind}\n className={cn(\"og-root flex h-full min-h-0 w-full min-w-0 flex-col bg-bg text-fg\", className)}\n >\n <ArtifactViewerHeader\n kind={kind}\n title={title}\n onBack={onBack}\n backLabel={labels.back}\n onClose={onClose}\n closeLabel={labels.close}\n />\n <div className=\"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden\">\n {target.kind === \"site\" ? (\n <SiteView\n key={targetKey}\n client={client}\n workspaceId={workspaceId}\n siteId={target.artifactId}\n theme={theme}\n toolBridge={siteToolBridge}\n showTitle={false}\n onTitle={(next) =>\n setLoaded({ key: targetKey, client, workspaceId, title: next, kind: \"site\" })\n }\n />\n ) : (\n <EditableBody\n key={targetKey}\n client={client}\n workspaceId={workspaceId}\n sessionId={sessionId}\n artifactId={target.artifactId}\n runtimes={editableRuntimes}\n onOpened={(next, modality) =>\n setLoaded({ key: targetKey, client, workspaceId, title: next, kind: modality })\n }\n onUnavailable={markUnavailable}\n />\n )}\n </div>\n </section>\n );\n}\n\nfunction EditableBody({\n client,\n workspaceId,\n sessionId,\n artifactId,\n runtimes,\n onOpened,\n onUnavailable,\n}: {\n client: ViewerClient;\n workspaceId: string;\n sessionId: string;\n artifactId: string;\n runtimes: EditableArtifactRuntimes | undefined;\n onOpened: (title: string, modality: ArtifactKind) => void;\n onUnavailable: () => void;\n}) {\n const t = useOpenGeniText();\n const labels = useArtifactLabels();\n const clientKey = viewerClientKey(client);\n const [retryEpoch, setRetryEpoch] = useState(0);\n const [configState, setConfigState] = useState<{\n client: ViewerClient;\n workspaceId: string;\n sessionId: string;\n result:\n | { kind: \"ready\"; config: Exclude<NonNullable<ClientConfig[\"artifacts\"]>, false> }\n | { kind: \"unavailable\" }\n | { kind: \"error\"; error: unknown };\n } | null>(null);\n const current =\n configState?.client === client &&\n configState.workspaceId === workspaceId &&\n configState.sessionId === sessionId\n ? configState.result\n : null;\n const config = current?.kind === \"ready\" ? current.config : null;\n const scopeRef = useRef({ client, workspaceId, sessionId });\n scopeRef.current = { client, workspaceId, sessionId };\n useEffect(() => {\n let live = true;\n setConfigState(null);\n joinClientConfigRead(client).then(\n (value) =>\n live &&\n setConfigState({\n client,\n workspaceId,\n sessionId,\n result: value.artifacts\n ? { kind: \"ready\", config: value.artifacts }\n : { kind: \"unavailable\" },\n }),\n (error: unknown) =>\n live &&\n setConfigState({ client, workspaceId, sessionId, result: { kind: \"error\", error } }),\n );\n return () => {\n live = false;\n };\n }, [client, retryEpoch, sessionId, workspaceId]);\n const baseUrl = useMemo(\n () => new URL(client.apiUrl(\"/\"), globalThis.location?.href ?? \"http://localhost/\"),\n [client],\n );\n const transport = useMemo(() => {\n if (!config) return undefined;\n const socket = new URL(config.editableLiveUrl);\n let scope = new AbortController();\n const checkCurrent = (signal: AbortSignal) => {\n signal.throwIfAborted();\n if (\n scopeRef.current.client !== client ||\n scopeRef.current.workspaceId !== workspaceId ||\n scopeRef.current.sessionId !== sessionId\n ) {\n throw new DOMException(\"Artifact viewer scope changed\", \"AbortError\");\n }\n };\n return {\n activate: () => {\n if (scope.signal.aborted) scope = new AbortController();\n },\n abort: () => scope.abort(),\n fetch: (async (input: RequestInfo | URL, init?: RequestInit) => {\n const signal = AbortSignal.any([scope.signal, ...(init?.signal ? [init.signal] : [])]);\n checkCurrent(signal);\n const url = new URL(input instanceof Request ? input.url : input, baseUrl);\n if (\n init?.method === \"POST\" &&\n url.pathname ===\n new URL(\n `v1/workspaces/${encodeURIComponent(workspaceId)}/editable-artifacts/${encodeURIComponent(artifactId)}/live-ticket`,\n baseUrl,\n ).pathname\n ) {\n // A reconnect must revalidate the current host principal before\n // minting a ticket for the editor's retained cache partition.\n const next = (await client.getClientConfig({ signal })).artifacts;\n checkCurrent(signal);\n if (!next || artifactCapabilityKey(next) !== artifactCapabilityKey(config)) {\n setConfigState({\n client,\n workspaceId,\n sessionId,\n result: next ? { kind: \"ready\", config: next } : { kind: \"unavailable\" },\n });\n scope.abort();\n signal.throwIfAborted();\n }\n const { replicaId } = (await new Request(input, init).json()) as {\n replicaId?: unknown;\n };\n if (typeof replicaId !== \"string\") throw new TypeError(\"Artifact replica is required\");\n await client.getEditableArtifact(workspaceId, artifactId, { replicaId, signal });\n checkCurrent(signal);\n }\n return client.fetchApi(url, { ...init, signal });\n }) as typeof fetch,\n webSocketUrl: socket,\n ...(isLoopback(baseUrl) && isLoopback(socket)\n ? { allowInsecureDevelopmentTransport: true }\n : {}),\n };\n }, [artifactId, baseUrl, client, config, sessionId, workspaceId]);\n useEffect(() => {\n transport?.activate();\n return () => transport?.abort();\n }, [transport]);\n const blocked = current !== null && (current.kind !== \"ready\" || !runtimes);\n useEffect(() => {\n if (blocked) onUnavailable();\n }, [blocked, onUnavailable]);\n if (!current) return <ArtifactLoading label={labels.opening} />;\n if (current.kind === \"error\") {\n return (\n <ArtifactProblem\n view={artifactLoadErrorView(t, current.error, \"editable\", labels)}\n onRetry={() => setRetryEpoch((value) => value + 1)}\n />\n );\n }\n if (!config || !transport) {\n return <ArtifactProblem view={{ ...labels.viewingDisabled, retryable: false }} />;\n }\n if (!runtimes) {\n return <ArtifactProblem view={{ ...labels.editorsMissing, retryable: false }} />;\n }\n return (\n <EditableArtifactView\n baseUrl={baseUrl}\n workspaceId={workspaceId}\n artifactId={artifactId}\n authorityKey={JSON.stringify([clientKey, sessionId, artifactCapabilityKey(config)])}\n runtimes={{\n ...runtimes,\n ...(isLoopback(baseUrl) ? { allowInsecureDevelopmentAssets: true } : {}),\n }}\n transport={transport}\n showHeader={false}\n open={async (signal) => {\n const replicaId = createEditableArtifactReplicaId();\n const artifact = await client.getEditableArtifact(workspaceId, artifactId, {\n replicaId,\n signal,\n });\n signal.throwIfAborted();\n onOpened(artifact.title, artifact.modality);\n return {\n artifact,\n replicaId,\n authority: {\n deploymentOrigin: baseUrl.origin,\n workspaceId,\n ...config.cachePartition,\n },\n };\n }}\n />\n );\n}\n\nfunction artifactCapabilityKey(\n config: Exclude<NonNullable<ClientConfig[\"artifacts\"]>, false>,\n): string {\n return JSON.stringify([\n config.editableLiveUrl,\n config.cachePartition.accountId,\n config.cachePartition.principalId,\n config.cachePartition.authorizationEpoch,\n ]);\n}\n\nfunction isLoopback(url: URL): boolean {\n return (\n (url.protocol === \"http:\" || url.protocol === \"ws:\") &&\n (url.hostname === \"localhost\" || url.hostname === \"127.0.0.1\" || url.hostname === \"[::1]\")\n );\n}\n"],"mappings":"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","names":["createBrowserEditableArtifactSession","useCallback","useEffect","useMemo","useRef","useState","useCallback","useEffect","useRef","useState","jsx","document","useRef","useState","useEffect","useCallback","jsx","useState","useRef","useEffect","useMemo","useCallback","createBrowserEditableArtifactSession","useCallback","useEffect","useMemo","useRef","useState","jsx","jsxs","useMemo","useState","useCallback","useRef","useEffect"]}
@@ -6,7 +6,7 @@ import {
6
6
  UsageLimitNoticeView,
7
7
  UsageMeterView,
8
8
  summarizeUsage
9
- } from "./chunk-T3OWFVMS.js";
9
+ } from "./chunk-Y3XZEKDQ.js";
10
10
  import {
11
11
  isPersonalWorkspace
12
12
  } from "./chunk-LBSXJVHD.js";
@@ -95,4 +95,4 @@ export {
95
95
  AccountUsageMenuItem,
96
96
  ComposerUsageNotice
97
97
  };
98
- //# sourceMappingURL=chunk-NC7PVOEK.js.map
98
+ //# sourceMappingURL=chunk-HWVPLFIW.js.map
@@ -3,7 +3,7 @@ import {
3
3
  SessionAvatar,
4
4
  sessionAvatarFallbackHue,
5
5
  sessionAvatarInitials
6
- } from "./chunk-YLS6QE5G.js";
6
+ } from "./chunk-UO35OEOX.js";
7
7
  import {
8
8
  Skeleton
9
9
  } from "./chunk-HJO32O7Z.js";
@@ -76,4 +76,4 @@ function BotLaunchStrip({
76
76
  export {
77
77
  BotLaunchStrip
78
78
  };
79
- //# sourceMappingURL=chunk-ECJBYNLJ.js.map
79
+ //# sourceMappingURL=chunk-ICAMYP5M.js.map
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  rememberedProjectCompute
4
- } from "./chunk-IXPTECSC.js";
4
+ } from "./chunk-AVXDIRRW.js";
5
5
 
6
6
  // src/app/routes/sessions-index-hydration.tsx
7
7
  function initialNewSessionProjectLaunchIntent(launchChannelId) {
@@ -53,4 +53,4 @@ export {
53
53
  resolveHydratedNewSessionProjectSelection,
54
54
  hydratedNewSessionProjectProvenancePresent
55
55
  };
56
- //# sourceMappingURL=chunk-DJAXC5OK.js.map
56
+ //# sourceMappingURL=chunk-IFSXVU2S.js.map
@@ -1,15 +1,15 @@
1
1
  "use client";
2
2
  import {
3
3
  SessionCapabilityFrame
4
- } from "./chunk-FO4LYKJL.js";
4
+ } from "./chunk-OP2GD6QW.js";
5
5
  import {
6
6
  browserConnectWindowHost,
7
7
  showsMcpServerLabel,
8
8
  useMcpCapabilityConnect
9
- } from "./chunk-IMDQUHBJ.js";
9
+ } from "./chunk-2ZAQA5GE.js";
10
10
  import {
11
11
  useOpenGeniText
12
- } from "./chunk-7T2ZE3VT.js";
12
+ } from "./chunk-QPQ7R77C.js";
13
13
 
14
14
  // src/components/session-mcp-capability-card.tsx
15
15
  import { useEffect, useState } from "react";
@@ -197,4 +197,4 @@ export {
197
197
  SessionMcpCapabilityCard,
198
198
  McpConnectionCard
199
199
  };
200
- //# sourceMappingURL=chunk-N6AACDUW.js.map
200
+ //# sourceMappingURL=chunk-IHLRYWA7.js.map
@@ -12,10 +12,10 @@ import {
12
12
  DetailSheet,
13
13
  DetailSheetContent,
14
14
  DetailSheetTrigger
15
- } from "./chunk-6PZ7OBYU.js";
15
+ } from "./chunk-DLVIRJGK.js";
16
16
  import {
17
17
  SheetClose
18
- } from "./chunk-ZBIXBQNI.js";
18
+ } from "./chunk-ABJZDRW2.js";
19
19
  import {
20
20
  Button
21
21
  } from "./chunk-7QQN3KNP.js";
@@ -278,4 +278,4 @@ function Disclosure({
278
278
  export {
279
279
  Disclosure
280
280
  };
281
- //# sourceMappingURL=chunk-I4MRDSUF.js.map
281
+ //# sourceMappingURL=chunk-IJR6VOLU.js.map
@@ -13,7 +13,7 @@ import {
13
13
  } from "./chunk-SS4QT7SL.js";
14
14
  import {
15
15
  ConfirmDialog
16
- } from "./chunk-SIRLACNZ.js";
16
+ } from "./chunk-KO3OHHY2.js";
17
17
  import {
18
18
  DropdownMenu,
19
19
  DropdownMenuContent,
@@ -231,4 +231,4 @@ export {
231
231
  useArtifactAudience,
232
232
  useSiteAudience
233
233
  };
234
- //# sourceMappingURL=chunk-YCVD6CI3.js.map
234
+ //# sourceMappingURL=chunk-IN3VQFKS.js.map