@opengeni/react 6.5.2-canary.41607687019001 → 6.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1154) hide show
  1. package/dist/app/app-state.d.ts +4 -0
  2. package/dist/app/app-state.js +19 -14
  3. package/dist/app/components/Composer.js +25 -23
  4. package/dist/app/components/agent/agent-capability-picker.js +10 -8
  5. package/dist/app/components/artifacts/artifact-browse-controls.js +4 -4
  6. package/dist/app/components/artifacts/artifact-library.js +21 -19
  7. package/dist/app/components/artifacts/artifact-page-chrome.js +3 -3
  8. package/dist/app/components/artifacts/artifact-viewer.js +23 -22
  9. package/dist/app/components/artifacts/artifact-viewer.js.map +1 -1
  10. package/dist/app/components/artifacts/chat-interactive-block.js +12 -12
  11. package/dist/app/components/artifacts/copy-artifact-link.js +7 -5
  12. package/dist/app/components/artifacts/file-reach-dialog.js +11 -9
  13. package/dist/app/components/artifacts/inline-chat-image.js +18 -18
  14. package/dist/app/components/artifacts/retained-file-preview.js +24 -23
  15. package/dist/app/components/artifacts/retained-text-preview.js +3 -3
  16. package/dist/app/components/artifacts/site-audience.js +6 -5
  17. package/dist/app/components/artifacts/site-conversations.js +16 -14
  18. package/dist/app/components/artifacts/site-data.js +18 -16
  19. package/dist/app/components/artifacts/site-public-link.js +3 -2
  20. package/dist/app/components/artifacts/site-publishing-page.js +39 -37
  21. package/dist/app/components/artifacts/site-publishing.js +34 -32
  22. package/dist/app/components/artifacts/site-settings.js +38 -36
  23. package/dist/app/components/artifacts/site-version-menu.js +8 -7
  24. package/dist/app/components/billing-class-mark.js +3 -3
  25. package/dist/app/components/bots/bot-launch-strip.js +17 -17
  26. package/dist/app/components/bots/bot-template-dialog.js +30 -28
  27. package/dist/app/components/bots/bot-template-shortcuts.js +19 -19
  28. package/dist/app/components/bots/bot-templates-page.js +38 -36
  29. package/dist/app/components/bots/bot-templates-page.js.map +1 -1
  30. package/dist/app/components/capabilities/capability-detail-sheet.js +13 -11
  31. package/dist/app/components/capabilities/capability-logo-source.js +13 -13
  32. package/dist/app/components/capabilities/capability-logo.js +4 -3
  33. package/dist/app/components/capabilities/connector-tool-permissions.js +8 -6
  34. package/dist/app/components/capabilities/native-connect-setup.js +14 -14
  35. package/dist/app/components/capabilities/own-logins-shared-heads-up.js +7 -6
  36. package/dist/app/components/capabilities/perform-capability-action.js +7 -6
  37. package/dist/app/components/capabilities/prepared-mcp-setup-card.js +17 -17
  38. package/dist/app/components/capabilities/session-capability-card.js +72 -70
  39. package/dist/app/components/capabilities/session-capability-card.js.map +1 -1
  40. package/dist/app/components/capabilities/session-chrome-card.js +28 -26
  41. package/dist/app/components/capabilities/session-connection-accounts.js +4 -3
  42. package/dist/app/components/capabilities/session-custom-mcp-card.js +20 -19
  43. package/dist/app/components/capabilities/session-github-card.js +22 -20
  44. package/dist/app/components/capabilities/session-machine-card.js +27 -25
  45. package/dist/app/components/capabilities/session-personal-github-card.js +16 -16
  46. package/dist/app/components/capabilities/session-plugin-card.js +10 -9
  47. package/dist/app/components/capabilities/use-capabilities-catalog.js +4 -3
  48. package/dist/app/components/capabilities/use-connection-accounts.js +5 -4
  49. package/dist/app/components/command-menu/chat-status.js +15 -13
  50. package/dist/app/components/command-menu/chat-switcher.js +35 -33
  51. package/dist/app/components/command-menu/chat-switcher.js.map +1 -1
  52. package/dist/app/components/command-menu/command-menu.js +53 -50
  53. package/dist/app/components/command-menu/command-menu.js.map +1 -1
  54. package/dist/app/components/command-menu/shortcut-sheet.js +18 -16
  55. package/dist/app/components/command-menu/shortcut-sheet.js.map +1 -1
  56. package/dist/app/components/common.js +4 -3
  57. package/dist/app/components/composer-capabilities-menu-body.js +4 -4
  58. package/dist/app/components/composer-mobile-plus-panel.js +8 -8
  59. package/dist/app/components/composer-mobile-plus.js +1 -1
  60. package/dist/app/components/credit-required-gate.js +3 -3
  61. package/dist/app/components/credit-required-prompt.js +10 -8
  62. package/dist/app/components/credit-required-prompt.js.map +1 -1
  63. package/dist/app/components/credits/checkout-credits-celebration.js +3 -2
  64. package/dist/app/components/credits/checkout-return.js +3 -2
  65. package/dist/app/components/credits/checkout-return.js.map +1 -1
  66. package/dist/app/components/credits/coupon-redeem.js +5 -4
  67. package/dist/app/components/credits/credit-refusal-notice.js +7 -5
  68. package/dist/app/components/cross-slot-deep-link-recovery.js +5 -4
  69. package/dist/app/components/desktop/app-shots.js +13 -11
  70. package/dist/app/components/desktop/computer-use.js +6 -4
  71. package/dist/app/components/desktop/this-computer.js +9 -7
  72. package/dist/app/components/feedback.js +5 -4
  73. package/dist/app/components/follow-up-repository-menu-body.js +8 -6
  74. package/dist/app/components/follow-up-repository-menu-body.js.map +1 -1
  75. package/dist/app/components/follow-up-repository-picker.js +1 -1
  76. package/dist/app/components/github-app-connect-launcher.js +5 -4
  77. package/dist/app/components/in-app-help-link.js +3 -3
  78. package/dist/app/components/knowledge/agent-learning-settings.js +3 -2
  79. package/dist/app/components/knowledge/agent-learning-settings.js.map +1 -1
  80. package/dist/app/components/machines/connect-machine-dialog.js +18 -16
  81. package/dist/app/components/manual-repository-editor.js +3 -2
  82. package/dist/app/components/markdown.js +6 -6
  83. package/dist/app/components/models/models-ui.js +12 -10
  84. package/dist/app/components/my-things.js +12 -10
  85. package/dist/app/components/my-things.js.map +1 -1
  86. package/dist/app/components/new-session-starters.js +3 -3
  87. package/dist/app/components/own-where-it-works.js +9 -7
  88. package/dist/app/components/personal-resource-attachment-surface.js +4 -4
  89. package/dist/app/components/pickers.js +5 -5
  90. package/dist/app/components/rail/channel-create-dialog.js +7 -5
  91. package/dist/app/components/rail/project-glyph.js +17 -17
  92. package/dist/app/components/rail/project-profile.js +31 -29
  93. package/dist/app/components/rail/rail-context.js +3 -3
  94. package/dist/app/components/rail/rail-sections.js +68 -66
  95. package/dist/app/components/rail/session-header.js +59 -57
  96. package/dist/app/components/rail/session-list.js +66 -64
  97. package/dist/app/components/rail/session-row-content.js +4 -4
  98. package/dist/app/components/rail/session-row-hover-details.js +14 -12
  99. package/dist/app/components/rail/session-shell.js +90 -88
  100. package/dist/app/components/rail/site-session-group-heading.js +8 -8
  101. package/dist/app/components/repository-picker.js +8 -6
  102. package/dist/app/components/secrets/session-secrets-panel.js +4 -3
  103. package/dist/app/components/secrets/vault-model.js +3 -2
  104. package/dist/app/components/session/agent-configuration-panel.js +25 -23
  105. package/dist/app/components/session/agent-configuration-panel.js.map +1 -1
  106. package/dist/app/components/session/artifact-link-boundary.js +3 -3
  107. package/dist/app/components/session/artifact-session-page.js +11 -9
  108. package/dist/app/components/session/banners.js +8 -8
  109. package/dist/app/components/session/codex-usage-notice.js +5 -3
  110. package/dist/app/components/session/console-new-conversation.js +42 -40
  111. package/dist/app/components/session/context-text-reader.js +3 -2
  112. package/dist/app/components/session/descendant-requests.js +39 -37
  113. package/dist/app/components/session/descendant-requests.js.map +1 -1
  114. package/dist/app/components/session/editable-artifacts-workspace.js +36 -34
  115. package/dist/app/components/session/editable-artifacts-workspace.js.map +1 -1
  116. package/dist/app/components/session/failed-session-banner.js +13 -11
  117. package/dist/app/components/session/failed-session-banner.js.map +1 -1
  118. package/dist/app/components/session/failure-recovery-boundary.js +3 -3
  119. package/dist/app/components/session/human-input-delegation-record.js +2 -2
  120. package/dist/app/components/session/human-input.js +33 -31
  121. package/dist/app/components/session/inspector.js +57 -55
  122. package/dist/app/components/session/inspector.js.map +1 -1
  123. package/dist/app/components/session/message-actions.js +5 -4
  124. package/dist/app/components/session/message-actions.js.map +1 -1
  125. package/dist/app/components/session/message-resource-attachments.js +12 -11
  126. package/dist/app/components/session/message-resource-attachments.js.map +1 -1
  127. package/dist/app/components/session/model-context-inspector.js +6 -4
  128. package/dist/app/components/session/model-recovery-notice.js +3 -3
  129. package/dist/app/components/session/new-session-settings-menu.js +11 -9
  130. package/dist/app/components/session/new-session-setup-strip.js +18 -18
  131. package/dist/app/components/session/sandbox-recovery-actions.js +3 -3
  132. package/dist/app/components/session/sandbox-switcher.js +10 -9
  133. package/dist/app/components/session/sandbox-workspace.js +47 -46
  134. package/dist/app/components/session/search-markdown-highlight.js +7 -7
  135. package/dist/app/components/session/search-results-view.js +8 -8
  136. package/dist/app/components/session/session-admin-access.js +13 -11
  137. package/dist/app/components/session/session-admission-notice.js +7 -5
  138. package/dist/app/components/session/session-avatar-picker.js +22 -20
  139. package/dist/app/components/session/session-avatar.js +16 -16
  140. package/dist/app/components/session/session-machine-access-notice.js +7 -5
  141. package/dist/app/components/session/session-profile-dialog.js +29 -27
  142. package/dist/app/components/session/session-profile-editor.js +30 -28
  143. package/dist/app/components/session/session-retention.js +10 -8
  144. package/dist/app/components/session/session-search-dialog.js +10 -10
  145. package/dist/app/components/session/session-skill-reviews.js +2 -1
  146. package/dist/app/components/session/session-skill-reviews.js.map +1 -1
  147. package/dist/app/components/session/session-tenancy-control.js +13 -11
  148. package/dist/app/components/session/session-tenancy-control.js.map +1 -1
  149. package/dist/app/components/session/session-unattended-setting.js +7 -5
  150. package/dist/app/components/session/session-usage-limit-section.js +11 -9
  151. package/dist/app/components/session/share-chat-dialog.js +9 -7
  152. package/dist/app/components/session/site-origin-link.js +3 -3
  153. package/dist/app/components/session/subagents.js +8 -8
  154. package/dist/app/components/session/subscription-account-indicator.js +6 -6
  155. package/dist/app/components/session-connectors-menu-body.js +4 -3
  156. package/dist/app/components/session-connectors-menu-body.js.map +1 -1
  157. package/dist/app/components/settings/row-select.js +7 -5
  158. package/dist/app/components/toaster.js +3 -2
  159. package/dist/app/components/transcription-settings.js +11 -9
  160. package/dist/app/components/ui/destructive-confirm.js +11 -9
  161. package/dist/app/components/usage/usage-entry.js +5 -5
  162. package/dist/app/components/window-bar.js +16 -14
  163. package/dist/app/components/workspace-composer-plus.js +22 -21
  164. package/dist/app/components/workspace-reach.js +6 -4
  165. package/dist/app/components/workspace-tenant-boundary.js +5 -4
  166. package/dist/app/embed/memory-navigation.js +3 -3
  167. package/dist/app/embed/session-app.js +211 -209
  168. package/dist/app/lib/actions/actions-provider.js +15 -13
  169. package/dist/app/lib/agent-capabilities.js +3 -3
  170. package/dist/app/lib/app-surfaces.js +7 -6
  171. package/dist/app/lib/archive-session.d.ts +9 -4
  172. package/dist/app/lib/archive-session.js +4 -2
  173. package/dist/app/lib/bot-templates.js +3 -2
  174. package/dist/app/lib/capabilities.js +3 -2
  175. package/dist/app/lib/codex-usage-query.js +2 -2
  176. package/dist/app/lib/composer-connectors.js +17 -16
  177. package/dist/app/lib/console-site.js +2 -2
  178. package/dist/app/lib/console-text.js +2 -2
  179. package/dist/app/lib/events.js +9 -9
  180. package/dist/app/lib/failed-session-copy.js +3 -3
  181. package/dist/app/lib/inbox.js +4 -2
  182. package/dist/app/lib/model-access-onboarding.js +3 -3
  183. package/dist/app/lib/move-chat-to-machine.js +3 -3
  184. package/dist/app/lib/navigation.js +2 -2
  185. package/dist/app/lib/session-branch-cache.js +6 -6
  186. package/dist/app/lib/session-create.js +4 -4
  187. package/dist/app/lib/session-group-pagination.js +6 -6
  188. package/dist/app/lib/session-hover-facts.js +13 -11
  189. package/dist/app/lib/session-model.js +2 -2
  190. package/dist/app/lib/session-rail.js +3 -3
  191. package/dist/app/lib/session-rename.js +3 -3
  192. package/dist/app/lib/session-restart-operation-controller.js +4 -3
  193. package/dist/app/lib/session-tenancy.js +3 -2
  194. package/dist/app/lib/session-usage-limit.js +3 -2
  195. package/dist/app/lib/sessions-group.js +5 -5
  196. package/dist/app/lib/site-publishing.js +3 -2
  197. package/dist/app/lib/site-tool-consent-dialog.js +9 -7
  198. package/dist/app/lib/site-tool-consent-dialog.js.map +1 -1
  199. package/dist/app/lib/site-tool-consent.js +1 -1
  200. package/dist/app/lib/subscription-plans.js +3 -2
  201. package/dist/app/lib/toast.js +2 -1
  202. package/dist/app/lib/turn-failure-analytics.js +4 -4
  203. package/dist/app/lib/use-duplicate-site.js +6 -5
  204. package/dist/app/lib/use-follow-up-repositories.js +6 -5
  205. package/dist/app/lib/use-workspace-integrations.js +4 -3
  206. package/dist/app/lib/use-workspace-machines.js +4 -4
  207. package/dist/app/lib/use-workspace-model-catalog.js +5 -4
  208. package/dist/app/lib/use-workspace-rigs.js +2 -2
  209. package/dist/app/lib/workspace-navigation-preference.js +4 -4
  210. package/dist/app/lib/workspace-scope-context.js +3 -3
  211. package/dist/app/routes/artifacts.js +67 -66
  212. package/dist/app/routes/artifacts.js.map +1 -1
  213. package/dist/app/routes/retained-artifact.js +42 -40
  214. package/dist/app/routes/retained-artifact.js.map +1 -1
  215. package/dist/app/routes/session-unavailable.js +8 -7
  216. package/dist/app/routes/session.js +119 -117
  217. package/dist/app/routes/sessions-index-hydration.js +5 -5
  218. package/dist/app/routes/sessions-index.js +104 -102
  219. package/dist/app/routes/site-view.js +67 -65
  220. package/dist/app/routes/site-view.js.map +1 -1
  221. package/dist/artifacts-document.js +4 -4
  222. package/dist/artifacts-presentation.js +4 -4
  223. package/dist/artifacts-spreadsheet.js +4 -4
  224. package/dist/artifacts.js +10 -10
  225. package/dist/automations.js +17 -15
  226. package/dist/automations.js.map +1 -1
  227. package/dist/browser-viewer-TC27OCIP.js +23 -0
  228. package/dist/chat-interactive-block-RWPQBHVS.js +18 -0
  229. package/dist/chunk-2BDT3UZQ.js +229 -0
  230. package/dist/chunk-2CLNIEK4.js +373 -0
  231. package/dist/chunk-2FSBSCZJ.js +451 -0
  232. package/dist/chunk-2I7HDP53.js +199 -0
  233. package/dist/chunk-2INLDVK3.js +15 -0
  234. package/dist/chunk-2KALVELR.js +126 -0
  235. package/dist/chunk-2M3J7ZWQ.js +418 -0
  236. package/dist/chunk-2OP6WLGV.js +708 -0
  237. package/dist/chunk-2RG7NIAS.js +2936 -0
  238. package/dist/chunk-2STUPWEL.js +135 -0
  239. package/dist/chunk-2YUOVM3G.js +271 -0
  240. package/dist/chunk-2Z3NQNTM.js +3670 -0
  241. package/dist/chunk-3CPWWGNK.js +920 -0
  242. package/dist/chunk-3ED2U6XE.js +37 -0
  243. package/dist/chunk-3GZA4BUW.js +216 -0
  244. package/dist/chunk-3IK6UYO6.js +1022 -0
  245. package/dist/chunk-3PZ7JZI2.js +431 -0
  246. package/dist/chunk-4DVJ6ONS.js +50 -0
  247. package/dist/chunk-4DVNUCRR.js +2386 -0
  248. package/dist/chunk-4DVNUCRR.js.map +1 -0
  249. package/dist/chunk-4E3ZJRTZ.js +41 -0
  250. package/dist/chunk-4SAWSRAA.js +141 -0
  251. package/dist/chunk-53AGXXZM.js +307 -0
  252. package/dist/chunk-54YW6SZZ.js +818 -0
  253. package/dist/chunk-57AZS3IE.js +2317 -0
  254. package/dist/chunk-5CPEEAFD.js +143 -0
  255. package/dist/chunk-5EWSRZ2Y.js +340 -0
  256. package/dist/chunk-5IE76VCY.js +387 -0
  257. package/dist/chunk-5NWEKLDZ.js +170 -0
  258. package/dist/chunk-5O2FCCHZ.js +198 -0
  259. package/dist/chunk-5QAY6K77.js +399 -0
  260. package/dist/chunk-5YKW2K6I.js +625 -0
  261. package/dist/chunk-5YKW2K6I.js.map +1 -0
  262. package/dist/chunk-6BCXNDEI.js +4116 -0
  263. package/dist/chunk-6BCXNDEI.js.map +1 -0
  264. package/dist/chunk-6DK6Z4UN.js +2599 -0
  265. package/dist/chunk-6DVCC7QS.js +702 -0
  266. package/dist/chunk-6JHU2UBS.js +2058 -0
  267. package/dist/chunk-6PZ7OBYU.js +490 -0
  268. package/dist/chunk-6WD2INST.js +539 -0
  269. package/dist/chunk-6WD2INST.js.map +1 -0
  270. package/dist/chunk-6WGRDRMA.js +163 -0
  271. package/dist/chunk-77WAKEAH.js +186 -0
  272. package/dist/chunk-7T2ZE3VT.js +5558 -0
  273. package/dist/chunk-7T2ZE3VT.js.map +1 -0
  274. package/dist/chunk-7TDO3CUM.js +393 -0
  275. package/dist/chunk-7TIX2UAR.js +247 -0
  276. package/dist/chunk-7V5REBCP.js +148 -0
  277. package/dist/chunk-7VMZGLYI.js +339 -0
  278. package/dist/chunk-7W37NS3I.js +236 -0
  279. package/dist/chunk-7X6SDK2C.js +111 -0
  280. package/dist/chunk-7ZNUHRP5.js +95 -0
  281. package/dist/chunk-A36PZALD.js +84 -0
  282. package/dist/chunk-AUI6VA63.js +107 -0
  283. package/dist/chunk-AW2MQB37.js +24 -0
  284. package/dist/chunk-AWKES45Y.js +198 -0
  285. package/dist/chunk-AXHZYXUV.js +132 -0
  286. package/dist/chunk-BHNSJVBC.js +129 -0
  287. package/dist/chunk-BJEJFISW.js +50 -0
  288. package/dist/chunk-BJFH6JI5.js +422 -0
  289. package/dist/chunk-BMICEQZQ.js +960 -0
  290. package/dist/chunk-BTLBYBLU.js +29 -0
  291. package/dist/chunk-BXBDYNRP.js +89 -0
  292. package/dist/chunk-C372BFOV.js +357 -0
  293. package/dist/chunk-C43KRXGA.js +234 -0
  294. package/dist/chunk-C43KRXGA.js.map +1 -0
  295. package/dist/chunk-CMKGILJK.js +4824 -0
  296. package/dist/chunk-CRAOSVHC.js +50 -0
  297. package/dist/chunk-CRU35QQH.js +281 -0
  298. package/dist/chunk-CUIWCGMA.js +172 -0
  299. package/dist/chunk-D5TWNFFE.js +38 -0
  300. package/dist/chunk-DF5EAHDN.js +4461 -0
  301. package/dist/chunk-DJAXC5OK.js +56 -0
  302. package/dist/chunk-DXBYWSL5.js +3550 -0
  303. package/dist/chunk-DXR5PDFP.js +84 -0
  304. package/dist/chunk-DZWARC4M.js +267 -0
  305. package/dist/chunk-DZXEDSQI.js +106 -0
  306. package/dist/chunk-E7XERZWC.js +48 -0
  307. package/dist/chunk-ECJBYNLJ.js +79 -0
  308. package/dist/chunk-EDI6SJ2N.js +43 -0
  309. package/dist/chunk-EWSOC6WF.js +114 -0
  310. package/dist/chunk-F2OPHAUN.js +103 -0
  311. package/dist/chunk-F4ISQGGM.js +81 -0
  312. package/dist/chunk-FO4LYKJL.js +197 -0
  313. package/dist/chunk-FPXASDG5.js +73 -0
  314. package/dist/chunk-FSOQDUCG.js +117 -0
  315. package/dist/chunk-FSOQDUCG.js.map +1 -0
  316. package/dist/chunk-FVXBNBHO.js +157 -0
  317. package/dist/chunk-FYWT2O76.js +34 -0
  318. package/dist/chunk-FYWT2O76.js.map +1 -0
  319. package/dist/chunk-FZC5N55X.js +981 -0
  320. package/dist/chunk-GAVYGBFI.js +99 -0
  321. package/dist/chunk-GFIMOUDT.js +846 -0
  322. package/dist/chunk-GFIMOUDT.js.map +1 -0
  323. package/dist/chunk-GKVJIDHF.js +33 -0
  324. package/dist/chunk-GVN5SZLX.js +212 -0
  325. package/dist/chunk-H3T7IWNA.js +134 -0
  326. package/dist/chunk-HAX4LCR5.js +261 -0
  327. package/dist/chunk-HC4JFZVU.js +121 -0
  328. package/dist/chunk-HEFPPMBQ.js +581 -0
  329. package/dist/chunk-HGKTHF2U.js +1356 -0
  330. package/dist/chunk-HGKTHF2U.js.map +1 -0
  331. package/dist/chunk-HNLR7Q4Z.js +83 -0
  332. package/dist/chunk-HSOXMJOT.js +12 -0
  333. package/dist/chunk-I4MRDSUF.js +281 -0
  334. package/dist/chunk-I4QEJ62Y.js +202 -0
  335. package/dist/chunk-I5B5L6Q4.js +56 -0
  336. package/dist/chunk-I5QZJODL.js +264 -0
  337. package/dist/chunk-I7ITSXSJ.js +603 -0
  338. package/dist/chunk-I7XIZRFD.js +390 -0
  339. package/dist/chunk-IDANQPRH.js +82 -0
  340. package/dist/chunk-IFB3WJ36.js +212 -0
  341. package/dist/chunk-IHTAKKTK.js +264 -0
  342. package/dist/chunk-IKXNLWAL.js +205 -0
  343. package/dist/chunk-IKXNLWAL.js.map +1 -0
  344. package/dist/chunk-ILDXWY37.js +173 -0
  345. package/dist/chunk-IMDQUHBJ.js +570 -0
  346. package/dist/chunk-IMZCQBOT.js +119 -0
  347. package/dist/chunk-IXPTECSC.js +403 -0
  348. package/dist/chunk-J255A3N5.js +71 -0
  349. package/dist/chunk-J5F5HPPW.js +141 -0
  350. package/dist/chunk-JDTGRRNU.js +5045 -0
  351. package/dist/chunk-JDTGRRNU.js.map +1 -0
  352. package/dist/chunk-JEA3QDX7.js +2469 -0
  353. package/dist/chunk-JEUPAVYY.js +156 -0
  354. package/dist/chunk-JKHKLL5W.js +194 -0
  355. package/dist/chunk-JQL7ZH6C.js +650 -0
  356. package/dist/chunk-JWB44UGJ.js +57 -0
  357. package/dist/chunk-JZ4NLCAP.js +333 -0
  358. package/dist/chunk-K2A5PXQ5.js +412 -0
  359. package/dist/chunk-K56XV3C3.js +623 -0
  360. package/dist/chunk-K6GAXXVA.js +23 -0
  361. package/dist/chunk-KCBMFSMS.js +199 -0
  362. package/dist/chunk-KF2FV3ZJ.js +268 -0
  363. package/dist/chunk-KJD65EJP.js +278 -0
  364. package/dist/chunk-KLEUWIMZ.js +386 -0
  365. package/dist/chunk-KODELWYT.js +309 -0
  366. package/dist/chunk-KRDR5RJD.js +83 -0
  367. package/dist/chunk-KUDGXAF7.js +914 -0
  368. package/dist/chunk-KY2R73CG.js +171 -0
  369. package/dist/chunk-KY2R73CG.js.map +1 -0
  370. package/dist/chunk-KYS77RPN.js +85 -0
  371. package/dist/chunk-L7YTNTIK.js +368 -0
  372. package/dist/chunk-LHPNABDH.js +686 -0
  373. package/dist/chunk-MFROMEKA.js +401 -0
  374. package/dist/chunk-MIHN76LX.js +2656 -0
  375. package/dist/chunk-MIYFS2XN.js +42 -0
  376. package/dist/chunk-MJUCFQMS.js +65 -0
  377. package/dist/chunk-MM4FNWI4.js +3064 -0
  378. package/dist/chunk-MNZG4OHU.js +790 -0
  379. package/dist/chunk-MVW6HNPI.js +250 -0
  380. package/dist/chunk-MVW6HNPI.js.map +1 -0
  381. package/dist/chunk-N6AACDUW.js +200 -0
  382. package/dist/chunk-NC55IFN3.js +781 -0
  383. package/dist/chunk-NC7PVOEK.js +98 -0
  384. package/dist/chunk-NCYMNCJO.js +70 -0
  385. package/dist/chunk-ND2BXV3P.js +259 -0
  386. package/dist/chunk-NDBTFUO6.js +272 -0
  387. package/dist/chunk-NDQJZ7HF.js +206 -0
  388. package/dist/chunk-NGJJJPZZ.js +162 -0
  389. package/dist/chunk-NJTSNNE7.js +251 -0
  390. package/dist/chunk-NPGISCU6.js +4159 -0
  391. package/dist/chunk-NPGISCU6.js.map +1 -0
  392. package/dist/chunk-NRTE7DNV.js +1270 -0
  393. package/dist/chunk-NULUNM7H.js +290 -0
  394. package/dist/chunk-NUNZS36W.js +227 -0
  395. package/dist/chunk-NW53H5RW.js +2424 -0
  396. package/dist/chunk-NXCMHIKI.js +263 -0
  397. package/dist/chunk-O3LKCBP5.js +159 -0
  398. package/dist/chunk-O4EA4F3W.js +103 -0
  399. package/dist/chunk-O4EA4F3W.js.map +1 -0
  400. package/dist/chunk-O4OOG3D6.js +116 -0
  401. package/dist/chunk-O4OOG3D6.js.map +1 -0
  402. package/dist/chunk-O6N4ABCA.js +376 -0
  403. package/dist/chunk-O732GAFC.js +112 -0
  404. package/dist/chunk-OF4TIKYC.js +690 -0
  405. package/dist/chunk-OMPVOMPP.js +70 -0
  406. package/dist/chunk-OPJJSKUK.js +118 -0
  407. package/dist/chunk-OPWCMA4D.js +196 -0
  408. package/dist/chunk-ORJPS5VN.js +1193 -0
  409. package/dist/chunk-OSY5K7L7.js +187 -0
  410. package/dist/chunk-OV6QJRT4.js +45 -0
  411. package/dist/chunk-OVKYVZMW.js +108 -0
  412. package/dist/chunk-OZCBM3UC.js +171 -0
  413. package/dist/chunk-P3A2EINJ.js +61 -0
  414. package/dist/chunk-PTAG4PDC.js +27 -0
  415. package/dist/chunk-PTF5B7TJ.js +298 -0
  416. package/dist/chunk-Q3DPEYX4.js +848 -0
  417. package/dist/chunk-Q6CGOPJD.js +215 -0
  418. package/dist/chunk-Q6CGOPJD.js.map +1 -0
  419. package/dist/chunk-QB2KMIDP.js +100 -0
  420. package/dist/chunk-QCSJ4CWE.js +1067 -0
  421. package/dist/chunk-QIOQ2NPQ.js +414 -0
  422. package/dist/chunk-QK5EFEUT.js +353 -0
  423. package/dist/chunk-QPQBLYQJ.js +41 -0
  424. package/dist/chunk-QPSGCC5D.js +184 -0
  425. package/dist/chunk-QZAAUQRN.js +474 -0
  426. package/dist/chunk-QZM6YDJW.js +489 -0
  427. package/dist/chunk-QZM6YDJW.js.map +1 -0
  428. package/dist/chunk-RGBI63KJ.js +188 -0
  429. package/dist/chunk-RLBKLAEY.js +138 -0
  430. package/dist/chunk-RMFKVOM7.js +304 -0
  431. package/dist/chunk-ROKQU7WG.js +258 -0
  432. package/dist/chunk-RPVREAU7.js +251 -0
  433. package/dist/chunk-RQKLF42C.js +723 -0
  434. package/dist/chunk-SC6RRD2D.js +38 -0
  435. package/dist/chunk-SC6RRD2D.js.map +1 -0
  436. package/dist/chunk-SEO7TICN.js +94 -0
  437. package/dist/chunk-SHHJCL7X.js +432 -0
  438. package/dist/chunk-SIRLACNZ.js +114 -0
  439. package/dist/chunk-SKPHMYAA.js +237 -0
  440. package/dist/chunk-SODC7T6L.js +1583 -0
  441. package/dist/chunk-SQJIKMN3.js +366 -0
  442. package/dist/chunk-SVINDKVW.js +26 -0
  443. package/dist/chunk-SYCDHPZF.js +335 -0
  444. package/dist/chunk-T2QX3FDP.js +133 -0
  445. package/dist/chunk-T3OWFVMS.js +1187 -0
  446. package/dist/chunk-T6XI5FLY.js +61 -0
  447. package/dist/chunk-T7OXJZCX.js +62 -0
  448. package/dist/chunk-TAT5USZN.js +353 -0
  449. package/dist/chunk-TPQTRNER.js +172 -0
  450. package/dist/chunk-TUIN4MB7.js +266 -0
  451. package/dist/chunk-TX3VECZU.js +71 -0
  452. package/dist/chunk-TXLIEOJX.js +9624 -0
  453. package/dist/chunk-U3DN4HEY.js +27 -0
  454. package/dist/chunk-U7XM7CB4.js +191 -0
  455. package/dist/chunk-UJK53QFL.js +140 -0
  456. package/dist/chunk-UMTXA2TH.js +319 -0
  457. package/dist/chunk-UPDSXFK5.js +199 -0
  458. package/dist/chunk-UTIAXH52.js +269 -0
  459. package/dist/chunk-UVN5TMHU.js +1184 -0
  460. package/dist/chunk-V4Z4B2E3.js +52 -0
  461. package/dist/chunk-V4Z4B2E3.js.map +1 -0
  462. package/dist/chunk-VGYXW3VG.js +246 -0
  463. package/dist/chunk-VS7AHPCZ.js +255 -0
  464. package/dist/chunk-VTTAJOQ7.js +121 -0
  465. package/dist/chunk-VWPOLUAO.js +99 -0
  466. package/dist/chunk-X3MWB2QU.js +3851 -0
  467. package/dist/chunk-X6KAJI3V.js +211 -0
  468. package/dist/chunk-XBLRHV5R.js +50 -0
  469. package/dist/chunk-XDFP2LMW.js +605 -0
  470. package/dist/chunk-XEQMZB3C.js +525 -0
  471. package/dist/chunk-XEYLT5VA.js +223 -0
  472. package/dist/chunk-XHIQ5I6N.js +918 -0
  473. package/dist/chunk-XLH7QY2R.js +378 -0
  474. package/dist/chunk-XWFAMUZQ.js +113 -0
  475. package/dist/chunk-Y4BB2KS2.js +294 -0
  476. package/dist/chunk-Y4BB2KS2.js.map +1 -0
  477. package/dist/chunk-Y4OBB2VN.js +84 -0
  478. package/dist/chunk-YCVD6CI3.js +234 -0
  479. package/dist/chunk-YENLNISG.js +270 -0
  480. package/dist/chunk-YIRVLKAX.js +351 -0
  481. package/dist/chunk-YL73CVNK.js +390 -0
  482. package/dist/chunk-YLS6QE5G.js +288 -0
  483. package/dist/chunk-YNF2OC54.js +366 -0
  484. package/dist/chunk-YNF2OC54.js.map +1 -0
  485. package/dist/chunk-YPWU5KPE.js +147 -0
  486. package/dist/chunk-YQXTDZSU.js +2984 -0
  487. package/dist/chunk-YSJEAAOL.js +178 -0
  488. package/dist/chunk-YWIFM7D7.js +499 -0
  489. package/dist/chunk-YWVI6ZMK.js +103 -0
  490. package/dist/chunk-Z4FMAFNH.js +847 -0
  491. package/dist/chunk-Z654FWNU.js +136 -0
  492. package/dist/chunk-Z7Y523PS.js +130 -0
  493. package/dist/chunk-ZD67RM6G.js +60 -0
  494. package/dist/chunk-ZEG4VPBL.js +187 -0
  495. package/dist/chunk-ZHDFQITM.js +283 -0
  496. package/dist/chunk-ZHDFQITM.js.map +1 -0
  497. package/dist/chunk-ZLYCOBHW.js +75 -0
  498. package/dist/chunk-ZNJ5MTXV.js +89 -0
  499. package/dist/chunk-ZSGY3H53.js +155 -0
  500. package/dist/chunk-ZTPXACWB.js +1788 -0
  501. package/dist/chunk-ZUA3JMI6.js +107 -0
  502. package/dist/chunk-ZYAZUPPV.js +559 -0
  503. package/dist/composer.js +8 -8
  504. package/dist/computer-viewer-TDDO25AV.js +21 -0
  505. package/dist/connect.js +12 -12
  506. package/dist/desktop-dictation.js +12 -10
  507. package/dist/desktop-dictation.js.map +1 -1
  508. package/dist/desktop.js +2 -2
  509. package/dist/editor.js +2 -2
  510. package/dist/embedded-new-voice-2G3VLPVQ.js +24 -0
  511. package/dist/embedded-voice-T5IWOWGD.js +24 -0
  512. package/dist/fleet-decision-row-WM64KXP3.js +361 -0
  513. package/dist/in-chat-connect-model.js +5 -5
  514. package/dist/index.js +51 -51
  515. package/dist/interaction.js +5 -5
  516. package/dist/machines.js +3 -3
  517. package/dist/meetings-recorder.js +1 -1
  518. package/dist/meetings.js +40 -32
  519. package/dist/meetings.js.map +1 -1
  520. package/dist/messages/en.d.ts +3 -0
  521. package/dist/messages.js +1 -1
  522. package/dist/model-policy-picker-menu-SMC6J6QN.js +22 -0
  523. package/dist/payment-page-card-G4U63KUV.js +223 -0
  524. package/dist/platform-activity-row-BUZGZAKZ.js +128 -0
  525. package/dist/queue-surface-implementation-4KUZ4PJV.js +908 -0
  526. package/dist/realtime.js +4 -4
  527. package/dist/recorder-host-WF2RRR56.js +69 -0
  528. package/dist/recorder-host-WF2RRR56.js.map +1 -0
  529. package/dist/recordings.js +3 -3
  530. package/dist/sandbox-files-ESDMOFSD.js +27 -0
  531. package/dist/session-app.js +211 -209
  532. package/dist/session-connect-cards-Q53KMMYY.js +25 -0
  533. package/dist/session-list-model.js +2 -2
  534. package/dist/session-realtime-CF3I35WJ.js +30 -0
  535. package/dist/session-realtime.js +2 -2
  536. package/dist/session-ui.js +33 -31
  537. package/dist/session.js +5 -5
  538. package/dist/sites.js +2 -2
  539. package/dist/terminal.js +2 -2
  540. package/dist/this-computer.js +3 -3
  541. package/dist/timeline-annotation-markers-CJK4RYZ4.js +157 -0
  542. package/dist/timeline-annotation-selection-67GF5H26.js +208 -0
  543. package/dist/timeline-annotations-dialog-ONJPQDJQ.js +283 -0
  544. package/dist/ui/access-list.js +11 -9
  545. package/dist/ui/access-list.js.map +1 -1
  546. package/dist/ui/api-error.d.ts +6 -3
  547. package/dist/ui/api-error.js +2 -1
  548. package/dist/ui/cadence-picker.js +6 -4
  549. package/dist/ui/choice-cards.js +5 -3
  550. package/dist/ui/confirm-dialog.js +2 -2
  551. package/dist/ui/copy-field.js +5 -3
  552. package/dist/ui/detail-page.js +2 -2
  553. package/dist/ui/detail-sheet.js +2 -2
  554. package/dist/ui/diff-view.js +4 -3
  555. package/dist/ui/disclosure.js +3 -3
  556. package/dist/ui/email-chips-input.js +5 -3
  557. package/dist/ui/error-message.js +2 -1
  558. package/dist/ui/error-reference.d.ts +15 -0
  559. package/dist/ui/error-text.d.ts +10 -0
  560. package/dist/ui/error-text.js +9 -0
  561. package/dist/ui/error-text.js.map +1 -0
  562. package/dist/ui/field.js +4 -2
  563. package/dist/ui/flush-form-page.js +8 -6
  564. package/dist/ui/form-dialog.js +7 -5
  565. package/dist/ui/list-row.js +3 -3
  566. package/dist/ui/load-failure.js +3 -2
  567. package/dist/ui/load-failure.js.map +1 -1
  568. package/dist/ui/notice.js +3 -1
  569. package/dist/ui/relative-time.js +2 -2
  570. package/dist/ui/revision-history.js +9 -7
  571. package/dist/ui/revision-history.js.map +1 -1
  572. package/dist/ui/role-select.js +10 -8
  573. package/dist/ui/segmented-control.js +4 -2
  574. package/dist/ui/select-menu.js +5 -3
  575. package/dist/ui/setting-row.js +3 -1
  576. package/dist/ui/switch.js +4 -2
  577. package/dist/ui/usage-meter.js +3 -3
  578. package/dist/ui/word-list-row.js +4 -2
  579. package/dist/usage.js +2 -2
  580. package/dist/workbench.js +4 -4
  581. package/package.json +5 -6
  582. package/src/app/app-state.tsx +126 -14
  583. package/src/app/components/artifacts/site-data.tsx +2 -2
  584. package/src/app/components/artifacts/site-settings.tsx +2 -2
  585. package/src/app/components/rail/session-list.tsx +7 -8
  586. package/src/app/components/rail/session-shell.tsx +3 -3
  587. package/src/app/components/repository-picker.tsx +8 -1
  588. package/src/app/components/session/model-context-inspector.tsx +2 -1
  589. package/src/app/components/session/session-admin-access.tsx +2 -2
  590. package/src/app/lib/actions/chat-operations.ts +4 -4
  591. package/src/app/lib/archive-session.test.tsx +265 -2
  592. package/src/app/lib/archive-session.tsx +175 -9
  593. package/src/app/lib/copy-link.ts +2 -2
  594. package/src/app/lib/inbox.tsx +2 -2
  595. package/src/app/lib/session-failure-toasts.ts +3 -2
  596. package/src/app/lib/toast.test.tsx +215 -0
  597. package/src/app/lib/toast.tsx +67 -2
  598. package/src/app/personal-github-reconnect.test.tsx +356 -0
  599. package/src/app/routes/artifacts.tsx +1 -2
  600. package/src/components/tool-action-review.tsx +14 -1
  601. package/src/meetings/delete-meeting-dialog.tsx +2 -1
  602. package/src/meetings/meeting-ask.tsx +2 -1
  603. package/src/meetings/meeting-detail-page.tsx +2 -1
  604. package/src/meetings/meeting-notes.tsx +2 -1
  605. package/src/meetings/meeting-settings.tsx +4 -1
  606. package/src/meetings/meeting-transcript.tsx +4 -1
  607. package/src/meetings/recorder-context.tsx +10 -0
  608. package/src/meetings/recorder-host.test.tsx +60 -2
  609. package/src/meetings/recorder-host.tsx +16 -3
  610. package/src/meetings/recorder-panel.tsx +2 -1
  611. package/src/meetings/recorder-workspace.test.tsx +26 -1
  612. package/src/messages/en.ts +6 -0
  613. package/src/ui/api-error.test.ts +29 -5
  614. package/src/ui/api-error.tsx +10 -4
  615. package/src/ui/error-message.tsx +8 -0
  616. package/src/ui/error-reference.test.ts +54 -0
  617. package/src/ui/error-reference.ts +51 -0
  618. package/src/ui/error-text.test.tsx +66 -0
  619. package/src/ui/error-text.tsx +49 -0
  620. package/src/ui/field.tsx +4 -1
  621. package/src/ui/notice.tsx +7 -2
  622. package/src/ui/setting-row.tsx +4 -1
  623. package/styles/app.css +12 -0
  624. package/styles/compiled.css +9 -0
  625. package/dist/browser-viewer-NOP5EAUO.js +0 -23
  626. package/dist/chat-interactive-block-G7O44JHR.js +0 -18
  627. package/dist/chunk-26RWVLRD.js +0 -135
  628. package/dist/chunk-2AHTY7OT.js +0 -247
  629. package/dist/chunk-2GDNWKSC.js +0 -3670
  630. package/dist/chunk-2JENKGCE.js +0 -339
  631. package/dist/chunk-2KYQC4T5.js +0 -155
  632. package/dist/chunk-2RREGDQH.js +0 -708
  633. package/dist/chunk-2T7DX6KR.js +0 -353
  634. package/dist/chunk-2VB2O4FQ.js +0 -920
  635. package/dist/chunk-2VTTKH23.js +0 -94
  636. package/dist/chunk-2XNG2KNT.js +0 -172
  637. package/dist/chunk-2YC6JQRO.js +0 -399
  638. package/dist/chunk-2ZVRJRXC.js +0 -27
  639. package/dist/chunk-35737UT4.js +0 -162
  640. package/dist/chunk-366XZ4PM.js +0 -41
  641. package/dist/chunk-36MIDGAH.js +0 -199
  642. package/dist/chunk-3FD76LXM.js +0 -212
  643. package/dist/chunk-3OVIXY4O.js +0 -213
  644. package/dist/chunk-3OVIXY4O.js.map +0 -1
  645. package/dist/chunk-3QNRBEYH.js +0 -432
  646. package/dist/chunk-3QX55WLC.js +0 -15
  647. package/dist/chunk-3USJPT2S.js +0 -1022
  648. package/dist/chunk-42CMQ5VR.js +0 -251
  649. package/dist/chunk-4LPOWQJY.js +0 -42
  650. package/dist/chunk-4NBTZRKT.js +0 -79
  651. package/dist/chunk-4OXI6HCV.js +0 -118
  652. package/dist/chunk-4SZZAFYQ.js +0 -2317
  653. package/dist/chunk-4TQL3WP2.js +0 -140
  654. package/dist/chunk-4Y6BK7IU.js +0 -196
  655. package/dist/chunk-4YD7YZC5.js +0 -373
  656. package/dist/chunk-5DTST3TP.js +0 -81
  657. package/dist/chunk-5FH5LQVS.js +0 -130
  658. package/dist/chunk-5KWMYPJV.js +0 -847
  659. package/dist/chunk-5MUJDC6C.js +0 -84
  660. package/dist/chunk-5QM2WPKV.js +0 -41
  661. package/dist/chunk-5WUN7XPD.js +0 -1184
  662. package/dist/chunk-64PO2WXU.js +0 -1067
  663. package/dist/chunk-6AHATAAY.js +0 -431
  664. package/dist/chunk-6ED2YWBT.js +0 -56
  665. package/dist/chunk-6GXVYAGR.js +0 -170
  666. package/dist/chunk-6H4SJBPE.js +0 -85
  667. package/dist/chunk-6MT3HHUB.js +0 -84
  668. package/dist/chunk-6UHCBH4G.js +0 -198
  669. package/dist/chunk-6WLX3NR3.js +0 -198
  670. package/dist/chunk-73NXYYWE.js +0 -112
  671. package/dist/chunk-76ERNKIZ.js +0 -603
  672. package/dist/chunk-776QZ573.js +0 -57
  673. package/dist/chunk-7BYWOFVH.js +0 -171
  674. package/dist/chunk-7O5CGGIQ.js +0 -108
  675. package/dist/chunk-7QOHRZ67.js +0 -251
  676. package/dist/chunk-7WIDB4PL.js +0 -2058
  677. package/dist/chunk-7WKP3DYJ.js +0 -37
  678. package/dist/chunk-7XOVTPDI.js +0 -227
  679. package/dist/chunk-AB5MBIXY.js +0 -281
  680. package/dist/chunk-ADNMXBCX.js +0 -1193
  681. package/dist/chunk-AFBJTUFK.js +0 -202
  682. package/dist/chunk-ALVRWCXE.js +0 -61
  683. package/dist/chunk-AOHU6O3M.js +0 -247
  684. package/dist/chunk-AOHU6O3M.js.map +0 -1
  685. package/dist/chunk-APW4T4SW.js +0 -270
  686. package/dist/chunk-AXBSYWKX.js +0 -2656
  687. package/dist/chunk-B2I5ZW35.js +0 -422
  688. package/dist/chunk-B3LMRTRF.js +0 -223
  689. package/dist/chunk-BE2XENG2.js +0 -292
  690. package/dist/chunk-BE2XENG2.js.map +0 -1
  691. package/dist/chunk-BF4SADKX.js +0 -29
  692. package/dist/chunk-BKP43KK4.js +0 -1788
  693. package/dist/chunk-BM3NEZ6X.js +0 -781
  694. package/dist/chunk-BT3BAGB5.js +0 -216
  695. package/dist/chunk-BTSYDIVJ.js +0 -357
  696. package/dist/chunk-BUBNGKWG.js +0 -70
  697. package/dist/chunk-BVUJV5WR.js +0 -126
  698. package/dist/chunk-BZO5ZMUP.js +0 -27
  699. package/dist/chunk-C3HUF3M2.js +0 -157
  700. package/dist/chunk-C5QCAOES.js +0 -264
  701. package/dist/chunk-CGK6ALQU.js +0 -159
  702. package/dist/chunk-CPYGO76Q.js +0 -335
  703. package/dist/chunk-CQH4FWYA.js +0 -490
  704. package/dist/chunk-CZP5QXNB.js +0 -234
  705. package/dist/chunk-D2TOWEYH.js +0 -266
  706. package/dist/chunk-D6L4GHRH.js +0 -340
  707. package/dist/chunk-DKT3N37I.js +0 -50
  708. package/dist/chunk-DMMJIFKA.js +0 -84
  709. package/dist/chunk-DO74DQC7.js +0 -26
  710. package/dist/chunk-DOFJZ2JU.js +0 -83
  711. package/dist/chunk-DSXVY5WZ.js +0 -119
  712. package/dist/chunk-E337C2VK.js +0 -82
  713. package/dist/chunk-E6NRSRBE.js +0 -114
  714. package/dist/chunk-E6SQKHAU.js +0 -114
  715. package/dist/chunk-E7UIVD7F.js +0 -236
  716. package/dist/chunk-EGBII4CP.js +0 -229
  717. package/dist/chunk-EILSAQVJ.js +0 -200
  718. package/dist/chunk-ELL6HSYR.js +0 -307
  719. package/dist/chunk-EUBGLFFR.js +0 -73
  720. package/dist/chunk-EW6RNWSH.js +0 -212
  721. package/dist/chunk-EYUT5Y6V.js +0 -2599
  722. package/dist/chunk-F7U3QPZ3.js +0 -304
  723. package/dist/chunk-FBTJKSTM.js +0 -1270
  724. package/dist/chunk-FC2FTSK3.js +0 -2424
  725. package/dist/chunk-FOGNA3BU.js +0 -148
  726. package/dist/chunk-FQFKHNC7.js +0 -650
  727. package/dist/chunk-FTCHM755.js +0 -50
  728. package/dist/chunk-FXSHP4JZ.js +0 -3550
  729. package/dist/chunk-G6ZZC543.js +0 -818
  730. package/dist/chunk-G7FU6PUA.js +0 -100
  731. package/dist/chunk-GA4YEAMX.js +0 -3851
  732. package/dist/chunk-GE33BGB7.js +0 -12
  733. package/dist/chunk-GQ67HSJY.js +0 -570
  734. package/dist/chunk-GXXZ3WAK.js +0 -106
  735. package/dist/chunk-H2TCRX3H.js +0 -237
  736. package/dist/chunk-HLL4PBO7.js +0 -60
  737. package/dist/chunk-HLOEPV5C.js +0 -259
  738. package/dist/chunk-HUAGBS4O.js +0 -56
  739. package/dist/chunk-I36GSRUJ.js +0 -211
  740. package/dist/chunk-I6VBHT7S.js +0 -261
  741. package/dist/chunk-ICNNNOXE.js +0 -333
  742. package/dist/chunk-ICX64J4U.js +0 -172
  743. package/dist/chunk-ID36Y46W.js +0 -5046
  744. package/dist/chunk-ID36Y46W.js.map +0 -1
  745. package/dist/chunk-IGVVXLKJ.js +0 -559
  746. package/dist/chunk-IKJLSBUI.js +0 -2984
  747. package/dist/chunk-IKMUFDVS.js +0 -50
  748. package/dist/chunk-IKUNOX7F.js +0 -255
  749. package/dist/chunk-ILKDYBON.js +0 -288
  750. package/dist/chunk-IVYJX3OY.js +0 -187
  751. package/dist/chunk-JCY4CMDH.js +0 -107
  752. package/dist/chunk-JJZPLGIP.js +0 -474
  753. package/dist/chunk-JW33RV4V.js +0 -143
  754. package/dist/chunk-JWPA6ZPZ.js +0 -351
  755. package/dist/chunk-JZ4QXS6D.js +0 -50
  756. package/dist/chunk-K42OUZQ3.js +0 -386
  757. package/dist/chunk-K5TOVX5A.js +0 -206
  758. package/dist/chunk-K63HGHZX.js +0 -99
  759. package/dist/chunk-K6R5T44I.js +0 -75
  760. package/dist/chunk-KHJ5PXFM.js +0 -914
  761. package/dist/chunk-KJZRQ55O.js +0 -2319
  762. package/dist/chunk-KJZRQ55O.js.map +0 -1
  763. package/dist/chunk-KKI55ZMW.js +0 -65
  764. package/dist/chunk-KRPLAAFP.js +0 -199
  765. package/dist/chunk-KVFEZDBO.js +0 -134
  766. package/dist/chunk-L4I665WK.js +0 -45
  767. package/dist/chunk-L4OF77LE.js +0 -110
  768. package/dist/chunk-L4OF77LE.js.map +0 -1
  769. package/dist/chunk-LA5T52RM.js +0 -70
  770. package/dist/chunk-LM2W5YAT.js +0 -401
  771. package/dist/chunk-LQ62ECE6.js +0 -390
  772. package/dist/chunk-LQDUHU3Y.js +0 -71
  773. package/dist/chunk-LRJIYTZW.js +0 -4157
  774. package/dist/chunk-LRJIYTZW.js.map +0 -1
  775. package/dist/chunk-LRN6GYAZ.js +0 -138
  776. package/dist/chunk-M4SDVTKJ.js +0 -790
  777. package/dist/chunk-MA6O7CM6.js +0 -99
  778. package/dist/chunk-MBIBB6GI.js +0 -197
  779. package/dist/chunk-MF3ZFB4H.js +0 -199
  780. package/dist/chunk-MJJGJMYJ.js +0 -98
  781. package/dist/chunk-MLJADQFI.js +0 -4824
  782. package/dist/chunk-MQG7RV3B.js +0 -62
  783. package/dist/chunk-MTTGSQA5.js +0 -186
  784. package/dist/chunk-MW7Y3T55.js +0 -525
  785. package/dist/chunk-MYUFMVCH.js +0 -121
  786. package/dist/chunk-N3OARGH2.js +0 -61
  787. package/dist/chunk-NB2HMRT2.js +0 -353
  788. package/dist/chunk-NFDFYWMV.js +0 -141
  789. package/dist/chunk-NWGNFN3N.js +0 -1187
  790. package/dist/chunk-NWJRPDIO.js +0 -840
  791. package/dist/chunk-NWJRPDIO.js.map +0 -1
  792. package/dist/chunk-NXWBBZJV.js +0 -267
  793. package/dist/chunk-NY2QWROL.js +0 -71
  794. package/dist/chunk-O2IOPP3R.js +0 -848
  795. package/dist/chunk-O2UWH5RG.js +0 -141
  796. package/dist/chunk-O5YWDLYF.js +0 -393
  797. package/dist/chunk-OBMCZO7E.js +0 -121
  798. package/dist/chunk-OD3DCCCB.js +0 -132
  799. package/dist/chunk-OMH7R6I3.js +0 -390
  800. package/dist/chunk-OSA5EQG5.js +0 -113
  801. package/dist/chunk-OSJ3MUTZ.js +0 -2936
  802. package/dist/chunk-OWAYJ2OV.js +0 -368
  803. package/dist/chunk-OYXBFSGK.js +0 -269
  804. package/dist/chunk-PC2EBA5G.js +0 -4116
  805. package/dist/chunk-PC2EBA5G.js.map +0 -1
  806. package/dist/chunk-PC2MVXIP.js +0 -363
  807. package/dist/chunk-PC2MVXIP.js.map +0 -1
  808. package/dist/chunk-PENGLDR5.js +0 -309
  809. package/dist/chunk-PSMAWRPL.js +0 -191
  810. package/dist/chunk-PW4IMTYR.js +0 -702
  811. package/dist/chunk-PW54V7T5.js +0 -387
  812. package/dist/chunk-Q2EXYSMO.js +0 -24
  813. package/dist/chunk-Q2XJK5I4.js +0 -51
  814. package/dist/chunk-Q2XJK5I4.js.map +0 -1
  815. package/dist/chunk-Q4EFRI6X.js +0 -258
  816. package/dist/chunk-Q52CXW6C.js +0 -48
  817. package/dist/chunk-Q6XQ2R37.js +0 -184
  818. package/dist/chunk-QAJ53XBW.js +0 -23
  819. package/dist/chunk-QDTKECT4.js +0 -129
  820. package/dist/chunk-QE3ZFGI3.js +0 -43
  821. package/dist/chunk-QHHSUR2Y.js +0 -298
  822. package/dist/chunk-QHNVNR7B.js +0 -173
  823. package/dist/chunk-QIK2Q6N5.js +0 -376
  824. package/dist/chunk-QWL4L366.js +0 -38
  825. package/dist/chunk-R3J2PTVQ.js +0 -690
  826. package/dist/chunk-RBRX5ZS3.js +0 -319
  827. package/dist/chunk-REX6JIC7.js +0 -33
  828. package/dist/chunk-RGZ7EEC3.js +0 -537
  829. package/dist/chunk-RGZ7EEC3.js.map +0 -1
  830. package/dist/chunk-RIPS7GFR.js +0 -960
  831. package/dist/chunk-RTBZNFNV.js +0 -1354
  832. package/dist/chunk-RTBZNFNV.js.map +0 -1
  833. package/dist/chunk-SKMNW4SW.js +0 -187
  834. package/dist/chunk-SRFARKXC.js +0 -623
  835. package/dist/chunk-SWIHWCTW.js +0 -4461
  836. package/dist/chunk-TA5CFTO4.js +0 -103
  837. package/dist/chunk-TF4ZVJLI.js +0 -156
  838. package/dist/chunk-TG7DADJR.js +0 -9624
  839. package/dist/chunk-TI4R2ZD5.js +0 -623
  840. package/dist/chunk-TI4R2ZD5.js.map +0 -1
  841. package/dist/chunk-TNKWOUWP.js +0 -412
  842. package/dist/chunk-TNUSPXPW.js +0 -5555
  843. package/dist/chunk-TNUSPXPW.js.map +0 -1
  844. package/dist/chunk-TNYFHKVV.js +0 -366
  845. package/dist/chunk-TPMZBOFH.js +0 -178
  846. package/dist/chunk-TW3LKRJF.js +0 -263
  847. package/dist/chunk-TZAO65I4.js +0 -83
  848. package/dist/chunk-U5EFEMYU.js +0 -89
  849. package/dist/chunk-U6M4LS3M.js +0 -378
  850. package/dist/chunk-UI4HI5QK.js +0 -918
  851. package/dist/chunk-UJDOWCQ3.js +0 -272
  852. package/dist/chunk-UJUQ2QOX.js +0 -581
  853. package/dist/chunk-UQ3IM6FY.js +0 -133
  854. package/dist/chunk-UYE47LO6.js +0 -246
  855. package/dist/chunk-VADHIT26.js +0 -89
  856. package/dist/chunk-VFQ3H6CO.js +0 -163
  857. package/dist/chunk-VGUN6VB2.js +0 -188
  858. package/dist/chunk-VGWWEVSD.js +0 -723
  859. package/dist/chunk-VIEFJ2DM.js +0 -2469
  860. package/dist/chunk-VLXM36VS.js +0 -268
  861. package/dist/chunk-W3BFRR2G.js +0 -499
  862. package/dist/chunk-W5MPXR3A.js +0 -981
  863. package/dist/chunk-W5OWKVZG.js +0 -136
  864. package/dist/chunk-W6FRORMX.js +0 -486
  865. package/dist/chunk-W6FRORMX.js.map +0 -1
  866. package/dist/chunk-W7XROSZO.js +0 -232
  867. package/dist/chunk-W7XROSZO.js.map +0 -1
  868. package/dist/chunk-WEZ5PXZP.js +0 -403
  869. package/dist/chunk-WHWUWN2X.js +0 -197
  870. package/dist/chunk-WHWUWN2X.js.map +0 -1
  871. package/dist/chunk-WLEDGIVS.js +0 -114
  872. package/dist/chunk-WLEDGIVS.js.map +0 -1
  873. package/dist/chunk-WNDAKLHG.js +0 -281
  874. package/dist/chunk-WTJ4PLMU.js +0 -103
  875. package/dist/chunk-WV2KPJUW.js +0 -107
  876. package/dist/chunk-X3VY5EGY.js +0 -277
  877. package/dist/chunk-X3VY5EGY.js.map +0 -1
  878. package/dist/chunk-XDBYWVCW.js +0 -418
  879. package/dist/chunk-XF7MA4U5.js +0 -36
  880. package/dist/chunk-XF7MA4U5.js.map +0 -1
  881. package/dist/chunk-XOSQP3YA.js +0 -605
  882. package/dist/chunk-XYBV4ZJQ.js +0 -271
  883. package/dist/chunk-YBKVGLQR.js +0 -147
  884. package/dist/chunk-YDCUBUWH.js +0 -1583
  885. package/dist/chunk-YG6NARQY.js +0 -51
  886. package/dist/chunk-YG6NARQY.js.map +0 -1
  887. package/dist/chunk-YSVD5HI4.js +0 -278
  888. package/dist/chunk-YT3WGNG6.js +0 -290
  889. package/dist/chunk-YYICQDK4.js +0 -414
  890. package/dist/chunk-YYLMZLI6.js +0 -686
  891. package/dist/chunk-ZAMTKG5U.js +0 -95
  892. package/dist/chunk-ZDLYSXKN.js +0 -111
  893. package/dist/chunk-ZG447FSS.js +0 -194
  894. package/dist/chunk-ZIT5KD4Q.js +0 -264
  895. package/dist/chunk-ZUDOVDKR.js +0 -3064
  896. package/dist/chunk-ZW2ECJ3A.js +0 -451
  897. package/dist/computer-viewer-LPZ763KF.js +0 -21
  898. package/dist/embedded-new-voice-YVMKSLKJ.js +0 -24
  899. package/dist/embedded-voice-BJPQFXSU.js +0 -24
  900. package/dist/fleet-decision-row-AA4H5CDT.js +0 -361
  901. package/dist/model-policy-picker-menu-HSMWVO4P.js +0 -22
  902. package/dist/payment-page-card-3LTSFJGN.js +0 -223
  903. package/dist/platform-activity-row-5VYV6TX4.js +0 -128
  904. package/dist/queue-surface-implementation-NXHZUKD2.js +0 -908
  905. package/dist/recorder-host-ZKRWTDBM.js +0 -57
  906. package/dist/recorder-host-ZKRWTDBM.js.map +0 -1
  907. package/dist/sandbox-files-YCMLQUFU.js +0 -27
  908. package/dist/session-connect-cards-KSQLMRM5.js +0 -25
  909. package/dist/session-realtime-ZR6JLG3Y.js +0 -30
  910. package/dist/timeline-annotation-markers-YAHDPWVG.js +0 -157
  911. package/dist/timeline-annotation-selection-KHXNCEJP.js +0 -208
  912. package/dist/timeline-annotations-dialog-Y4XD3N7B.js +0 -283
  913. /package/dist/{browser-viewer-NOP5EAUO.js.map → browser-viewer-TC27OCIP.js.map} +0 -0
  914. /package/dist/{chat-interactive-block-G7O44JHR.js.map → chat-interactive-block-RWPQBHVS.js.map} +0 -0
  915. /package/dist/{chunk-EGBII4CP.js.map → chunk-2BDT3UZQ.js.map} +0 -0
  916. /package/dist/{chunk-4YD7YZC5.js.map → chunk-2CLNIEK4.js.map} +0 -0
  917. /package/dist/{chunk-ZW2ECJ3A.js.map → chunk-2FSBSCZJ.js.map} +0 -0
  918. /package/dist/{chunk-KRPLAAFP.js.map → chunk-2I7HDP53.js.map} +0 -0
  919. /package/dist/{chunk-3QX55WLC.js.map → chunk-2INLDVK3.js.map} +0 -0
  920. /package/dist/{chunk-BVUJV5WR.js.map → chunk-2KALVELR.js.map} +0 -0
  921. /package/dist/{chunk-XDBYWVCW.js.map → chunk-2M3J7ZWQ.js.map} +0 -0
  922. /package/dist/{chunk-2RREGDQH.js.map → chunk-2OP6WLGV.js.map} +0 -0
  923. /package/dist/{chunk-OSJ3MUTZ.js.map → chunk-2RG7NIAS.js.map} +0 -0
  924. /package/dist/{chunk-26RWVLRD.js.map → chunk-2STUPWEL.js.map} +0 -0
  925. /package/dist/{chunk-XYBV4ZJQ.js.map → chunk-2YUOVM3G.js.map} +0 -0
  926. /package/dist/{chunk-2GDNWKSC.js.map → chunk-2Z3NQNTM.js.map} +0 -0
  927. /package/dist/{chunk-2VB2O4FQ.js.map → chunk-3CPWWGNK.js.map} +0 -0
  928. /package/dist/{chunk-7WKP3DYJ.js.map → chunk-3ED2U6XE.js.map} +0 -0
  929. /package/dist/{chunk-BT3BAGB5.js.map → chunk-3GZA4BUW.js.map} +0 -0
  930. /package/dist/{chunk-3USJPT2S.js.map → chunk-3IK6UYO6.js.map} +0 -0
  931. /package/dist/{chunk-6AHATAAY.js.map → chunk-3PZ7JZI2.js.map} +0 -0
  932. /package/dist/{chunk-JZ4QXS6D.js.map → chunk-4DVJ6ONS.js.map} +0 -0
  933. /package/dist/{chunk-5QM2WPKV.js.map → chunk-4E3ZJRTZ.js.map} +0 -0
  934. /package/dist/{chunk-NFDFYWMV.js.map → chunk-4SAWSRAA.js.map} +0 -0
  935. /package/dist/{chunk-ELL6HSYR.js.map → chunk-53AGXXZM.js.map} +0 -0
  936. /package/dist/{chunk-G6ZZC543.js.map → chunk-54YW6SZZ.js.map} +0 -0
  937. /package/dist/{chunk-4SZZAFYQ.js.map → chunk-57AZS3IE.js.map} +0 -0
  938. /package/dist/{chunk-JW33RV4V.js.map → chunk-5CPEEAFD.js.map} +0 -0
  939. /package/dist/{chunk-D6L4GHRH.js.map → chunk-5EWSRZ2Y.js.map} +0 -0
  940. /package/dist/{chunk-PW54V7T5.js.map → chunk-5IE76VCY.js.map} +0 -0
  941. /package/dist/{chunk-6GXVYAGR.js.map → chunk-5NWEKLDZ.js.map} +0 -0
  942. /package/dist/{chunk-6UHCBH4G.js.map → chunk-5O2FCCHZ.js.map} +0 -0
  943. /package/dist/{chunk-2YC6JQRO.js.map → chunk-5QAY6K77.js.map} +0 -0
  944. /package/dist/{chunk-EYUT5Y6V.js.map → chunk-6DK6Z4UN.js.map} +0 -0
  945. /package/dist/{chunk-PW4IMTYR.js.map → chunk-6DVCC7QS.js.map} +0 -0
  946. /package/dist/{chunk-7WIDB4PL.js.map → chunk-6JHU2UBS.js.map} +0 -0
  947. /package/dist/{chunk-CQH4FWYA.js.map → chunk-6PZ7OBYU.js.map} +0 -0
  948. /package/dist/{chunk-VFQ3H6CO.js.map → chunk-6WGRDRMA.js.map} +0 -0
  949. /package/dist/{chunk-MTTGSQA5.js.map → chunk-77WAKEAH.js.map} +0 -0
  950. /package/dist/{chunk-O5YWDLYF.js.map → chunk-7TDO3CUM.js.map} +0 -0
  951. /package/dist/{chunk-2AHTY7OT.js.map → chunk-7TIX2UAR.js.map} +0 -0
  952. /package/dist/{chunk-FOGNA3BU.js.map → chunk-7V5REBCP.js.map} +0 -0
  953. /package/dist/{chunk-2JENKGCE.js.map → chunk-7VMZGLYI.js.map} +0 -0
  954. /package/dist/{chunk-E7UIVD7F.js.map → chunk-7W37NS3I.js.map} +0 -0
  955. /package/dist/{chunk-ZDLYSXKN.js.map → chunk-7X6SDK2C.js.map} +0 -0
  956. /package/dist/{chunk-ZAMTKG5U.js.map → chunk-7ZNUHRP5.js.map} +0 -0
  957. /package/dist/{chunk-DMMJIFKA.js.map → chunk-A36PZALD.js.map} +0 -0
  958. /package/dist/{chunk-WV2KPJUW.js.map → chunk-AUI6VA63.js.map} +0 -0
  959. /package/dist/{chunk-Q2EXYSMO.js.map → chunk-AW2MQB37.js.map} +0 -0
  960. /package/dist/{chunk-6WLX3NR3.js.map → chunk-AWKES45Y.js.map} +0 -0
  961. /package/dist/{chunk-OD3DCCCB.js.map → chunk-AXHZYXUV.js.map} +0 -0
  962. /package/dist/{chunk-QDTKECT4.js.map → chunk-BHNSJVBC.js.map} +0 -0
  963. /package/dist/{chunk-FTCHM755.js.map → chunk-BJEJFISW.js.map} +0 -0
  964. /package/dist/{chunk-B2I5ZW35.js.map → chunk-BJFH6JI5.js.map} +0 -0
  965. /package/dist/{chunk-RIPS7GFR.js.map → chunk-BMICEQZQ.js.map} +0 -0
  966. /package/dist/{chunk-BF4SADKX.js.map → chunk-BTLBYBLU.js.map} +0 -0
  967. /package/dist/{chunk-U5EFEMYU.js.map → chunk-BXBDYNRP.js.map} +0 -0
  968. /package/dist/{chunk-BTSYDIVJ.js.map → chunk-C372BFOV.js.map} +0 -0
  969. /package/dist/{chunk-MLJADQFI.js.map → chunk-CMKGILJK.js.map} +0 -0
  970. /package/dist/{chunk-DKT3N37I.js.map → chunk-CRAOSVHC.js.map} +0 -0
  971. /package/dist/{chunk-WNDAKLHG.js.map → chunk-CRU35QQH.js.map} +0 -0
  972. /package/dist/{chunk-2XNG2KNT.js.map → chunk-CUIWCGMA.js.map} +0 -0
  973. /package/dist/{chunk-QWL4L366.js.map → chunk-D5TWNFFE.js.map} +0 -0
  974. /package/dist/{chunk-SWIHWCTW.js.map → chunk-DF5EAHDN.js.map} +0 -0
  975. /package/dist/{chunk-HUAGBS4O.js.map → chunk-DJAXC5OK.js.map} +0 -0
  976. /package/dist/{chunk-FXSHP4JZ.js.map → chunk-DXBYWSL5.js.map} +0 -0
  977. /package/dist/{chunk-5MUJDC6C.js.map → chunk-DXR5PDFP.js.map} +0 -0
  978. /package/dist/{chunk-NXWBBZJV.js.map → chunk-DZWARC4M.js.map} +0 -0
  979. /package/dist/{chunk-GXXZ3WAK.js.map → chunk-DZXEDSQI.js.map} +0 -0
  980. /package/dist/{chunk-Q52CXW6C.js.map → chunk-E7XERZWC.js.map} +0 -0
  981. /package/dist/{chunk-4NBTZRKT.js.map → chunk-ECJBYNLJ.js.map} +0 -0
  982. /package/dist/{chunk-QE3ZFGI3.js.map → chunk-EDI6SJ2N.js.map} +0 -0
  983. /package/dist/{chunk-E6NRSRBE.js.map → chunk-EWSOC6WF.js.map} +0 -0
  984. /package/dist/{chunk-TA5CFTO4.js.map → chunk-F2OPHAUN.js.map} +0 -0
  985. /package/dist/{chunk-5DTST3TP.js.map → chunk-F4ISQGGM.js.map} +0 -0
  986. /package/dist/{chunk-MBIBB6GI.js.map → chunk-FO4LYKJL.js.map} +0 -0
  987. /package/dist/{chunk-EUBGLFFR.js.map → chunk-FPXASDG5.js.map} +0 -0
  988. /package/dist/{chunk-C3HUF3M2.js.map → chunk-FVXBNBHO.js.map} +0 -0
  989. /package/dist/{chunk-W5MPXR3A.js.map → chunk-FZC5N55X.js.map} +0 -0
  990. /package/dist/{chunk-MA6O7CM6.js.map → chunk-GAVYGBFI.js.map} +0 -0
  991. /package/dist/{chunk-REX6JIC7.js.map → chunk-GKVJIDHF.js.map} +0 -0
  992. /package/dist/{chunk-EW6RNWSH.js.map → chunk-GVN5SZLX.js.map} +0 -0
  993. /package/dist/{chunk-KVFEZDBO.js.map → chunk-H3T7IWNA.js.map} +0 -0
  994. /package/dist/{chunk-I6VBHT7S.js.map → chunk-HAX4LCR5.js.map} +0 -0
  995. /package/dist/{chunk-OBMCZO7E.js.map → chunk-HC4JFZVU.js.map} +0 -0
  996. /package/dist/{chunk-UJUQ2QOX.js.map → chunk-HEFPPMBQ.js.map} +0 -0
  997. /package/dist/{chunk-DOFJZ2JU.js.map → chunk-HNLR7Q4Z.js.map} +0 -0
  998. /package/dist/{chunk-GE33BGB7.js.map → chunk-HSOXMJOT.js.map} +0 -0
  999. /package/dist/{chunk-AB5MBIXY.js.map → chunk-I4MRDSUF.js.map} +0 -0
  1000. /package/dist/{chunk-AFBJTUFK.js.map → chunk-I4QEJ62Y.js.map} +0 -0
  1001. /package/dist/{chunk-6ED2YWBT.js.map → chunk-I5B5L6Q4.js.map} +0 -0
  1002. /package/dist/{chunk-C5QCAOES.js.map → chunk-I5QZJODL.js.map} +0 -0
  1003. /package/dist/{chunk-76ERNKIZ.js.map → chunk-I7ITSXSJ.js.map} +0 -0
  1004. /package/dist/{chunk-OMH7R6I3.js.map → chunk-I7XIZRFD.js.map} +0 -0
  1005. /package/dist/{chunk-E337C2VK.js.map → chunk-IDANQPRH.js.map} +0 -0
  1006. /package/dist/{chunk-3FD76LXM.js.map → chunk-IFB3WJ36.js.map} +0 -0
  1007. /package/dist/{chunk-ZIT5KD4Q.js.map → chunk-IHTAKKTK.js.map} +0 -0
  1008. /package/dist/{chunk-QHNVNR7B.js.map → chunk-ILDXWY37.js.map} +0 -0
  1009. /package/dist/{chunk-GQ67HSJY.js.map → chunk-IMDQUHBJ.js.map} +0 -0
  1010. /package/dist/{chunk-DSXVY5WZ.js.map → chunk-IMZCQBOT.js.map} +0 -0
  1011. /package/dist/{chunk-WEZ5PXZP.js.map → chunk-IXPTECSC.js.map} +0 -0
  1012. /package/dist/{chunk-NY2QWROL.js.map → chunk-J255A3N5.js.map} +0 -0
  1013. /package/dist/{chunk-O2UWH5RG.js.map → chunk-J5F5HPPW.js.map} +0 -0
  1014. /package/dist/{chunk-VIEFJ2DM.js.map → chunk-JEA3QDX7.js.map} +0 -0
  1015. /package/dist/{chunk-TF4ZVJLI.js.map → chunk-JEUPAVYY.js.map} +0 -0
  1016. /package/dist/{chunk-ZG447FSS.js.map → chunk-JKHKLL5W.js.map} +0 -0
  1017. /package/dist/{chunk-FQFKHNC7.js.map → chunk-JQL7ZH6C.js.map} +0 -0
  1018. /package/dist/{chunk-776QZ573.js.map → chunk-JWB44UGJ.js.map} +0 -0
  1019. /package/dist/{chunk-ICNNNOXE.js.map → chunk-JZ4NLCAP.js.map} +0 -0
  1020. /package/dist/{chunk-TNKWOUWP.js.map → chunk-K2A5PXQ5.js.map} +0 -0
  1021. /package/dist/{chunk-SRFARKXC.js.map → chunk-K56XV3C3.js.map} +0 -0
  1022. /package/dist/{chunk-QAJ53XBW.js.map → chunk-K6GAXXVA.js.map} +0 -0
  1023. /package/dist/{chunk-MF3ZFB4H.js.map → chunk-KCBMFSMS.js.map} +0 -0
  1024. /package/dist/{chunk-VLXM36VS.js.map → chunk-KF2FV3ZJ.js.map} +0 -0
  1025. /package/dist/{chunk-YSVD5HI4.js.map → chunk-KJD65EJP.js.map} +0 -0
  1026. /package/dist/{chunk-K42OUZQ3.js.map → chunk-KLEUWIMZ.js.map} +0 -0
  1027. /package/dist/{chunk-PENGLDR5.js.map → chunk-KODELWYT.js.map} +0 -0
  1028. /package/dist/{chunk-TZAO65I4.js.map → chunk-KRDR5RJD.js.map} +0 -0
  1029. /package/dist/{chunk-KHJ5PXFM.js.map → chunk-KUDGXAF7.js.map} +0 -0
  1030. /package/dist/{chunk-6H4SJBPE.js.map → chunk-KYS77RPN.js.map} +0 -0
  1031. /package/dist/{chunk-OWAYJ2OV.js.map → chunk-L7YTNTIK.js.map} +0 -0
  1032. /package/dist/{chunk-YYLMZLI6.js.map → chunk-LHPNABDH.js.map} +0 -0
  1033. /package/dist/{chunk-LM2W5YAT.js.map → chunk-MFROMEKA.js.map} +0 -0
  1034. /package/dist/{chunk-AXBSYWKX.js.map → chunk-MIHN76LX.js.map} +0 -0
  1035. /package/dist/{chunk-4LPOWQJY.js.map → chunk-MIYFS2XN.js.map} +0 -0
  1036. /package/dist/{chunk-KKI55ZMW.js.map → chunk-MJUCFQMS.js.map} +0 -0
  1037. /package/dist/{chunk-ZUDOVDKR.js.map → chunk-MM4FNWI4.js.map} +0 -0
  1038. /package/dist/{chunk-M4SDVTKJ.js.map → chunk-MNZG4OHU.js.map} +0 -0
  1039. /package/dist/{chunk-EILSAQVJ.js.map → chunk-N6AACDUW.js.map} +0 -0
  1040. /package/dist/{chunk-BM3NEZ6X.js.map → chunk-NC55IFN3.js.map} +0 -0
  1041. /package/dist/{chunk-MJJGJMYJ.js.map → chunk-NC7PVOEK.js.map} +0 -0
  1042. /package/dist/{chunk-LA5T52RM.js.map → chunk-NCYMNCJO.js.map} +0 -0
  1043. /package/dist/{chunk-HLOEPV5C.js.map → chunk-ND2BXV3P.js.map} +0 -0
  1044. /package/dist/{chunk-UJDOWCQ3.js.map → chunk-NDBTFUO6.js.map} +0 -0
  1045. /package/dist/{chunk-K5TOVX5A.js.map → chunk-NDQJZ7HF.js.map} +0 -0
  1046. /package/dist/{chunk-35737UT4.js.map → chunk-NGJJJPZZ.js.map} +0 -0
  1047. /package/dist/{chunk-42CMQ5VR.js.map → chunk-NJTSNNE7.js.map} +0 -0
  1048. /package/dist/{chunk-FBTJKSTM.js.map → chunk-NRTE7DNV.js.map} +0 -0
  1049. /package/dist/{chunk-YT3WGNG6.js.map → chunk-NULUNM7H.js.map} +0 -0
  1050. /package/dist/{chunk-7XOVTPDI.js.map → chunk-NUNZS36W.js.map} +0 -0
  1051. /package/dist/{chunk-FC2FTSK3.js.map → chunk-NW53H5RW.js.map} +0 -0
  1052. /package/dist/{chunk-TW3LKRJF.js.map → chunk-NXCMHIKI.js.map} +0 -0
  1053. /package/dist/{chunk-CGK6ALQU.js.map → chunk-O3LKCBP5.js.map} +0 -0
  1054. /package/dist/{chunk-QIK2Q6N5.js.map → chunk-O6N4ABCA.js.map} +0 -0
  1055. /package/dist/{chunk-73NXYYWE.js.map → chunk-O732GAFC.js.map} +0 -0
  1056. /package/dist/{chunk-R3J2PTVQ.js.map → chunk-OF4TIKYC.js.map} +0 -0
  1057. /package/dist/{chunk-BUBNGKWG.js.map → chunk-OMPVOMPP.js.map} +0 -0
  1058. /package/dist/{chunk-4OXI6HCV.js.map → chunk-OPJJSKUK.js.map} +0 -0
  1059. /package/dist/{chunk-4Y6BK7IU.js.map → chunk-OPWCMA4D.js.map} +0 -0
  1060. /package/dist/{chunk-ADNMXBCX.js.map → chunk-ORJPS5VN.js.map} +0 -0
  1061. /package/dist/{chunk-SKMNW4SW.js.map → chunk-OSY5K7L7.js.map} +0 -0
  1062. /package/dist/{chunk-L4I665WK.js.map → chunk-OV6QJRT4.js.map} +0 -0
  1063. /package/dist/{chunk-7O5CGGIQ.js.map → chunk-OVKYVZMW.js.map} +0 -0
  1064. /package/dist/{chunk-7BYWOFVH.js.map → chunk-OZCBM3UC.js.map} +0 -0
  1065. /package/dist/{chunk-ALVRWCXE.js.map → chunk-P3A2EINJ.js.map} +0 -0
  1066. /package/dist/{chunk-BZO5ZMUP.js.map → chunk-PTAG4PDC.js.map} +0 -0
  1067. /package/dist/{chunk-QHHSUR2Y.js.map → chunk-PTF5B7TJ.js.map} +0 -0
  1068. /package/dist/{chunk-O2IOPP3R.js.map → chunk-Q3DPEYX4.js.map} +0 -0
  1069. /package/dist/{chunk-G7FU6PUA.js.map → chunk-QB2KMIDP.js.map} +0 -0
  1070. /package/dist/{chunk-64PO2WXU.js.map → chunk-QCSJ4CWE.js.map} +0 -0
  1071. /package/dist/{chunk-YYICQDK4.js.map → chunk-QIOQ2NPQ.js.map} +0 -0
  1072. /package/dist/{chunk-NB2HMRT2.js.map → chunk-QK5EFEUT.js.map} +0 -0
  1073. /package/dist/{chunk-366XZ4PM.js.map → chunk-QPQBLYQJ.js.map} +0 -0
  1074. /package/dist/{chunk-Q6XQ2R37.js.map → chunk-QPSGCC5D.js.map} +0 -0
  1075. /package/dist/{chunk-JJZPLGIP.js.map → chunk-QZAAUQRN.js.map} +0 -0
  1076. /package/dist/{chunk-VGUN6VB2.js.map → chunk-RGBI63KJ.js.map} +0 -0
  1077. /package/dist/{chunk-LRN6GYAZ.js.map → chunk-RLBKLAEY.js.map} +0 -0
  1078. /package/dist/{chunk-F7U3QPZ3.js.map → chunk-RMFKVOM7.js.map} +0 -0
  1079. /package/dist/{chunk-Q4EFRI6X.js.map → chunk-ROKQU7WG.js.map} +0 -0
  1080. /package/dist/{chunk-7QOHRZ67.js.map → chunk-RPVREAU7.js.map} +0 -0
  1081. /package/dist/{chunk-VGWWEVSD.js.map → chunk-RQKLF42C.js.map} +0 -0
  1082. /package/dist/{chunk-2VTTKH23.js.map → chunk-SEO7TICN.js.map} +0 -0
  1083. /package/dist/{chunk-3QNRBEYH.js.map → chunk-SHHJCL7X.js.map} +0 -0
  1084. /package/dist/{chunk-E6SQKHAU.js.map → chunk-SIRLACNZ.js.map} +0 -0
  1085. /package/dist/{chunk-H2TCRX3H.js.map → chunk-SKPHMYAA.js.map} +0 -0
  1086. /package/dist/{chunk-YDCUBUWH.js.map → chunk-SODC7T6L.js.map} +0 -0
  1087. /package/dist/{chunk-TNYFHKVV.js.map → chunk-SQJIKMN3.js.map} +0 -0
  1088. /package/dist/{chunk-DO74DQC7.js.map → chunk-SVINDKVW.js.map} +0 -0
  1089. /package/dist/{chunk-CPYGO76Q.js.map → chunk-SYCDHPZF.js.map} +0 -0
  1090. /package/dist/{chunk-UQ3IM6FY.js.map → chunk-T2QX3FDP.js.map} +0 -0
  1091. /package/dist/{chunk-NWGNFN3N.js.map → chunk-T3OWFVMS.js.map} +0 -0
  1092. /package/dist/{chunk-N3OARGH2.js.map → chunk-T6XI5FLY.js.map} +0 -0
  1093. /package/dist/{chunk-MQG7RV3B.js.map → chunk-T7OXJZCX.js.map} +0 -0
  1094. /package/dist/{chunk-2T7DX6KR.js.map → chunk-TAT5USZN.js.map} +0 -0
  1095. /package/dist/{chunk-ICX64J4U.js.map → chunk-TPQTRNER.js.map} +0 -0
  1096. /package/dist/{chunk-D2TOWEYH.js.map → chunk-TUIN4MB7.js.map} +0 -0
  1097. /package/dist/{chunk-LQDUHU3Y.js.map → chunk-TX3VECZU.js.map} +0 -0
  1098. /package/dist/{chunk-TG7DADJR.js.map → chunk-TXLIEOJX.js.map} +0 -0
  1099. /package/dist/{chunk-2ZVRJRXC.js.map → chunk-U3DN4HEY.js.map} +0 -0
  1100. /package/dist/{chunk-PSMAWRPL.js.map → chunk-U7XM7CB4.js.map} +0 -0
  1101. /package/dist/{chunk-4TQL3WP2.js.map → chunk-UJK53QFL.js.map} +0 -0
  1102. /package/dist/{chunk-RBRX5ZS3.js.map → chunk-UMTXA2TH.js.map} +0 -0
  1103. /package/dist/{chunk-36MIDGAH.js.map → chunk-UPDSXFK5.js.map} +0 -0
  1104. /package/dist/{chunk-OYXBFSGK.js.map → chunk-UTIAXH52.js.map} +0 -0
  1105. /package/dist/{chunk-5WUN7XPD.js.map → chunk-UVN5TMHU.js.map} +0 -0
  1106. /package/dist/{chunk-UYE47LO6.js.map → chunk-VGYXW3VG.js.map} +0 -0
  1107. /package/dist/{chunk-IKUNOX7F.js.map → chunk-VS7AHPCZ.js.map} +0 -0
  1108. /package/dist/{chunk-MYUFMVCH.js.map → chunk-VTTAJOQ7.js.map} +0 -0
  1109. /package/dist/{chunk-K63HGHZX.js.map → chunk-VWPOLUAO.js.map} +0 -0
  1110. /package/dist/{chunk-GA4YEAMX.js.map → chunk-X3MWB2QU.js.map} +0 -0
  1111. /package/dist/{chunk-I36GSRUJ.js.map → chunk-X6KAJI3V.js.map} +0 -0
  1112. /package/dist/{chunk-IKMUFDVS.js.map → chunk-XBLRHV5R.js.map} +0 -0
  1113. /package/dist/{chunk-XOSQP3YA.js.map → chunk-XDFP2LMW.js.map} +0 -0
  1114. /package/dist/{chunk-MW7Y3T55.js.map → chunk-XEQMZB3C.js.map} +0 -0
  1115. /package/dist/{chunk-B3LMRTRF.js.map → chunk-XEYLT5VA.js.map} +0 -0
  1116. /package/dist/{chunk-UI4HI5QK.js.map → chunk-XHIQ5I6N.js.map} +0 -0
  1117. /package/dist/{chunk-U6M4LS3M.js.map → chunk-XLH7QY2R.js.map} +0 -0
  1118. /package/dist/{chunk-OSA5EQG5.js.map → chunk-XWFAMUZQ.js.map} +0 -0
  1119. /package/dist/{chunk-6MT3HHUB.js.map → chunk-Y4OBB2VN.js.map} +0 -0
  1120. /package/dist/{chunk-CZP5QXNB.js.map → chunk-YCVD6CI3.js.map} +0 -0
  1121. /package/dist/{chunk-APW4T4SW.js.map → chunk-YENLNISG.js.map} +0 -0
  1122. /package/dist/{chunk-JWPA6ZPZ.js.map → chunk-YIRVLKAX.js.map} +0 -0
  1123. /package/dist/{chunk-LQ62ECE6.js.map → chunk-YL73CVNK.js.map} +0 -0
  1124. /package/dist/{chunk-ILKDYBON.js.map → chunk-YLS6QE5G.js.map} +0 -0
  1125. /package/dist/{chunk-YBKVGLQR.js.map → chunk-YPWU5KPE.js.map} +0 -0
  1126. /package/dist/{chunk-IKJLSBUI.js.map → chunk-YQXTDZSU.js.map} +0 -0
  1127. /package/dist/{chunk-TPMZBOFH.js.map → chunk-YSJEAAOL.js.map} +0 -0
  1128. /package/dist/{chunk-W3BFRR2G.js.map → chunk-YWIFM7D7.js.map} +0 -0
  1129. /package/dist/{chunk-WTJ4PLMU.js.map → chunk-YWVI6ZMK.js.map} +0 -0
  1130. /package/dist/{chunk-5KWMYPJV.js.map → chunk-Z4FMAFNH.js.map} +0 -0
  1131. /package/dist/{chunk-W5OWKVZG.js.map → chunk-Z654FWNU.js.map} +0 -0
  1132. /package/dist/{chunk-5FH5LQVS.js.map → chunk-Z7Y523PS.js.map} +0 -0
  1133. /package/dist/{chunk-HLL4PBO7.js.map → chunk-ZD67RM6G.js.map} +0 -0
  1134. /package/dist/{chunk-IVYJX3OY.js.map → chunk-ZEG4VPBL.js.map} +0 -0
  1135. /package/dist/{chunk-K6R5T44I.js.map → chunk-ZLYCOBHW.js.map} +0 -0
  1136. /package/dist/{chunk-VADHIT26.js.map → chunk-ZNJ5MTXV.js.map} +0 -0
  1137. /package/dist/{chunk-2KYQC4T5.js.map → chunk-ZSGY3H53.js.map} +0 -0
  1138. /package/dist/{chunk-BKP43KK4.js.map → chunk-ZTPXACWB.js.map} +0 -0
  1139. /package/dist/{chunk-JCY4CMDH.js.map → chunk-ZUA3JMI6.js.map} +0 -0
  1140. /package/dist/{chunk-IGVVXLKJ.js.map → chunk-ZYAZUPPV.js.map} +0 -0
  1141. /package/dist/{computer-viewer-LPZ763KF.js.map → computer-viewer-TDDO25AV.js.map} +0 -0
  1142. /package/dist/{embedded-new-voice-YVMKSLKJ.js.map → embedded-new-voice-2G3VLPVQ.js.map} +0 -0
  1143. /package/dist/{embedded-voice-BJPQFXSU.js.map → embedded-voice-T5IWOWGD.js.map} +0 -0
  1144. /package/dist/{fleet-decision-row-AA4H5CDT.js.map → fleet-decision-row-WM64KXP3.js.map} +0 -0
  1145. /package/dist/{model-policy-picker-menu-HSMWVO4P.js.map → model-policy-picker-menu-SMC6J6QN.js.map} +0 -0
  1146. /package/dist/{payment-page-card-3LTSFJGN.js.map → payment-page-card-G4U63KUV.js.map} +0 -0
  1147. /package/dist/{platform-activity-row-5VYV6TX4.js.map → platform-activity-row-BUZGZAKZ.js.map} +0 -0
  1148. /package/dist/{queue-surface-implementation-NXHZUKD2.js.map → queue-surface-implementation-4KUZ4PJV.js.map} +0 -0
  1149. /package/dist/{sandbox-files-YCMLQUFU.js.map → sandbox-files-ESDMOFSD.js.map} +0 -0
  1150. /package/dist/{session-connect-cards-KSQLMRM5.js.map → session-connect-cards-Q53KMMYY.js.map} +0 -0
  1151. /package/dist/{session-realtime-ZR6JLG3Y.js.map → session-realtime-CF3I35WJ.js.map} +0 -0
  1152. /package/dist/{timeline-annotation-markers-YAHDPWVG.js.map → timeline-annotation-markers-CJK4RYZ4.js.map} +0 -0
  1153. /package/dist/{timeline-annotation-selection-KHXNCEJP.js.map → timeline-annotation-selection-67GF5H26.js.map} +0 -0
  1154. /package/dist/{timeline-annotations-dialog-Y4XD3N7B.js.map → timeline-annotations-dialog-ONJPQDJQ.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/app/routes/site-view.tsx"],"sourcesContent":["import {\n SITE_ID_HEADER,\n SITE_VERSION_HEADER,\n siteConversationContext,\n} from \"@opengeni/contracts/site-session-http\";\nimport type { Session, SessionEvent, SessionListResponse } from \"@opengeni/sdk\";\nimport { OpenGeniApiError } from \"@opengeni/sdk/browser\";\nimport {\n ArrowLeftIcon,\n InfoIcon,\n Maximize2Icon,\n MoreHorizontalIcon,\n PanelLeftCloseIcon,\n PanelLeftIcon,\n PanelLeftOpenIcon,\n PanelRightCloseIcon,\n PanelRightIcon,\n PanelRightOpenIcon,\n PlusIcon,\n} from \"lucide-react\";\nimport {\n lazy,\n Suspense,\n useCallback,\n useEffect,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type RefObject,\n} from \"react\";\nimport { SiteView } from \"../../artifacts\";\nimport { SiteVersionMenu } from \"../components/artifacts/site-version-menu\";\nimport { useArtifactsBackLink } from \"../components/artifacts/artifact-page-chrome\";\nimport { CopyArtifactLinkButton } from \"../components/artifacts/copy-artifact-link\";\nimport type {\n CreatedConversation,\n NewConversationCreateOptions,\n} from \"../../hooks/use-new-conversation\";\nimport { Button } from \"../../ui/button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"../../ui/dropdown-menu\";\nimport { ResizeHandle } from \"../../ui/resize-handle\";\nimport { Skeleton } from \"../../ui/skeleton\";\nimport { useAppContext, type SessionCreationHandoff } from \"../app-context\";\nimport {\n ChatFileDropCover,\n ChatFileDropRelay,\n ChatFileDropRelayProvider,\n} from \"../components/session/chat-viewport-file-drop-target\";\nimport { ConsoleNewConversation } from \"../components/session/console-new-conversation\";\nimport {\n SitePublicationControl,\n useSitePublicationLink,\n} from \"../components/artifacts/site-public-link\";\nimport { useAppApi } from \"../lib/app-api\";\nimport { useConsoleSiteToolBridge, useConsoleSiteViewer } from \"../lib/console-site\";\nimport { Link, useNavigate } from \"../lib/navigation\";\nimport { hasWorkspacePermission } from \"../lib/permissions\";\nimport type { SiteViewArtifactsReturn } from \"../lib/routes\";\nimport { sessionDisplayTitle } from \"../lib/session-rename\";\nimport { sessionSiteOrigin } from \"../lib/session-site-origin\";\nimport { SessionUiFeaturesOff } from \"../lib/session-ui-features\";\nimport {\n SITE_CHAT_DEFAULT_WIDTH,\n SITE_CHAT_MAX_WIDTH,\n SITE_CHAT_MIN_WIDTH,\n SITE_MIN_WIDTH,\n useSiteChatPanelLayout,\n type SiteChatPanelLayout,\n} from \"../lib/site-chat-panel\";\nimport { useRecordSiteOpened } from \"../lib/site-opened\";\nimport { siteMayHaveChanged, useSiteLiveVersion } from \"../lib/site-live-version\";\nimport { useSessionListHintRefresh } from \"../lib/use-session-list-hint-refresh\";\nimport { cn } from \"../lib/utils\";\nimport { useWindowBarTitle } from \"../../ui/window-bar-title\";\n\n// Loaded when someone opens it, from the Artifacts route that already holds\n// the publish form and the Site's management (a separate lazy entry would\n// regroup the shared code-split chunks).\nconst SitePublishingPage = lazy(() =>\n import(\"./artifacts\").then((module) => ({\n default: module.SitePublishingPage,\n })),\n);\n// The regular chat route, loaded as the chat page loads it: a static import\n// would make the Site view share the chat's chunks and regroup them.\nconst loadSessionRoute = () => import(\"./session\");\nconst SessionRoute = lazy(() =>\n loadSessionRoute().then((module) => ({ default: module.SessionRoute })),\n);\n\nconst SITE_ROUTE = \"/workspaces/$workspaceId/sites/$siteId\";\n/** The panel's width while it sits beside the Site, set live while dragging. */\nconst WIDTH_VARIABLE = \"--og-site-chat-width\";\n\ntype SiteState =\n | { status: \"loading\" }\n | { status: \"error\" }\n | {\n status: \"ready\";\n title: string;\n versionId: string | null;\n revision: number | null;\n archived: boolean;\n };\n\n/** A conversation this panel just created, for its first open. */\ntype SiteHandoff = CreatedConversation & { creation: SessionCreationHandoff | null };\n\n/**\n * A Site with its chat beside it. The Site fills the page; the panel shows\n * one conversation (the newest when the Site opens, unless one is chosen) as\n * the regular chat (the same chat as on its own page, without the session\n * panel), narrower, and starts a new one with the regular composer. The\n * sidebar lists the Site's conversations, so the panel doesn't repeat them.\n * The panel can be resized, hidden and moved to the left; all three are\n * remembered per person, and choosing a conversation brings a hidden panel\n * back. Files dragged over the Site go to the chat, since the Site's frame\n * would otherwise take them.\n *\n * Edits go live: the Site is watched for new versions (its conversation's\n * tool calls, and a check every few seconds for anyone else's), the preview\n * reloads in place when one is published or restored, and the version chip\n * in its header offers the history and one-click Undo.\n *\n * Its header says whether the Site is on the web: \"Published\" opens or\n * copies the address, or Publish for people who can. Publishing and its\n * settings open the Site's own publish form in place of the Site, with the\n * chat still beside it.\n */\nexport function SiteViewRoute({\n workspaceId,\n siteId,\n conversation,\n startNew = false,\n page,\n artifactsReturn,\n}: {\n workspaceId: string;\n siteId: string;\n /** The conversation open in the panel; the newest when omitted. */\n conversation?: string | undefined;\n /** Open with a new conversation in the panel, its composer focused (Edit with Opengeni). */\n startNew?: boolean | undefined;\n /** The Site's own address (`?page=/admin`), answered to its `site.location`; its root when omitted. */\n page?: string | undefined;\n /**\n * The Artifacts page the Site was opened from: the Site's toolbar starts\n * with a Back to it, and the Site's own moves keep it.\n */\n artifactsReturn?: SiteViewArtifactsReturn | undefined;\n}) {\n const { client, accessContext } = useAppContext();\n const navigate = useNavigate();\n const viewer = useConsoleSiteViewer();\n // By value: a host may pass a new object on every render.\n const backKey = artifactsReturn?.browse ? JSON.stringify(artifactsReturn) : \"\";\n const back = useMemo<SiteViewArtifactsReturn | undefined>(\n () => (backKey ? (JSON.parse(backKey) as SiteViewArtifactsReturn) : undefined),\n [backKey],\n );\n // The Site's address lives in this page's URL, so Back/Forward, reloads\n // and copied links keep the Site where it was.\n const onSiteLocationChange = useCallback(\n (href: string, options: { replace: boolean }) =>\n void navigate({\n to: SITE_ROUTE,\n params: { workspaceId, siteId },\n search: {\n ...back,\n ...(conversation ? { conversation } : {}),\n ...(href === \"/\" ? {} : { page: href }),\n },\n ...(options.replace ? { replace: true } : {}),\n }),\n [back, conversation, navigate, siteId, workspaceId],\n );\n // Anyone who can open the Site sees whether it is published and its\n // address; Publish and the publish form are for people who can publish.\n const canPublish = hasWorkspacePermission(accessContext, workspaceId, \"artifacts:publish\");\n const publication = useSitePublicationLink({ client, workspaceId, siteId });\n const toolBridge = useConsoleSiteToolBridge(workspaceId);\n useRecordSiteOpened(client, workspaceId, siteId);\n const live = useSiteLiveVersion(client, workspaceId, siteId);\n const artifact = live.detail?.artifact;\n // The publish form, open for this Site; another Site starts without it.\n const siteKey = `${workspaceId}/${siteId}`;\n const [publishingFor, setPublishingFor] = useState<string | null>(null);\n const publishingSite =\n publishingFor === siteKey && artifact?.status === \"active\" ? artifact : null;\n const publishing = publishingSite !== null;\n // In the macOS app the Site's name is the window bar's title, as a page's\n // is, instead of in its toolbar (which shows it again in full screen, where\n // the bar's row is hidden). The publish form, opened in front of the Site,\n // names the bar once it has loaded; the Site's claim mounted first, so it\n // yields while the form is open.\n const titleInWindowBar = useWindowBarTitle(artifact?.title ?? null, publishing);\n // Full screen is the route's so opening the form can leave it first.\n const [fullScreen, setFullScreen] = useState(false);\n const openPublishing = useCallback(() => {\n setFullScreen(false);\n setPublishingFor(siteKey);\n }, [siteKey]);\n // Back from the form returns focus to the control that opened it.\n const siteColumn = useRef<HTMLDivElement>(null);\n const returnFocus = useRef(false);\n const closePublishing = useCallback(() => {\n returnFocus.current = true;\n setPublishingFor(null);\n }, []);\n useEffect(() => {\n if (publishing || !returnFocus.current) return;\n returnFocus.current = false;\n siteColumn.current?.querySelector<HTMLElement>(\"[data-site-publication]\")?.focus();\n }, [publishing]);\n const site = useMemo<SiteState>(\n () =>\n artifact\n ? {\n status: \"ready\",\n title: artifact.title,\n versionId: artifact.currentVersion?.id ?? null,\n revision: artifact.currentVersion?.revision ?? null,\n archived: artifact.status === \"archived\",\n }\n : live.failed\n ? { status: \"error\" }\n : { status: \"loading\" },\n [artifact, live.failed],\n );\n const { check } = live;\n const backControl = back ? (\n <ArtifactsBackLink workspaceId={workspaceId} artifactsReturn={back} />\n ) : undefined;\n const { layout, update: updateLayout } = useSiteChatPanelLayout(accessContext.subjectId);\n const [relay] = useState(() => new ChatFileDropRelay());\n return (\n <div\n className={cn(\n \"flex min-h-0 min-w-0 flex-1 max-lg:flex-col\",\n // The chat on the left: the Site keeps its place in the page, so\n // moving the chat neither reloads the Site nor restarts the chat.\n layout.position === \"left\" && \"lg:flex-row-reverse\",\n )}\n data-workspace-scroll-owner=\"self-managed\"\n data-site-chat-position={layout.position}\n >\n {/* The Site's column, not its chat: the Site's toolbar is this page's\n top row. */}\n <div\n ref={siteColumn}\n data-site-column\n className=\"relative flex min-h-0 min-w-0 flex-1 flex-col\"\n >\n {publishingSite ? (\n <Suspense fallback={<div className=\"min-h-0 flex-1 bg-bg\" />}>\n <SitePublishingPage\n key={siteKey}\n workspaceId={workspaceId}\n siteId={siteId}\n artifact={publishingSite}\n onPublication={publication.update}\n onBack={closePublishing}\n />\n </Suspense>\n ) : null}\n {artifact?.status === \"archived\" ? (\n <>\n {backControl ? (\n <div className=\"flex min-h-12 shrink-0 items-center border-b border-border/80 px-3 sm:px-4\">\n {backControl}\n </div>\n ) : null}\n <p className=\"p-4 text-sm text-fg-muted\">\n This Site is archived.{\" \"}\n <Link\n to=\"/workspaces/$workspaceId/artifacts/$artifactId\"\n params={{ workspaceId, artifactId: siteId }}\n search={{ tab: \"settings\" }}\n className=\"font-medium text-fg underline underline-offset-2\"\n >\n {canPublish ? \"Restore it from Site details\" : \"View Site details\"}\n </Link>\n </p>\n </>\n ) : (\n // Hidden, not unmounted, behind the form: the Site keeps its page.\n <div className={cn(\"flex min-h-0 min-w-0 flex-1 flex-col\", publishing && \"hidden\")}>\n <SiteView\n client={client}\n workspaceId={workspaceId}\n siteId={siteId}\n toolBridge={toolBridge}\n viewer={viewer}\n siteLocation={page ?? \"/\"}\n onSiteLocationChange={onSiteLocationChange}\n toolbarStart={backControl}\n showTitle={!titleInWindowBar || fullScreen}\n // The one publication control. The Site view never says \"Live\":\n // it stays current, and says so only while Updating or Reconnecting.\n liveStatus={\n <>\n <SitePublicationControl\n load={publication.load}\n canPublish={canPublish}\n onOpenPublishing={openPublishing}\n />\n <CopyArtifactLinkButton\n workspaceId={workspaceId}\n item={{ kind: \"site\", id: siteId }}\n className=\"size-8 rounded-md text-fg-muted hover:text-fg\"\n />\n </>\n }\n versionId={artifact ? (artifact.currentVersion?.id ?? null) : undefined}\n watch={live.watch}\n versionControl={\n live.detail ? (\n <SiteVersionMenu\n workspaceId={workspaceId}\n siteId={siteId}\n detail={live.detail}\n canPublish={canPublish}\n onRestored={check}\n />\n ) : undefined\n }\n fullScreen={fullScreen}\n onFullScreenChange={setFullScreen}\n archivedMessage={\n canPublish\n ? \"This Site is archived. Restore it from Site details.\"\n : \"This Site is archived.\"\n }\n />\n </div>\n )}\n <ChatFileDropCover relay={relay} enabled={!layout.collapsed} />\n </div>\n <ChatFileDropRelayProvider relay={relay}>\n <SiteChatPanel\n key={`${workspaceId}:${siteId}`}\n workspaceId={workspaceId}\n siteId={siteId}\n site={site}\n retrySite={live.retry}\n canPublish={canPublish}\n conversation={conversation}\n startNew={startNew}\n page={page}\n artifactsReturn={back}\n layout={layout}\n updateLayout={updateLayout}\n onEvent={(event) => {\n // A publish or restore from this conversation shows at once.\n if (siteMayHaveChanged(event)) check();\n }}\n />\n </ChatFileDropRelayProvider>\n </div>\n );\n}\n\nconst PAGE_SIZE = 30;\n\n/**\n * \"← Artifacts\" at the start of the Site's toolbar, when the Site was opened\n * from the Artifacts page: back to that page with its tab, search and sort\n * (and its scroll, which the page keeps). A real link, so it also opens in a\n * new tab.\n */\nfunction ArtifactsBackLink({\n workspaceId,\n artifactsReturn,\n}: {\n workspaceId: string;\n artifactsReturn: SiteViewArtifactsReturn;\n}) {\n const back = useArtifactsBackLink(workspaceId, artifactsReturn.fromSession, artifactsReturn);\n return (\n <Button\n asChild\n variant=\"ghost\"\n size=\"sm\"\n className=\"-ml-1.5 h-8 shrink-0 gap-1.5 px-2 text-fg-muted hover:text-fg pointer-coarse:min-h-11\"\n >\n <a\n href={back.href}\n onClick={back.onClick}\n aria-label=\"Back to Artifacts\"\n title=\"Back to Artifacts\"\n >\n <ArrowLeftIcon aria-hidden=\"true\" className=\"size-4\" />\n {back.label}\n </a>\n </Button>\n );\n}\n\n/**\n * The Site's newest conversations for this viewer, newest activity first.\n * The panel needs the newest to open by default and the titles to name the\n * one open; the sidebar is where all of them are listed.\n */\nfunction useSiteConversations(workspaceId: string, siteId: string) {\n const { client } = useAppContext();\n const [page, setPage] = useState<SessionListResponse | null>(null);\n const [error, setError] = useState<Error | null>(null);\n const request = useRef<AbortController | null>(null);\n const refresh = useCallback(async () => {\n request.current?.abort();\n const abort = new AbortController();\n request.current = abort;\n try {\n const next = await client.listSessionPage(workspaceId, {\n originSiteId: siteId,\n parentSessionId: null,\n sortBy: \"updatedAt\",\n limit: PAGE_SIZE,\n signal: abort.signal,\n });\n if (abort.signal.aborted) return;\n setPage(next);\n setError(null);\n } catch (failure) {\n if (!abort.signal.aborted)\n setError(failure instanceof Error ? failure : new Error(String(failure)));\n }\n }, [client, siteId, workspaceId]);\n useEffect(() => {\n void refresh();\n return () => request.current?.abort();\n }, [refresh]);\n // Only Site conversations matter here, which ordinary hints never name.\n useSessionListHintRefresh(refresh, error, { siteConversations: true });\n const sessions = useMemo(\n () =>\n page\n ? [...new Map([...page.pinned, ...page.sessions].map((session) => [session.id, session]))]\n .map(([, session]) => session)\n .filter((session) => !session.archived)\n .sort((a, b) => Date.parse(b.updatedAt) - Date.parse(a.updatedAt))\n : [],\n [page],\n );\n return { sessions, loaded: page !== null, error, refresh };\n}\n\n/**\n * How wide the panel may be: its own limit, less what the Site needs beside\n * it. Measured through the panel's own element, since a parent's ref isn't\n * attached yet when a child's layout effect first runs.\n */\nfunction useAvailableWidth(panel: RefObject<HTMLElement | null>) {\n const [max, setMax] = useState(SITE_CHAT_MAX_WIDTH);\n useLayoutEffect(() => {\n const element = panel.current?.parentElement;\n if (!element) return;\n const measure = () => {\n const { width } = element.getBoundingClientRect();\n // An unmeasured frame (no layout yet) keeps the panel's own limit; a\n // narrow one still lets the panel be its minimum.\n setMax(\n width === 0\n ? SITE_CHAT_MAX_WIDTH\n : Math.max(\n SITE_CHAT_MIN_WIDTH,\n Math.min(SITE_CHAT_MAX_WIDTH, Math.floor(width - SITE_MIN_WIDTH)),\n ),\n );\n };\n measure();\n if (typeof ResizeObserver === \"undefined\") return;\n const observer = new ResizeObserver(measure);\n observer.observe(element);\n return () => observer.disconnect();\n }, [panel]);\n return max;\n}\n\nfunction SiteChatPanel({\n workspaceId,\n siteId,\n site,\n retrySite,\n canPublish,\n conversation,\n startNew: startNewRequested,\n page,\n artifactsReturn,\n layout,\n updateLayout,\n onEvent,\n}: {\n workspaceId: string;\n siteId: string;\n site: SiteState;\n retrySite: () => void;\n /** Whether this person may publish the Site, and so edit it from here. */\n canPublish: boolean;\n conversation?: string | undefined;\n startNew: boolean;\n /** The Site's own address, kept when another conversation is chosen. */\n page?: string | undefined;\n /** The Artifacts page the Site was opened from, kept when another conversation is chosen. */\n artifactsReturn?: SiteViewArtifactsReturn | undefined;\n /** Width, hidden and side, remembered per person; shared with the Site beside it. */\n layout: SiteChatPanelLayout;\n updateLayout: (patch: Partial<SiteChatPanelLayout>) => void;\n /** Each new event in the open conversation, so the Site can follow its edits. */\n onEvent: (event: SessionEvent) => void;\n}) {\n const context = useAppContext();\n const api = useAppApi();\n const navigate = useNavigate();\n const panelId = useId();\n const panel = useRef<HTMLElement>(null);\n const hideButtonId = `${panelId}-hide`;\n const showButtonId = `${panelId}-show`;\n const list = useSiteConversations(workspaceId, siteId);\n const left = layout.position === \"left\";\n const maxWidth = useAvailableWidth(panel);\n const width = Math.min(layout.width, maxWidth);\n const [composing, setComposing] = useState(false);\n const [handoff, setHandoff] = useState<SiteHandoff | null>(null);\n const [focusRequest, setFocusRequest] = useState(0);\n // A conversation opened by link that isn't among the newest is named once read.\n const [linked, setLinked] = useState<Session | null>(null);\n\n // The conversation open without a choice is fixed when the Site opens, so\n // activity elsewhere never swaps it out from under the person reading it.\n const [defaultId, setDefaultId] = useState<string | null | undefined>(undefined);\n const newest = list.sessions[0]?.id ?? null;\n const pinned =\n defaultId === null ||\n (defaultId !== undefined && list.sessions.some((session) => session.id === defaultId))\n ? defaultId\n : newest;\n useEffect(() => {\n if (list.loaded && pinned !== defaultId) setDefaultId(pinned);\n }, [defaultId, list.loaded, pinned]);\n\n // Choosing a conversation anywhere (the rail, a link) ends composing and\n // shows a hidden panel: the sidebar is where conversations are chosen, so\n // choosing one must show it. Opening the page keeps the panel as it was.\n // Returning to the Site itself, as its rail row does, opens its newest.\n const previousConversation = useRef(conversation);\n const startingNew = useRef(false);\n useEffect(() => {\n const previous = previousConversation.current;\n previousConversation.current = conversation;\n if (conversation) {\n setComposing(false);\n if (conversation !== previous) updateLayout({ collapsed: false });\n } else if (previous && !startingNew.current) setDefaultId(undefined);\n startingNew.current = false;\n }, [conversation, updateLayout]);\n\n const toSite = useCallback(\n (search: { conversation?: string }, replace = false) =>\n void navigate({\n to: SITE_ROUTE,\n params: { workspaceId, siteId },\n // Choosing a conversation keeps the Site where it is.\n search: { ...artifactsReturn, ...search, ...(page ? { page } : {}) },\n ...(replace ? { replace: true } : {}),\n }),\n [artifactsReturn, navigate, page, siteId, workspaceId],\n );\n\n // A link may name a conversation that isn't this Site's, or one since\n // archived or deleted; fall back to the Site's own.\n const listed = !conversation || list.sessions.some((session) => session.id === conversation);\n // Through a ref: a host's navigate may change identity on every render.\n const fallBack = useRef(() => {});\n useEffect(() => {\n fallBack.current = () => toSite({}, true);\n }, [toSite]);\n useEffect(() => {\n if (!conversation || !list.loaded || listed) return;\n const abort = new AbortController();\n context.client.getSession(workspaceId, conversation, { signal: abort.signal }).then(\n (session) => {\n if (abort.signal.aborted) return;\n if (\n sessionSiteOrigin(session)?.siteId !== siteId ||\n session.parentSessionId !== null ||\n session.archived\n )\n fallBack.current();\n else setLinked(session);\n },\n (failure: unknown) => {\n if (\n !abort.signal.aborted &&\n failure instanceof OpenGeniApiError &&\n [403, 404].includes(failure.status)\n )\n fallBack.current();\n },\n );\n return () => abort.abort();\n }, [context.client, conversation, list.loaded, listed, siteId, workspaceId]);\n\n // Load the chat route with the panel, so a chat created here opens (and\n // takes focus below) without waiting for it. A failed load shows when the\n // route renders.\n useEffect(() => {\n void loadSessionRoute().catch(() => {});\n }, []);\n\n // Move focus to the composer New opened, or to the new conversation's.\n useEffect(() => {\n if (focusRequest === 0) return;\n let animation = 0;\n let tries = 0;\n const attempt = () => {\n const input = panel.current?.querySelector<HTMLTextAreaElement>(\"textarea:not([disabled])\");\n if (input) input.focus();\n else if ((tries += 1) < 60) animation = requestAnimationFrame(attempt);\n };\n animation = requestAnimationFrame(attempt);\n return () => cancelAnimationFrame(animation);\n }, [focusRequest]);\n\n // Hiding and showing keep focus on the control that brings the panel back.\n const [focusToggle, setFocusToggle] = useState<\"show\" | \"hide\" | null>(null);\n useEffect(() => {\n if (!focusToggle) return;\n document.getElementById(focusToggle === \"show\" ? showButtonId : hideButtonId)?.focus();\n setFocusToggle(null);\n }, [focusToggle, hideButtonId, showButtonId]);\n const hide = () => {\n updateLayout({ collapsed: true });\n setFocusToggle(\"show\");\n };\n const show = () => {\n updateLayout({ collapsed: false });\n setFocusToggle(\"hide\");\n };\n\n const ready = site.status === \"ready\" ? site : null;\n const canCreate =\n hasWorkspacePermission(context.accessContext, workspaceId, \"sessions:create\") &&\n ready !== null &&\n ready.versionId !== null &&\n !ready.archived;\n // The composer mounts once the Site has loaded; focus it then too.\n useEffect(() => {\n if (composing && canCreate) setFocusRequest((request) => request + 1);\n }, [canCreate, composing]);\n const selectedId = composing ? null : (conversation ?? pinned);\n const showComposer = composing || (list.loaded && selectedId === null);\n const startNew = () => {\n setComposing(true);\n setFocusRequest((request) => request + 1);\n // Nothing is selected while composing, so the rail marks the Site.\n if (conversation) {\n startingNew.current = true;\n toSite({});\n }\n };\n // Edit with Opengeni opens the Site this way: a new conversation, shown\n // even if the panel was hidden, its composer focused once it can be used.\n // The address drops the request so going back or reloading doesn't repeat it.\n // Once per request, also when the Site is already open: the host's\n // navigate (and so `toSite`) may change identity on every render.\n const startNewHandled = useRef(false);\n useEffect(() => {\n if (!startNewRequested) {\n startNewHandled.current = false;\n return;\n }\n if (startNewHandled.current) return;\n startNewHandled.current = true;\n setComposing(true);\n updateLayout({ collapsed: false });\n if (conversation) startingNew.current = true;\n toSite({}, true);\n }, [conversation, startNewRequested, toSite, updateLayout]);\n // Created like the Site's own chats: private to this person and listed\n // under the Site. The API refuses anything else a Site may not set; files\n // are the person's own, attached here in the console as in any chat.\n const versionId = ready?.versionId ?? null;\n // A retry of the same create keeps its first message's identity, so the\n // chat shows that message at once and recognizes it when it arrives.\n const clientEventIds = useRef(new Map<string, string>());\n const createdSessions = useRef(new Map<string, SessionCreationHandoff>());\n const createSession = useCallback(\n async (\n initialMessage: string,\n idempotencyKey: string,\n options: NewConversationCreateOptions,\n ): Promise<string> => {\n if (!versionId) throw new Error(\"This Site has no published version yet.\");\n const voice = options.startMode === \"realtime\";\n let clientEventId = clientEventIds.current.get(idempotencyKey);\n if (!voice && !clientEventId) {\n clientEventId = crypto.randomUUID();\n clientEventIds.current.set(idempotencyKey, clientEventId);\n }\n const created = await api.request<Session>(\n `/v1/workspaces/${encodeURIComponent(workspaceId)}/sessions`,\n {\n method: \"POST\",\n headers: { [SITE_ID_HEADER]: siteId, [SITE_VERSION_HEADER]: versionId },\n body: JSON.stringify({\n ...(voice ? { startMode: \"realtime\" } : { initialMessage, clientEventId }),\n idempotencyKey,\n ...(options.resources?.length ? { resources: options.resources } : {}),\n ...(options.model ? { model: options.model } : {}),\n ...(options.reasoningEffort ? { reasoningEffort: options.reasoningEffort } : {}),\n ...(options.latencyMode ? { latencyMode: options.latencyMode } : {}),\n }),\n },\n );\n if (clientEventId)\n createdSessions.current.set(created.id, { session: created, clientEventId });\n return created.id;\n },\n [api, siteId, versionId, workspaceId],\n );\n const handedOff = handoff !== null && handoff.sessionId === selectedId ? handoff : null;\n // For someone who may publish the Site, every message says which Site and\n // version \"the Site\" is; the API names it on the first one when it creates\n // the conversation. Others get no editing context, as from the API.\n const siteContext = useRef<string | null>(null);\n siteContext.current =\n canPublish && ready?.versionId && ready.revision !== null\n ? siteConversationContext({\n siteId,\n title: ready.title,\n versionId: ready.versionId,\n revision: ready.revision,\n })\n : null;\n const messageContext = useCallback(() => siteContext.current ?? undefined, []);\n // The handoff is for the conversation's first open only.\n useEffect(() => {\n if (handoff && selectedId !== null && selectedId !== handoff.sessionId) setHandoff(null);\n }, [handoff, selectedId]);\n // Focus follows a new conversation once it, not the composer, is mounted.\n const handoffId = handoff?.sessionId ?? null;\n useEffect(() => {\n if (handoffId !== null && selectedId === handoffId) setFocusRequest((request) => request + 1);\n }, [handoffId, selectedId]);\n\n const selected =\n list.sessions.find((session) => session.id === selectedId) ??\n (linked?.id === selectedId ? linked : null);\n // While composing, the composer's own headline names what to do.\n const title = showComposer\n ? null\n : selected\n ? sessionDisplayTitle(selected)\n : handedOff?.initialMessage\n ? handedOff.initialMessage\n : \"Conversation\";\n\n return (\n <>\n <aside\n ref={panel}\n id={panelId}\n aria-label=\"Chat\"\n hidden={layout.collapsed}\n style={{ [WIDTH_VARIABLE]: `${width}px` } as CSSProperties}\n data-position={layout.position}\n className={cn(\n \"relative flex min-h-0 shrink-0 flex-col border-border bg-bg lg:w-(--og-site-chat-width) max-lg:h-[55%] max-lg:w-full max-lg:border-t\",\n left ? \"lg:border-r\" : \"lg:border-l\",\n // Hidden, not unmounted: the conversation keeps its place and stream.\n layout.collapsed && \"hidden\",\n )}\n >\n <ResizeHandle\n label=\"Resize chat\"\n controls={panelId}\n value={width}\n min={SITE_CHAT_MIN_WIDTH}\n max={maxWidth}\n // The edge toward the Site: dragging toward it widens the chat.\n edge={left ? \"end\" : \"start\"}\n // Live while dragging without re-rendering the conversation.\n onResize={(next) => panel.current?.style.setProperty(WIDTH_VARIABLE, `${next}px`)}\n onResizeEnd={(next) => {\n panel.current?.style.setProperty(WIDTH_VARIABLE, `${next}px`);\n updateLayout({ width: next });\n }}\n onReset={() => updateLayout({ width: SITE_CHAT_DEFAULT_WIDTH })}\n onCollapse={hide}\n className=\"max-lg:hidden\"\n />\n <div className=\"flex h-12 shrink-0 items-center gap-1 border-b border-border pr-2 pl-4\">\n <h2\n className=\"min-w-0 flex-1 truncate text-sm font-medium text-fg\"\n title={title ?? undefined}\n >\n {title ?? <span className=\"sr-only\">New conversation</span>}\n </h2>\n {canCreate ? (\n <Button\n type=\"button\"\n variant={showComposer ? \"secondary\" : \"ghost\"}\n size=\"sm\"\n className=\"pointer-coarse:h-11\"\n onClick={startNew}\n >\n <PlusIcon aria-hidden=\"true\" className=\"size-3.5\" />\n New\n </Button>\n ) : null}\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label=\"More\"\n title=\"More\"\n className=\"text-fg-muted hover:text-fg pointer-coarse:size-11\"\n >\n <MoreHorizontalIcon aria-hidden=\"true\" className=\"size-4\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-52\">\n {selectedId ? (\n <DropdownMenuItem asChild>\n <Link\n to=\"/workspaces/$workspaceId/sessions/$sessionId\"\n params={{ workspaceId, sessionId: selectedId }}\n >\n <Maximize2Icon aria-hidden=\"true\" />\n Open as a full chat\n </Link>\n </DropdownMenuItem>\n ) : null}\n <DropdownMenuItem asChild>\n <Link\n to=\"/workspaces/$workspaceId/artifacts/$artifactId\"\n params={{ workspaceId, artifactId: siteId }}\n // Its details are by tab; without one the address opens\n // the Site view again. Settings shows Versions to people\n // who can't manage it.\n search={{ tab: \"settings\" }}\n >\n <InfoIcon aria-hidden=\"true\" />\n Site details\n </Link>\n </DropdownMenuItem>\n {/* Beside the Site only on wide screens; narrower ones stack the chat below. */}\n <DropdownMenuItem\n className=\"max-lg:hidden\"\n onSelect={() => updateLayout({ position: left ? \"right\" : \"left\" })}\n >\n {left ? (\n <PanelRightIcon aria-hidden=\"true\" />\n ) : (\n <PanelLeftIcon aria-hidden=\"true\" />\n )}\n {left ? \"Move chat to right\" : \"Move chat to left\"}\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n <Button\n id={hideButtonId}\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label=\"Hide chat\"\n title=\"Hide chat\"\n aria-controls={panelId}\n aria-expanded={true}\n className=\"text-fg-muted hover:text-fg pointer-coarse:size-11\"\n onClick={hide}\n >\n {left ? (\n <PanelLeftCloseIcon aria-hidden=\"true\" className=\"size-4\" />\n ) : (\n <PanelRightCloseIcon aria-hidden=\"true\" className=\"size-4\" />\n )}\n </Button>\n </div>\n <div className=\"flex min-h-0 flex-1 flex-col\">\n {!list.loaded && !conversation ? (\n list.error ? (\n <Retry message=\"Couldn’t load conversations.\" onRetry={() => void list.refresh()} />\n ) : (\n <PanelLoading label=\"Loading conversations\" />\n )\n ) : showComposer ? (\n canCreate ? (\n <ConsoleNewConversation\n key={`new:${siteId}`}\n workspaceId={workspaceId}\n createSession={createSession}\n title={ready ? `Ask about ${ready.title}` : \"New conversation\"}\n onCreated={(created) => {\n setHandoff({\n ...created,\n creation: createdSessions.current.get(created.sessionId) ?? null,\n });\n void list.refresh();\n // Opening it ends composing, like any other choice.\n toSite({ conversation: created.sessionId });\n }}\n className=\"min-h-0 flex-1 px-3 pb-3\"\n />\n ) : site.status === \"loading\" ? (\n <PanelLoading label=\"Loading Site\" />\n ) : site.status === \"error\" ? (\n <Retry message=\"Couldn’t load this Site.\" onRetry={retrySite} />\n ) : (\n <p className=\"px-4 py-4 text-sm text-fg-muted\">No conversations yet.</p>\n )\n ) : selectedId ? (\n // The regular chat, as on its own page, without the session panel\n // there's no room for beside a Site.\n <SessionUiFeaturesOff features={[\"dock\"]}>\n <Suspense fallback={<PanelLoading label=\"Loading conversation\" />}>\n <SessionRoute\n key={selectedId}\n workspaceId={workspaceId}\n sessionId={selectedId}\n placement=\"panel\"\n onEvent={onEvent}\n messageContext={messageContext}\n // The first prompt and anything typed meanwhile carry over.\n creationHandoff={handedOff?.creation ?? null}\n initialDraft={handedOff?.draft}\n // A voice-first chat starts its call once it opens.\n realtimeAutostartModel={handedOff?.realtimeModel}\n onRealtimeAutostartConsumed={() =>\n setHandoff((current) =>\n current?.sessionId === selectedId\n ? { ...current, realtimeModel: undefined }\n : current,\n )\n }\n onNewSession={canCreate ? startNew : undefined}\n />\n </Suspense>\n </SessionUiFeaturesOff>\n ) : null}\n </div>\n </aside>\n {layout.collapsed ? (\n <div\n className={cn(\n \"flex shrink-0 border-border bg-bg lg:w-12 lg:flex-col max-lg:h-12 max-lg:justify-end max-lg:border-t max-lg:px-2\",\n left ? \"lg:border-r\" : \"lg:border-l\",\n )}\n >\n <div className=\"flex h-12 items-center justify-center\">\n <Button\n id={showButtonId}\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label=\"Show chat\"\n title=\"Show chat\"\n aria-controls={panelId}\n aria-expanded={false}\n className=\"text-fg-muted hover:text-fg pointer-coarse:size-11\"\n onClick={show}\n >\n {left ? (\n <PanelLeftOpenIcon aria-hidden=\"true\" className=\"size-4\" />\n ) : (\n <PanelRightOpenIcon aria-hidden=\"true\" className=\"size-4\" />\n )}\n </Button>\n </div>\n </div>\n ) : null}\n </>\n );\n}\n\nfunction PanelLoading({ label }: { label: string }) {\n return (\n <div className=\"flex flex-col gap-3 px-4 py-4\" aria-busy=\"true\">\n <Skeleton className=\"h-4 w-2/3\" />\n <Skeleton className=\"h-16 w-full rounded-lg\" />\n <span className=\"sr-only\" role=\"status\">\n {label}\n </span>\n </div>\n );\n}\n\nfunction Retry({ message, onRetry }: { message: string; onRetry: () => void }) {\n return (\n <p className=\"px-4 py-4 text-sm text-fg-muted\">\n {message}{\" \"}\n <button type=\"button\" className=\"og-link\" onClick={onRetry}>\n Try again\n </button>\n </p>\n );\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/app/routes/site-view.tsx"],"sourcesContent":["import {\n SITE_ID_HEADER,\n SITE_VERSION_HEADER,\n siteConversationContext,\n} from \"@opengeni/contracts/site-session-http\";\nimport type { Session, SessionEvent, SessionListResponse } from \"@opengeni/sdk\";\nimport { OpenGeniApiError } from \"@opengeni/sdk/browser\";\nimport {\n ArrowLeftIcon,\n InfoIcon,\n Maximize2Icon,\n MoreHorizontalIcon,\n PanelLeftCloseIcon,\n PanelLeftIcon,\n PanelLeftOpenIcon,\n PanelRightCloseIcon,\n PanelRightIcon,\n PanelRightOpenIcon,\n PlusIcon,\n} from \"lucide-react\";\nimport {\n lazy,\n Suspense,\n useCallback,\n useEffect,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type RefObject,\n} from \"react\";\nimport { SiteView } from \"../../artifacts\";\nimport { SiteVersionMenu } from \"../components/artifacts/site-version-menu\";\nimport { useArtifactsBackLink } from \"../components/artifacts/artifact-page-chrome\";\nimport { CopyArtifactLinkButton } from \"../components/artifacts/copy-artifact-link\";\nimport type {\n CreatedConversation,\n NewConversationCreateOptions,\n} from \"../../hooks/use-new-conversation\";\nimport { Button } from \"../../ui/button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"../../ui/dropdown-menu\";\nimport { ResizeHandle } from \"../../ui/resize-handle\";\nimport { Skeleton } from \"../../ui/skeleton\";\nimport { useAppContext, type SessionCreationHandoff } from \"../app-context\";\nimport {\n ChatFileDropCover,\n ChatFileDropRelay,\n ChatFileDropRelayProvider,\n} from \"../components/session/chat-viewport-file-drop-target\";\nimport { ConsoleNewConversation } from \"../components/session/console-new-conversation\";\nimport {\n SitePublicationControl,\n useSitePublicationLink,\n} from \"../components/artifacts/site-public-link\";\nimport { useAppApi } from \"../lib/app-api\";\nimport { useConsoleSiteToolBridge, useConsoleSiteViewer } from \"../lib/console-site\";\nimport { Link, useNavigate } from \"../lib/navigation\";\nimport { hasWorkspacePermission } from \"../lib/permissions\";\nimport type { SiteViewArtifactsReturn } from \"../lib/routes\";\nimport { sessionDisplayTitle } from \"../lib/session-rename\";\nimport { sessionSiteOrigin } from \"../lib/session-site-origin\";\nimport { SessionUiFeaturesOff } from \"../lib/session-ui-features\";\nimport {\n SITE_CHAT_DEFAULT_WIDTH,\n SITE_CHAT_MAX_WIDTH,\n SITE_CHAT_MIN_WIDTH,\n SITE_MIN_WIDTH,\n useSiteChatPanelLayout,\n type SiteChatPanelLayout,\n} from \"../lib/site-chat-panel\";\nimport { useRecordSiteOpened } from \"../lib/site-opened\";\nimport { siteMayHaveChanged, useSiteLiveVersion } from \"../lib/site-live-version\";\nimport { useSessionListHintRefresh } from \"../lib/use-session-list-hint-refresh\";\nimport { cn } from \"../lib/utils\";\nimport { useWindowBarTitle } from \"../../ui/window-bar-title\";\n\n// Loaded when someone opens it, from the Artifacts route that already holds\n// the publish form and the Site's management (a separate lazy entry would\n// regroup the shared code-split chunks).\nconst SitePublishingPage = lazy(() =>\n import(\"./artifacts\").then((module) => ({\n default: module.SitePublishingPage,\n })),\n);\n// The regular chat route, loaded as the chat page loads it: a static import\n// would make the Site view share the chat's chunks and regroup them.\nconst loadSessionRoute = () => import(\"./session\");\nconst SessionRoute = lazy(() =>\n loadSessionRoute().then((module) => ({ default: module.SessionRoute })),\n);\n\nconst SITE_ROUTE = \"/workspaces/$workspaceId/sites/$siteId\";\n/** The panel's width while it sits beside the Site, set live while dragging. */\nconst WIDTH_VARIABLE = \"--og-site-chat-width\";\n\ntype SiteState =\n | { status: \"loading\" }\n | { status: \"error\" }\n | {\n status: \"ready\";\n title: string;\n versionId: string | null;\n revision: number | null;\n archived: boolean;\n };\n\n/** A conversation this panel just created, for its first open. */\ntype SiteHandoff = CreatedConversation & { creation: SessionCreationHandoff | null };\n\n/**\n * A Site with its chat beside it. The Site fills the page; the panel shows\n * one conversation (the newest when the Site opens, unless one is chosen) as\n * the regular chat (the same chat as on its own page, without the session\n * panel), narrower, and starts a new one with the regular composer. The\n * sidebar lists the Site's conversations, so the panel doesn't repeat them.\n * The panel can be resized, hidden and moved to the left; all three are\n * remembered per person, and choosing a conversation brings a hidden panel\n * back. Files dragged over the Site go to the chat, since the Site's frame\n * would otherwise take them.\n *\n * Edits go live: the Site is watched for new versions (its conversation's\n * tool calls, and a check every few seconds for anyone else's), the preview\n * reloads in place when one is published or restored, and the version chip\n * in its header offers the history and one-click Undo.\n *\n * Its header says whether the Site is on the web: \"Published\" opens or\n * copies the address, or Publish for people who can. Publishing and its\n * settings open the Site's own publish form in place of the Site, with the\n * chat still beside it.\n */\nexport function SiteViewRoute({\n workspaceId,\n siteId,\n conversation,\n startNew = false,\n page,\n artifactsReturn,\n}: {\n workspaceId: string;\n siteId: string;\n /** The conversation open in the panel; the newest when omitted. */\n conversation?: string | undefined;\n /** Open with a new conversation in the panel, its composer focused (Edit with Opengeni). */\n startNew?: boolean | undefined;\n /** The Site's own address (`?page=/admin`), answered to its `site.location`; its root when omitted. */\n page?: string | undefined;\n /**\n * The Artifacts page the Site was opened from: the Site's toolbar starts\n * with a Back to it, and the Site's own moves keep it.\n */\n artifactsReturn?: SiteViewArtifactsReturn | undefined;\n}) {\n const { client, accessContext } = useAppContext();\n const navigate = useNavigate();\n const viewer = useConsoleSiteViewer();\n // By value: a host may pass a new object on every render.\n const backKey = artifactsReturn?.browse ? JSON.stringify(artifactsReturn) : \"\";\n const back = useMemo<SiteViewArtifactsReturn | undefined>(\n () => (backKey ? (JSON.parse(backKey) as SiteViewArtifactsReturn) : undefined),\n [backKey],\n );\n // The Site's address lives in this page's URL, so Back/Forward, reloads\n // and copied links keep the Site where it was.\n const onSiteLocationChange = useCallback(\n (href: string, options: { replace: boolean }) =>\n void navigate({\n to: SITE_ROUTE,\n params: { workspaceId, siteId },\n search: {\n ...back,\n ...(conversation ? { conversation } : {}),\n ...(href === \"/\" ? {} : { page: href }),\n },\n ...(options.replace ? { replace: true } : {}),\n }),\n [back, conversation, navigate, siteId, workspaceId],\n );\n // Anyone who can open the Site sees whether it is published and its\n // address; Publish and the publish form are for people who can publish.\n const canPublish = hasWorkspacePermission(accessContext, workspaceId, \"artifacts:publish\");\n const publication = useSitePublicationLink({ client, workspaceId, siteId });\n const toolBridge = useConsoleSiteToolBridge(workspaceId);\n useRecordSiteOpened(client, workspaceId, siteId);\n const live = useSiteLiveVersion(client, workspaceId, siteId);\n const artifact = live.detail?.artifact;\n // The publish form, open for this Site; another Site starts without it.\n const siteKey = `${workspaceId}/${siteId}`;\n const [publishingFor, setPublishingFor] = useState<string | null>(null);\n const publishingSite =\n publishingFor === siteKey && artifact?.status === \"active\" ? artifact : null;\n const publishing = publishingSite !== null;\n // In the macOS app the Site's name is the window bar's title, as a page's\n // is, instead of in its toolbar (which shows it again in full screen, where\n // the bar's row is hidden). The publish form, opened in front of the Site,\n // names the bar once it has loaded; the Site's claim mounted first, so it\n // yields while the form is open.\n const titleInWindowBar = useWindowBarTitle(artifact?.title ?? null, publishing);\n // Full screen is the route's so opening the form can leave it first.\n const [fullScreen, setFullScreen] = useState(false);\n const openPublishing = useCallback(() => {\n setFullScreen(false);\n setPublishingFor(siteKey);\n }, [siteKey]);\n // Back from the form returns focus to the control that opened it.\n const siteColumn = useRef<HTMLDivElement>(null);\n const returnFocus = useRef(false);\n const closePublishing = useCallback(() => {\n returnFocus.current = true;\n setPublishingFor(null);\n }, []);\n useEffect(() => {\n if (publishing || !returnFocus.current) return;\n returnFocus.current = false;\n siteColumn.current?.querySelector<HTMLElement>(\"[data-site-publication]\")?.focus();\n }, [publishing]);\n const site = useMemo<SiteState>(\n () =>\n artifact\n ? {\n status: \"ready\",\n title: artifact.title,\n versionId: artifact.currentVersion?.id ?? null,\n revision: artifact.currentVersion?.revision ?? null,\n archived: artifact.status === \"archived\",\n }\n : live.failed\n ? { status: \"error\" }\n : { status: \"loading\" },\n [artifact, live.failed],\n );\n const { check } = live;\n const backControl = back ? (\n <ArtifactsBackLink workspaceId={workspaceId} artifactsReturn={back} />\n ) : undefined;\n const { layout, update: updateLayout } = useSiteChatPanelLayout(accessContext.subjectId);\n const [relay] = useState(() => new ChatFileDropRelay());\n return (\n <div\n className={cn(\n \"flex min-h-0 min-w-0 flex-1 max-lg:flex-col\",\n // The chat on the left: the Site keeps its place in the page, so\n // moving the chat neither reloads the Site nor restarts the chat.\n layout.position === \"left\" && \"lg:flex-row-reverse\",\n )}\n data-workspace-scroll-owner=\"self-managed\"\n data-site-chat-position={layout.position}\n >\n {/* The Site's column, not its chat: the Site's toolbar is this page's\n top row. */}\n <div\n ref={siteColumn}\n data-site-column\n className=\"relative flex min-h-0 min-w-0 flex-1 flex-col\"\n >\n {publishingSite ? (\n <Suspense fallback={<div className=\"min-h-0 flex-1 bg-bg\" />}>\n <SitePublishingPage\n key={siteKey}\n workspaceId={workspaceId}\n siteId={siteId}\n artifact={publishingSite}\n onPublication={publication.update}\n onBack={closePublishing}\n />\n </Suspense>\n ) : null}\n {artifact?.status === \"archived\" ? (\n <>\n {backControl ? (\n <div className=\"flex min-h-12 shrink-0 items-center border-b border-border/80 px-3 sm:px-4\">\n {backControl}\n </div>\n ) : null}\n <p className=\"p-4 text-sm text-fg-muted\">\n This Site is archived.{\" \"}\n <Link\n to=\"/workspaces/$workspaceId/artifacts/$artifactId\"\n params={{ workspaceId, artifactId: siteId }}\n search={{ tab: \"settings\" }}\n className=\"font-medium text-fg underline underline-offset-2\"\n >\n {canPublish ? \"Restore it from Site details\" : \"View Site details\"}\n </Link>\n </p>\n </>\n ) : (\n // Hidden, not unmounted, behind the form: the Site keeps its page.\n <div className={cn(\"flex min-h-0 min-w-0 flex-1 flex-col\", publishing && \"hidden\")}>\n <SiteView\n client={client}\n workspaceId={workspaceId}\n siteId={siteId}\n toolBridge={toolBridge}\n viewer={viewer}\n siteLocation={page ?? \"/\"}\n onSiteLocationChange={onSiteLocationChange}\n toolbarStart={backControl}\n showTitle={!titleInWindowBar || fullScreen}\n // The one publication control. The Site view never says \"Live\":\n // it stays current, and says so only while Updating or Reconnecting.\n liveStatus={\n <>\n <SitePublicationControl\n load={publication.load}\n canPublish={canPublish}\n onOpenPublishing={openPublishing}\n />\n <CopyArtifactLinkButton\n workspaceId={workspaceId}\n item={{ kind: \"site\", id: siteId }}\n className=\"size-8 rounded-md text-fg-muted hover:text-fg\"\n />\n </>\n }\n versionId={artifact ? (artifact.currentVersion?.id ?? null) : undefined}\n watch={live.watch}\n versionControl={\n live.detail ? (\n <SiteVersionMenu\n workspaceId={workspaceId}\n siteId={siteId}\n detail={live.detail}\n canPublish={canPublish}\n onRestored={check}\n />\n ) : undefined\n }\n fullScreen={fullScreen}\n onFullScreenChange={setFullScreen}\n archivedMessage={\n canPublish\n ? \"This Site is archived. Restore it from Site details.\"\n : \"This Site is archived.\"\n }\n />\n </div>\n )}\n <ChatFileDropCover relay={relay} enabled={!layout.collapsed} />\n </div>\n <ChatFileDropRelayProvider relay={relay}>\n <SiteChatPanel\n key={`${workspaceId}:${siteId}`}\n workspaceId={workspaceId}\n siteId={siteId}\n site={site}\n retrySite={live.retry}\n canPublish={canPublish}\n conversation={conversation}\n startNew={startNew}\n page={page}\n artifactsReturn={back}\n layout={layout}\n updateLayout={updateLayout}\n onEvent={(event) => {\n // A publish or restore from this conversation shows at once.\n if (siteMayHaveChanged(event)) check();\n }}\n />\n </ChatFileDropRelayProvider>\n </div>\n );\n}\n\nconst PAGE_SIZE = 30;\n\n/**\n * \"← Artifacts\" at the start of the Site's toolbar, when the Site was opened\n * from the Artifacts page: back to that page with its tab, search and sort\n * (and its scroll, which the page keeps). A real link, so it also opens in a\n * new tab.\n */\nfunction ArtifactsBackLink({\n workspaceId,\n artifactsReturn,\n}: {\n workspaceId: string;\n artifactsReturn: SiteViewArtifactsReturn;\n}) {\n const back = useArtifactsBackLink(workspaceId, artifactsReturn.fromSession, artifactsReturn);\n return (\n <Button\n asChild\n variant=\"ghost\"\n size=\"sm\"\n className=\"-ml-1.5 h-8 shrink-0 gap-1.5 px-2 text-fg-muted hover:text-fg pointer-coarse:min-h-11\"\n >\n <a\n href={back.href}\n onClick={back.onClick}\n aria-label=\"Back to Artifacts\"\n title=\"Back to Artifacts\"\n >\n <ArrowLeftIcon aria-hidden=\"true\" className=\"size-4\" />\n {back.label}\n </a>\n </Button>\n );\n}\n\n/**\n * The Site's newest conversations for this viewer, newest activity first.\n * The panel needs the newest to open by default and the titles to name the\n * one open; the sidebar is where all of them are listed.\n */\nfunction useSiteConversations(workspaceId: string, siteId: string) {\n const { client } = useAppContext();\n const [page, setPage] = useState<SessionListResponse | null>(null);\n const [error, setError] = useState<Error | null>(null);\n const request = useRef<AbortController | null>(null);\n const refresh = useCallback(async () => {\n request.current?.abort();\n const abort = new AbortController();\n request.current = abort;\n try {\n const next = await client.listSessionPage(workspaceId, {\n originSiteId: siteId,\n parentSessionId: null,\n sortBy: \"updatedAt\",\n limit: PAGE_SIZE,\n signal: abort.signal,\n });\n if (abort.signal.aborted) return;\n setPage(next);\n setError(null);\n } catch (failure) {\n if (!abort.signal.aborted)\n setError(failure instanceof Error ? failure : new Error(String(failure)));\n }\n }, [client, siteId, workspaceId]);\n useEffect(() => {\n void refresh();\n return () => request.current?.abort();\n }, [refresh]);\n // Only Site conversations matter here, which ordinary hints never name.\n useSessionListHintRefresh(refresh, error, { siteConversations: true });\n const sessions = useMemo(\n () =>\n page\n ? [...new Map([...page.pinned, ...page.sessions].map((session) => [session.id, session]))]\n .map(([, session]) => session)\n .filter((session) => !session.archived)\n .sort((a, b) => Date.parse(b.updatedAt) - Date.parse(a.updatedAt))\n : [],\n [page],\n );\n return { sessions, loaded: page !== null, error, refresh };\n}\n\n/**\n * How wide the panel may be: its own limit, less what the Site needs beside\n * it. Measured through the panel's own element, since a parent's ref isn't\n * attached yet when a child's layout effect first runs.\n */\nfunction useAvailableWidth(panel: RefObject<HTMLElement | null>) {\n const [max, setMax] = useState(SITE_CHAT_MAX_WIDTH);\n useLayoutEffect(() => {\n const element = panel.current?.parentElement;\n if (!element) return;\n const measure = () => {\n const { width } = element.getBoundingClientRect();\n // An unmeasured frame (no layout yet) keeps the panel's own limit; a\n // narrow one still lets the panel be its minimum.\n setMax(\n width === 0\n ? SITE_CHAT_MAX_WIDTH\n : Math.max(\n SITE_CHAT_MIN_WIDTH,\n Math.min(SITE_CHAT_MAX_WIDTH, Math.floor(width - SITE_MIN_WIDTH)),\n ),\n );\n };\n measure();\n if (typeof ResizeObserver === \"undefined\") return;\n const observer = new ResizeObserver(measure);\n observer.observe(element);\n return () => observer.disconnect();\n }, [panel]);\n return max;\n}\n\nfunction SiteChatPanel({\n workspaceId,\n siteId,\n site,\n retrySite,\n canPublish,\n conversation,\n startNew: startNewRequested,\n page,\n artifactsReturn,\n layout,\n updateLayout,\n onEvent,\n}: {\n workspaceId: string;\n siteId: string;\n site: SiteState;\n retrySite: () => void;\n /** Whether this person may publish the Site, and so edit it from here. */\n canPublish: boolean;\n conversation?: string | undefined;\n startNew: boolean;\n /** The Site's own address, kept when another conversation is chosen. */\n page?: string | undefined;\n /** The Artifacts page the Site was opened from, kept when another conversation is chosen. */\n artifactsReturn?: SiteViewArtifactsReturn | undefined;\n /** Width, hidden and side, remembered per person; shared with the Site beside it. */\n layout: SiteChatPanelLayout;\n updateLayout: (patch: Partial<SiteChatPanelLayout>) => void;\n /** Each new event in the open conversation, so the Site can follow its edits. */\n onEvent: (event: SessionEvent) => void;\n}) {\n const context = useAppContext();\n const api = useAppApi();\n const navigate = useNavigate();\n const panelId = useId();\n const panel = useRef<HTMLElement>(null);\n const hideButtonId = `${panelId}-hide`;\n const showButtonId = `${panelId}-show`;\n const list = useSiteConversations(workspaceId, siteId);\n const left = layout.position === \"left\";\n const maxWidth = useAvailableWidth(panel);\n const width = Math.min(layout.width, maxWidth);\n const [composing, setComposing] = useState(false);\n const [handoff, setHandoff] = useState<SiteHandoff | null>(null);\n const [focusRequest, setFocusRequest] = useState(0);\n // A conversation opened by link that isn't among the newest is named once read.\n const [linked, setLinked] = useState<Session | null>(null);\n\n // The conversation open without a choice is fixed when the Site opens, so\n // activity elsewhere never swaps it out from under the person reading it.\n const [defaultId, setDefaultId] = useState<string | null | undefined>(undefined);\n const newest = list.sessions[0]?.id ?? null;\n const pinned =\n defaultId === null ||\n (defaultId !== undefined && list.sessions.some((session) => session.id === defaultId))\n ? defaultId\n : newest;\n useEffect(() => {\n if (list.loaded && pinned !== defaultId) setDefaultId(pinned);\n }, [defaultId, list.loaded, pinned]);\n\n // Choosing a conversation anywhere (the rail, a link) ends composing and\n // shows a hidden panel: the sidebar is where conversations are chosen, so\n // choosing one must show it. Opening the page keeps the panel as it was.\n // Returning to the Site itself, as its rail row does, opens its newest.\n const previousConversation = useRef(conversation);\n const startingNew = useRef(false);\n useEffect(() => {\n const previous = previousConversation.current;\n previousConversation.current = conversation;\n if (conversation) {\n setComposing(false);\n if (conversation !== previous) updateLayout({ collapsed: false });\n } else if (previous && !startingNew.current) setDefaultId(undefined);\n startingNew.current = false;\n }, [conversation, updateLayout]);\n\n const toSite = useCallback(\n (search: { conversation?: string }, replace = false) =>\n void navigate({\n to: SITE_ROUTE,\n params: { workspaceId, siteId },\n // Choosing a conversation keeps the Site where it is.\n search: { ...artifactsReturn, ...search, ...(page ? { page } : {}) },\n ...(replace ? { replace: true } : {}),\n }),\n [artifactsReturn, navigate, page, siteId, workspaceId],\n );\n\n // A link may name a conversation that isn't this Site's, or one since\n // archived or deleted; fall back to the Site's own.\n const listed = !conversation || list.sessions.some((session) => session.id === conversation);\n // Through a ref: a host's navigate may change identity on every render.\n const fallBack = useRef(() => {});\n useEffect(() => {\n fallBack.current = () => toSite({}, true);\n }, [toSite]);\n useEffect(() => {\n if (!conversation || !list.loaded || listed) return;\n const abort = new AbortController();\n context.client.getSession(workspaceId, conversation, { signal: abort.signal }).then(\n (session) => {\n if (abort.signal.aborted) return;\n if (\n sessionSiteOrigin(session)?.siteId !== siteId ||\n session.parentSessionId !== null ||\n session.archived\n )\n fallBack.current();\n else setLinked(session);\n },\n (failure: unknown) => {\n if (\n !abort.signal.aborted &&\n failure instanceof OpenGeniApiError &&\n [403, 404].includes(failure.status)\n )\n fallBack.current();\n },\n );\n return () => abort.abort();\n }, [context.client, conversation, list.loaded, listed, siteId, workspaceId]);\n\n // Load the chat route with the panel, so a chat created here opens (and\n // takes focus below) without waiting for it. A failed load shows when the\n // route renders.\n useEffect(() => {\n void loadSessionRoute().catch(() => {});\n }, []);\n\n // Move focus to the composer New opened, or to the new conversation's.\n useEffect(() => {\n if (focusRequest === 0) return;\n let animation = 0;\n let tries = 0;\n const attempt = () => {\n const input = panel.current?.querySelector<HTMLTextAreaElement>(\"textarea:not([disabled])\");\n if (input) input.focus();\n else if ((tries += 1) < 60) animation = requestAnimationFrame(attempt);\n };\n animation = requestAnimationFrame(attempt);\n return () => cancelAnimationFrame(animation);\n }, [focusRequest]);\n\n // Hiding and showing keep focus on the control that brings the panel back.\n const [focusToggle, setFocusToggle] = useState<\"show\" | \"hide\" | null>(null);\n useEffect(() => {\n if (!focusToggle) return;\n document.getElementById(focusToggle === \"show\" ? showButtonId : hideButtonId)?.focus();\n setFocusToggle(null);\n }, [focusToggle, hideButtonId, showButtonId]);\n const hide = () => {\n updateLayout({ collapsed: true });\n setFocusToggle(\"show\");\n };\n const show = () => {\n updateLayout({ collapsed: false });\n setFocusToggle(\"hide\");\n };\n\n const ready = site.status === \"ready\" ? site : null;\n const canCreate =\n hasWorkspacePermission(context.accessContext, workspaceId, \"sessions:create\") &&\n ready !== null &&\n ready.versionId !== null &&\n !ready.archived;\n // The composer mounts once the Site has loaded; focus it then too.\n useEffect(() => {\n if (composing && canCreate) setFocusRequest((request) => request + 1);\n }, [canCreate, composing]);\n const selectedId = composing ? null : (conversation ?? pinned);\n const showComposer = composing || (list.loaded && selectedId === null);\n const startNew = () => {\n setComposing(true);\n setFocusRequest((request) => request + 1);\n // Nothing is selected while composing, so the rail marks the Site.\n if (conversation) {\n startingNew.current = true;\n toSite({});\n }\n };\n // Edit with Opengeni opens the Site this way: a new conversation, shown\n // even if the panel was hidden, its composer focused once it can be used.\n // The address drops the request so going back or reloading doesn't repeat it.\n // Once per request, also when the Site is already open: the host's\n // navigate (and so `toSite`) may change identity on every render.\n const startNewHandled = useRef(false);\n useEffect(() => {\n if (!startNewRequested) {\n startNewHandled.current = false;\n return;\n }\n if (startNewHandled.current) return;\n startNewHandled.current = true;\n setComposing(true);\n updateLayout({ collapsed: false });\n if (conversation) startingNew.current = true;\n toSite({}, true);\n }, [conversation, startNewRequested, toSite, updateLayout]);\n // Created like the Site's own chats: private to this person and listed\n // under the Site. The API refuses anything else a Site may not set; files\n // are the person's own, attached here in the console as in any chat.\n const versionId = ready?.versionId ?? null;\n // A retry of the same create keeps its first message's identity, so the\n // chat shows that message at once and recognizes it when it arrives.\n const clientEventIds = useRef(new Map<string, string>());\n const createdSessions = useRef(new Map<string, SessionCreationHandoff>());\n const createSession = useCallback(\n async (\n initialMessage: string,\n idempotencyKey: string,\n options: NewConversationCreateOptions,\n ): Promise<string> => {\n if (!versionId) throw new Error(\"This Site has no published version yet.\");\n const voice = options.startMode === \"realtime\";\n let clientEventId = clientEventIds.current.get(idempotencyKey);\n if (!voice && !clientEventId) {\n clientEventId = crypto.randomUUID();\n clientEventIds.current.set(idempotencyKey, clientEventId);\n }\n const created = await api.request<Session>(\n `/v1/workspaces/${encodeURIComponent(workspaceId)}/sessions`,\n {\n method: \"POST\",\n headers: { [SITE_ID_HEADER]: siteId, [SITE_VERSION_HEADER]: versionId },\n body: JSON.stringify({\n ...(voice ? { startMode: \"realtime\" } : { initialMessage, clientEventId }),\n idempotencyKey,\n ...(options.resources?.length ? { resources: options.resources } : {}),\n ...(options.model ? { model: options.model } : {}),\n ...(options.reasoningEffort ? { reasoningEffort: options.reasoningEffort } : {}),\n ...(options.latencyMode ? { latencyMode: options.latencyMode } : {}),\n }),\n },\n );\n if (clientEventId)\n createdSessions.current.set(created.id, { session: created, clientEventId });\n return created.id;\n },\n [api, siteId, versionId, workspaceId],\n );\n const handedOff = handoff !== null && handoff.sessionId === selectedId ? handoff : null;\n // For someone who may publish the Site, every message says which Site and\n // version \"the Site\" is; the API names it on the first one when it creates\n // the conversation. Others get no editing context, as from the API.\n const siteContext = useRef<string | null>(null);\n siteContext.current =\n canPublish && ready?.versionId && ready.revision !== null\n ? siteConversationContext({\n siteId,\n title: ready.title,\n versionId: ready.versionId,\n revision: ready.revision,\n })\n : null;\n const messageContext = useCallback(() => siteContext.current ?? undefined, []);\n // The handoff is for the conversation's first open only.\n useEffect(() => {\n if (handoff && selectedId !== null && selectedId !== handoff.sessionId) setHandoff(null);\n }, [handoff, selectedId]);\n // Focus follows a new conversation once it, not the composer, is mounted.\n const handoffId = handoff?.sessionId ?? null;\n useEffect(() => {\n if (handoffId !== null && selectedId === handoffId) setFocusRequest((request) => request + 1);\n }, [handoffId, selectedId]);\n\n const selected =\n list.sessions.find((session) => session.id === selectedId) ??\n (linked?.id === selectedId ? linked : null);\n // While composing, the composer's own headline names what to do.\n const title = showComposer\n ? null\n : selected\n ? sessionDisplayTitle(selected)\n : handedOff?.initialMessage\n ? handedOff.initialMessage\n : \"Conversation\";\n\n return (\n <>\n <aside\n ref={panel}\n id={panelId}\n aria-label=\"Chat\"\n hidden={layout.collapsed}\n style={{ [WIDTH_VARIABLE]: `${width}px` } as CSSProperties}\n data-position={layout.position}\n className={cn(\n \"relative flex min-h-0 shrink-0 flex-col border-border bg-bg lg:w-(--og-site-chat-width) max-lg:h-[55%] max-lg:w-full max-lg:border-t\",\n left ? \"lg:border-r\" : \"lg:border-l\",\n // Hidden, not unmounted: the conversation keeps its place and stream.\n layout.collapsed && \"hidden\",\n )}\n >\n <ResizeHandle\n label=\"Resize chat\"\n controls={panelId}\n value={width}\n min={SITE_CHAT_MIN_WIDTH}\n max={maxWidth}\n // The edge toward the Site: dragging toward it widens the chat.\n edge={left ? \"end\" : \"start\"}\n // Live while dragging without re-rendering the conversation.\n onResize={(next) => panel.current?.style.setProperty(WIDTH_VARIABLE, `${next}px`)}\n onResizeEnd={(next) => {\n panel.current?.style.setProperty(WIDTH_VARIABLE, `${next}px`);\n updateLayout({ width: next });\n }}\n onReset={() => updateLayout({ width: SITE_CHAT_DEFAULT_WIDTH })}\n onCollapse={hide}\n className=\"max-lg:hidden\"\n />\n <div className=\"flex h-12 shrink-0 items-center gap-1 border-b border-border pr-2 pl-4\">\n <h2\n className=\"min-w-0 flex-1 truncate text-sm font-medium text-fg\"\n title={title ?? undefined}\n >\n {title ?? <span className=\"sr-only\">New conversation</span>}\n </h2>\n {canCreate ? (\n <Button\n type=\"button\"\n variant={showComposer ? \"secondary\" : \"ghost\"}\n size=\"sm\"\n className=\"pointer-coarse:h-11\"\n onClick={startNew}\n >\n <PlusIcon aria-hidden=\"true\" className=\"size-3.5\" />\n New\n </Button>\n ) : null}\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label=\"More\"\n title=\"More\"\n className=\"text-fg-muted hover:text-fg pointer-coarse:size-11\"\n >\n <MoreHorizontalIcon aria-hidden=\"true\" className=\"size-4\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-52\">\n {selectedId ? (\n <DropdownMenuItem asChild>\n <Link\n to=\"/workspaces/$workspaceId/sessions/$sessionId\"\n params={{ workspaceId, sessionId: selectedId }}\n >\n <Maximize2Icon aria-hidden=\"true\" />\n Open as a full chat\n </Link>\n </DropdownMenuItem>\n ) : null}\n <DropdownMenuItem asChild>\n <Link\n to=\"/workspaces/$workspaceId/artifacts/$artifactId\"\n params={{ workspaceId, artifactId: siteId }}\n // Its details are by tab; without one the address opens\n // the Site view again. Settings shows Versions to people\n // who can't manage it.\n search={{ tab: \"settings\" }}\n >\n <InfoIcon aria-hidden=\"true\" />\n Site details\n </Link>\n </DropdownMenuItem>\n {/* Beside the Site only on wide screens; narrower ones stack the chat below. */}\n <DropdownMenuItem\n className=\"max-lg:hidden\"\n onSelect={() => updateLayout({ position: left ? \"right\" : \"left\" })}\n >\n {left ? (\n <PanelRightIcon aria-hidden=\"true\" />\n ) : (\n <PanelLeftIcon aria-hidden=\"true\" />\n )}\n {left ? \"Move chat to right\" : \"Move chat to left\"}\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n <Button\n id={hideButtonId}\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label=\"Hide chat\"\n title=\"Hide chat\"\n aria-controls={panelId}\n aria-expanded={true}\n className=\"text-fg-muted hover:text-fg pointer-coarse:size-11\"\n onClick={hide}\n >\n {left ? (\n <PanelLeftCloseIcon aria-hidden=\"true\" className=\"size-4\" />\n ) : (\n <PanelRightCloseIcon aria-hidden=\"true\" className=\"size-4\" />\n )}\n </Button>\n </div>\n <div className=\"flex min-h-0 flex-1 flex-col\">\n {!list.loaded && !conversation ? (\n list.error ? (\n <Retry message=\"Couldn’t load conversations.\" onRetry={() => void list.refresh()} />\n ) : (\n <PanelLoading label=\"Loading conversations\" />\n )\n ) : showComposer ? (\n canCreate ? (\n <ConsoleNewConversation\n key={`new:${siteId}`}\n workspaceId={workspaceId}\n createSession={createSession}\n title={ready ? `Ask about ${ready.title}` : \"New conversation\"}\n onCreated={(created) => {\n setHandoff({\n ...created,\n creation: createdSessions.current.get(created.sessionId) ?? null,\n });\n void list.refresh();\n // Opening it ends composing, like any other choice.\n toSite({ conversation: created.sessionId });\n }}\n className=\"min-h-0 flex-1 px-3 pb-3\"\n />\n ) : site.status === \"loading\" ? (\n <PanelLoading label=\"Loading Site\" />\n ) : site.status === \"error\" ? (\n <Retry message=\"Couldn’t load this Site.\" onRetry={retrySite} />\n ) : (\n <p className=\"px-4 py-4 text-sm text-fg-muted\">No conversations yet.</p>\n )\n ) : selectedId ? (\n // The regular chat, as on its own page, without the session panel\n // there's no room for beside a Site.\n <SessionUiFeaturesOff features={[\"dock\"]}>\n <Suspense fallback={<PanelLoading label=\"Loading conversation\" />}>\n <SessionRoute\n key={selectedId}\n workspaceId={workspaceId}\n sessionId={selectedId}\n placement=\"panel\"\n onEvent={onEvent}\n messageContext={messageContext}\n // The first prompt and anything typed meanwhile carry over.\n creationHandoff={handedOff?.creation ?? null}\n initialDraft={handedOff?.draft}\n // A voice-first chat starts its call once it opens.\n realtimeAutostartModel={handedOff?.realtimeModel}\n onRealtimeAutostartConsumed={() =>\n setHandoff((current) =>\n current?.sessionId === selectedId\n ? { ...current, realtimeModel: undefined }\n : current,\n )\n }\n onNewSession={canCreate ? startNew : undefined}\n />\n </Suspense>\n </SessionUiFeaturesOff>\n ) : null}\n </div>\n </aside>\n {layout.collapsed ? (\n <div\n className={cn(\n \"flex shrink-0 border-border bg-bg lg:w-12 lg:flex-col max-lg:h-12 max-lg:justify-end max-lg:border-t max-lg:px-2\",\n left ? \"lg:border-r\" : \"lg:border-l\",\n )}\n >\n <div className=\"flex h-12 items-center justify-center\">\n <Button\n id={showButtonId}\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label=\"Show chat\"\n title=\"Show chat\"\n aria-controls={panelId}\n aria-expanded={false}\n className=\"text-fg-muted hover:text-fg pointer-coarse:size-11\"\n onClick={show}\n >\n {left ? (\n <PanelLeftOpenIcon aria-hidden=\"true\" className=\"size-4\" />\n ) : (\n <PanelRightOpenIcon aria-hidden=\"true\" className=\"size-4\" />\n )}\n </Button>\n </div>\n </div>\n ) : null}\n </>\n );\n}\n\nfunction PanelLoading({ label }: { label: string }) {\n return (\n <div className=\"flex flex-col gap-3 px-4 py-4\" aria-busy=\"true\">\n <Skeleton className=\"h-4 w-2/3\" />\n <Skeleton className=\"h-16 w-full rounded-lg\" />\n <span className=\"sr-only\" role=\"status\">\n {label}\n </span>\n </div>\n );\n}\n\nfunction Retry({ message, onRetry }: { message: string; onRetry: () => void }) {\n return (\n <p className=\"px-4 py-4 text-sm text-fg-muted\">\n {message}{\" \"}\n <button type=\"button\" className=\"og-link\" onClick={onRetry}>\n Try again\n </button>\n </p>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,wBAAwB;AACjC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AA+MH,SAmCM,UAnCN,KAyCQ,YAzCR;AAzJJ,IAAM,qBAAqB;AAAA,EAAK,MAC9B,OAAO,gBAAa,EAAE,KAAK,CAAC,YAAY;AAAA,IACtC,SAAS,OAAO;AAAA,EAClB,EAAE;AACJ;AAGA,IAAM,mBAAmB,MAAM,OAAO,cAAW;AACjD,IAAM,eAAe;AAAA,EAAK,MACxB,iBAAiB,EAAE,KAAK,CAAC,YAAY,EAAE,SAAS,OAAO,aAAa,EAAE;AACxE;AAEA,IAAM,aAAa;AAEnB,IAAM,iBAAiB;AAqChB,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA;AACF,GAcG;AACD,QAAM,EAAE,QAAQ,cAAc,IAAI,cAAc;AAChD,QAAM,WAAW,YAAY;AAC7B,QAAM,SAAS,qBAAqB;AAEpC,QAAM,UAAU,iBAAiB,SAAS,KAAK,UAAU,eAAe,IAAI;AAC5E,QAAM,OAAO;AAAA,IACX,MAAO,UAAW,KAAK,MAAM,OAAO,IAAgC;AAAA,IACpE,CAAC,OAAO;AAAA,EACV;AAGA,QAAM,uBAAuB;AAAA,IAC3B,CAAC,MAAc,YACb,KAAK,SAAS;AAAA,MACZ,IAAI;AAAA,MACJ,QAAQ,EAAE,aAAa,OAAO;AAAA,MAC9B,QAAQ;AAAA,QACN,GAAG;AAAA,QACH,GAAI,eAAe,EAAE,aAAa,IAAI,CAAC;AAAA,QACvC,GAAI,SAAS,MAAM,CAAC,IAAI,EAAE,MAAM,KAAK;AAAA,MACvC;AAAA,MACA,GAAI,QAAQ,UAAU,EAAE,SAAS,KAAK,IAAI,CAAC;AAAA,IAC7C,CAAC;AAAA,IACH,CAAC,MAAM,cAAc,UAAU,QAAQ,WAAW;AAAA,EACpD;AAGA,QAAM,aAAa,uBAAuB,eAAe,aAAa,mBAAmB;AACzF,QAAM,cAAc,uBAAuB,EAAE,QAAQ,aAAa,OAAO,CAAC;AAC1E,QAAM,aAAa,yBAAyB,WAAW;AACvD,sBAAoB,QAAQ,aAAa,MAAM;AAC/C,QAAM,OAAO,mBAAmB,QAAQ,aAAa,MAAM;AAC3D,QAAM,WAAW,KAAK,QAAQ;AAE9B,QAAM,UAAU,GAAG,WAAW,IAAI,MAAM;AACxC,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAwB,IAAI;AACtE,QAAM,iBACJ,kBAAkB,WAAW,UAAU,WAAW,WAAW,WAAW;AAC1E,QAAM,aAAa,mBAAmB;AAMtC,QAAM,mBAAmB,kBAAkB,UAAU,SAAS,MAAM,UAAU;AAE9E,QAAM,CAAC,YAAY,aAAa,IAAI,SAAS,KAAK;AAClD,QAAM,iBAAiB,YAAY,MAAM;AACvC,kBAAc,KAAK;AACnB,qBAAiB,OAAO;AAAA,EAC1B,GAAG,CAAC,OAAO,CAAC;AAEZ,QAAM,aAAa,OAAuB,IAAI;AAC9C,QAAM,cAAc,OAAO,KAAK;AAChC,QAAM,kBAAkB,YAAY,MAAM;AACxC,gBAAY,UAAU;AACtB,qBAAiB,IAAI;AAAA,EACvB,GAAG,CAAC,CAAC;AACL,YAAU,MAAM;AACd,QAAI,cAAc,CAAC,YAAY,QAAS;AACxC,gBAAY,UAAU;AACtB,eAAW,SAAS,cAA2B,yBAAyB,GAAG,MAAM;AAAA,EACnF,GAAG,CAAC,UAAU,CAAC;AACf,QAAM,OAAO;AAAA,IACX,MACE,WACI;AAAA,MACE,QAAQ;AAAA,MACR,OAAO,SAAS;AAAA,MAChB,WAAW,SAAS,gBAAgB,MAAM;AAAA,MAC1C,UAAU,SAAS,gBAAgB,YAAY;AAAA,MAC/C,UAAU,SAAS,WAAW;AAAA,IAChC,IACA,KAAK,SACH,EAAE,QAAQ,QAAQ,IAClB,EAAE,QAAQ,UAAU;AAAA,IAC5B,CAAC,UAAU,KAAK,MAAM;AAAA,EACxB;AACA,QAAM,EAAE,MAAM,IAAI;AAClB,QAAM,cAAc,OAClB,oBAAC,qBAAkB,aAA0B,iBAAiB,MAAM,IAClE;AACJ,QAAM,EAAE,QAAQ,QAAQ,aAAa,IAAI,uBAAuB,cAAc,SAAS;AACvF,QAAM,CAAC,KAAK,IAAI,SAAS,MAAM,IAAI,kBAAkB,CAAC;AACtD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA;AAAA;AAAA,QAGA,OAAO,aAAa,UAAU;AAAA,MAChC;AAAA,MACA,+BAA4B;AAAA,MAC5B,2BAAyB,OAAO;AAAA,MAIhC;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,KAAK;AAAA,YACL,oBAAgB;AAAA,YAChB,WAAU;AAAA,YAET;AAAA,+BACC,oBAAC,YAAS,UAAU,oBAAC,SAAI,WAAU,wBAAuB,GACxD;AAAA,gBAAC;AAAA;AAAA,kBAEC;AAAA,kBACA;AAAA,kBACA,UAAU;AAAA,kBACV,eAAe,YAAY;AAAA,kBAC3B,QAAQ;AAAA;AAAA,gBALH;AAAA,cAMP,GACF,IACE;AAAA,cACH,UAAU,WAAW,aACpB,iCACG;AAAA,8BACC,oBAAC,SAAI,WAAU,8EACZ,uBACH,IACE;AAAA,gBACJ,qBAAC,OAAE,WAAU,6BAA4B;AAAA;AAAA,kBAChB;AAAA,kBACvB;AAAA,oBAAC;AAAA;AAAA,sBACC,IAAG;AAAA,sBACH,QAAQ,EAAE,aAAa,YAAY,OAAO;AAAA,sBAC1C,QAAQ,EAAE,KAAK,WAAW;AAAA,sBAC1B,WAAU;AAAA,sBAET,uBAAa,iCAAiC;AAAA;AAAA,kBACjD;AAAA,mBACF;AAAA,iBACF;AAAA;AAAA,gBAGA,oBAAC,SAAI,WAAW,GAAG,wCAAwC,cAAc,QAAQ,GAC/E;AAAA,kBAAC;AAAA;AAAA,oBACC;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA;AAAA,oBACA,cAAc,QAAQ;AAAA,oBACtB;AAAA,oBACA,cAAc;AAAA,oBACd,WAAW,CAAC,oBAAoB;AAAA,oBAGhC,YACE,iCACE;AAAA;AAAA,wBAAC;AAAA;AAAA,0BACC,MAAM,YAAY;AAAA,0BAClB;AAAA,0BACA,kBAAkB;AAAA;AAAA,sBACpB;AAAA,sBACA;AAAA,wBAAC;AAAA;AAAA,0BACC;AAAA,0BACA,MAAM,EAAE,MAAM,QAAQ,IAAI,OAAO;AAAA,0BACjC,WAAU;AAAA;AAAA,sBACZ;AAAA,uBACF;AAAA,oBAEF,WAAW,WAAY,SAAS,gBAAgB,MAAM,OAAQ;AAAA,oBAC9D,OAAO,KAAK;AAAA,oBACZ,gBACE,KAAK,SACH;AAAA,sBAAC;AAAA;AAAA,wBACC;AAAA,wBACA;AAAA,wBACA,QAAQ,KAAK;AAAA,wBACb;AAAA,wBACA,YAAY;AAAA;AAAA,oBACd,IACE;AAAA,oBAEN;AAAA,oBACA,oBAAoB;AAAA,oBACpB,iBACE,aACI,yDACA;AAAA;AAAA,gBAER,GACF;AAAA;AAAA,cAEF,oBAAC,qBAAkB,OAAc,SAAS,CAAC,OAAO,WAAW;AAAA;AAAA;AAAA,QAC/D;AAAA,QACA,oBAAC,6BAA0B,OACzB;AAAA,UAAC;AAAA;AAAA,YAEC;AAAA,YACA;AAAA,YACA;AAAA,YACA,WAAW,KAAK;AAAA,YAChB;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,iBAAiB;AAAA,YACjB;AAAA,YACA;AAAA,YACA,SAAS,CAAC,UAAU;AAElB,kBAAI,mBAAmB,KAAK,EAAG,OAAM;AAAA,YACvC;AAAA;AAAA,UAfK,GAAG,WAAW,IAAI,MAAM;AAAA,QAgB/B,GACF;AAAA;AAAA;AAAA,EACF;AAEJ;AAEA,IAAM,YAAY;AAQlB,SAAS,kBAAkB;AAAA,EACzB;AAAA,EACA;AACF,GAGG;AACD,QAAM,OAAO,qBAAqB,aAAa,gBAAgB,aAAa,eAAe;AAC3F,SACE;AAAA,IAAC;AAAA;AAAA,MACC,SAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,WAAU;AAAA,MAEV;AAAA,QAAC;AAAA;AAAA,UACC,MAAM,KAAK;AAAA,UACX,SAAS,KAAK;AAAA,UACd,cAAW;AAAA,UACX,OAAM;AAAA,UAEN;AAAA,gCAAC,iBAAc,eAAY,QAAO,WAAU,UAAS;AAAA,YACpD,KAAK;AAAA;AAAA;AAAA,MACR;AAAA;AAAA,EACF;AAEJ;AAOA,SAAS,qBAAqB,aAAqB,QAAgB;AACjE,QAAM,EAAE,OAAO,IAAI,cAAc;AACjC,QAAM,CAAC,MAAM,OAAO,IAAI,SAAqC,IAAI;AACjE,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAuB,IAAI;AACrD,QAAM,UAAU,OAA+B,IAAI;AACnD,QAAM,UAAU,YAAY,YAAY;AACtC,YAAQ,SAAS,MAAM;AACvB,UAAM,QAAQ,IAAI,gBAAgB;AAClC,YAAQ,UAAU;AAClB,QAAI;AACF,YAAM,OAAO,MAAM,OAAO,gBAAgB,aAAa;AAAA,QACrD,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,QAAQ,MAAM;AAAA,MAChB,CAAC;AACD,UAAI,MAAM,OAAO,QAAS;AAC1B,cAAQ,IAAI;AACZ,eAAS,IAAI;AAAA,IACf,SAAS,SAAS;AAChB,UAAI,CAAC,MAAM,OAAO;AAChB,iBAAS,mBAAmB,QAAQ,UAAU,IAAI,MAAM,OAAO,OAAO,CAAC,CAAC;AAAA,IAC5E;AAAA,EACF,GAAG,CAAC,QAAQ,QAAQ,WAAW,CAAC;AAChC,YAAU,MAAM;AACd,SAAK,QAAQ;AACb,WAAO,MAAM,QAAQ,SAAS,MAAM;AAAA,EACtC,GAAG,CAAC,OAAO,CAAC;AAEZ,4BAA0B,SAAS,OAAO,EAAE,mBAAmB,KAAK,CAAC;AACrE,QAAM,WAAW;AAAA,IACf,MACE,OACI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,KAAK,QAAQ,GAAG,KAAK,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,EACpF,IAAI,CAAC,CAAC,EAAE,OAAO,MAAM,OAAO,EAC5B,OAAO,CAAC,YAAY,CAAC,QAAQ,QAAQ,EACrC,KAAK,CAAC,GAAG,MAAM,KAAK,MAAM,EAAE,SAAS,IAAI,KAAK,MAAM,EAAE,SAAS,CAAC,IACnE,CAAC;AAAA,IACP,CAAC,IAAI;AAAA,EACP;AACA,SAAO,EAAE,UAAU,QAAQ,SAAS,MAAM,OAAO,QAAQ;AAC3D;AAOA,SAAS,kBAAkB,OAAsC;AAC/D,QAAM,CAAC,KAAK,MAAM,IAAI,SAAS,mBAAmB;AAClD,kBAAgB,MAAM;AACpB,UAAM,UAAU,MAAM,SAAS;AAC/B,QAAI,CAAC,QAAS;AACd,UAAM,UAAU,MAAM;AACpB,YAAM,EAAE,MAAM,IAAI,QAAQ,sBAAsB;AAGhD;AAAA,QACE,UAAU,IACN,sBACA,KAAK;AAAA,UACH;AAAA,UACA,KAAK,IAAI,qBAAqB,KAAK,MAAM,QAAQ,cAAc,CAAC;AAAA,QAClE;AAAA,MACN;AAAA,IACF;AACA,YAAQ;AACR,QAAI,OAAO,mBAAmB,YAAa;AAC3C,UAAM,WAAW,IAAI,eAAe,OAAO;AAC3C,aAAS,QAAQ,OAAO;AACxB,WAAO,MAAM,SAAS,WAAW;AAAA,EACnC,GAAG,CAAC,KAAK,CAAC;AACV,SAAO;AACT;AAEA,SAAS,cAAc;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,UAAU;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAkBG;AACD,QAAM,UAAU,cAAc;AAC9B,QAAM,MAAM,UAAU;AACtB,QAAM,WAAW,YAAY;AAC7B,QAAM,UAAU,MAAM;AACtB,QAAM,QAAQ,OAAoB,IAAI;AACtC,QAAM,eAAe,GAAG,OAAO;AAC/B,QAAM,eAAe,GAAG,OAAO;AAC/B,QAAM,OAAO,qBAAqB,aAAa,MAAM;AACrD,QAAM,OAAO,OAAO,aAAa;AACjC,QAAM,WAAW,kBAAkB,KAAK;AACxC,QAAM,QAAQ,KAAK,IAAI,OAAO,OAAO,QAAQ;AAC7C,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAChD,QAAM,CAAC,SAAS,UAAU,IAAI,SAA6B,IAAI;AAC/D,QAAM,CAAC,cAAc,eAAe,IAAI,SAAS,CAAC;AAElD,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAyB,IAAI;AAIzD,QAAM,CAAC,WAAW,YAAY,IAAI,SAAoC,MAAS;AAC/E,QAAM,SAAS,KAAK,SAAS,CAAC,GAAG,MAAM;AACvC,QAAM,SACJ,cAAc,QACb,cAAc,UAAa,KAAK,SAAS,KAAK,CAAC,YAAY,QAAQ,OAAO,SAAS,IAChF,YACA;AACN,YAAU,MAAM;AACd,QAAI,KAAK,UAAU,WAAW,UAAW,cAAa,MAAM;AAAA,EAC9D,GAAG,CAAC,WAAW,KAAK,QAAQ,MAAM,CAAC;AAMnC,QAAM,uBAAuB,OAAO,YAAY;AAChD,QAAM,cAAc,OAAO,KAAK;AAChC,YAAU,MAAM;AACd,UAAM,WAAW,qBAAqB;AACtC,yBAAqB,UAAU;AAC/B,QAAI,cAAc;AAChB,mBAAa,KAAK;AAClB,UAAI,iBAAiB,SAAU,cAAa,EAAE,WAAW,MAAM,CAAC;AAAA,IAClE,WAAW,YAAY,CAAC,YAAY,QAAS,cAAa,MAAS;AACnE,gBAAY,UAAU;AAAA,EACxB,GAAG,CAAC,cAAc,YAAY,CAAC;AAE/B,QAAM,SAAS;AAAA,IACb,CAAC,QAAmC,UAAU,UAC5C,KAAK,SAAS;AAAA,MACZ,IAAI;AAAA,MACJ,QAAQ,EAAE,aAAa,OAAO;AAAA;AAAA,MAE9B,QAAQ,EAAE,GAAG,iBAAiB,GAAG,QAAQ,GAAI,OAAO,EAAE,KAAK,IAAI,CAAC,EAAG;AAAA,MACnE,GAAI,UAAU,EAAE,SAAS,KAAK,IAAI,CAAC;AAAA,IACrC,CAAC;AAAA,IACH,CAAC,iBAAiB,UAAU,MAAM,QAAQ,WAAW;AAAA,EACvD;AAIA,QAAM,SAAS,CAAC,gBAAgB,KAAK,SAAS,KAAK,CAAC,YAAY,QAAQ,OAAO,YAAY;AAE3F,QAAM,WAAW,OAAO,MAAM;AAAA,EAAC,CAAC;AAChC,YAAU,MAAM;AACd,aAAS,UAAU,MAAM,OAAO,CAAC,GAAG,IAAI;AAAA,EAC1C,GAAG,CAAC,MAAM,CAAC;AACX,YAAU,MAAM;AACd,QAAI,CAAC,gBAAgB,CAAC,KAAK,UAAU,OAAQ;AAC7C,UAAM,QAAQ,IAAI,gBAAgB;AAClC,YAAQ,OAAO,WAAW,aAAa,cAAc,EAAE,QAAQ,MAAM,OAAO,CAAC,EAAE;AAAA,MAC7E,CAAC,YAAY;AACX,YAAI,MAAM,OAAO,QAAS;AAC1B,YACE,kBAAkB,OAAO,GAAG,WAAW,UACvC,QAAQ,oBAAoB,QAC5B,QAAQ;AAER,mBAAS,QAAQ;AAAA,YACd,WAAU,OAAO;AAAA,MACxB;AAAA,MACA,CAAC,YAAqB;AACpB,YACE,CAAC,MAAM,OAAO,WACd,mBAAmB,oBACnB,CAAC,KAAK,GAAG,EAAE,SAAS,QAAQ,MAAM;AAElC,mBAAS,QAAQ;AAAA,MACrB;AAAA,IACF;AACA,WAAO,MAAM,MAAM,MAAM;AAAA,EAC3B,GAAG,CAAC,QAAQ,QAAQ,cAAc,KAAK,QAAQ,QAAQ,QAAQ,WAAW,CAAC;AAK3E,YAAU,MAAM;AACd,SAAK,iBAAiB,EAAE,MAAM,MAAM;AAAA,IAAC,CAAC;AAAA,EACxC,GAAG,CAAC,CAAC;AAGL,YAAU,MAAM;AACd,QAAI,iBAAiB,EAAG;AACxB,QAAI,YAAY;AAChB,QAAI,QAAQ;AACZ,UAAM,UAAU,MAAM;AACpB,YAAM,QAAQ,MAAM,SAAS,cAAmC,0BAA0B;AAC1F,UAAI,MAAO,OAAM,MAAM;AAAA,gBACb,SAAS,KAAK,GAAI,aAAY,sBAAsB,OAAO;AAAA,IACvE;AACA,gBAAY,sBAAsB,OAAO;AACzC,WAAO,MAAM,qBAAqB,SAAS;AAAA,EAC7C,GAAG,CAAC,YAAY,CAAC;AAGjB,QAAM,CAAC,aAAa,cAAc,IAAI,SAAiC,IAAI;AAC3E,YAAU,MAAM;AACd,QAAI,CAAC,YAAa;AAClB,aAAS,eAAe,gBAAgB,SAAS,eAAe,YAAY,GAAG,MAAM;AACrF,mBAAe,IAAI;AAAA,EACrB,GAAG,CAAC,aAAa,cAAc,YAAY,CAAC;AAC5C,QAAM,OAAO,MAAM;AACjB,iBAAa,EAAE,WAAW,KAAK,CAAC;AAChC,mBAAe,MAAM;AAAA,EACvB;AACA,QAAM,OAAO,MAAM;AACjB,iBAAa,EAAE,WAAW,MAAM,CAAC;AACjC,mBAAe,MAAM;AAAA,EACvB;AAEA,QAAM,QAAQ,KAAK,WAAW,UAAU,OAAO;AAC/C,QAAM,YACJ,uBAAuB,QAAQ,eAAe,aAAa,iBAAiB,KAC5E,UAAU,QACV,MAAM,cAAc,QACpB,CAAC,MAAM;AAET,YAAU,MAAM;AACd,QAAI,aAAa,UAAW,iBAAgB,CAAC,YAAY,UAAU,CAAC;AAAA,EACtE,GAAG,CAAC,WAAW,SAAS,CAAC;AACzB,QAAM,aAAa,YAAY,OAAQ,gBAAgB;AACvD,QAAM,eAAe,aAAc,KAAK,UAAU,eAAe;AACjE,QAAM,WAAW,MAAM;AACrB,iBAAa,IAAI;AACjB,oBAAgB,CAAC,YAAY,UAAU,CAAC;AAExC,QAAI,cAAc;AAChB,kBAAY,UAAU;AACtB,aAAO,CAAC,CAAC;AAAA,IACX;AAAA,EACF;AAMA,QAAM,kBAAkB,OAAO,KAAK;AACpC,YAAU,MAAM;AACd,QAAI,CAAC,mBAAmB;AACtB,sBAAgB,UAAU;AAC1B;AAAA,IACF;AACA,QAAI,gBAAgB,QAAS;AAC7B,oBAAgB,UAAU;AAC1B,iBAAa,IAAI;AACjB,iBAAa,EAAE,WAAW,MAAM,CAAC;AACjC,QAAI,aAAc,aAAY,UAAU;AACxC,WAAO,CAAC,GAAG,IAAI;AAAA,EACjB,GAAG,CAAC,cAAc,mBAAmB,QAAQ,YAAY,CAAC;AAI1D,QAAM,YAAY,OAAO,aAAa;AAGtC,QAAM,iBAAiB,OAAO,oBAAI,IAAoB,CAAC;AACvD,QAAM,kBAAkB,OAAO,oBAAI,IAAoC,CAAC;AACxE,QAAM,gBAAgB;AAAA,IACpB,OACE,gBACA,gBACA,YACoB;AACpB,UAAI,CAAC,UAAW,OAAM,IAAI,MAAM,yCAAyC;AACzE,YAAM,QAAQ,QAAQ,cAAc;AACpC,UAAI,gBAAgB,eAAe,QAAQ,IAAI,cAAc;AAC7D,UAAI,CAAC,SAAS,CAAC,eAAe;AAC5B,wBAAgB,OAAO,WAAW;AAClC,uBAAe,QAAQ,IAAI,gBAAgB,aAAa;AAAA,MAC1D;AACA,YAAM,UAAU,MAAM,IAAI;AAAA,QACxB,kBAAkB,mBAAmB,WAAW,CAAC;AAAA,QACjD;AAAA,UACE,QAAQ;AAAA,UACR,SAAS,EAAE,CAAC,cAAc,GAAG,QAAQ,CAAC,mBAAmB,GAAG,UAAU;AAAA,UACtE,MAAM,KAAK,UAAU;AAAA,YACnB,GAAI,QAAQ,EAAE,WAAW,WAAW,IAAI,EAAE,gBAAgB,cAAc;AAAA,YACxE;AAAA,YACA,GAAI,QAAQ,WAAW,SAAS,EAAE,WAAW,QAAQ,UAAU,IAAI,CAAC;AAAA,YACpE,GAAI,QAAQ,QAAQ,EAAE,OAAO,QAAQ,MAAM,IAAI,CAAC;AAAA,YAChD,GAAI,QAAQ,kBAAkB,EAAE,iBAAiB,QAAQ,gBAAgB,IAAI,CAAC;AAAA,YAC9E,GAAI,QAAQ,cAAc,EAAE,aAAa,QAAQ,YAAY,IAAI,CAAC;AAAA,UACpE,CAAC;AAAA,QACH;AAAA,MACF;AACA,UAAI;AACF,wBAAgB,QAAQ,IAAI,QAAQ,IAAI,EAAE,SAAS,SAAS,cAAc,CAAC;AAC7E,aAAO,QAAQ;AAAA,IACjB;AAAA,IACA,CAAC,KAAK,QAAQ,WAAW,WAAW;AAAA,EACtC;AACA,QAAM,YAAY,YAAY,QAAQ,QAAQ,cAAc,aAAa,UAAU;AAInF,QAAM,cAAc,OAAsB,IAAI;AAC9C,cAAY,UACV,cAAc,OAAO,aAAa,MAAM,aAAa,OACjD,wBAAwB;AAAA,IACtB;AAAA,IACA,OAAO,MAAM;AAAA,IACb,WAAW,MAAM;AAAA,IACjB,UAAU,MAAM;AAAA,EAClB,CAAC,IACD;AACN,QAAM,iBAAiB,YAAY,MAAM,YAAY,WAAW,QAAW,CAAC,CAAC;AAE7E,YAAU,MAAM;AACd,QAAI,WAAW,eAAe,QAAQ,eAAe,QAAQ,UAAW,YAAW,IAAI;AAAA,EACzF,GAAG,CAAC,SAAS,UAAU,CAAC;AAExB,QAAM,YAAY,SAAS,aAAa;AACxC,YAAU,MAAM;AACd,QAAI,cAAc,QAAQ,eAAe,UAAW,iBAAgB,CAAC,YAAY,UAAU,CAAC;AAAA,EAC9F,GAAG,CAAC,WAAW,UAAU,CAAC;AAE1B,QAAM,WACJ,KAAK,SAAS,KAAK,CAAC,YAAY,QAAQ,OAAO,UAAU,MACxD,QAAQ,OAAO,aAAa,SAAS;AAExC,QAAM,QAAQ,eACV,OACA,WACE,oBAAoB,QAAQ,IAC5B,WAAW,iBACT,UAAU,iBACV;AAER,SACE,iCACE;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,KAAK;AAAA,QACL,IAAI;AAAA,QACJ,cAAW;AAAA,QACX,QAAQ,OAAO;AAAA,QACf,OAAO,EAAE,CAAC,cAAc,GAAG,GAAG,KAAK,KAAK;AAAA,QACxC,iBAAe,OAAO;AAAA,QACtB,WAAW;AAAA,UACT;AAAA,UACA,OAAO,gBAAgB;AAAA;AAAA,UAEvB,OAAO,aAAa;AAAA,QACtB;AAAA,QAEA;AAAA;AAAA,YAAC;AAAA;AAAA,cACC,OAAM;AAAA,cACN,UAAU;AAAA,cACV,OAAO;AAAA,cACP,KAAK;AAAA,cACL,KAAK;AAAA,cAEL,MAAM,OAAO,QAAQ;AAAA,cAErB,UAAU,CAAC,SAAS,MAAM,SAAS,MAAM,YAAY,gBAAgB,GAAG,IAAI,IAAI;AAAA,cAChF,aAAa,CAAC,SAAS;AACrB,sBAAM,SAAS,MAAM,YAAY,gBAAgB,GAAG,IAAI,IAAI;AAC5D,6BAAa,EAAE,OAAO,KAAK,CAAC;AAAA,cAC9B;AAAA,cACA,SAAS,MAAM,aAAa,EAAE,OAAO,wBAAwB,CAAC;AAAA,cAC9D,YAAY;AAAA,cACZ,WAAU;AAAA;AAAA,UACZ;AAAA,UACA,qBAAC,SAAI,WAAU,0EACb;AAAA;AAAA,cAAC;AAAA;AAAA,gBACC,WAAU;AAAA,gBACV,OAAO,SAAS;AAAA,gBAEf,mBAAS,oBAAC,UAAK,WAAU,WAAU,8BAAgB;AAAA;AAAA,YACtD;AAAA,YACC,YACC;AAAA,cAAC;AAAA;AAAA,gBACC,MAAK;AAAA,gBACL,SAAS,eAAe,cAAc;AAAA,gBACtC,MAAK;AAAA,gBACL,WAAU;AAAA,gBACV,SAAS;AAAA,gBAET;AAAA,sCAAC,YAAS,eAAY,QAAO,WAAU,YAAW;AAAA,kBAAE;AAAA;AAAA;AAAA,YAEtD,IACE;AAAA,YACJ,qBAAC,gBACC;AAAA,kCAAC,uBAAoB,SAAO,MAC1B;AAAA,gBAAC;AAAA;AAAA,kBACC,MAAK;AAAA,kBACL,SAAQ;AAAA,kBACR,MAAK;AAAA,kBACL,cAAW;AAAA,kBACX,OAAM;AAAA,kBACN,WAAU;AAAA,kBAEV,8BAAC,sBAAmB,eAAY,QAAO,WAAU,UAAS;AAAA;AAAA,cAC5D,GACF;AAAA,cACA,qBAAC,uBAAoB,OAAM,OAAM,WAAU,QACxC;AAAA,6BACC,oBAAC,oBAAiB,SAAO,MACvB;AAAA,kBAAC;AAAA;AAAA,oBACC,IAAG;AAAA,oBACH,QAAQ,EAAE,aAAa,WAAW,WAAW;AAAA,oBAE7C;AAAA,0CAAC,iBAAc,eAAY,QAAO;AAAA,sBAAE;AAAA;AAAA;AAAA,gBAEtC,GACF,IACE;AAAA,gBACJ,oBAAC,oBAAiB,SAAO,MACvB;AAAA,kBAAC;AAAA;AAAA,oBACC,IAAG;AAAA,oBACH,QAAQ,EAAE,aAAa,YAAY,OAAO;AAAA,oBAI1C,QAAQ,EAAE,KAAK,WAAW;AAAA,oBAE1B;AAAA,0CAAC,YAAS,eAAY,QAAO;AAAA,sBAAE;AAAA;AAAA;AAAA,gBAEjC,GACF;AAAA,gBAEA;AAAA,kBAAC;AAAA;AAAA,oBACC,WAAU;AAAA,oBACV,UAAU,MAAM,aAAa,EAAE,UAAU,OAAO,UAAU,OAAO,CAAC;AAAA,oBAEjE;AAAA,6BACC,oBAAC,kBAAe,eAAY,QAAO,IAEnC,oBAAC,iBAAc,eAAY,QAAO;AAAA,sBAEnC,OAAO,uBAAuB;AAAA;AAAA;AAAA,gBACjC;AAAA,iBACF;AAAA,eACF;AAAA,YACA;AAAA,cAAC;AAAA;AAAA,gBACC,IAAI;AAAA,gBACJ,MAAK;AAAA,gBACL,SAAQ;AAAA,gBACR,MAAK;AAAA,gBACL,cAAW;AAAA,gBACX,OAAM;AAAA,gBACN,iBAAe;AAAA,gBACf,iBAAe;AAAA,gBACf,WAAU;AAAA,gBACV,SAAS;AAAA,gBAER,iBACC,oBAAC,sBAAmB,eAAY,QAAO,WAAU,UAAS,IAE1D,oBAAC,uBAAoB,eAAY,QAAO,WAAU,UAAS;AAAA;AAAA,YAE/D;AAAA,aACF;AAAA,UACA,oBAAC,SAAI,WAAU,gCACZ,WAAC,KAAK,UAAU,CAAC,eAChB,KAAK,QACH,oBAAC,SAAM,SAAQ,qCAA+B,SAAS,MAAM,KAAK,KAAK,QAAQ,GAAG,IAElF,oBAAC,gBAAa,OAAM,yBAAwB,IAE5C,eACF,YACE;AAAA,YAAC;AAAA;AAAA,cAEC;AAAA,cACA;AAAA,cACA,OAAO,QAAQ,aAAa,MAAM,KAAK,KAAK;AAAA,cAC5C,WAAW,CAAC,YAAY;AACtB,2BAAW;AAAA,kBACT,GAAG;AAAA,kBACH,UAAU,gBAAgB,QAAQ,IAAI,QAAQ,SAAS,KAAK;AAAA,gBAC9D,CAAC;AACD,qBAAK,KAAK,QAAQ;AAElB,uBAAO,EAAE,cAAc,QAAQ,UAAU,CAAC;AAAA,cAC5C;AAAA,cACA,WAAU;AAAA;AAAA,YAbL,OAAO,MAAM;AAAA,UAcpB,IACE,KAAK,WAAW,YAClB,oBAAC,gBAAa,OAAM,gBAAe,IACjC,KAAK,WAAW,UAClB,oBAAC,SAAM,SAAQ,iCAA2B,SAAS,WAAW,IAE9D,oBAAC,OAAE,WAAU,mCAAkC,mCAAqB,IAEpE;AAAA;AAAA;AAAA,YAGF,oBAAC,wBAAqB,UAAU,CAAC,MAAM,GACrC,8BAAC,YAAS,UAAU,oBAAC,gBAAa,OAAM,wBAAuB,GAC7D;AAAA,cAAC;AAAA;AAAA,gBAEC;AAAA,gBACA,WAAW;AAAA,gBACX,WAAU;AAAA,gBACV;AAAA,gBACA;AAAA,gBAEA,iBAAiB,WAAW,YAAY;AAAA,gBACxC,cAAc,WAAW;AAAA,gBAEzB,wBAAwB,WAAW;AAAA,gBACnC,6BAA6B,MAC3B;AAAA,kBAAW,CAAC,YACV,SAAS,cAAc,aACnB,EAAE,GAAG,SAAS,eAAe,OAAU,IACvC;AAAA,gBACN;AAAA,gBAEF,cAAc,YAAY,WAAW;AAAA;AAAA,cAlBhC;AAAA,YAmBP,GACF,GACF;AAAA,cACE,MACN;AAAA;AAAA;AAAA,IACF;AAAA,IACC,OAAO,YACN;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA,OAAO,gBAAgB;AAAA,QACzB;AAAA,QAEA,8BAAC,SAAI,WAAU,yCACb;AAAA,UAAC;AAAA;AAAA,YACC,IAAI;AAAA,YACJ,MAAK;AAAA,YACL,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,cAAW;AAAA,YACX,OAAM;AAAA,YACN,iBAAe;AAAA,YACf,iBAAe;AAAA,YACf,WAAU;AAAA,YACV,SAAS;AAAA,YAER,iBACC,oBAAC,qBAAkB,eAAY,QAAO,WAAU,UAAS,IAEzD,oBAAC,sBAAmB,eAAY,QAAO,WAAU,UAAS;AAAA;AAAA,QAE9D,GACF;AAAA;AAAA,IACF,IACE;AAAA,KACN;AAEJ;AAEA,SAAS,aAAa,EAAE,MAAM,GAAsB;AAClD,SACE,qBAAC,SAAI,WAAU,iCAAgC,aAAU,QACvD;AAAA,wBAAC,YAAS,WAAU,aAAY;AAAA,IAChC,oBAAC,YAAS,WAAU,0BAAyB;AAAA,IAC7C,oBAAC,UAAK,WAAU,WAAU,MAAK,UAC5B,iBACH;AAAA,KACF;AAEJ;AAEA,SAAS,MAAM,EAAE,SAAS,QAAQ,GAA6C;AAC7E,SACE,qBAAC,OAAE,WAAU,mCACV;AAAA;AAAA,IAAS;AAAA,IACV,oBAAC,YAAO,MAAK,UAAS,WAAU,WAAU,SAAS,SAAS,uBAE5D;AAAA,KACF;AAEJ;","names":[]}
