@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
@@ -0,0 +1,283 @@
1
+ "use client";
2
+
3
+ // src/meetings/recorder-context.tsx
4
+ import {
5
+ createContext,
6
+ lazy,
7
+ Suspense,
8
+ useContext,
9
+ useEffect,
10
+ useMemo,
11
+ useRef,
12
+ useState,
13
+ useSyncExternalStore
14
+ } from "react";
15
+ import { getDesktopMeetingDetection } from "@opengeni/sdk/desktop-bridge";
16
+
17
+ // src/meetings/recorder-state.ts
18
+ function capturing(state) {
19
+ return state === "starting" || state === "recording" || state === "paused" || state === "stopping";
20
+ }
21
+ function canStartRecording(state) {
22
+ return !capturing(state);
23
+ }
24
+
25
+ // src/meetings/recorder-context.tsx
26
+ import { jsx, jsxs } from "react/jsx-runtime";
27
+ function createMeetingRecorderStore(onActivate = () => {
28
+ }, onOpenMeeting = () => false) {
29
+ let current = null;
30
+ let currentWorkspaceId = null;
31
+ let finished = [];
32
+ let pending = null;
33
+ const listeners = /* @__PURE__ */ new Set();
34
+ const notify = () => {
35
+ for (const listener of listeners) listener();
36
+ };
37
+ return {
38
+ get: () => current,
39
+ subscribe: (listener) => {
40
+ listeners.add(listener);
41
+ return () => listeners.delete(listener);
42
+ },
43
+ set: (recorder, workspaceId = null) => {
44
+ current = recorder;
45
+ currentWorkspaceId = recorder ? workspaceId : null;
46
+ if (pending && capturing(recorder?.state)) pending = null;
47
+ notify();
48
+ },
49
+ workspaceId: () => currentWorkspaceId,
50
+ finished: () => finished,
51
+ markFinished: (recordingId) => {
52
+ finished = [...finished.filter((id) => id !== recordingId), recordingId];
53
+ notify();
54
+ },
55
+ pendingStart: () => pending,
56
+ requestStart: (request) => {
57
+ pending = request;
58
+ onActivate();
59
+ notify();
60
+ },
61
+ takeStart: () => {
62
+ const request = pending;
63
+ if (request) {
64
+ pending = null;
65
+ notify();
66
+ }
67
+ return request;
68
+ },
69
+ activate: onActivate,
70
+ openMeeting: (recordingId, workspaceId) => onOpenMeeting(recordingId, workspaceId)
71
+ };
72
+ }
73
+ var MeetingRecorderContext = createContext(null);
74
+ var MeetingRecorderStoreProvider = MeetingRecorderContext.Provider;
75
+ var LazyRecorderHost = lazy(() => import("./recorder-host-WF2RRR56.js"));
76
+ var RECORDING_DATABASE = "opengeni-recordings";
77
+ async function hasLocalRecordings() {
78
+ if (typeof indexedDB === "undefined" || typeof indexedDB.databases !== "function") return false;
79
+ try {
80
+ const databases = await indexedDB.databases();
81
+ return databases.some((database) => database.name === RECORDING_DATABASE);
82
+ } catch {
83
+ return false;
84
+ }
85
+ }
86
+ function MeetingRecorderProvider({
87
+ workspaceId,
88
+ scope,
89
+ client,
90
+ onOpenMeetings,
91
+ onOpenMeeting,
92
+ children
93
+ }) {
94
+ const [active, setActive] = useState(false);
95
+ const openMeeting = useRef(onOpenMeeting);
96
+ useEffect(() => {
97
+ openMeeting.current = onOpenMeeting;
98
+ });
99
+ const store = useMemo(
100
+ () => createMeetingRecorderStore(
101
+ () => setActive(true),
102
+ (recordingId, recordingWorkspaceId) => {
103
+ if (!openMeeting.current) return false;
104
+ openMeeting.current(recordingId, recordingWorkspaceId);
105
+ return true;
106
+ }
107
+ ),
108
+ []
109
+ );
110
+ useEffect(() => {
111
+ let cancelled = false;
112
+ void hasLocalRecordings().then((found) => {
113
+ if (found && !cancelled) setActive(true);
114
+ });
115
+ return () => {
116
+ cancelled = true;
117
+ };
118
+ }, []);
119
+ const busy = useSyncExternalStore(
120
+ store.subscribe,
121
+ () => capturing(store.get()?.state),
122
+ () => false
123
+ );
124
+ useDesktopMeetingRequests(store, {
125
+ // The desktop app asks about calls only while a page can record them:
126
+ // someone signed in, with a workspace to record to, or a recording going.
127
+ canRecord: scope !== null && (workspaceId !== null || busy),
128
+ signedOut: scope === null,
129
+ onOpenMeetings
130
+ });
131
+ useEffect(() => {
132
+ store.takeStart();
133
+ }, [store, scope]);
134
+ const [host, setHost] = useState({ scope, workspaceId });
135
+ if (host.scope !== scope || !busy && host.workspaceId !== workspaceId) {
136
+ setHost({ scope, workspaceId });
137
+ }
138
+ const hostWorkspaceId = host.scope === scope ? host.workspaceId : workspaceId;
139
+ return /* @__PURE__ */ jsxs(MeetingRecorderContext.Provider, { value: store, children: [
140
+ children,
141
+ active && scope !== null && hostWorkspaceId ? /* @__PURE__ */ jsx(Suspense, { fallback: null, children: /* @__PURE__ */ jsx(
142
+ LazyRecorderHost,
143
+ {
144
+ store,
145
+ workspaceId: hostWorkspaceId,
146
+ client
147
+ },
148
+ `${scope ?? ""}:${hostWorkspaceId}`
149
+ ) }) : null
150
+ ] });
151
+ }
152
+ var NO_FINISHED = [];
153
+ function useDesktopMeetingRequests(store, navigation) {
154
+ const latest = useRef(navigation);
155
+ useEffect(() => {
156
+ latest.current = navigation;
157
+ });
158
+ const canRecord = navigation.canRecord;
159
+ useEffect(() => {
160
+ if (!canRecord) return;
161
+ const detection = getDesktopMeetingDetection();
162
+ if (!detection) return;
163
+ return detection.onRequest((request) => {
164
+ const recorder = store.get();
165
+ if (request.kind === "record") {
166
+ if (latest.current.signedOut) return;
167
+ if (canStartRecording(recorder?.state)) {
168
+ store.requestStart({ title: request.title, titleSource: "app" });
169
+ }
170
+ latest.current.onOpenMeetings?.();
171
+ return;
172
+ }
173
+ const recordingId = recorder?.recordingId ?? null;
174
+ const recordingWorkspaceId = store.workspaceId?.() ?? null;
175
+ if (request.kind === "open") {
176
+ const opened = recordingId && recordingWorkspaceId && capturing(recorder?.state) ? store.openMeeting?.(recordingId, recordingWorkspaceId) : false;
177
+ if (!opened) latest.current.onOpenMeetings?.();
178
+ return;
179
+ }
180
+ if (request.kind !== "stop") return;
181
+ if (!recorder || recorder.state !== "recording" && recorder.state !== "paused") return;
182
+ void recorder.stop().then(() => {
183
+ if (recordingId && recordingWorkspaceId) {
184
+ store.openMeeting?.(recordingId, recordingWorkspaceId);
185
+ }
186
+ });
187
+ });
188
+ }, [store, canRecord]);
189
+ }
190
+ function usePendingMeetingStart() {
191
+ const store = useContext(MeetingRecorderContext);
192
+ const request = useSyncExternalStore(
193
+ store?.subscribe ?? noopSubscribe,
194
+ store?.pendingStart ?? nullSnapshot,
195
+ nullSnapshot
196
+ );
197
+ return { request, take: store?.takeStart ?? nullSnapshot };
198
+ }
199
+ function useMeetingRecorder() {
200
+ const store = useContext(MeetingRecorderContext);
201
+ useEffect(() => store?.activate(), [store]);
202
+ const recorder = useSyncExternalStore(
203
+ store?.subscribe ?? noopSubscribe,
204
+ store?.get ?? nullSnapshot,
205
+ nullSnapshot
206
+ );
207
+ const finished = useSyncExternalStore(
208
+ store?.subscribe ?? noopSubscribe,
209
+ store?.finished ?? (() => NO_FINISHED),
210
+ () => NO_FINISHED
211
+ );
212
+ const workspaceId = useSyncExternalStore(
213
+ store?.subscribe ?? noopSubscribe,
214
+ store?.workspaceId ?? nullSnapshot,
215
+ nullSnapshot
216
+ );
217
+ return { recorder, finished, workspaceId, openMeeting: store?.openMeeting ?? neverOpens };
218
+ }
219
+ function useMeetingRecorderState() {
220
+ const store = useContext(MeetingRecorderContext);
221
+ return useSyncExternalStore(
222
+ store?.subscribe ?? noopSubscribe,
223
+ () => store?.get()?.state ?? null,
224
+ () => null
225
+ );
226
+ }
227
+ function useMeetingRecorderControls() {
228
+ const store = useContext(MeetingRecorderContext);
229
+ const state = useSyncExternalStore(
230
+ store?.subscribe ?? noopSubscribe,
231
+ () => store?.get()?.state ?? null,
232
+ () => null
233
+ );
234
+ const supported = useSyncExternalStore(
235
+ store?.subscribe ?? noopSubscribe,
236
+ () => store?.get()?.supported ?? null,
237
+ () => null
238
+ );
239
+ return useMemo(() => {
240
+ if (!store) return null;
241
+ return {
242
+ state,
243
+ supported,
244
+ requestStart: () => {
245
+ if (canStartRecording(store.get()?.state)) store.requestStart({ title: "" });
246
+ },
247
+ stop: async () => {
248
+ const recorder = store.get();
249
+ if (!recorder || recorder.state !== "recording" && recorder.state !== "paused") {
250
+ return null;
251
+ }
252
+ const recordingId = recorder.recordingId;
253
+ const recordingWorkspaceId = store.workspaceId?.() ?? null;
254
+ await recorder.stop();
255
+ if (!recordingId || !recordingWorkspaceId) return null;
256
+ const opened = store.openMeeting?.(recordingId, recordingWorkspaceId) ?? false;
257
+ return { recordingId, workspaceId: recordingWorkspaceId, opened };
258
+ }
259
+ };
260
+ }, [store, state, supported]);
261
+ }
262
+ function noopSubscribe() {
263
+ return () => {
264
+ };
265
+ }
266
+ function nullSnapshot() {
267
+ return null;
268
+ }
269
+ function neverOpens() {
270
+ return false;
271
+ }
272
+
273
+ export {
274
+ canStartRecording,
275
+ createMeetingRecorderStore,
276
+ MeetingRecorderStoreProvider,
277
+ MeetingRecorderProvider,
278
+ usePendingMeetingStart,
279
+ useMeetingRecorder,
280
+ useMeetingRecorderState,
281
+ useMeetingRecorderControls
282
+ };
283
+ //# sourceMappingURL=chunk-ZHDFQITM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/meetings/recorder-context.tsx","../src/meetings/recorder-state.ts"],"sourcesContent":["/**\n * The workspace's one meeting recorder, held above the routes so a recording\n * keeps going while the person moves around the app.\n *\n * The capture code (MediaRecorder, IndexedDB, the uploader) loads lazily: the\n * host mounts the first time someone opens Meetings, or at startup when this\n * browser still holds a recording that hasn't finished uploading. The live\n * snapshot changes several times a second while recording, so it lives in an\n * external store; only the components that read it re-render.\n *\n * In the desktop app, the provider also carries out the call notifications'\n * choices; the host says where Meetings and a meeting are with\n * `onOpenMeetings` and `onOpenMeeting`.\n *\n * A recording belongs to the workspace it started in and keeps going when the\n * person moves to another workspace: the recorder follows the host's current\n * workspace only while nothing is being captured. It belongs to the person\n * too: a host that signs people in passes them as `scope`, and a recording\n * ends at once when they sign out or someone else signs in.\n */\nimport {\n createContext,\n lazy,\n Suspense,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n useSyncExternalStore,\n type ReactNode,\n} from \"react\";\nimport { getDesktopMeetingDetection } from \"@opengeni/sdk/desktop-bridge\";\nimport type { UseRecorderResult } from \"../recordings\";\nimport { canStartRecording, capturing } from \"./recorder-state\";\n\nexport { canStartRecording } from \"./recorder-state\";\n\nexport type MeetingRecorder = UseRecorderResult;\n\n/**\n * A recording someone asked for outside the recorder, such as from a desktop\n * call notification. An empty title leaves the name to Opengeni; `app` marks\n * a title the app guessed (the call app's name), which a calendar event or\n * the conversation replaces.\n */\nexport type MeetingStartRequest = { title: string; titleSource?: \"person\" | \"app\" };\n\nexport type MeetingRecorderStore = {\n get: () => MeetingRecorder | null;\n subscribe: (listener: () => void) => () => void;\n /** Publish the recorder, and the workspace its recordings go to. */\n set: (recorder: MeetingRecorder | null, workspaceId?: string | null) => void;\n /** Recordings whose upload finished in this tab, newest last. */\n finished: () => readonly string[];\n markFinished: (recordingId: string) => void;\n /** A start the recorder panel should make as soon as it can, or null. */\n pendingStart: () => MeetingStartRequest | null;\n requestStart: (request: MeetingStartRequest) => void;\n /** Take the pending start, so it happens once. */\n takeStart: () => MeetingStartRequest | null;\n /** Load the capture code. Idempotent. */\n activate: () => void;\n /**\n * The workspace the recorder's recordings go to: while one records, the\n * workspace it started in, even after the person moved to another one.\n * Absent from stores made before it existed.\n */\n workspaceId?: () => string | null;\n /**\n * Open a recorded meeting in its own workspace, through the host's\n * `onOpenMeeting`. False when the host gave no way to.\n */\n openMeeting?: (recordingId: string, workspaceId: string) => boolean;\n};\n\nexport function createMeetingRecorderStore(\n onActivate: () => void = () => {},\n onOpenMeeting: (recordingId: string, workspaceId: string) => boolean = () => false,\n): MeetingRecorderStore {\n let current: MeetingRecorder | null = null;\n let currentWorkspaceId: string | null = null;\n let finished: string[] = [];\n let pending: MeetingStartRequest | null = null;\n const listeners = new Set<() => void>();\n const notify = () => {\n for (const listener of listeners) listener();\n };\n return {\n get: () => current,\n subscribe: (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n },\n set: (recorder, workspaceId = null) => {\n current = recorder;\n currentWorkspaceId = recorder ? workspaceId : null;\n // A recording that started some other way (the Start button) uses up a\n // start still waiting, so it can't begin a second one after Stop.\n if (pending && capturing(recorder?.state)) pending = null;\n notify();\n },\n workspaceId: () => currentWorkspaceId,\n finished: () => finished,\n markFinished: (recordingId) => {\n finished = [...finished.filter((id) => id !== recordingId), recordingId];\n notify();\n },\n pendingStart: () => pending,\n requestStart: (request) => {\n pending = request;\n onActivate();\n notify();\n },\n takeStart: () => {\n const request = pending;\n if (request) {\n pending = null;\n notify();\n }\n return request;\n },\n activate: onActivate,\n openMeeting: (recordingId, workspaceId) => onOpenMeeting(recordingId, workspaceId),\n };\n}\n\nconst MeetingRecorderContext = createContext<MeetingRecorderStore | null>(null);\n\nexport const MeetingRecorderStoreProvider = MeetingRecorderContext.Provider;\n\nconst LazyRecorderHost = lazy(() => import(\"./recorder-host\"));\n\nconst RECORDING_DATABASE = \"opengeni-recordings\";\n\n/** True when this browser still holds recording chunks from an earlier visit. */\nasync function hasLocalRecordings(): Promise<boolean> {\n if (typeof indexedDB === \"undefined\" || typeof indexedDB.databases !== \"function\") return false;\n try {\n const databases = await indexedDB.databases();\n return databases.some((database) => database.name === RECORDING_DATABASE);\n } catch {\n return false;\n }\n}\n\nexport function MeetingRecorderProvider({\n workspaceId,\n scope,\n client,\n onOpenMeetings,\n onOpenMeeting,\n children,\n}: {\n /** The workspace recordings go to; null while the host is still finding it. */\n workspaceId: string | null;\n /**\n * Who records, such as the signed-in person's id, for a host that mounts\n * this above sign-in. A new value ends a recording at once and starts a\n * fresh recorder; null means nobody is signed in, so there is no recorder.\n * Omit it when the host remounts the provider when the person changes.\n */\n scope?: string | null | undefined;\n /**\n * The SDK client the recorder uploads with, for a host that mounts this\n * above its routes without an <OpenGeniProvider> there. The provider's\n * client otherwise.\n */\n client?: object | undefined;\n /** Show the Meetings page, where a desktop call notification's recording starts. */\n onOpenMeetings?: (() => void) | undefined;\n /**\n * Show one meeting, after a desktop call notification stopped its recording\n * or a recording made in another workspace stopped. `workspaceId` is the\n * workspace the meeting is in, which may not be the one shown.\n */\n onOpenMeeting?: ((recordingId: string, workspaceId: string) => void) | undefined;\n children: ReactNode;\n}) {\n const [active, setActive] = useState(false);\n const openMeeting = useRef(onOpenMeeting);\n useEffect(() => {\n openMeeting.current = onOpenMeeting;\n });\n const store = useMemo(\n () =>\n createMeetingRecorderStore(\n () => setActive(true),\n (recordingId, recordingWorkspaceId) => {\n if (!openMeeting.current) return false;\n openMeeting.current(recordingId, recordingWorkspaceId);\n return true;\n },\n ),\n [],\n );\n useEffect(() => {\n let cancelled = false;\n void hasLocalRecordings().then((found) => {\n if (found && !cancelled) setActive(true);\n });\n return () => {\n cancelled = true;\n };\n }, []);\n // Leaving a workspace must not end a recording made in it: the host, and\n // with it the capture, stays in the recording's workspace until it stops,\n // then follows the host's current workspace. Another person (scope) gets a\n // fresh host at once, which ends the capture.\n const busy = useSyncExternalStore(\n store.subscribe,\n () => capturing(store.get()?.state),\n () => false,\n );\n useDesktopMeetingRequests(store, {\n // The desktop app asks about calls only while a page can record them:\n // someone signed in, with a workspace to record to, or a recording going.\n canRecord: scope !== null && (workspaceId !== null || busy),\n signedOut: scope === null,\n onOpenMeetings,\n });\n // A start someone asked for belongs to who was signed in then.\n useEffect(() => {\n store.takeStart();\n }, [store, scope]);\n const [host, setHost] = useState({ scope, workspaceId });\n if (host.scope !== scope || (!busy && host.workspaceId !== workspaceId)) {\n setHost({ scope, workspaceId });\n }\n const hostWorkspaceId = host.scope === scope ? host.workspaceId : workspaceId;\n return (\n <MeetingRecorderContext.Provider value={store}>\n {children}\n {active && scope !== null && hostWorkspaceId ? (\n <Suspense fallback={null}>\n <LazyRecorderHost\n key={`${scope ?? \"\"}:${hostWorkspaceId}`}\n store={store}\n workspaceId={hostWorkspaceId}\n client={client}\n />\n </Suspense>\n ) : null}\n </MeetingRecorderContext.Provider>\n );\n}\n\nconst NO_FINISHED: readonly string[] = [];\n\n/**\n * The desktop app's meeting card: \"Record\" opens Meetings and starts\n * recording the call; \"Stop recording\" (the call ended) stops and opens the\n * meeting.\n */\nfunction useDesktopMeetingRequests(\n store: MeetingRecorderStore,\n navigation: {\n canRecord: boolean;\n signedOut: boolean;\n onOpenMeetings?: (() => void) | undefined;\n },\n): void {\n const latest = useRef(navigation);\n useEffect(() => {\n latest.current = navigation;\n });\n const canRecord = navigation.canRecord;\n useEffect(() => {\n // Taking choices tells the app this page can record; stopping while the\n // page stays (signed out, no workspace) tells it nobody can.\n if (!canRecord) return;\n // The bridge itself, not the app layer's helper, which would bring every\n // contract into this module, mounted above a host's routes. Any Electron\n // app that embeds these pages can offer it, not only the Opengeni app.\n const detection = getDesktopMeetingDetection();\n if (!detection) return;\n return detection.onRequest((request) => {\n const recorder = store.get();\n if (request.kind === \"record\") {\n // Nobody signed in: a start kept for later would record, for whoever\n // signs in next, a call that may be long over.\n if (latest.current.signedOut) return;\n // Already recording shows that recording rather than start a second one.\n // The call app's name is only a guess at the meeting's.\n if (canStartRecording(recorder?.state)) {\n store.requestStart({ title: request.title, titleSource: \"app\" });\n }\n latest.current.onOpenMeetings?.();\n return;\n }\n const recordingId = recorder?.recordingId ?? null;\n const recordingWorkspaceId = store.workspaceId?.() ?? null;\n if (request.kind === \"open\") {\n // The app's menu: show the meeting this page records, its live transcript.\n const opened =\n recordingId && recordingWorkspaceId && capturing(recorder?.state)\n ? store.openMeeting?.(recordingId, recordingWorkspaceId)\n : false;\n if (!opened) latest.current.onOpenMeetings?.();\n return;\n }\n if (request.kind !== \"stop\") return;\n if (!recorder || (recorder.state !== \"recording\" && recorder.state !== \"paused\")) return;\n void recorder.stop().then(() => {\n if (recordingId && recordingWorkspaceId) {\n store.openMeeting?.(recordingId, recordingWorkspaceId);\n }\n });\n });\n }, [store, canRecord]);\n}\n\n/** The start a desktop notification asked for, until the recorder panel takes it. */\nexport function usePendingMeetingStart(): {\n request: MeetingStartRequest | null;\n take: () => MeetingStartRequest | null;\n} {\n const store = useContext(MeetingRecorderContext);\n const request = useSyncExternalStore(\n store?.subscribe ?? noopSubscribe,\n store?.pendingStart ?? nullSnapshot,\n nullSnapshot,\n );\n return { request, take: store?.takeStart ?? nullSnapshot };\n}\n\n/** The live recorder, loading it on first use. Null until the capture code is ready. */\nexport function useMeetingRecorder(): {\n recorder: MeetingRecorder | null;\n finished: readonly string[];\n /** The workspace the recorder's recording is in; may differ from the one shown. */\n workspaceId: string | null;\n /**\n * Open a meeting the recorder made in its own workspace. False when the\n * host gave no way to, so the caller opens it as usual.\n */\n openMeeting: (recordingId: string, workspaceId: string) => boolean;\n} {\n const store = useContext(MeetingRecorderContext);\n useEffect(() => store?.activate(), [store]);\n const recorder = useSyncExternalStore(\n store?.subscribe ?? noopSubscribe,\n store?.get ?? nullSnapshot,\n nullSnapshot,\n );\n const finished = useSyncExternalStore(\n store?.subscribe ?? noopSubscribe,\n store?.finished ?? (() => NO_FINISHED),\n () => NO_FINISHED,\n );\n const workspaceId = useSyncExternalStore(\n store?.subscribe ?? noopSubscribe,\n store?.workspaceId ?? nullSnapshot,\n nullSnapshot,\n );\n return { recorder, finished, workspaceId, openMeeting: store?.openMeeting ?? neverOpens };\n}\n\n/** Only the recorder's state word, for the rail: re-renders on state changes, not on every tick. */\nexport function useMeetingRecorderState(): MeetingRecorder[\"state\"] | null {\n const store = useContext(MeetingRecorderContext);\n return useSyncExternalStore(\n store?.subscribe ?? noopSubscribe,\n () => store?.get()?.state ?? null,\n () => null,\n );\n}\n\n/**\n * The recorder's Start and Stop, for the app's actions (⌘K, keys, the desktop\n * menu bar). Null without a recorder provider. Re-renders on state changes,\n * not on every tick.\n */\nexport type MeetingRecorderControls = {\n /** The recorder's state; null until its capture code loads. */\n state: MeetingRecorder[\"state\"] | null;\n /** Whether this browser can record; null until the capture code loads. */\n supported: boolean | null;\n /**\n * Start recording as the Meetings page's Start recording button does, once\n * that page's recorder is ready; the caller shows Meetings next. Does\n * nothing while a recording is going.\n */\n requestStart: () => void;\n /** Stop the recording and open it, as a desktop call notification's Stop does. */\n stop: () => Promise<StoppedMeeting | null>;\n};\n\n/** The meeting a Stop ended; `opened` is false when the host gave no way to open it. */\nexport type StoppedMeeting = { recordingId: string; workspaceId: string; opened: boolean };\n\nexport function useMeetingRecorderControls(): MeetingRecorderControls | null {\n const store = useContext(MeetingRecorderContext);\n const state = useSyncExternalStore(\n store?.subscribe ?? noopSubscribe,\n () => store?.get()?.state ?? null,\n () => null,\n );\n const supported = useSyncExternalStore(\n store?.subscribe ?? noopSubscribe,\n () => store?.get()?.supported ?? null,\n () => null,\n );\n return useMemo(() => {\n if (!store) return null;\n return {\n state,\n supported,\n requestStart: () => {\n if (canStartRecording(store.get()?.state)) store.requestStart({ title: \"\" });\n },\n stop: async () => {\n const recorder = store.get();\n if (!recorder || (recorder.state !== \"recording\" && recorder.state !== \"paused\")) {\n return null;\n }\n const recordingId = recorder.recordingId;\n const recordingWorkspaceId = store.workspaceId?.() ?? null;\n await recorder.stop();\n if (!recordingId || !recordingWorkspaceId) return null;\n const opened = store.openMeeting?.(recordingId, recordingWorkspaceId) ?? false;\n return { recordingId, workspaceId: recordingWorkspaceId, opened };\n },\n };\n }, [store, state, supported]);\n}\n\nfunction noopSubscribe(): () => void {\n return () => {};\n}\n\nfunction nullSnapshot(): null {\n return null;\n}\n\nfunction neverOpens(): boolean {\n return false;\n}\n","/**\n * What the recorder's state word means for starting and keeping a recording.\n * Pure, so the app's action registry can read it without the recorder's\n * React context.\n */\nimport type { RecorderState } from \"@opengeni/sdk/recordings\";\n\n/** States in which the recorder holds a capture that unmounting its host would end. */\nexport function capturing(state: RecorderState | null | undefined): boolean {\n return (\n state === \"starting\" || state === \"recording\" || state === \"paused\" || state === \"stopping\"\n );\n}\n\n/**\n * States in which Start recording starts a new recording: nothing recorded\n * yet, the last one stopped, or the last start failed. Null is a recorder\n * whose capture code hasn't loaded yet.\n */\nexport function canStartRecording(state: RecorderState | null | undefined): boolean {\n return !capturing(state);\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,75 @@
1
+ "use client";
2
+ import {
3
+ apiErrorFacts
4
+ } from "./chunk-O4OOG3D6.js";
5
+
6
+ // src/app/lib/subscription-plans.tsx
7
+ import { seatUpgradePlan } from "@opengeni/contracts/seat-upgrade";
8
+ function subscriptionAction(current, plans, target) {
9
+ if (current.key === target.key || current.key === "enterprise" || current.cancelAtPeriodEnd)
10
+ return null;
11
+ if (current.status !== "active") return null;
12
+ if (target.key === "free") return current.key === "free" ? null : "cancel";
13
+ if (!target.selfService || target.monthlyPriceMicros === null) return null;
14
+ if (current.key === "free") return "checkout";
15
+ const price = plans.find((plan) => plan.key === current.key)?.monthlyPriceMicros;
16
+ if (price === void 0 || price === null || price === target.monthlyPriceMicros) return null;
17
+ return target.monthlyPriceMicros > price ? "upgrade" : "downgrade";
18
+ }
19
+ function planDate(value) {
20
+ if (!value || !Number.isFinite(Date.parse(value))) return null;
21
+ return new Intl.DateTimeFormat(void 0, {
22
+ month: "short",
23
+ day: "numeric",
24
+ year: "numeric",
25
+ hour: "2-digit",
26
+ minute: "2-digit"
27
+ }).format(new Date(value));
28
+ }
29
+ function planSeats(plan) {
30
+ return plan.seatLimit === null ? `${plan.seatsUsed} seats used \xB7 Unlimited` : `${plan.seatsUsed} / ${plan.seatLimit} seats used`;
31
+ }
32
+ function planSeatsFull(plan) {
33
+ return plan != null && plan.seatLimit !== null && plan.seatsUsed >= plan.seatLimit;
34
+ }
35
+ function seatUpgradeFor(plan, plans, additionalSeats = 1) {
36
+ if (!plan || !plans?.length) return null;
37
+ const target = seatUpgradePlan(plans, plan.key, plan.seatsUsed + Math.max(1, additionalSeats));
38
+ return target ? { key: target.key, label: target.label } : null;
39
+ }
40
+ function seatUpgradeFromError(error) {
41
+ const details = error && typeof error === "object" && "details" in error ? error.details : null;
42
+ if (!details || typeof details !== "object") return null;
43
+ const { upgradePlan, upgradePlanLabel } = details;
44
+ if (typeof upgradePlan !== "string" || typeof upgradePlanLabel !== "string") return null;
45
+ const key = upgradePlan.trim();
46
+ const label = upgradePlanLabel.trim();
47
+ return key && label ? { key, label } : null;
48
+ }
49
+ function isSeatLimitError(error, plan) {
50
+ const facts = apiErrorFacts(error);
51
+ if (facts.status !== 402) return false;
52
+ let code = facts.code;
53
+ const body = error && typeof error === "object" && "body" in error ? error.body : null;
54
+ try {
55
+ if (typeof body === "string") {
56
+ const decoded = JSON.parse(body);
57
+ const bodyCode = typeof decoded?.error === "string" ? decoded.error : decoded?.error?.code ?? decoded?.code;
58
+ if (typeof bodyCode === "string") code ??= bodyCode;
59
+ }
60
+ } catch {
61
+ }
62
+ if (code === "seat_limit_reached") return true;
63
+ return (code === void 0 || code === "payment_required") && plan != null && plan.seatLimit !== null && plan.seatsUsed >= plan.seatLimit;
64
+ }
65
+
66
+ export {
67
+ subscriptionAction,
68
+ planDate,
69
+ planSeats,
70
+ planSeatsFull,
71
+ seatUpgradeFor,
72
+ seatUpgradeFromError,
73
+ isSeatLimitError
74
+ };
75
+ //# sourceMappingURL=chunk-ZLYCOBHW.js.map
@@ -0,0 +1,89 @@
1
+ "use client";
2
+ import {
3
+ hasWorkspacePermission
4
+ } from "./chunk-H2ALCTWC.js";
5
+ import {
6
+ toast
7
+ } from "./chunk-O4EA4F3W.js";
8
+ import {
9
+ useAppContext
10
+ } from "./chunk-JDFDPMKX.js";
11
+ import {
12
+ apiErrorFacts
13
+ } from "./chunk-O4OOG3D6.js";
14
+ import {
15
+ Switch
16
+ } from "./chunk-7V5REBCP.js";
17
+ import {
18
+ SettingRow
19
+ } from "./chunk-YNF2OC54.js";
20
+
21
+ // src/app/components/session/session-unattended-setting.tsx
22
+ import { useEffect, useState } from "react";
23
+ import { jsx } from "react/jsx-runtime";
24
+ function UnattendedSetting(props) {
25
+ const context = useAppContext();
26
+ const { session } = props;
27
+ const canEdit = hasWorkspacePermission(
28
+ context.accessContext,
29
+ session.workspaceId,
30
+ "sessions:control"
31
+ );
32
+ const unattended = session.unattended === true;
33
+ const [pending, setPending] = useState(null);
34
+ const [saved, setSaved] = useState(null);
35
+ const [error, setError] = useState(null);
36
+ const checked = pending ?? (saved !== null && saved !== unattended ? saved : unattended);
37
+ useEffect(() => {
38
+ if (saved !== null && saved === unattended) setSaved(null);
39
+ }, [unattended, saved]);
40
+ const save = async (next) => {
41
+ setPending(next);
42
+ setError(null);
43
+ try {
44
+ const updated = await context.client.updateSessionUnattended(
45
+ session.workspaceId,
46
+ session.id,
47
+ { unattended: next }
48
+ );
49
+ setSaved(updated.unattended === true);
50
+ context.setSession(
51
+ (current) => current?.id === updated.id && current.workspaceId === updated.workspaceId ? { ...current, unattended: updated.unattended } : current
52
+ );
53
+ void props.onSaved?.().catch(() => void 0);
54
+ toast.success(next ? "The agent will work without you." : "The agent can ask you again.");
55
+ } catch (caught) {
56
+ const facts = apiErrorFacts(caught);
57
+ setError(
58
+ facts.code === "SESSION_ARCHIVED_READ_ONLY" || facts.status === 409 ? "This chat is read-only, so this can't change." : "Couldn't save. Try again."
59
+ );
60
+ } finally {
61
+ setPending(null);
62
+ }
63
+ };
64
+ return /* @__PURE__ */ jsx(
65
+ SettingRow,
66
+ {
67
+ "data-unattended-setting": true,
68
+ className: "-mt-3",
69
+ label: "Work without me",
70
+ description: "The agent won't stop to ask you or wait for approvals. It finishes what it can and lists what's left for you.",
71
+ error,
72
+ control: /* @__PURE__ */ jsx(
73
+ Switch,
74
+ {
75
+ checked,
76
+ pending: pending !== null,
77
+ disabled: !canEdit,
78
+ disabledReason: canEdit ? void 0 : "Changing this needs permission to run this session.",
79
+ onCheckedChange: (next) => void save(next)
80
+ }
81
+ )
82
+ }
83
+ );
84
+ }
85
+
86
+ export {
87
+ UnattendedSetting
88
+ };
89
+ //# sourceMappingURL=chunk-ZNJ5MTXV.js.map
@@ -0,0 +1,155 @@
1
+ "use client";
2
+ import {
3
+ authorizedSessionReadWorkspaceIds,
4
+ canonicalSessionDeepLinkTarget,
5
+ resolveAuthorizedSessionWorkspace
6
+ } from "./chunk-7TBWTROR.js";
7
+ import {
8
+ CrossSlotDeepLinkRecovery
9
+ } from "./chunk-HNLR7Q4Z.js";
10
+ import {
11
+ workspaceSessionsPath
12
+ } from "./chunk-H6474TCK.js";
13
+ import {
14
+ LoadingPanel,
15
+ ProblemPanel
16
+ } from "./chunk-VGYXW3VG.js";
17
+ import {
18
+ usePage
19
+ } from "./chunk-BXBDYNRP.js";
20
+ import {
21
+ useAppContext
22
+ } from "./chunk-JDFDPMKX.js";
23
+ import {
24
+ Button
25
+ } from "./chunk-7QQN3KNP.js";
26
+ import {
27
+ DEFAULT_TRANSIENT_READ_RETRY,
28
+ transientReadRetryStep,
29
+ usePageLiveActivity
30
+ } from "./chunk-RV3O5OCQ.js";
31
+
32
+ // src/app/routes/session-unavailable.tsx
33
+ import { isTransientRequestError } from "@opengeni/sdk";
34
+ import { useEffect, useMemo, useRef, useState } from "react";
35
+ import { jsx } from "react/jsx-runtime";
36
+ function SessionUnavailableRoute(props) {
37
+ const page = usePage();
38
+ const context = useAppContext();
39
+ const [state, setState] = useState(
40
+ "resolving"
41
+ );
42
+ const [attempt, setAttempt] = useState(0);
43
+ const transientStreakRef = useRef(null);
44
+ const pageLive = usePageLiveActivity();
45
+ const pageLiveRef = useRef(pageLive);
46
+ pageLiveRef.current = pageLive;
47
+ const deferredRetryRef = useRef(false);
48
+ useEffect(() => {
49
+ if (!pageLive || !deferredRetryRef.current) return;
50
+ deferredRetryRef.current = false;
51
+ transientStreakRef.current = null;
52
+ setAttempt((value) => value + 1);
53
+ }, [pageLive]);
54
+ const sessionWorkspaceIds = useMemo(
55
+ () => authorizedSessionReadWorkspaceIds(context.accessContext, context.workspaces),
56
+ [context.accessContext, context.workspaces]
57
+ );
58
+ const backWorkspaceId = sessionWorkspaceIds.includes(props.workspaceId) ? props.workspaceId : sessionWorkspaceIds.find(
59
+ (workspaceId) => workspaceId === context.accessContext.defaultWorkspaceId
60
+ ) ?? sessionWorkspaceIds[0] ?? null;
61
+ useEffect(() => {
62
+ let cancelled = false;
63
+ let retryTimer = null;
64
+ deferredRetryRef.current = false;
65
+ const key = `${props.workspaceId}\0${props.sessionId}`;
66
+ if (transientStreakRef.current?.key !== key) transientStreakRef.current = null;
67
+ setState(
68
+ (current) => current === "transient" && transientStreakRef.current ? current : "resolving"
69
+ );
70
+ void resolveAuthorizedSessionWorkspace(
71
+ context.client,
72
+ context.accessContext.workspaceGrants,
73
+ props.sessionId,
74
+ {
75
+ authorizedWorkspaceIds: sessionWorkspaceIds,
76
+ excludeWorkspaceId: props.workspaceId
77
+ }
78
+ ).then((resolution) => {
79
+ if (cancelled) return;
80
+ if (resolution.status === "resolved") {
81
+ transientStreakRef.current = null;
82
+ page.assign(
83
+ canonicalSessionDeepLinkTarget(
84
+ resolution.workspaceId,
85
+ props.sessionId,
86
+ new URL(page.href())
87
+ ),
88
+ { replace: true }
89
+ );
90
+ return;
91
+ }
92
+ if (resolution.status === "error" && isTransientRequestError(resolution.error)) {
93
+ const now = Date.now();
94
+ const streak = transientStreakRef.current ??= {
95
+ key,
96
+ since: now,
97
+ attempts: 0,
98
+ surfaced: false
99
+ };
100
+ const step = transientReadRetryStep(
101
+ streak,
102
+ now,
103
+ DEFAULT_TRANSIENT_READ_RETRY,
104
+ resolution.error
105
+ );
106
+ if (!step.quiet) setState("transient");
107
+ retryTimer = setTimeout(() => {
108
+ retryTimer = null;
109
+ if (pageLiveRef.current) setAttempt((value) => value + 1);
110
+ else deferredRetryRef.current = true;
111
+ }, step.delayMs);
112
+ return;
113
+ }
114
+ transientStreakRef.current = null;
115
+ setState(resolution.status === "error" ? "error" : "not-found");
116
+ });
117
+ return () => {
118
+ cancelled = true;
119
+ if (retryTimer !== null) clearTimeout(retryTimer);
120
+ };
121
+ }, [
122
+ page,
123
+ context.accessContext.workspaceGrants,
124
+ context.client,
125
+ sessionWorkspaceIds,
126
+ props.sessionId,
127
+ props.workspaceId,
128
+ attempt
129
+ ]);
130
+ if (state === "resolving") return /* @__PURE__ */ jsx(LoadingPanel, { label: "Looking for this session" });
131
+ if (state === "transient") {
132
+ return /* @__PURE__ */ jsx(
133
+ ProblemPanel,
134
+ {
135
+ title: "Temporarily unavailable",
136
+ description: "Retrying automatically.",
137
+ action: /* @__PURE__ */ jsx(Button, { type: "button", variant: "outline", onClick: () => setAttempt((value) => value + 1), children: "Try again" })
138
+ }
139
+ );
140
+ }
141
+ const unavailable = /* @__PURE__ */ jsx(
142
+ ProblemPanel,
143
+ {
144
+ title: state === "error" ? "Session unavailable" : "Session not found",
145
+ description: state === "error" ? "We couldn't verify another authorized workspace right now. Try again in a moment." : "This session doesn't exist or isn't available in any workspace you can access.",
146
+ action: backWorkspaceId ? /* @__PURE__ */ jsx(Button, { asChild: true, type: "button", variant: "outline", children: /* @__PURE__ */ jsx("a", { href: workspaceSessionsPath(backWorkspaceId), children: "Back to sessions" }) }) : void 0
147
+ }
148
+ );
149
+ return state === "not-found" ? /* @__PURE__ */ jsx(CrossSlotDeepLinkRecovery, { path: new URL(page.href()).pathname, fallback: unavailable }) : unavailable;
150
+ }
151
+
152
+ export {
153
+ SessionUnavailableRoute
154
+ };
155
+ //# sourceMappingURL=chunk-ZSGY3H53.js.map