@@ -5,12 +5,12 @@ import {
5
5
  DocumentProjectionArtifactSurface,
6
6
  DocumentProjectionEditor,
7
7
  EditableDocumentArtifactSurface
8
- } from "./chunk-4SZZAFYQ.js";
8
+ } from "./chunk-57AZS3IE.js";
9
9
  import "./chunk-2DDJ6YH6.js";
10
- import "./chunk-2JENKGCE.js";
11
- import "./chunk-QHHSUR2Y.js";
10
+ import "./chunk-7VMZGLYI.js";
11
+ import "./chunk-PTF5B7TJ.js";
12
12
  import "./chunk-TXS65BB2.js";
13
- import "./chunk-TNUSPXPW.js";
13
+ import "./chunk-7T2ZE3VT.js";
14
14
  export {
15
15
  DocumentArtifactSurface,
16
16
  DocumentEditor,
@@ -5,12 +5,12 @@ import {
5
5
  PresentationEditor,
6
6
  PresentationProjectionArtifactSurface,
7
7
  PresentationProjectionEditor
8
- } from "./chunk-FXSHP4JZ.js";
8
+ } from "./chunk-DXBYWSL5.js";
9
9
  import "./chunk-2DDJ6YH6.js";
10
- import "./chunk-2JENKGCE.js";
11
- import "./chunk-QHHSUR2Y.js";
10
+ import "./chunk-7VMZGLYI.js";
11
+ import "./chunk-PTF5B7TJ.js";
12
12
  import "./chunk-TXS65BB2.js";
13
- import "./chunk-TNUSPXPW.js";
13
+ import "./chunk-7T2ZE3VT.js";
14
14
  export {
15
15
  EditablePresentationArtifactSurface,
16
16
  PresentationArtifactSurface,
@@ -5,11 +5,11 @@ import {
5
5
  SpreadsheetArtifactSurface,
6
6
  SpreadsheetGrid,
7
7
  SpreadsheetProjectionGrid
8
- } from "./chunk-GA4YEAMX.js";
9
- import "./chunk-2JENKGCE.js";
10
- import "./chunk-QHHSUR2Y.js";
8
+ } from "./chunk-X3MWB2QU.js";
9
+ import "./chunk-7VMZGLYI.js";
10
+ import "./chunk-PTF5B7TJ.js";
11
11
  import "./chunk-TXS65BB2.js";
12
- import "./chunk-TNUSPXPW.js";
12
+ import "./chunk-7T2ZE3VT.js";
13
13
  export {
14
14
  EditableSpreadsheetArtifactSurface,
15
15
  EditableSpreadsheetGrid,
package/dist/artifacts.js CHANGED
@@ -6,32 +6,32 @@ import {
6
6
  EditableArtifactWorkbenchHost,
7
7
  SessionArtifactViewer,
8
8
  SiteView
9
- } from "./chunk-R3J2PTVQ.js";
9
+ } from "./chunk-OF4TIKYC.js";
10
10
  import {
11
11
  ArtifactSandbox,
12
12
  ChatInteractiveBlock,
13
13
  DeferredChatMedia
14
- } from "./chunk-MW7Y3T55.js";
14
+ } from "./chunk-XEQMZB3C.js";
15
15
  import {
16
16
  EditablePresentationArtifactSurface,
17
17
  PresentationArtifactSurface,
18
18
  PresentationEditor,
19
19
  PresentationProjectionArtifactSurface,
20
20
  PresentationProjectionEditor
21
- } from "./chunk-FXSHP4JZ.js";
21
+ } from "./chunk-DXBYWSL5.js";
22
22
  import {
23
23
  EditableSpreadsheetArtifactSurface,
24
24
  EditableSpreadsheetGrid,
25
25
  SpreadsheetArtifactSurface,
26
26
  SpreadsheetGrid,
27
27
  SpreadsheetProjectionGrid
28
- } from "./chunk-GA4YEAMX.js";
28
+ } from "./chunk-X3MWB2QU.js";
29
29
  import {
30
30
  PUBLISHED_HTML_ARTIFACT_IFRAME_SANDBOX,
31
31
  PublishedHtmlArtifactFrame,
32
32
  openGeniSiteBridgePortFromBootstrap,
33
33
  publishedHtmlArtifactDocument
34
- } from "./chunk-YYICQDK4.js";
34
+ } from "./chunk-QIOQ2NPQ.js";
35
35
  import {
36
36
  inlineHtmlDocument
37
37
  } from "./chunk-IGFZFLI2.js";
@@ -40,7 +40,7 @@ import "./chunk-SERRKZO4.js";
40
40
  import {
41
41
  PatchApplyCommand,
42
42
  useRetainedImageObjectUrl
43
- } from "./chunk-2XNG2KNT.js";
43
+ } from "./chunk-CUIWCGMA.js";
44
44
  import {
45
45
  isPatchFilename,
46
46
  isRetainedImageContentType
@@ -61,11 +61,11 @@ import {
61
61
  DocumentProjectionArtifactSurface,
62
62
  DocumentProjectionEditor,
63
63
  EditableDocumentArtifactSurface
64
- } from "./chunk-4SZZAFYQ.js";
64
+ } from "./chunk-57AZS3IE.js";
65
65
  import "./chunk-2DDJ6YH6.js";
66
66
  import {
67
67
  ArtifactSurface
68
- } from "./chunk-2JENKGCE.js";
68
+ } from "./chunk-7VMZGLYI.js";
69
69
  import {
70
70
  ArtifactBadge,
71
71
  ArtifactButton,
@@ -80,9 +80,9 @@ import {
80
80
  artifactLoadErrorMessage,
81
81
  artifactLoadErrorView,
82
82
  useArtifactLabels
83
- } from "./chunk-QHHSUR2Y.js";
83
+ } from "./chunk-PTF5B7TJ.js";
84
84
  import "./chunk-TXS65BB2.js";
85
- import "./chunk-TNUSPXPW.js";
85
+ import "./chunk-7T2ZE3VT.js";
86
86
  export {
87
87
  ArtifactBadge,
88
88
  ArtifactButton,
@@ -58,7 +58,7 @@ import {
58
58
  validateAutomationDraft,
59
59
  validateEventTriggers,
60
60
  viewerTimeZone
61
- } from "./chunk-2RREGDQH.js";
61
+ } from "./chunk-2OP6WLGV.js";
62
62
  import {
63
63
  CadencePicker,
64
64
  cadenceFromScheduleSpec,
@@ -66,7 +66,7 @@ import {
66
66
  formatRunTime,
67
67
  timeZoneLabels,
68
68
  toScheduleSpec
69
- } from "./chunk-7WIDB4PL.js";
69
+ } from "./chunk-6JHU2UBS.js";
70
70
  import {
71
71
  TooltipProvider
72
72
  } from "./chunk-SS4QT7SL.js";
@@ -78,10 +78,10 @@ import {
78
78
  ListRow,
79
79
  ListRowSkeleton,
80
80
  RowList
81
- } from "./chunk-G6ZZC543.js";
81
+ } from "./chunk-54YW6SZZ.js";
82
82
  import {
83
83
  ConfirmDialog
84
- } from "./chunk-E6SQKHAU.js";
84
+ } from "./chunk-SIRLACNZ.js";
85
85
  import {
86
86
  EmptyState
87
87
  } from "./chunk-QE4XESS7.js";
@@ -95,13 +95,13 @@ import {
95
95
  import "./chunk-ZQCND77P.js";
96
96
  import {
97
97
  FormDialog
98
- } from "./chunk-IGVVXLKJ.js";
98
+ } from "./chunk-ZYAZUPPV.js";
99
99
  import {
100
100
  ErrorMessage
101
- } from "./chunk-WHWUWN2X.js";
101
+ } from "./chunk-IKXNLWAL.js";
102
102
  import {
103
103
  apiErrorFacts
104
- } from "./chunk-L4OF77LE.js";
104
+ } from "./chunk-O4OOG3D6.js";
105
105
  import {
106
106
  LogoTile
107
107
  } from "./chunk-K4DHWGCT.js";
@@ -114,16 +114,16 @@ import {
114
114
  } from "./chunk-WHMKC7OQ.js";
115
115
  import {
116
116
  Switch
117
- } from "./chunk-FOGNA3BU.js";
117
+ } from "./chunk-7V5REBCP.js";
118
118
  import {
119
119
  ComboboxSelect,
120
120
  SelectMenu
121
- } from "./chunk-2VB2O4FQ.js";
121
+ } from "./chunk-3CPWWGNK.js";
122
122
  import {
123
123
  RelativeTime,
124
124
  useMinuteNow
125
- } from "./chunk-ELL6HSYR.js";
126
- import "./chunk-PC2MVXIP.js";
125
+ } from "./chunk-53AGXXZM.js";
126
+ import "./chunk-YNF2OC54.js";
127
127
  import "./chunk-5OTQA7CM.js";
128
128
  import {
129
129
  CheckboxField,
@@ -131,16 +131,18 @@ import {
131
131
  FieldStack,
132
132
  TextArea,
133
133
  TextInput
134
- } from "./chunk-AOHU6O3M.js";
134
+ } from "./chunk-MVW6HNPI.js";
135
135
  import "./chunk-ZMBJPN4T.js";
136
136
  import "./chunk-UX3XHFRX.js";
137
137
  import {
138
138
  SESSION_AUTOMATION_WAIT_LABEL,
139
139
  sessionAutomationWait,
140
140
  sessionAutomationWaitLabel
141
- } from "./chunk-6AHATAAY.js";
141
+ } from "./chunk-3PZ7JZI2.js";
142
142
  import "./chunk-X5NTDJIO.js";
143
- import "./chunk-WLEDGIVS.js";
143
+ import "./chunk-FSOQDUCG.js";
144
+ import "./chunk-V4Z4B2E3.js";
145
+ import "./chunk-FYWT2O76.js";
144
146
  import "./chunk-USG4XNMA.js";
145
147
  import "./chunk-TSENLSW6.js";
146
148
  import {
@@ -161,7 +163,7 @@ import {
161
163
  import {
162
164
  createOpenGeniText,
163
165
  useOpenGeniText
164
- } from "./chunk-TNUSPXPW.js";
166
+ } from "./chunk-7T2ZE3VT.js";
165
167
 
166
168
  // src/components/automations/event-rows.tsx
167
169
  import { ExternalLinkIcon, RotateCcwIcon } from "lucide-react";