@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 @@
1
+ {"version":3,"sources":["../src/app/app-state.tsx"],"sourcesContent":["// The session UI's app state: client configuration, the signed-in principal\n// and its workspace access, and the cross-route console state (model choice,\n// repository and tool selection, the open session and its event feed, session\n// creation). Every host renders the session UI on top of this one state\n// machine: the web app with its own sign-in (`authority: \"app\"`), embeds with a\n// client the embedding page already authenticated (`authority: \"host\"`).\nimport { t } from \"./lib/console-text\";\nimport {\n createSessionEventFeedStore,\n useLatestCallback,\n type AppContextValue,\n type GitHubRefreshOptions,\n type PendingSlackLink,\n type SessionCreationHandoff,\n} from \"./app-context\";\nimport {\n startWorkspaceClientConfigRefresh,\n withWorkspaceClientConfig,\n type WorkspaceClientConfig,\n} from \"./lib/workspace-client-config\";\nimport { markIntegrationConnectRedirect } from \"./lib/integration-connect-redirect\";\nimport { userErrorText } from \"../ui/api-error\";\nimport {\n hasWorkspacePermission,\n isWorkspacePermissionDenied,\n lacksWorkspacePermission,\n} from \"./lib/permissions\";\nimport { creationHandoffReconciled } from \"./lib/session-creation-handoff\";\nimport { useConsoleSharedQueries } from \"./lib/shared-query\";\nimport { useNavigate, usePage, useRouterState } from \"./lib/navigation\";\nimport { useEmbedded, useHostMessageContext, useHostMessageContextTools } from \"./lib/app-host\";\nimport { createWithOpeningContext } from \"./lib/message-context\";\nimport {\n resolveWorkspaceSessionDefaults,\n resolveWorkspaceSessionToolDefaults,\n} from \"@opengeni/contracts\";\nimport type {\n McpConnectionAccountSelection,\n PersonalGitHubRepositorySelectionInput,\n UpdateSessionRequest,\n} from \"@opengeni/sdk\";\nimport { OpenGeniApiError, type OpenGeniBrowserClient } from \"@opengeni/sdk/browser\";\nimport { composerSubmissionErrorMessage } from \"../lib/format\";\nimport { isTransientServiceFailure } from \"../lib/transient-retry\";\nimport { createQuietRetry } from \"./lib/quiet-retry\";\nimport { claimHumanInputDraftOwner, forgetAllHumanInputDrafts } from \"../human-input-draft-store\";\nimport type { SessionEventsConnectionState } from \"../hooks/use-session-events\";\nimport type { BrowserAccountTransition } from \"../accounts\";\nimport {\n type Dispatch,\n type SetStateAction,\n useCallback,\n useEffect,\n useInsertionEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { flushSync } from \"react-dom\";\nimport { toast } from \"./lib/toast\";\nimport type { AnalyticsEventName, AnalyticsProperties } from \"./lib/analytics-types\";\nimport {\n bootstrapErrorPresentation,\n bootstrapWaitingPresentation,\n type BootstrapErrorPresentation,\n} from \"./lib/bootstrap-error\";\nimport { readBootstrap } from \"./lib/bootstrap-read\";\nimport { startDeploymentRefresh } from \"./lib/deployment-refresh\";\nimport {\n ManagedAuthSessionUnavailableError,\n signOutWithAuthoritativeReconciliation,\n} from \"./lib/managed-auth-transition\";\nimport { unlinkGitHubInstallationWithReconciliation } from \"./lib/github-installation-unlink\";\nimport {\n beginSocialLoginAnalytics,\n noteSuccessfulLogin,\n observeSocialLoginResult,\n} from \"./lib/analytics-login\";\nimport {\n loadCurrentManagedSelfContext,\n managedSelfContextIdentity,\n type ManagedSelfContext,\n type ManagedSelfContextIdentity,\n} from \"./lib/managed-self-context\";\nimport { sameSessionForContext } from \"./lib/session-context\";\nimport { runSingleFlight } from \"./lib/single-flight\";\nimport {\n buildCreateSessionRequest,\n classifyCreateSessionFailure,\n prepareCreateSessionAttempt,\n retainCreateSessionAttemptAfterFailure,\n type PendingCreateAttempt,\n} from \"./lib/session-create\";\nimport { isPaymentRequiredError, paymentRefusalCode } from \"./lib/model-access\";\nimport type { CreditRequired } from \"./components/credit-required-gate\";\nimport {\n applySessionPinProjection,\n notifySessionPinChanged,\n reconcileFailedSessionPin,\n SessionChannelProjectionAuthority,\n} from \"./lib/session-pins\";\nimport {\n isAuthorizedWorkspaceId,\n workspaceNavigationPreferenceStorageId,\n writeLastWorkspaceId,\n writeLastWorkspaceIdForOrganization,\n organizationWorkspacePreferenceStorageId,\n} from \"./lib/workspace-navigation-preference\";\nimport {\n buildResources,\n buildOpenGeniUiTools,\n enabledWorkspaceCapabilityMcpServers,\n groupRepositories,\n initialReasoningEffort,\n installedApiIntegrationMcpServers,\n isAbortError,\n mergeMcpServerOptions,\n selectableMcpServers,\n type IntelligenceEffort,\n type McpServerOption,\n type RepoDraft,\n} from \"./lib/session-tools\";\nimport { useCapabilityToolDefaults } from \"./lib/use-capability-tool-defaults\";\nimport { useManualRepositoryCatalogReconciliation } from \"./lib/use-manual-repository-catalog-reconciliation\";\nimport { upsertWorkspace } from \"./lib/workspaces\";\nimport { deleteWorkspaceWithReconciliation } from \"./lib/workspace-deletion\";\nimport {\n beginWorkspaceOperation,\n beginWorkspaceTransition,\n invalidatePrincipalTransition,\n invalidateWorkspaceTransition,\n ownsPrincipalTransition,\n ownsTransitionInvocation,\n ownsWorkspaceOperation,\n ownsWorkspaceTransition,\n runCurrentWorkspaceOperation,\n runCurrentWorkspaceRequest,\n runCurrentTransitionInvocation,\n settleWorkspaceOperation,\n type PrincipalTransitionIdentity,\n type WorkspaceOperationIdentity,\n type WorkspaceTransitionIdentity,\n} from \"./lib/workspace-transition\";\nimport {\n reusablePersonalGitHubAuthority,\n type PersonalGitHubAuthorityCache,\n} from \"./lib/personal-github-authority\";\nimport type {\n AccessContext,\n AuthSession,\n CapabilityCatalogItem,\n CapabilityCatalogResponse,\n ClientConfig,\n CreateWorkspaceRequest,\n GitHubAppInfo,\n GitHubRepository,\n LatencyMode,\n ResourceRef,\n PersonalGitHubConnectionStatusResponse,\n PersonalGitHubRepositoryCatalogItem,\n PersonalGitHubRepositorySelectionState,\n Session,\n SlackUserLinkAccessRequest,\n TurnSubmission,\n UpdateWorkspaceSettingsRequest,\n Workspace,\n} from \"./types\";\nimport { errorMessage } from \"@opengeni/contracts/values\";\n\n/**\n * Transport and sign-in functions the app state calls. Pass one stable object\n * (a module constant): its functions are read once per render.\n */\nexport type AppStateHost = Readonly<{\n /**\n * \"app\": the app owns sign-in (deployment key, configured token or managed\n * session, as the server's client configuration says). \"host\": the\n * embedding page already authenticated `createOpenGeniClient`'s client, so\n * no sign-in step or access-key gate runs.\n */\n authority: \"app\" | \"host\";\n createOpenGeniClient: (beginSharedRead?: () => number) => OpenGeniBrowserClient;\n fetchClientConfig: (signal?: AbortSignal, workspaceId?: string) => Promise<ClientConfig>;\n /** Product analytics for sign-in and sign-up outcomes. */\n captureProductEvent: (name: AnalyticsEventName, properties?: AnalyticsProperties) => void;\n /** Re-checks the deployed revision on focus and on an interval; absent: never. */\n checkDeploymentRevision?: ((signal: AbortSignal) => Promise<void>) | undefined;\n // Sign-in for `authority: \"app\"`; hosts with `authority: \"host\"` never reach them.\n fetchAuthSession: () => Promise<AuthSession | null>;\n signInEmail: (input: {\n email: string;\n password: string;\n rememberMe?: boolean;\n }) => Promise<unknown>;\n signUpEmail: (input: {\n name: string;\n email: string;\n password: string;\n signupChallengeToken?: string;\n }) => Promise<unknown>;\n signOutManaged: () => Promise<unknown>;\n startManagedSocialSignIn: (\n provider: \"google\" | \"github\",\n signupChallengeToken?: string,\n ) => Promise<void>;\n /**\n * Passkey sign-in and passkey-only sign-up. Both run the browser's WebAuthn\n * ceremony and leave the managed session cookie set; absent: the app offers\n * no passkeys even where the server would.\n */\n signInPasskey?: () => Promise<unknown>;\n signUpPasskey?: (input: { name: string; signupChallengeToken?: string }) => Promise<unknown>;\n configureManagedActorEpoch: (epoch: string | null) => void;\n getStoredAccessKey: () => string | null;\n setStoredAccessKey: (value: string) => void;\n clearStoredAccessKey: () => void;\n /** A signed Slack link the page opened with, exchanged once after sign-in. */\n slackLink: SlackLinkPrepareController<SlackUserLinkAccessRequest>;\n initialInvalidSlackLinkQueryWorkspaceId: string | null;\n}>;\n\nexport type AppStateOptions = Readonly<{\n /** Skip the client-configuration bootstrap (public pages that need no session). */\n bootstrapSuspended: boolean;\n}>;\n\nexport type AppState = ReturnType<typeof useAppState>;\n\ntype StartSessionOptions = Parameters<AppContextValue[\"startSession\"]>[2];\n\n/** The one \"GitHub status unavailable\" toast; a newer failure replaces it. */\nexport const GITHUB_STATUS_TOAST_ID = \"opengeni-github-status\";\n/** The one \"Your GitHub account is unavailable\" toast. */\nexport const PERSONAL_GITHUB_STATUS_TOAST_ID = \"opengeni-personal-github-status\";\n\n/** The one lasting \"Reconnect your GitHub\" toast. */\nexport const PERSONAL_GITHUB_RECONNECT_TOAST_ID = \"opengeni-personal-github-reconnect\";\n\n/**\n * Whether a personal GitHub status asks the person to reconnect: the stored\n * grant stopped working (GitHub refused a refresh), not a disconnect.\n */\nfunction personalGitHubNeedsReconnect(\n connection: PersonalGitHubConnectionStatusResponse[\"connection\"] | null | undefined,\n): connection is NonNullable<PersonalGitHubConnectionStatusResponse[\"connection\"]> {\n return Boolean(connection && connection.status !== \"active\" && connection.status !== \"revoked\");\n}\n\ntype PersonalGitHubReconnectToast = {\n /** The connection (id:version) the toast last appeared for. */\n shownFor: string | null;\n};\n\n/**\n * One lasting toast per stale grant: it stays until the person reconnects or\n * dismisses it, and the next background read does not bring it back.\n */\nfunction announcePersonalGitHubReconnect(\n state: PersonalGitHubReconnectToast,\n connection: NonNullable<PersonalGitHubConnectionStatusResponse[\"connection\"]>,\n onReconnect: () => void,\n): void {\n const key = `${connection.id}:${connection.version}`;\n if (state.shownFor === key) return;\n state.shownFor = key;\n const login =\n typeof connection.metadata.githubLogin === \"string\" && connection.metadata.githubLogin\n ? connection.metadata.githubLogin\n : null;\n showPersonalGitHubReconnectToast(login, onReconnect);\n}\n\n/** The lasting \"Reconnect your GitHub\" toast with its one action. */\nexport function showPersonalGitHubReconnectToast(\n githubLogin: string | null,\n onReconnect: () => void,\n): void {\n toast.warning(\"Reconnect your GitHub\", {\n id: PERSONAL_GITHUB_RECONNECT_TOAST_ID,\n description: `Opengeni can't work as ${githubLogin ? `@${githubLogin}` : \"you\"} until you reconnect.`,\n duration: Infinity,\n closeButton: true,\n action: { label: \"Reconnect\", onClick: onReconnect },\n });\n}\n\nfunction clearPersonalGitHubReconnectToast(state: PersonalGitHubReconnectToast): void {\n if (state.shownFor === null) return;\n state.shownFor = null;\n toast.dismiss(PERSONAL_GITHUB_RECONNECT_TOAST_ID);\n}\n\nexport type SlackLinkPrepareController<Request> = ReturnType<\n typeof createSlackLinkPrepareController<Request>\n>;\n\nexport type SlackLinkPreparePhase = \"none\" | \"raw\" | \"in_flight\" | \"prepared\" | \"failed\";\n\n/**\n * A signed-out Slack deep link has already been scrubbed from browser history,\n * so its raw in-memory bearer may cross exactly the sign-in that authenticates\n * its exchange. Every other principal transition clears it.\n */\nexport function preserveSlackLinkForManagedAuth(\n mode: \"signin\" | \"signup\",\n phase: SlackLinkPreparePhase,\n): boolean {\n return mode === \"signin\" && phase === \"raw\";\n}\n\nexport function createSlackLinkPrepareController<Request>(value: PendingSlackLink | null) {\n let workspaceId = value?.workspaceId ?? null;\n let bearer = value?.token ?? null;\n let inFlight: Promise<Request> | null = null;\n let prepared: Request | null = null;\n let failure: unknown;\n let hasFailure = false;\n let generation = 0;\n\n return {\n workspaceId: () => workspaceId,\n phase: (): SlackLinkPreparePhase => {\n if (!workspaceId) return \"none\";\n if (bearer !== null) return \"raw\";\n if (inFlight) return \"in_flight\";\n if (prepared !== null) return \"prepared\";\n return hasFailure ? \"failed\" : \"none\";\n },\n prepare: (\n requestedWorkspaceId: string,\n exchange: (token: string) => Promise<Request>,\n ): Promise<Request | null> => {\n if (!workspaceId || requestedWorkspaceId !== workspaceId) return Promise.resolve(null);\n if (prepared !== null) return Promise.resolve(prepared);\n if (hasFailure) return Promise.reject(failure);\n if (inFlight) return inFlight;\n if (bearer === null) return Promise.resolve(null);\n\n const token = bearer;\n const claimedGeneration = generation;\n let exchangePromise: Promise<Request>;\n try {\n exchangePromise = exchange(token);\n } catch (error) {\n exchangePromise = Promise.reject(error);\n }\n // The exchange request now owns the only live bearer reference. Module,\n // React, URL, history, and storage state retain only token-free facts.\n bearer = null;\n let flight: Promise<Request>;\n flight = exchangePromise\n .then(\n (request) => {\n if (generation === claimedGeneration) prepared = request;\n return request;\n },\n (error: unknown) => {\n if (generation === claimedGeneration) {\n failure = error;\n hasFailure = true;\n }\n throw error;\n },\n )\n .finally(() => {\n if (generation === claimedGeneration && inFlight === flight) inFlight = null;\n });\n inFlight = flight;\n return flight;\n },\n clear: () => {\n generation += 1;\n workspaceId = null;\n bearer = null;\n inFlight = null;\n prepared = null;\n failure = undefined;\n hasFailure = false;\n },\n };\n}\n\nexport function useAppState(host: AppStateHost, appStateOptions: AppStateOptions) {\n const messageContext = useHostMessageContext();\n const embedded = useEmbedded();\n const hostMessageContext = useRef(messageContext);\n hostMessageContext.current = messageContext;\n const messageContextTools = useHostMessageContextTools();\n const hostMessageContextTools = useRef(messageContextTools);\n hostMessageContextTools.current = messageContextTools;\n const {\n captureProductEvent,\n checkDeploymentRevision,\n clearStoredAccessKey,\n configureManagedActorEpoch,\n createOpenGeniClient,\n fetchAuthSession,\n fetchClientConfig,\n getStoredAccessKey,\n setStoredAccessKey,\n signInEmail,\n signOutManaged,\n signUpEmail,\n startManagedSocialSignIn,\n signInPasskey,\n signUpPasskey,\n slackLink,\n } = host;\n const [session, setSessionState] = useState<Session | null>(null);\n const [sessionChannelProjectionAuthority] = useState(\n () => new SessionChannelProjectionAuthority(),\n );\n const [sessionCreationHandoff, setSessionCreationHandoff] =\n useState<SessionCreationHandoff | null>(null);\n const [clientConfig, setClientConfig] = useState<ClientConfig | null>(null);\n const [workspaceConfig, setWorkspaceConfig] = useState<WorkspaceClientConfig | undefined>(\n undefined,\n );\n const [workspaceConfigVersion, setWorkspaceConfigVersion] = useState(0);\n const [configError, setConfigError] = useState<BootstrapErrorPresentation | null>(null);\n const [configRequestVersion, setConfigRequestVersion] = useState(0);\n const [authSession, setAuthSession] = useState<AuthSession | null | undefined>(undefined);\n const [managedAuthBootstrapComplete, setManagedAuthBootstrapComplete] = useState(false);\n const [accessContext, setAccessContext] = useState<AccessContext | null>(null);\n const accessContextRef = useRef(accessContext);\n useInsertionEffect(() => {\n accessContextRef.current = accessContext;\n }, [accessContext]);\n const [workspaces, setWorkspaces] = useState<Workspace[]>([]);\n const [managedSelfContext, setManagedSelfContext] = useState<ManagedSelfContext | null>(null);\n const [slackLinkContinuationWorkspaceId, setSlackLinkContinuationWorkspaceId] = useState<\n string | null\n >(slackLink.workspaceId);\n const [invalidSlackLinkQueryWorkspaceId, setInvalidSlackLinkQueryWorkspaceId] = useState<\n string | null\n >(host.initialInvalidSlackLinkQueryWorkspaceId);\n const [accessLoading, setAccessLoading] = useState(false);\n const [accessError, setAccessError] = useState<BootstrapErrorPresentation | null>(null);\n const [creditRequired, setCreditRequired] = useState<CreditRequired | null>(null);\n const [model, setModel] = useState(\"gpt-6-astra\");\n const [reasoningEffort, setReasoningEffort] = useState<IntelligenceEffort>(\"low\");\n const [latencyMode, setLatencyMode] = useState<LatencyMode>(\"standard\");\n // Changes/Files dock starts collapsed; user opens via the session-panel toggle.\n // No localStorage — only an in-memory default (toggle still works for the session).\n const [inspectorOpen, setInspectorOpen] = useState(false);\n const [connectionState, setConnectionState] = useState<SessionEventsConnectionState>(\"idle\");\n const [sessionEventFeedStore] = useState(createSessionEventFeedStore);\n useEffect(() => {\n const retireReconciledCreation = () => {\n const feed = sessionEventFeedStore.getSnapshot();\n if (!feed) return;\n setSessionCreationHandoff((current) =>\n creationHandoffReconciled(current, feed.events) ? null : current,\n );\n };\n retireReconciledCreation();\n return sessionEventFeedStore.subscribe(retireReconciledCreation);\n }, [sessionEventFeedStore]);\n const [manualRepos, setManualRepos] = useState<RepoDraft[]>([]);\n const [manualReposOpen, setManualReposOpen] = useState(false);\n const [nextRepoId, setNextRepoId] = useState(1);\n const [selectedRepoIds, setSelectedRepoIds] = useState<Set<number>>(() => new Set());\n const [selectedRepoRefs, setSelectedRepoRefs] = useState<Record<number, string>>({});\n const [githubRepos, setGithubRepos] = useState<GitHubRepository[]>([]);\n const [githubStatus, setGithubStatus] = useState<GitHubAppInfo | null>(null);\n const [githubStatusFailed, setGithubStatusFailed] = useState(false);\n const [githubCatalogReady, setGithubCatalogReady] = useState(false);\n const [personalGitHubStatus, setPersonalGitHubStatus] =\n useState<PersonalGitHubConnectionStatusResponse | null>(null);\n const [personalGitHubRepositories, setPersonalGitHubRepositories] = useState<\n PersonalGitHubRepositoryCatalogItem[]\n >([]);\n const [personalGitHubSelection, setPersonalGitHubSelection] =\n useState<PersonalGitHubRepositorySelectionState | null>(null);\n const [personalGitHubCatalogReady, setPersonalGitHubCatalogReady] = useState(false);\n const [personalGitHubBusy, setPersonalGitHubBusy] = useState(false);\n const [selectedPersonalGitHubRepoIds, setSelectedPersonalGitHubRepoIds] = useState<Set<string>>(\n () => new Set(),\n );\n const [selectedPersonalGitHubRepoRefs, setSelectedPersonalGitHubRepoRefs] = useState<\n Record<string, string>\n >({});\n const [personalGitHubAuthorityCache, setPersonalGitHubAuthorityCache] =\n useState<PersonalGitHubAuthorityCache | null>(null);\n const personalGitHubAuthority = personalGitHubAuthorityCache?.authority ?? null;\n const [githubOrg, setGithubOrg] = useState(\"\");\n const [workspaceMcpServers, setWorkspaceMcpServers] = useState<McpServerOption[]>([]);\n const [workspaceCapabilityCatalog, setWorkspaceCapabilityCatalog] = useState<\n CapabilityCatalogItem[]\n >([]);\n // Who the organization lets turn integrations on, read with the catalog.\n const [workspaceMemberIntegrationSetup, setWorkspaceMemberIntegrationSetup] = useState<\n \"members\" | \"admins\" | undefined\n >(undefined);\n const [workspaceMcpCatalogReady, setWorkspaceMcpCatalogReady] = useState(false);\n const [workspaceMcpCatalogLoadedSuccessfully, setWorkspaceMcpCatalogLoadedSuccessfully] =\n useState(false);\n const [selectedCapabilityToolIds, setSelectedCapabilityToolIds] = useState<Set<string>>(\n () => new Set(),\n );\n const [workspaceStateOwnerId, setWorkspaceStateOwnerId] = useState<string | null>(null);\n const workspaceTransitionIdentity = useRef<WorkspaceTransitionIdentity>({\n workspaceId: null,\n revision: 0,\n });\n const principalTransitionIdentity = useRef<PrincipalTransitionIdentity>({\n revision: 0,\n });\n const workspaceOperationSequence = useRef(0);\n const activeCreateOperation = useRef<WorkspaceOperationIdentity | null>(null);\n const githubManifestOperationSequence = useRef(0);\n const activeGitHubManifestOperation = useRef<WorkspaceOperationIdentity | null>(null);\n const githubDisconnectOperationSequence = useRef(0);\n const activeGitHubDisconnectOperation = useRef<WorkspaceOperationIdentity | null>(null);\n const authPrincipalIdRef = useRef<string | null>(null);\n const accessPrincipalIdRef = useRef<string | null>(null);\n const managedSelfContextIdentityRef = useRef<ManagedSelfContextIdentity | null>(null);\n // Every default-enabled tool is selected when it first appears. Explicit\n // deselections survive subsequent catalog refreshes.\n const seenCapabilityToolIds = useRef<Set<string>>(new Set());\n const githubRefreshId = useRef(0);\n const personalGitHubRefreshId = useRef(0);\n // Background GitHub reads that fail while Opengeni is briefly unreachable\n // (a deploy, a network drop) try again by themselves, quietly.\n const githubQuietRetry = useRef(createQuietRetry());\n const personalGitHubQuietRetry = useRef(createQuietRetry());\n const refreshGitHubRef = useRef<AppContextValue[\"refreshGitHub\"]>(async () => {});\n const refreshPersonalGitHubRef = useRef<AppContextValue[\"refreshPersonalGitHub\"]>(async () => {});\n const personalGitHubReconnectToast = useRef<PersonalGitHubReconnectToast>({ shownFor: null });\n // The toast reconnects the exact connection it was shown for.\n const reconnectPersonalGitHubFromToast = useLatestCallback(\n (workspaceId: string, connectionId: string) =>\n void beginPersonalGitHubOAuth(workspaceId, true, connectionId),\n );\n useEffect(\n () => () => {\n githubQuietRetry.current.reset();\n personalGitHubQuietRetry.current.reset();\n },\n [],\n );\n const mcpRefreshId = useRef(0);\n const mcpCatalogRequests = useRef(new Map<string, Promise<CapabilityCatalogResponse>>());\n // Stable CREATE idempotency key for the in-flight session create. Generated\n // lazily and reused across retries (and across a double-click that re-enters\n // startSession before busy flips), so duplicate creates collapse to one\n // session server-side; retained only while the mutation outcome is unknown\n // and cleared on success or a definitive failure so a corrected request gets\n // a fresh key. Distinct from the per-call\n // clientEventId (a fresh UUID every send).\n const pendingCreateAttempt = useRef<PendingCreateAttempt | null>(null);\n const appliedWorkspaceSessionDefaultsKey = useRef<string | null>(null);\n const appliedWorkspaceToolDefaultsKey = useRef<string | null>(null);\n const [busy, setBusy] = useState(false);\n const [repoBusy, setRepoBusy] = useState(false);\n const [githubAppBusy, setGithubAppBusy] = useState(false);\n const [hasAccessKey, setHasAccessKey] = useState(() => getStoredAccessKey() !== null);\n const [accessKeyDraft, setAccessKeyDraft] = useState(\"\");\n const [accessKeyVersion, setAccessKeyVersion] = useState(0);\n const keyAuthRequired =\n host.authority === \"app\" &&\n (clientConfig?.auth.mode === \"deploymentKey\" || clientConfig?.auth.mode === \"configuredToken\");\n const managedAuthRequired =\n host.authority === \"app\" && clientConfig?.auth.mode === \"managedSession\";\n const browserAccountsConfigured =\n managedAuthRequired && clientConfig?.managedAuthSessionSetMode !== \"legacy\";\n const browserAccountsEnabled = browserAccountsConfigured && managedAuthBootstrapComplete;\n const managedEmailVerificationRequired =\n clientConfig?.auth.mode === \"managedSession\"\n ? (clientConfig.auth.emailVerificationRequired ?? true)\n : true;\n const managedSocialProviders =\n clientConfig?.auth.mode === \"managedSession\" ? (clientConfig.auth.socialProviders ?? []) : [];\n const managedPasskeySignIn =\n clientConfig?.auth.mode === \"managedSession\" &&\n clientConfig.auth.passkeySignIn === true &&\n signInPasskey !== undefined;\n const managedPasskeySignUp =\n managedPasskeySignIn &&\n clientConfig?.auth.mode === \"managedSession\" &&\n clientConfig.auth.passkeySignUp === true &&\n signUpPasskey !== undefined;\n // An older API omits the field; only an explicit false pauses account creation.\n const managedNewSignupsEnabled =\n clientConfig?.auth.mode === \"managedSession\"\n ? clientConfig.auth.newSignupsEnabled !== false\n : true;\n const keyAuthReady = !keyAuthRequired || hasAccessKey;\n const managedAuthReady = !managedAuthRequired || Boolean(authSession);\n const authReady = keyAuthReady && managedAuthReady;\n const defaultWorkspaceId =\n accessContext?.defaultWorkspaceId ??\n workspaces[0]?.id ??\n accessContext?.workspaceGrants[0]?.workspaceId ??\n null;\n const navigate = useNavigate();\n const hostPage = usePage();\n\n // Public routes render ahead of every auth/config gate: a user completing a\n // password reset is signed out by definition, so `/reset-password` must never\n // be intercepted by the sign-in panel or workspace-access loading.\n const pathname = useRouterState({\n select: (state) => state.location.pathname,\n });\n useEffect(() => {\n if (!browserAccountsConfigured) configureManagedActorEpoch(null);\n return () => configureManagedActorEpoch(null);\n }, [browserAccountsConfigured, configureManagedActorEpoch]);\n useEffect(() => {\n if (\n invalidSlackLinkQueryWorkspaceId &&\n pathname !==\n `/workspaces/${encodeURIComponent(invalidSlackLinkQueryWorkspaceId)}/capabilities`\n ) {\n setInvalidSlackLinkQueryWorkspaceId(null);\n }\n }, [invalidSlackLinkQueryWorkspaceId, pathname]);\n // The @opengeni/sdk client behind every console API call and hook. Auth\n // headers are read per request; a new identity per key version makes the\n // hooks re-fetch and the event streams reconnect with the new credentials.\n const client = useMemo(() => {\n // The version is an explicit identity fence: credentials are read lazily,\n // but consumers need a new client object to reconnect hooks and streams.\n void accessKeyVersion;\n return createOpenGeniClient(sessionChannelProjectionAuthority.beginRead);\n }, [accessKeyVersion, createOpenGeniClient, sessionChannelProjectionAuthority]);\n // Account lists and usage limits read through this client stay across\n // navigation and are cleared with it when an identity change replaces it;\n // \"Available in\" changes re-read them.\n useConsoleSharedQueries(client);\n const setSession = useCallback<Dispatch<SetStateAction<Session | null>>>((value) => {\n setSessionState((current) => {\n const next =\n typeof value === \"function\"\n ? (value as (previous: Session | null) => Session | null)(current)\n : value;\n return sameSessionForContext(current, next) ? current : next;\n });\n }, []);\n\n const resetSessionView = useCallback(() => {\n setSession(null);\n setSessionCreationHandoff(null);\n setConnectionState(\"idle\");\n sessionEventFeedStore.set(null);\n }, [sessionEventFeedStore, setSession]);\n\n const resetWorkspaceIntegrations = useCallback(() => {\n setGithubStatus(null);\n setGithubStatusFailed(false);\n setGithubRepos([]);\n setGithubCatalogReady(false);\n setPersonalGitHubStatus(null);\n setPersonalGitHubRepositories([]);\n setPersonalGitHubSelection(null);\n setPersonalGitHubCatalogReady(false);\n setPersonalGitHubAuthorityCache(null);\n setWorkspaceMcpServers([]);\n setWorkspaceCapabilityCatalog([]);\n setWorkspaceMemberIntegrationSetup(undefined);\n setWorkspaceMcpCatalogReady(false);\n setWorkspaceMcpCatalogLoadedSuccessfully(false);\n }, []);\n\n const resetWorkspaceState = useCallback(\n (workspaceId: string | null, force: boolean) => {\n const previousWorkspaceId = workspaceTransitionIdentity.current.workspaceId;\n const transition =\n workspaceId === null\n ? {\n identity: invalidateWorkspaceTransition(workspaceTransitionIdentity.current),\n changed: true,\n }\n : beginWorkspaceTransition(workspaceTransitionIdentity.current, workspaceId);\n if (!force && !transition.changed) {\n return;\n }\n workspaceTransitionIdentity.current = transition.identity;\n if (previousWorkspaceId && (force || previousWorkspaceId !== workspaceId)) {\n sessionChannelProjectionAuthority.clearWorkspace(previousWorkspaceId);\n }\n activeCreateOperation.current = null;\n activeGitHubManifestOperation.current = null;\n activeGitHubDisconnectOperation.current = null;\n // Fence late non-abortable catalog/status responses before clearing the\n // projections they would otherwise be able to repopulate.\n githubRefreshId.current += 1;\n personalGitHubRefreshId.current += 1;\n mcpRefreshId.current += 1;\n pendingCreateAttempt.current = null;\n resetSessionView();\n setInspectorOpen(false);\n setManualRepos([]);\n setManualReposOpen(false);\n setNextRepoId(1);\n setSelectedRepoIds(new Set());\n setSelectedRepoRefs({});\n setSelectedPersonalGitHubRepoIds(new Set());\n setSelectedPersonalGitHubRepoRefs({});\n setSelectedCapabilityToolIds(new Set());\n seenCapabilityToolIds.current = new Set();\n appliedWorkspaceToolDefaultsKey.current = null;\n setGithubOrg(\"\");\n setBusy(false);\n setRepoBusy(false);\n setGithubAppBusy(false);\n setPersonalGitHubBusy(false);\n resetWorkspaceIntegrations();\n setWorkspaceConfig(undefined);\n setWorkspaceStateOwnerId(workspaceId);\n },\n [resetSessionView, resetWorkspaceIntegrations, sessionChannelProjectionAuthority],\n );\n\n const prepareWorkspaceTransition = useCallback(\n (workspaceId: string) => resetWorkspaceState(workspaceId, false),\n [resetWorkspaceState],\n );\n\n const captureWorkspaceInvocation = useCallback(\n (workspaceId: string): WorkspaceTransitionIdentity | null => {\n const accepted = workspaceTransitionIdentity.current;\n return ownsWorkspaceTransition(accepted, accepted, workspaceId) ? accepted : null;\n },\n [],\n );\n\n const ownsWorkspaceInvocation = useCallback(\n (workspaceId: string, accepted: WorkspaceTransitionIdentity): boolean =>\n ownsWorkspaceTransition(workspaceTransitionIdentity.current, accepted, workspaceId),\n [],\n );\n\n const clientConfigurationReady = clientConfig !== null;\n useEffect(() => {\n if (!clientConfigurationReady || !authReady || !workspaceStateOwnerId) return;\n const workspaceId = workspaceStateOwnerId;\n const accepted = captureWorkspaceInvocation(workspaceId);\n if (!accepted) return;\n return startWorkspaceClientConfigRefresh({\n read: (signal) => fetchClientConfig(signal, workspaceId),\n ownsWorkspace: () => ownsWorkspaceInvocation(workspaceId, accepted),\n apply: setWorkspaceConfig,\n subscribeFocus: (refresh) => {\n window.addEventListener(\"focus\", refresh);\n return () => window.removeEventListener(\"focus\", refresh);\n },\n });\n }, [\n fetchClientConfig,\n clientConfigurationReady,\n authReady,\n workspaceStateOwnerId,\n workspaceConfigVersion,\n accessContext?.subjectId,\n accessKeyVersion,\n captureWorkspaceInvocation,\n ownsWorkspaceInvocation,\n ]);\n const refreshWorkspaceConfig = useCallback(\n () => setWorkspaceConfigVersion((version) => version + 1),\n [],\n );\n\n const invalidatePrincipalWorkspaceState = useCallback(\n (options?: { preservePendingSlackLink?: boolean }) => {\n principalTransitionIdentity.current = invalidatePrincipalTransition(\n principalTransitionIdentity.current,\n );\n authPrincipalIdRef.current = null;\n accessPrincipalIdRef.current = null;\n managedSelfContextIdentityRef.current = null;\n setManagedSelfContext(null);\n if (options?.preservePendingSlackLink !== true) {\n slackLink.clear();\n setSlackLinkContinuationWorkspaceId(null);\n }\n resetWorkspaceState(null, true);\n },\n [resetWorkspaceState, slackLink],\n );\n\n useEffect(() => {\n if (appStateOptions.bootstrapSuspended) return;\n let cancelled = false;\n let stopDeploymentRefresh = () => {};\n const controller = new AbortController();\n // Let synchronous effect cleanup (including StrictMode's discarded mount)\n // cancel before starting I/O. Active requests still abort on real cleanup.\n void Promise.resolve()\n .then(() =>\n readBootstrap({\n context: \"client_configuration\",\n request: () => fetchClientConfig(controller.signal),\n signal: controller.signal,\n // An update parks the API for a while: say so calmly and continue\n // on our own as soon as it answers.\n waiting: {\n onWaiting: (error, elapsedMs) => {\n if (!cancelled) {\n setConfigError(\n bootstrapWaitingPresentation(error, \"client_configuration\", elapsedMs),\n );\n }\n },\n },\n }),\n )\n .then((config) => {\n if (cancelled) {\n return;\n }\n setClientConfig(config);\n setConfigError(null);\n setModel(config.defaultModel);\n // Sync to the deployment default UNCONDITIONALLY: the full enum is now\n // representable, so a `none`/`minimal` default no longer gets clamped to\n // the \"low\" placeholder (which the server treated as an override beating\n // the deployer's configured default — a silent billing footgun).\n setReasoningEffort(initialReasoningEffort(config));\n setLatencyMode(\"standard\");\n if (checkDeploymentRevision) {\n stopDeploymentRefresh = startDeploymentRefresh(checkDeploymentRevision);\n }\n })\n .catch((error) => {\n if (cancelled) {\n return;\n }\n const presentation = bootstrapErrorPresentation(error, \"client_configuration\");\n setConfigError(presentation);\n });\n return () => {\n cancelled = true;\n controller.abort();\n stopDeploymentRefresh();\n };\n }, [\n checkDeploymentRevision,\n configRequestVersion,\n fetchClientConfig,\n appStateOptions.bootstrapSuspended,\n ]);\n\n useEffect(() => {\n if (!clientConfig) {\n setManagedAuthBootstrapComplete(false);\n return;\n }\n if (!managedAuthRequired) {\n if (authPrincipalIdRef.current !== null) {\n invalidatePrincipalWorkspaceState();\n }\n setAuthSession(null);\n setManagedAuthBootstrapComplete(true);\n return;\n }\n let cancelled = false;\n const acceptedPrincipal = principalTransitionIdentity.current;\n const controller = new AbortController();\n setManagedAuthBootstrapComplete(false);\n setAuthSession(undefined);\n // During an update the session read fails transiently. That is not\n // \"signed out\": keep waiting calmly and continue when the API answers.\n void readBootstrap({\n context: \"client_configuration\",\n request: fetchAuthSession,\n signal: controller.signal,\n waiting: {\n onWaiting: (error, elapsedMs) => {\n if (!cancelled) {\n setConfigError(bootstrapWaitingPresentation(error, \"client_configuration\", elapsedMs));\n }\n },\n },\n })\n .then((nextSession) => {\n if (\n cancelled ||\n !ownsPrincipalTransition(principalTransitionIdentity.current, acceptedPrincipal)\n ) {\n return;\n }\n setConfigError((current) => (current?.recovering ? null : current));\n const nextPrincipalId = nextSession?.user.id ?? null;\n if (authPrincipalIdRef.current !== null && authPrincipalIdRef.current !== nextPrincipalId) {\n invalidatePrincipalWorkspaceState();\n }\n authPrincipalIdRef.current = nextPrincipalId;\n observeSocialLoginResult(nextSession);\n setAuthSession(nextSession);\n setManagedAuthBootstrapComplete(true);\n })\n .catch(() => {\n if (\n cancelled ||\n !ownsPrincipalTransition(principalTransitionIdentity.current, acceptedPrincipal)\n ) {\n return;\n }\n setConfigError((current) => (current?.recovering ? null : current));\n setAuthSession(null);\n setManagedAuthBootstrapComplete(true);\n });\n return () => {\n cancelled = true;\n controller.abort();\n };\n }, [clientConfig, fetchAuthSession, managedAuthRequired, invalidatePrincipalWorkspaceState]);\n\n useEffect(() => {\n if (!clientConfig || !authReady) {\n setAccessContext(null);\n setWorkspaces([]);\n managedSelfContextIdentityRef.current = null;\n setManagedSelfContext(null);\n setAccessLoading(false);\n setAccessError(null);\n return;\n }\n let cancelled = false;\n let acceptedPrincipal = principalTransitionIdentity.current;\n const acceptedManagedIdentity =\n managedAuthRequired && authSession\n ? managedSelfContextIdentity({\n credentialGeneration: accessKeyVersion,\n managedUserId: authSession.user.id,\n })\n : null;\n managedSelfContextIdentityRef.current = acceptedManagedIdentity;\n setManagedSelfContext(null);\n setAccessLoading(true);\n // A calm waiting state stays up while a retry runs.\n setAccessError((current) => (current?.recovering ? current : null));\n const controller = new AbortController();\n // These SDK reads do not accept a caller signal. Fence their late results\n // and every new attempt without changing the SDK's general retry policy.\n const readAccess = <T,>(request: () => Promise<T>) =>\n readBootstrap({\n context: \"workspace_access\",\n request,\n signal: controller.signal,\n isCurrent: () =>\n ownsPrincipalTransition(principalTransitionIdentity.current, acceptedPrincipal),\n waiting: {\n onWaiting: (error, elapsedMs) => {\n if (\n !cancelled &&\n ownsPrincipalTransition(principalTransitionIdentity.current, acceptedPrincipal)\n ) {\n setAccessError(bootstrapWaitingPresentation(error, \"workspace_access\", elapsedMs));\n }\n },\n },\n });\n const selfContextPromise = acceptedManagedIdentity\n ? loadCurrentManagedSelfContext({\n identity: acceptedManagedIdentity,\n currentIdentity: () => managedSelfContextIdentityRef.current,\n request: () => readAccess(() => client.listOrganizationMemberships()),\n })\n : Promise.resolve(null);\n void Promise.all([\n readAccess(() => client.getAccessContext()),\n readAccess(() => client.listWorkspaces()),\n selfContextPromise,\n ])\n .then(([context, nextWorkspaces, nextManagedSelfContext]) => {\n if (\n cancelled ||\n !ownsPrincipalTransition(principalTransitionIdentity.current, acceptedPrincipal)\n ) {\n return;\n }\n // The API answered: any calm \"reconnecting\" state is over.\n setAccessError((current) => (current?.recovering ? null : current));\n if (acceptedManagedIdentity && nextManagedSelfContext === null) {\n return;\n }\n if (\n nextManagedSelfContext &&\n context.subjectId !== nextManagedSelfContext.identity.subjectId\n ) {\n throw new Error(\"managed self context did not match the authenticated subject\");\n }\n if (\n accessPrincipalIdRef.current !== null &&\n accessPrincipalIdRef.current !== context.subjectId\n ) {\n invalidatePrincipalWorkspaceState();\n acceptedPrincipal = principalTransitionIdentity.current;\n // The newly returned access + membership tuple is already bound to\n // the accepted current cookie identity. Restore that identity after\n // clearing the prior principal's workspace state.\n managedSelfContextIdentityRef.current = acceptedManagedIdentity;\n }\n accessPrincipalIdRef.current = context.subjectId;\n // Unsent answers to agent questions belong to this tab's principal: a\n // different one forgets them before any session route can render.\n claimHumanInputDraftOwner(context.subjectId);\n setAccessContext(context);\n setWorkspaces(nextWorkspaces);\n setManagedSelfContext(nextManagedSelfContext);\n })\n .catch((error) => {\n if (\n cancelled ||\n !ownsPrincipalTransition(principalTransitionIdentity.current, acceptedPrincipal)\n ) {\n return;\n }\n const presentation = bootstrapErrorPresentation(error, \"workspace_access\");\n controller.abort();\n setAccessContext(null);\n setWorkspaces([]);\n setAccessError(presentation);\n })\n .finally(() => {\n if (\n !cancelled &&\n ownsPrincipalTransition(principalTransitionIdentity.current, acceptedPrincipal)\n ) {\n setAccessLoading(false);\n }\n });\n return () => {\n cancelled = true;\n if (managedSelfContextIdentityRef.current === acceptedManagedIdentity) {\n managedSelfContextIdentityRef.current = null;\n }\n controller.abort();\n };\n }, [\n accessKeyVersion,\n authSession,\n clientConfig,\n authReady,\n client,\n managedAuthRequired,\n invalidatePrincipalWorkspaceState,\n ]);\n\n // The workspace URL remains authoritative. This browser-local preference is\n // only the landing target for a future visit to `/`, and is namespaced by the\n // current subject so browser-account transitions cannot inherit each other's\n // workspace selection.\n useEffect(() => {\n if (!accessContext) return;\n const workspaceId = /^\\/workspaces\\/([^/]+)/.exec(pathname)?.[1] ?? null;\n if (!isAuthorizedWorkspaceId(workspaceId, workspaces, accessContext)) return;\n writeLastWorkspaceId(\n workspaceNavigationPreferenceStorageId(accessContext.subjectId),\n workspaceId,\n );\n // Switching back to this organization returns to this workspace.\n const accountId = workspaces.find((workspace) => workspace.id === workspaceId)?.accountId;\n if (accountId) {\n writeLastWorkspaceIdForOrganization(\n organizationWorkspacePreferenceStorageId(accessContext.subjectId),\n accountId,\n workspaceId,\n );\n }\n }, [accessContext, pathname, workspaces]);\n\n // New-chat policy follows the active workspace. Explicit composer choices\n // remain local until the route moves to another workspace or its durable\n // default changes; unrelated workspace updates do not reset the picker.\n useEffect(() => {\n if (!clientConfig) return;\n const workspaceId = /^\\/workspaces\\/([^/]+)/.exec(pathname)?.[1] ?? null;\n if (!workspaceId) return;\n const workspace = workspaces.find((candidate) => candidate.id === workspaceId);\n if (!workspace) return;\n const configured = resolveWorkspaceSessionDefaults(workspace.settings);\n const nextModel = configured?.model ?? clientConfig.defaultModel;\n const nextEffort = configured?.reasoningEffort ?? initialReasoningEffort(clientConfig);\n const key = `${workspaceId}\\u0000${nextModel}\\u0000${nextEffort}`;\n if (appliedWorkspaceSessionDefaultsKey.current === key) return;\n appliedWorkspaceSessionDefaultsKey.current = key;\n setModel(nextModel);\n setReasoningEffort(nextEffort);\n setLatencyMode(\"standard\");\n }, [clientConfig, pathname, workspaces]);\n\n const repositoryGroups = useMemo(() => groupRepositories(githubRepos), [githubRepos]);\n const toolMcpServers = useMemo(\n () => mergeMcpServerOptions(selectableMcpServers(clientConfig), workspaceMcpServers),\n [clientConfig, workspaceMcpServers],\n );\n const routedWorkspaceId = /^\\/workspaces\\/([^/]+)/.exec(pathname)?.[1] ?? null;\n const routedWorkspace =\n workspaces.find((workspace) => workspace.id === routedWorkspaceId) ?? null;\n const configuredWorkspaceToolDefaults = useMemo(\n () => resolveWorkspaceSessionToolDefaults(routedWorkspace?.settings),\n [routedWorkspace?.settings],\n );\n const workspaceDefaultToolIds = useMemo(() => {\n const available = new Set(toolMcpServers.map((server) => server.id));\n const configured = configuredWorkspaceToolDefaults?.mcpServerIds;\n return configured\n ? [\n ...new Set([\n ...configured.filter((id) => available.has(id)),\n ...(configuredWorkspaceToolDefaults?.inheritConnectedMcpServers\n ? toolMcpServers\n .filter((server) => ![\"opengeni\", \"files\", \"docs\"].includes(server.id))\n .map((server) => server.id)\n : []),\n ]),\n ]\n : toolMcpServers.map((server) => server.id);\n }, [configuredWorkspaceToolDefaults, toolMcpServers]);\n const lastValidResources = useRef<ResourceRef[]>([]);\n const repositoryBuild = useMemo(() => {\n try {\n return {\n resources: buildResources(\n manualRepos,\n githubRepos,\n selectedRepoIds,\n selectedRepoRefs,\n personalGitHubRepositories,\n selectedPersonalGitHubRepoIds,\n selectedPersonalGitHubRepoRefs,\n personalGitHubSelection?.credentialBindingId ?? null,\n ),\n error: null,\n };\n } catch (error) {\n return {\n resources: lastValidResources.current,\n error: errorMessage(error),\n };\n }\n }, [\n manualRepos,\n githubRepos,\n selectedRepoIds,\n selectedRepoRefs,\n personalGitHubRepositories,\n selectedPersonalGitHubRepoIds,\n selectedPersonalGitHubRepoRefs,\n personalGitHubSelection?.credentialBindingId,\n ]);\n useEffect(() => {\n if (!repositoryBuild.error) lastValidResources.current = repositoryBuild.resources;\n }, [repositoryBuild]);\n useManualRepositoryCatalogReconciliation({\n manualRepos,\n selectedRepoIds,\n selectedRepoRefs,\n repositories: githubRepos,\n catalogReady: githubCatalogReady,\n personalRepositories: personalGitHubRepositories,\n selectedPersonalRepoIds: selectedPersonalGitHubRepoIds,\n selectedPersonalRepoRefs: selectedPersonalGitHubRepoRefs,\n setManualRepos,\n setSelectedRepoIds,\n setSelectedRepoRefs,\n });\n const currentResources = repositoryBuild.resources;\n const repositoryValidationError = repositoryBuild.error;\n\n useCapabilityToolDefaults({\n principalKey: JSON.stringify(principalTransitionIdentity.current),\n ready: clientConfig !== null && !/^\\/workspaces\\/[^/]+\\/sessions\\/?$/.test(pathname),\n workspaceId: routedWorkspaceId,\n configuredIds: configuredWorkspaceToolDefaults?.mcpServerIds,\n availableIds: toolMcpServers.map((server) => server.id),\n defaultIds: workspaceDefaultToolIds,\n appliedKey: appliedWorkspaceToolDefaultsKey,\n seenIds: seenCapabilityToolIds,\n setSelected: setSelectedCapabilityToolIds,\n });\n\n // Workspace create/rename keep the cached `workspaces` list and the access\n // context (the create grants the caller an owner grant) in sync.\n async function createWorkspace(request: CreateWorkspaceRequest): Promise<Workspace | null> {\n const acceptedTransition = workspaceTransitionIdentity.current;\n const ownsInvocation = () =>\n ownsTransitionInvocation(workspaceTransitionIdentity.current, acceptedTransition);\n let created: Workspace;\n try {\n const creation = await runCurrentTransitionInvocation({\n isCurrent: ownsInvocation,\n request: async () => await client.createWorkspace(request),\n });\n if (creation.status === \"stale\") return null;\n created = creation.value;\n } catch (error) {\n toast.error(\"Failed to create workspace\", {\n description: userErrorText(error),\n });\n return null;\n }\n setWorkspaces((current) => upsertWorkspace(current, created));\n captureProductEvent(\"workspace_created\", {\n $insert_id: `workspace_created:${created.id}`,\n account_id: created.accountId,\n workspace_id: created.id,\n });\n // Refresh grants so the new workspace's owner permissions apply at once;\n // the workspace itself is already usable if this refresh fails — surface a\n // soft warning so a stale permission set doesn't fail silently.\n try {\n const accessRefresh = await runCurrentTransitionInvocation({\n isCurrent: ownsInvocation,\n request: async () => await client.getAccessContext(),\n });\n if (accessRefresh.status === \"stale\") return null;\n claimHumanInputDraftOwner(accessRefresh.value.subjectId);\n setAccessContext(accessRefresh.value);\n } catch {\n toast.warning(\"Permissions may be out of date\", {\n description: \"Reload if something looks off.\",\n });\n }\n return created;\n }\n\n async function renameWorkspace(workspaceId: string, name: string): Promise<Workspace | null> {\n const acceptedTransition = captureWorkspaceInvocation(workspaceId);\n if (!acceptedTransition) return null;\n try {\n const update = await runCurrentTransitionInvocation({\n isCurrent: () => ownsWorkspaceInvocation(workspaceId, acceptedTransition),\n request: async () => await client.updateWorkspace(workspaceId, { name }),\n });\n if (update.status === \"stale\") return null;\n setWorkspaces((current) => upsertWorkspace(current, update.value));\n return update.value;\n } catch (error) {\n toast.error(\"Failed to rename workspace\", {\n description: userErrorText(error),\n });\n return null;\n }\n }\n\n async function setWorkspaceInferenceControl(\n workspaceId: string,\n action: \"pause\" | \"resume\",\n ): Promise<boolean> {\n const acceptedTransition = captureWorkspaceInvocation(workspaceId);\n if (!acceptedTransition) return false;\n const current = workspaces.find((workspace) => workspace.id === workspaceId);\n const update = await runCurrentTransitionInvocation({\n isCurrent: () => ownsWorkspaceInvocation(workspaceId, acceptedTransition),\n request: async () =>\n await client.setWorkspaceInferenceState(workspaceId, {\n action,\n clientEventId: crypto.randomUUID(),\n ...(current ? { expectedRevision: current.inferenceControl.revision } : {}),\n }),\n });\n if (update.status === \"stale\") return false;\n const response = update.value;\n setWorkspaces((all) =>\n all.map((workspace) =>\n workspace.id === workspaceId\n ? {\n ...workspace,\n inferenceControl: {\n state: response.state,\n revision: response.revision,\n reason: null,\n changedBy: null,\n changedAt: new Date().toISOString(),\n },\n }\n : workspace,\n ),\n );\n return true;\n }\n\n const refreshWorkspace = useCallback(\n async (workspaceId: string): Promise<void> => {\n const acceptedTransition = captureWorkspaceInvocation(workspaceId);\n if (!acceptedTransition) return;\n const refresh = await runCurrentTransitionInvocation({\n isCurrent: () => ownsWorkspaceInvocation(workspaceId, acceptedTransition),\n request: async () => await client.getWorkspace(workspaceId),\n });\n if (refresh.status === \"stale\") return;\n setWorkspaces((current) => upsertWorkspace(current, refresh.value));\n },\n [captureWorkspaceInvocation, client, ownsWorkspaceInvocation],\n );\n\n // Settings PATCH deep-merges server-side; upsert the returned workspace so the\n // cached list (and any settings-derived UI, e.g. the Documents memory pane)\n // reflects the change without a reload.\n async function updateWorkspaceSettings(\n workspaceId: string,\n settings: UpdateWorkspaceSettingsRequest,\n ): Promise<Workspace | null> {\n const acceptedTransition = captureWorkspaceInvocation(workspaceId);\n if (!acceptedTransition) return null;\n try {\n const update = await runCurrentTransitionInvocation({\n isCurrent: () => ownsWorkspaceInvocation(workspaceId, acceptedTransition),\n request: async () => await client.updateWorkspaceSettings(workspaceId, settings),\n });\n if (update.status === \"stale\") return null;\n setWorkspaces((current) => upsertWorkspace(current, update.value));\n return update.value;\n } catch (error) {\n toast.error(\"Failed to update workspace settings\", {\n description: userErrorText(error),\n });\n return null;\n }\n }\n\n async function setWorkspaceDefaultRig(\n workspaceId: string,\n rigId: string | null,\n ): Promise<Workspace | null> {\n const acceptedTransition = captureWorkspaceInvocation(workspaceId);\n if (!acceptedTransition) return null;\n try {\n const update = await runCurrentTransitionInvocation({\n isCurrent: () => ownsWorkspaceInvocation(workspaceId, acceptedTransition),\n request: async () =>\n await client.setWorkspaceDefaultRig(workspaceId, {\n rigId,\n }),\n });\n if (update.status === \"stale\") return null;\n setWorkspaces((current) => upsertWorkspace(current, update.value));\n return update.value;\n } catch (error) {\n toast.error(\"Failed to update the workspace default sandbox environment\", {\n description: userErrorText(error),\n });\n return null;\n }\n }\n\n // Manual session rename: writes a permanent (source='user') title via the\n // PATCH route, then patches the open session in-place so the header reflects\n // it at once. The rail list (its own polled hook) and any cross-client view\n // pick the change up via the session.title_set SSE event / next poll.\n async function updateSessionTitle(\n workspaceId: string,\n sessionId: string,\n title: string,\n ): Promise<Session | null> {\n const acceptedTransition = captureWorkspaceInvocation(workspaceId);\n if (!acceptedTransition) return null;\n try {\n const update = await runCurrentTransitionInvocation({\n isCurrent: () => ownsWorkspaceInvocation(workspaceId, acceptedTransition),\n request: async () =>\n await client.updateSession(workspaceId, sessionId, {\n title,\n }),\n });\n if (update.status === \"stale\") return null;\n const updated = update.value;\n setSession((current) =>\n current && current.id === updated.id\n ? {\n ...current,\n title: updated.title,\n titleSource: updated.titleSource,\n }\n : current,\n );\n return updated;\n } catch (error) {\n toast.error(\"Failed to rename session\", {\n description: userErrorText(error),\n });\n return null;\n }\n }\n\n // Name, description and avatar from the profile dialog: one PATCH as the\n // person, then the open session shows it at once (the rail and other\n // clients follow through session.title_set / session.profile_set).\n async function updateSessionProfile(\n workspaceId: string,\n sessionId: string,\n change: UpdateSessionRequest,\n ): Promise<Session | null> {\n // Failures reach the dialog, which shows them inside the form.\n const acceptedTransition = captureWorkspaceInvocation(workspaceId);\n if (!acceptedTransition) return null;\n const update = await runCurrentTransitionInvocation({\n isCurrent: () => ownsWorkspaceInvocation(workspaceId, acceptedTransition),\n request: async () => await client.updateSession(workspaceId, sessionId, change),\n });\n if (update.status === \"stale\") return null;\n const updated = update.value;\n setSession((current) =>\n current && current.id === updated.id\n ? {\n ...current,\n title: updated.title,\n titleSource: updated.titleSource,\n description: updated.description ?? null,\n avatar: updated.avatar ?? null,\n }\n : current,\n );\n return updated;\n }\n\n // Personal session pinning never changes shared session activity. Keep the\n // header immediate on this device, use its known revision when available, and\n // restore the authoritative prior state if the request (including a stale-tab\n // 409) fails. The rail owns its own corresponding optimistic list projection.\n async function updateSessionPin(\n workspaceId: string,\n sessionId: string,\n pinned: boolean,\n expectedVersion?: number,\n ): Promise<Session | null> {\n const acceptedTransition = captureWorkspaceInvocation(workspaceId);\n if (!acceptedTransition) return null;\n const ownsInvocation = () => ownsWorkspaceInvocation(workspaceId, acceptedTransition);\n const before = session;\n const optimisticVersion = (expectedVersion ?? before?.pinVersion ?? 0) + 1;\n const optimistic: Session | null =\n before && before.id === sessionId\n ? {\n ...before,\n pinned,\n pinnedAt: pinned ? new Date().toISOString() : null,\n pinVersion: optimisticVersion,\n }\n : null;\n if (optimistic) {\n setSession(optimistic);\n }\n try {\n const update = await runCurrentTransitionInvocation({\n isCurrent: ownsInvocation,\n request: async () =>\n await client.updateSessionPin(workspaceId, sessionId, {\n pinned,\n ...(expectedVersion !== undefined ? { expectedVersion } : {}),\n }),\n });\n if (update.status === \"stale\") return null;\n const updated = update.value;\n // The mutation can race a newer page poll/other-device write, and its\n // full Session projection can lag lifecycle/SSE fields. Merge only the\n // monotonic personal pin fields rather than replacing the open session.\n setSession((current) => applySessionPinProjection(current, updated));\n notifySessionPinChanged(workspaceId, sessionId);\n return updated;\n } catch (error) {\n // Re-read on every failure, not only OCC conflicts. A transport failure\n // may have happened after the server committed; blindly restoring\n // `before` would temporarily lie and could overwrite a newer device.\n const reconciliation = await runCurrentTransitionInvocation({\n isCurrent: ownsInvocation,\n request: async () =>\n await client.getSession(workspaceId, sessionId, { fresh: true }).catch(() => null),\n });\n if (reconciliation.status === \"stale\") return null;\n const authoritative = reconciliation.value;\n if (authoritative) {\n setSession((current) => reconcileFailedSessionPin(current, optimistic, authoritative));\n notifySessionPinChanged(workspaceId, sessionId);\n // A lost response after commit is a successful desired-state mutation,\n // not a failed pin. Returning the point-read result keeps the UI\n // announcement honest while preserving the same idempotent retry path.\n if (Boolean(authoritative.pinned) === pinned) {\n return authoritative;\n }\n } else if (optimistic) {\n // If reconciliation is also unavailable (for example while offline),\n // roll back only the exact optimistic projection this call installed.\n // Any intervening poll/device response remains untouched.\n setSession((current) =>\n current?.id === sessionId &&\n Boolean(current.pinned) === Boolean(optimistic.pinned) &&\n (current.pinnedAt ?? null) === (optimistic.pinnedAt ?? null) &&\n (current.pinVersion ?? 0) === (optimistic.pinVersion ?? 0)\n ? before\n : current,\n );\n }\n toast.error(\n error instanceof OpenGeniApiError && error.status === 409\n ? \"Session pin changed elsewhere\"\n : `Couldn't ${pinned ? \"pin\" : \"unpin\"} session`,\n {\n description: userErrorText(error),\n },\n );\n return null;\n }\n }\n\n // Delete drops the workspace from the cached list and refreshes grants (the\n // owner grant for the deleted workspace is gone). The caller navigates away.\n async function deleteWorkspace(workspaceId: string): Promise<boolean> {\n const acceptedTransition = captureWorkspaceInvocation(workspaceId);\n if (!acceptedTransition) return false;\n const ownsInvocation = () => ownsWorkspaceInvocation(workspaceId, acceptedTransition);\n try {\n const deletion = await runCurrentTransitionInvocation({\n isCurrent: ownsInvocation,\n request: async () =>\n await deleteWorkspaceWithReconciliation({\n deleteWorkspace: async () => await client.deleteWorkspace(workspaceId),\n readWorkspace: async () => await client.getWorkspace(workspaceId),\n }),\n });\n if (deletion.status === \"stale\") return false;\n } catch (error) {\n toast.error(\"Failed to delete workspace\", {\n description: userErrorText(error),\n });\n return false;\n }\n setWorkspaces((current) => current.filter((workspace) => workspace.id !== workspaceId));\n try {\n const accessRefresh = await runCurrentTransitionInvocation({\n isCurrent: ownsInvocation,\n request: async () => await client.getAccessContext(),\n });\n if (accessRefresh.status === \"stale\") return false;\n claimHumanInputDraftOwner(accessRefresh.value.subjectId);\n setAccessContext(accessRefresh.value);\n } catch {\n toast.warning(\"Permissions may be out of date\", {\n description: \"Reload if something looks off.\",\n });\n }\n return true;\n }\n\n const refreshGitHub = useCallback(\n async (workspaceId: string, signal?: AbortSignal, options?: GitHubRefreshOptions) => {\n const acceptedTransition = workspaceTransitionIdentity.current;\n if (!ownsWorkspaceTransition(acceptedTransition, acceptedTransition, workspaceId)) {\n return;\n }\n const ownsRefresh = () =>\n ownsWorkspaceTransition(\n workspaceTransitionIdentity.current,\n acceptedTransition,\n workspaceId,\n );\n const refreshId = githubRefreshId.current + 1;\n githubRefreshId.current = refreshId;\n // This read replaces any quiet retry still waiting.\n githubQuietRetry.current.cancel();\n // A member whose loaded grant lacks GitHub has no GitHub state to read.\n if (lacksWorkspacePermission(accessContextRef.current, workspaceId, \"github:use\")) {\n githubQuietRetry.current.reset();\n setGithubStatus(null);\n setGithubStatusFailed(false);\n setGithubRepos([]);\n setGithubCatalogReady(true);\n setRepoBusy(false);\n return;\n }\n setRepoBusy(true);\n try {\n const status = await client.getGitHubApp(workspaceId);\n if (signal?.aborted || githubRefreshId.current !== refreshId || !ownsRefresh()) {\n return;\n }\n setGithubStatus(status);\n setGithubStatusFailed(false);\n if (status.status === \"bound\") {\n // Explicit refreshes re-sync from GitHub (POST /github/repositories/sync)\n // so installations changed after connect show up; passive loads may\n // get the API's briefly cached GitHub list.\n const { repositories } = options?.sync\n ? await client.syncGitHubRepositories(workspaceId)\n : await client.listGitHubRepositories(workspaceId);\n if (signal?.aborted || githubRefreshId.current !== refreshId || !ownsRefresh()) {\n return;\n }\n setGithubRepos(repositories);\n setGithubCatalogReady(true);\n } else {\n setGithubRepos([]);\n setGithubCatalogReady(true);\n }\n githubQuietRetry.current.reset();\n } catch (error) {\n if (\n isAbortError(error) ||\n signal?.aborted ||\n githubRefreshId.current !== refreshId ||\n !ownsRefresh()\n ) {\n return;\n }\n // A failed status/catalog request is unavailable/unknown, not proof\n // that the last-known installation or repository identities vanished.\n // Keep the last successful snapshot and leave readiness unchanged: a\n // first-load failure must not look like an empty catalog, or draft\n // hydration would drop GitHub-identity repos and autosave that loss.\n setGithubStatusFailed(true);\n // Opengeni briefly unreachable (a deploy, a network drop): read again\n // by itself, with a growing pause, until it answers.\n if (isTransientServiceFailure(error)) {\n githubQuietRetry.current.schedule(() => {\n if (!ownsRefresh() || githubRefreshId.current !== refreshId) return;\n void refreshGitHubRef.current(workspaceId);\n }, workspaceId);\n }\n // Load and focus refreshes run in the background: a failure there is\n // shown where GitHub is used (the repository picker, the GitHub card and\n // the GitHub integration), not as a toast for something the person\n // didn't do. Someone without GitHub access has nothing to fix.\n if (!options?.userInitiated || isWorkspacePermissionDenied(error)) return;\n // One toast for the GitHub status, replaced rather than stacked when\n // refreshes fail again.\n toast.error(\"GitHub status unavailable\", {\n id: GITHUB_STATUS_TOAST_ID,\n description: userErrorText(error),\n });\n } finally {\n if (githubRefreshId.current === refreshId && ownsRefresh()) {\n setRepoBusy(false);\n }\n }\n },\n [client],\n );\n\n useInsertionEffect(() => {\n refreshGitHubRef.current = refreshGitHub;\n }, [refreshGitHub]);\n\n const refreshPersonalGitHub = useCallback(\n async (\n workspaceId: string,\n signal?: AbortSignal,\n options?: Pick<GitHubRefreshOptions, \"userInitiated\">,\n ): Promise<void> => {\n const acceptedTransition = workspaceTransitionIdentity.current;\n if (!ownsWorkspaceTransition(acceptedTransition, acceptedTransition, workspaceId)) return;\n const refreshId = personalGitHubRefreshId.current + 1;\n personalGitHubRefreshId.current = refreshId;\n personalGitHubQuietRetry.current.cancel();\n const ownsRefresh = () =>\n ownsWorkspaceTransition(\n workspaceTransitionIdentity.current,\n acceptedTransition,\n workspaceId,\n ) && personalGitHubRefreshId.current === refreshId;\n if (!hasWorkspacePermission(accessContextRef.current, workspaceId, \"connections:read\")) {\n setPersonalGitHubStatus(null);\n setPersonalGitHubRepositories([]);\n setPersonalGitHubSelection(null);\n setPersonalGitHubAuthorityCache(null);\n setSelectedPersonalGitHubRepoIds(new Set());\n setSelectedPersonalGitHubRepoRefs({});\n setPersonalGitHubCatalogReady(true);\n setPersonalGitHubBusy(false);\n personalGitHubQuietRetry.current.reset();\n clearPersonalGitHubReconnectToast(personalGitHubReconnectToast.current);\n return;\n }\n setPersonalGitHubBusy(true);\n const clearPersonalCatalog = () => {\n setPersonalGitHubRepositories([]);\n setPersonalGitHubSelection(null);\n setSelectedPersonalGitHubRepoIds(new Set());\n setSelectedPersonalGitHubRepoRefs({});\n setPersonalGitHubCatalogReady(true);\n personalGitHubQuietRetry.current.reset();\n };\n const showReconnectState = (status: PersonalGitHubConnectionStatusResponse): boolean => {\n const connection = status.connection;\n if (!status.enabled || !personalGitHubNeedsReconnect(connection)) {\n // Reconnected, disconnected or turned off: nothing left to act on.\n clearPersonalGitHubReconnectToast(personalGitHubReconnectToast.current);\n return false;\n }\n announcePersonalGitHubReconnect(personalGitHubReconnectToast.current, connection, () =>\n reconnectPersonalGitHubFromToast(workspaceId, connection.id),\n );\n return true;\n };\n try {\n const status = await client.personalGitHubStatus(workspaceId);\n if (signal?.aborted || !ownsRefresh()) return;\n const connection = status.connection;\n setPersonalGitHubStatus(status);\n setPersonalGitHubAuthorityCache((current) =>\n connection &&\n reusablePersonalGitHubAuthority(current, {\n connectionId: connection.id,\n connectionVersion: connection.version,\n })\n ? current\n : null,\n );\n showReconnectState(status);\n if (!status.enabled || connection?.status !== \"active\") {\n clearPersonalCatalog();\n return;\n }\n const repositories: PersonalGitHubRepositoryCatalogItem[] = [];\n let cursor: number | undefined;\n let selection: PersonalGitHubRepositorySelectionState | null = null;\n do {\n const page = await client.listPersonalGitHubRepositories(workspaceId, connection.id, {\n ...(cursor ? { cursor } : {}),\n limit: 100,\n });\n repositories.push(...page.repositories);\n selection = page.selection;\n cursor = page.nextCursor ?? undefined;\n } while (cursor !== undefined && repositories.length < 1_000);\n if (signal?.aborted || !ownsRefresh()) return;\n setPersonalGitHubRepositories(repositories);\n setPersonalGitHubSelection(selection);\n setPersonalGitHubAuthorityCache((current) =>\n selection &&\n reusablePersonalGitHubAuthority(current, {\n connectionId: connection.id,\n connectionVersion: connection.version,\n })\n ? current\n : null,\n );\n setSelectedPersonalGitHubRepoIds(\n (current) =>\n new Set(\n [...current].filter((id) =>\n repositories.some((repo) => repo.repositoryId === id && repo.selectedAccess),\n ),\n ),\n );\n setPersonalGitHubCatalogReady(true);\n // Only a whole read counts: a status that answers while the repository\n // listing keeps failing (a GitHub rate limit) must keep backing off.\n personalGitHubQuietRetry.current.reset();\n } catch (error) {\n if (signal?.aborted || !ownsRefresh() || isAbortError(error)) return;\n setPersonalGitHubCatalogReady(true);\n if (isTransientServiceFailure(error)) {\n // Opengeni is briefly unreachable: read again by itself, quietly,\n // unless the person asked for this refresh.\n personalGitHubQuietRetry.current.schedule(() => {\n if (!ownsRefresh()) return;\n void refreshPersonalGitHubRef.current(workspaceId);\n }, workspaceId);\n if (!options?.userInitiated) return;\n } else {\n // GitHub may have just refused the stored grant, which turns the\n // connection into needs-reconnect. Read it again so the page shows\n // Reconnect in place (never \"Connected · 0 repos\") with one lasting\n // toast, instead of a passing error.\n const current = await client.personalGitHubStatus(workspaceId).catch(() => null);\n if (signal?.aborted || !ownsRefresh()) return;\n if (current) {\n setPersonalGitHubStatus(current);\n if (showReconnectState(current)) {\n clearPersonalCatalog();\n return;\n }\n }\n // Nothing for the person to do: a background read stays quiet, and\n // the next read tries again.\n if (!options?.userInitiated) return;\n }\n toast.error(\"Your GitHub account is unavailable\", {\n id: PERSONAL_GITHUB_STATUS_TOAST_ID,\n description: userErrorText(error),\n });\n } finally {\n if (ownsRefresh()) setPersonalGitHubBusy(false);\n }\n },\n [client, reconnectPersonalGitHubFromToast],\n );\n\n useInsertionEffect(() => {\n refreshPersonalGitHubRef.current = refreshPersonalGitHub;\n }, [refreshPersonalGitHub]);\n\n async function beginPersonalGitHubOAuth(\n workspaceId: string,\n reconnect: boolean,\n connectionId?: string,\n ): Promise<void> {\n const reconnectAccountId = connectionId ?? personalGitHubStatus?.connection?.id;\n try {\n const attempt = await client.beginConnect(workspaceId, {\n providerId: \"github-personal\",\n ownership: \"personal\",\n returnUrl: hostPage.href(),\n idempotencyKey: crypto.randomUUID(),\n ...(reconnect && reconnectAccountId ? { reconnectAccountId } : {}),\n });\n if (attempt.nextAction.type !== \"authorize\")\n throw new Error(\"GitHub did not return an authorization link\");\n // The exact-return Connect redirect carries no outcome parameters.\n await markIntegrationConnectRedirect(\"github\", \"oauth\", { returnsWithOutcome: false });\n hostPage.assign(attempt.nextAction.url);\n } catch (error) {\n toast.error(\"Couldn't open GitHub sign-in\", {\n description: userErrorText(error),\n });\n }\n }\n\n async function disconnectPersonalGitHub(workspaceId: string): Promise<boolean> {\n const connection = personalGitHubStatus?.connection;\n if (!connection) return true;\n setPersonalGitHubBusy(true);\n try {\n const disconnect = (target: { id: string; version: number }) =>\n client.disconnectPersonalGitHub(workspaceId, target.id, {\n expectedVersion: target.version,\n idempotencyKey: crypto.randomUUID(),\n });\n try {\n await disconnect(connection);\n } catch (error) {\n if (!(error instanceof OpenGeniApiError && error.status === 409)) throw error;\n // The connection moved on while the page held it (a reconnect or a\n // token refresh finished meanwhile). Removing your own GitHub is still\n // what was asked: read the current connection and remove that one.\n const current = (await client.personalGitHubStatus(workspaceId)).connection;\n if (current && current.status !== \"revoked\") await disconnect(current);\n }\n await refreshPersonalGitHub(workspaceId, undefined, { userInitiated: true });\n toast.success(\"Your GitHub account was disconnected\");\n return true;\n } catch (error) {\n toast.error(\"Couldn't disconnect your GitHub account\", {\n description: userErrorText(error),\n });\n return false;\n } finally {\n setPersonalGitHubBusy(false);\n }\n }\n\n async function savePersonalGitHubRepositories(\n workspaceId: string,\n repositories: PersonalGitHubRepositorySelectionInput[],\n ): Promise<boolean> {\n const connection = personalGitHubStatus?.connection;\n const selection = personalGitHubSelection;\n if (!connection || !selection) return false;\n setPersonalGitHubBusy(true);\n try {\n await client.replacePersonalGitHubRepositorySelections(workspaceId, connection.id, {\n expectedConnectionAuthorityGeneration: selection.connectionAuthorityGeneration,\n expectedSelectionGeneration: selection.selectionGeneration,\n idempotencyKey: crypto.randomUUID(),\n repositories,\n });\n await refreshPersonalGitHub(workspaceId, undefined, { userInitiated: true });\n toast.success(\"GitHub repository access updated\");\n return true;\n } catch (error) {\n toast.error(\"Couldn't update GitHub repository access\", {\n description: userErrorText(error),\n });\n return false;\n } finally {\n setPersonalGitHubBusy(false);\n }\n }\n\n async function ensurePersonalGitHubAuthority(\n _workspaceId: string,\n ): Promise<McpConnectionAccountSelection | null> {\n const connection = personalGitHubStatus?.connection;\n if (!connection?.authorityId || connection.status !== \"active\") {\n toast.error(\"Connect your GitHub account before selecting its repositories\");\n return null;\n }\n const authority = { serverId: \"github:personal\", connectionId: connection.id };\n setPersonalGitHubAuthorityCache({ authority, connectionVersion: connection.version });\n return authority;\n }\n\n async function togglePersonalGitHubRepository(\n workspaceId: string,\n repository: PersonalGitHubRepositoryCatalogItem,\n ): Promise<void> {\n if (selectedPersonalGitHubRepoIds.has(repository.repositoryId)) {\n setSelectedPersonalGitHubRepoIds((current) => {\n const next = new Set(current);\n next.delete(repository.repositoryId);\n return next;\n });\n return;\n }\n if (!repository.selectedAccess) return;\n if (!(await ensurePersonalGitHubAuthority(workspaceId))) return;\n setSelectedRepoIds(\n (current) =>\n new Set(\n [...current].filter(\n (id) =>\n githubRepos.find((candidate) => candidate.id === id)?.fullName.toLowerCase() !==\n repository.fullName.toLowerCase(),\n ),\n ),\n );\n setSelectedPersonalGitHubRepoIds((current) => new Set(current).add(repository.repositoryId));\n setSelectedPersonalGitHubRepoRefs((current) => ({\n ...current,\n [repository.repositoryId]: current[repository.repositoryId] ?? repository.defaultBranch,\n }));\n }\n\n const refreshWorkspaceMcpServers = useCallback(\n async (workspaceId: string, signal?: AbortSignal) => {\n const refreshId = mcpRefreshId.current + 1;\n mcpRefreshId.current = refreshId;\n setWorkspaceMcpCatalogLoadedSuccessfully(false);\n const requestKey = `${accessKeyVersion}:${workspaceId}`;\n try {\n const result = await runCurrentWorkspaceRequest({\n signal,\n requestId: refreshId,\n currentRequestId: () => mcpRefreshId.current,\n request: async () =>\n await Promise.all([\n runSingleFlight(\n mcpCatalogRequests.current,\n requestKey,\n async () => await client.listCapabilities(workspaceId),\n ),\n client.listApiIntegrations(workspaceId),\n ]),\n });\n if (!result) {\n return;\n }\n const [catalog, apiIntegrations] = result;\n setWorkspaceMcpServers(\n mergeMcpServerOptions(\n enabledWorkspaceCapabilityMcpServers(catalog.items),\n installedApiIntegrationMcpServers(apiIntegrations.integrations),\n ),\n );\n setWorkspaceCapabilityCatalog(catalog.items);\n setWorkspaceMemberIntegrationSetup(catalog.memberIntegrationSetup);\n setWorkspaceMcpCatalogLoadedSuccessfully(true);\n setWorkspaceMcpCatalogReady(true);\n } catch (error) {\n if (signal?.aborted || mcpRefreshId.current !== refreshId) throw error;\n // Fail-open: an unavailable catalog must not leave the create composer\n // stuck on draft hydrate / canSend=false.\n setWorkspaceMcpCatalogLoadedSuccessfully(false);\n setWorkspaceMcpCatalogReady(true);\n throw error;\n }\n },\n [accessKeyVersion, client],\n );\n\n async function startSession(\n workspaceId: string,\n submission: TurnSubmission,\n options?: StartSessionOptions,\n ): Promise<Session | null> {\n const startedOperation = beginWorkspaceOperation(\n workspaceOperationSequence.current,\n workspaceTransitionIdentity.current,\n );\n workspaceOperationSequence.current = startedOperation.sequence;\n const operation = startedOperation.operation;\n activeCreateOperation.current = operation;\n let attempted: ReturnType<typeof prepareCreateSessionAttempt> | null = null;\n setBusy(true);\n try {\n if (repositoryValidationError) {\n toast.error(\"Fix repository details\", { description: repositoryValidationError });\n return null;\n }\n const sessionTools = options?.sessionTools;\n if (!workspaceMcpCatalogReady && !sessionTools) {\n toast.error(\"Tools are still loading\", {\n description: \"Wait for the workspace tool catalog to finish loading, then try again.\",\n });\n return null;\n }\n const selectedTools = sessionTools\n ? [...sessionTools]\n : buildOpenGeniUiTools(submission.tools, selectedCapabilityToolIds);\n const includesPersonalGitHub = currentResources.some(\n (resource) =>\n resource.kind === \"repository\" && resource.connectionType === \"github_personal\",\n );\n if (includesPersonalGitHub && !personalGitHubAuthority) {\n toast.error(\"Your GitHub identity is still being prepared\", {\n description: \"Select the repository again, then send when it is ready.\",\n });\n return null;\n }\n const effectiveSubmission: TurnSubmission = includesPersonalGitHub\n ? {\n ...submission,\n connectionAccounts: [\n ...(submission.connectionAccounts ?? []).filter(\n (authority) => authority.serverId !== \"github:personal\",\n ),\n personalGitHubAuthority!,\n ],\n }\n : submission;\n const freshIdempotencyKey = crypto.randomUUID();\n const attempt = prepareCreateSessionAttempt({\n pending: pendingCreateAttempt.current,\n client,\n workspaceId,\n freshIdempotencyKey,\n request: buildCreateSessionRequest({\n currentResources,\n submission: effectiveSubmission,\n instructions: options?.instructions,\n installedSkillIds: options?.installedSkillIds,\n bot: options?.bot,\n omitWorkspaceResources: options?.omitWorkspaceResources,\n selectedTools,\n newSessionDraftToolPolicy: options?.newSessionDraftToolPolicy,\n defaultModel: model,\n defaultReasoningEffort: reasoningEffort,\n defaultLatencyMode: latencyMode,\n clientEventId: crypto.randomUUID(),\n idempotencyKey: freshIdempotencyKey,\n workspaceDefaultMcpServerIds: workspaceDefaultToolIds,\n workspaceMcpCatalogReady,\n targetSandboxId: options?.targetSandboxId,\n workingDir: options?.workingDir,\n channelId: options?.channelId,\n expectedNewSessionDraftRevision: options?.expectedNewSessionDraftRevision,\n agentLearning: options?.agentLearning,\n startMode: options?.startMode,\n visibility: options?.visibility,\n usageLimitMicros: options?.usageLimitMicros,\n }),\n });\n attempted = attempt;\n pendingCreateAttempt.current = attempt.pending;\n // A voice start has no first message to carry the context; its first\n // spoken turn does.\n const hostContext =\n attempt.request.startMode === \"realtime\" ? undefined : hostMessageContext.current?.();\n const created = await createWithOpeningContext(\n (request) => client.createSession(workspaceId, request),\n attempt.request,\n hostContext,\n hostContext ? hostMessageContextTools.current?.() : undefined,\n );\n // Do not clear a newer concurrent attempt that replaced this one.\n if (pendingCreateAttempt.current?.idempotencyKey === attempt.pending.idempotencyKey) {\n pendingCreateAttempt.current = null;\n }\n // The create may commit after the operator has switched workspaces. The\n // server result remains valid, but it must not repopulate or navigate the\n // new workspace's UI with the previous tenant's session.\n if (\n !ownsWorkspaceOperation(\n activeCreateOperation.current,\n workspaceTransitionIdentity.current,\n operation,\n workspaceId,\n )\n ) {\n return null;\n }\n setSession(created);\n if (attempt.request.clientEventId && attempt.request.startMode !== \"realtime\") {\n setSessionCreationHandoff({\n session: created,\n clientEventId: attempt.request.clientEventId,\n });\n } else {\n setSessionCreationHandoff(null);\n }\n setConnectionState(\"idle\");\n captureProductEvent(\"session_started\", {\n $insert_id: `session_started:${created.id}`,\n account_id: created.accountId,\n workspace_id: created.workspaceId,\n session_id: created.id,\n ...(attempt.request.model ? { model: attempt.request.model } : {}),\n start_mode: options?.startMode ?? \"standard\",\n });\n return created;\n } catch (error) {\n const { error: problem, outcomeUnknown } = classifyCreateSessionFailure(error);\n if (attempted) {\n pendingCreateAttempt.current = retainCreateSessionAttemptAfterFailure({\n current: pendingCreateAttempt.current,\n attempted: attempted.pending,\n outcomeUnknown,\n });\n }\n if (\n ownsWorkspaceOperation(\n activeCreateOperation.current,\n workspaceTransitionIdentity.current,\n operation,\n workspaceId,\n )\n ) {\n const handled = attempted\n ? options?.onFailure?.({\n error: problem,\n request: attempted.request,\n outcomeUnknown,\n })\n : false;\n // A caller that handles the refusal shows it inline instead of the dialog.\n if (isPaymentRequiredError(problem) && handled !== true) {\n const workspace = workspaces.find((candidate) => candidate.id === workspaceId);\n setCreditRequired({\n workspaceId,\n accountId: workspace?.accountId ?? null,\n code: paymentRefusalCode(problem),\n });\n } else if (handled !== true) {\n toast.error(\"Failed to start session\", {\n description: composerSubmissionErrorMessage(t, problem),\n });\n }\n }\n return null;\n } finally {\n const settlement = settleWorkspaceOperation(activeCreateOperation.current, operation);\n activeCreateOperation.current = settlement.active;\n if (settlement.settledCurrent) {\n setBusy(false);\n }\n }\n }\n\n async function startGitHubAppManifestFlow(workspaceId: string) {\n const acceptedTransition = captureWorkspaceInvocation(workspaceId);\n if (!acceptedTransition) return;\n const started = beginWorkspaceOperation(\n githubManifestOperationSequence.current,\n acceptedTransition,\n );\n githubManifestOperationSequence.current = started.sequence;\n const operation = started.operation;\n activeGitHubManifestOperation.current = operation;\n setGithubAppBusy(true);\n try {\n const result = await runCurrentWorkspaceOperation({\n activeOperation: () => activeGitHubManifestOperation.current,\n currentTransition: () => workspaceTransitionIdentity.current,\n operation,\n workspaceId,\n request: async () =>\n await client.createGitHubAppManifest(workspaceId, {\n ...(githubOrg.trim() ? { organization: githubOrg.trim() } : {}),\n public: false,\n includeCiPermissions: true,\n }),\n });\n if (\n result.status === \"stale\" ||\n !ownsWorkspaceOperation(\n activeGitHubManifestOperation.current,\n workspaceTransitionIdentity.current,\n operation,\n workspaceId,\n )\n ) {\n return;\n }\n submitGitHubManifest(result.value.actionUrl, result.value.manifest, embedded);\n } catch (error) {\n if (\n ownsWorkspaceOperation(\n activeGitHubManifestOperation.current,\n workspaceTransitionIdentity.current,\n operation,\n workspaceId,\n )\n ) {\n toast.error(\"GitHub App setup failed\", {\n description: userErrorText(error),\n });\n }\n } finally {\n const settlement = settleWorkspaceOperation(activeGitHubManifestOperation.current, operation);\n activeGitHubManifestOperation.current = settlement.active;\n if (settlement.settledCurrent) {\n setGithubAppBusy(false);\n }\n }\n }\n\n async function disconnectGitHubInstallation(\n workspaceId: string,\n installationId: number,\n ): Promise<boolean> {\n const acceptedTransition = captureWorkspaceInvocation(workspaceId);\n if (!acceptedTransition) return false;\n const started = beginWorkspaceOperation(\n githubDisconnectOperationSequence.current,\n acceptedTransition,\n );\n githubDisconnectOperationSequence.current = started.sequence;\n const operation = started.operation;\n activeGitHubDisconnectOperation.current = operation;\n const previousStatus = githubStatus;\n const previousRepositories = githubRepos;\n const previousSelectedIds = selectedRepoIds;\n const previousSelectedRefs = selectedRepoRefs;\n const removedRepositoryIds = new Set(\n githubRepos\n .filter((repository) => repository.installationId === installationId)\n .map((repository) => repository.id),\n );\n setGithubRepos((current) =>\n current.filter((repository) => repository.installationId !== installationId),\n );\n setGithubStatus((current) =>\n current\n ? {\n ...current,\n installations: current.installations.filter(\n (installation) => installation.installationId !== installationId,\n ),\n }\n : current,\n );\n setSelectedRepoIds(\n (current) =>\n new Set([...current].filter((repositoryId) => !removedRepositoryIds.has(repositoryId))),\n );\n setSelectedRepoRefs((current) =>\n Object.fromEntries(\n Object.entries(current).filter(\n ([repositoryId]) => !removedRepositoryIds.has(Number(repositoryId)),\n ),\n ),\n );\n try {\n const unlink = await runCurrentWorkspaceOperation({\n activeOperation: () => activeGitHubDisconnectOperation.current,\n currentTransition: () => workspaceTransitionIdentity.current,\n operation,\n workspaceId,\n request: async () =>\n await unlinkGitHubInstallationWithReconciliation({\n installationId,\n unlink: async () => await client.unlinkGitHubInstallation(workspaceId, installationId),\n readStatus: async () => await client.getGitHubApp(workspaceId),\n }),\n });\n if (\n unlink.status === \"stale\" ||\n !ownsWorkspaceOperation(\n activeGitHubDisconnectOperation.current,\n workspaceTransitionIdentity.current,\n operation,\n workspaceId,\n )\n ) {\n return false;\n }\n await refreshGitHub(workspaceId, undefined, { sync: true, userInitiated: true });\n if (\n !ownsWorkspaceOperation(\n activeGitHubDisconnectOperation.current,\n workspaceTransitionIdentity.current,\n operation,\n workspaceId,\n )\n ) {\n return false;\n }\n toast.success(\"GitHub installation unlinked from this workspace\");\n return true;\n } catch (error) {\n if (\n ownsWorkspaceOperation(\n activeGitHubDisconnectOperation.current,\n workspaceTransitionIdentity.current,\n operation,\n workspaceId,\n )\n ) {\n setGithubStatus(previousStatus);\n setGithubRepos(previousRepositories);\n setSelectedRepoIds(previousSelectedIds);\n setSelectedRepoRefs(previousSelectedRefs);\n toast.error(\"Failed to unlink GitHub installation\", {\n description: userErrorText(error),\n });\n }\n return false;\n } finally {\n const settlement = settleWorkspaceOperation(\n activeGitHubDisconnectOperation.current,\n operation,\n );\n activeGitHubDisconnectOperation.current = settlement.active;\n }\n }\n\n function toggleGitHubRepository(repo: GitHubRepository) {\n setSelectedRepoIds((current) => {\n const next = new Set(current);\n if (next.has(repo.id)) {\n next.delete(repo.id);\n } else {\n next.add(repo.id);\n }\n return next;\n });\n if (!selectedRepoIds.has(repo.id)) {\n const personal = personalGitHubRepositories.find(\n (candidate) => candidate.fullName.toLowerCase() === repo.fullName.toLowerCase(),\n );\n if (personal) {\n setSelectedPersonalGitHubRepoIds((current) => {\n const next = new Set(current);\n next.delete(personal.repositoryId);\n return next;\n });\n }\n }\n setSelectedRepoRefs((current) => ({\n ...current,\n [repo.id]: current[repo.id] ?? repo.defaultBranch,\n }));\n }\n\n function addManualRepository() {\n setManualRepos((current) => [\n ...current,\n { id: nextRepoId, url: \"\", ref: \"main\", attached: false },\n ]);\n setNextRepoId((value) => value + 1);\n setManualReposOpen(true);\n }\n\n function saveAccessKey() {\n const key = accessKeyDraft.trim();\n if (!key) {\n toast.error(\"Enter an access key\");\n return;\n }\n invalidatePrincipalWorkspaceState();\n setStoredAccessKey(key);\n setHasAccessKey(true);\n setAccessKeyDraft(\"\");\n setAccessError(null);\n setAccessKeyVersion((version) => version + 1);\n }\n\n function forgetAccessKey() {\n invalidatePrincipalWorkspaceState();\n clearStoredAccessKey();\n setHasAccessKey(false);\n setSession(null);\n setAccessContext(null);\n setWorkspaces([]);\n setAccessError(null);\n setAccessKeyVersion((version) => version + 1);\n }\n\n async function handleManagedAuth(\n mode: \"signin\" | \"signup\",\n input: { name: string; email: string; password: string; signupChallengeToken?: string },\n ) {\n invalidatePrincipalWorkspaceState({\n preservePendingSlackLink: preserveSlackLinkForManagedAuth(mode, slackLink.phase()),\n });\n const acceptedPrincipal = principalTransitionIdentity.current;\n const ownsInvocation = () =>\n ownsPrincipalTransition(principalTransitionIdentity.current, acceptedPrincipal);\n if (mode === \"signup\") {\n const signup = await runCurrentTransitionInvocation({\n isCurrent: ownsInvocation,\n request: async () => await signUpEmail(input),\n });\n if (signup.status === \"stale\") return;\n captureProductEvent(\"signup_submitted\", {\n method: \"email\",\n verification_required: managedEmailVerificationRequired,\n });\n } else {\n const signin = await runCurrentTransitionInvocation({\n isCurrent: ownsInvocation,\n request: async () =>\n await signInEmail({\n email: input.email,\n password: input.password,\n rememberMe: true,\n }),\n });\n if (signin.status === \"stale\") return;\n }\n const sessionRead = await runCurrentTransitionInvocation({\n isCurrent: ownsInvocation,\n request: fetchAuthSession,\n });\n if (sessionRead.status === \"stale\") return;\n const nextSession = sessionRead.value;\n if (!nextSession && !(mode === \"signup\" && managedEmailVerificationRequired)) {\n throw new ManagedAuthSessionUnavailableError(mode);\n }\n authPrincipalIdRef.current = nextSession?.user.id ?? null;\n if (mode === \"signin\" && nextSession) noteSuccessfulLogin(nextSession.user.id, \"email\");\n setAuthSession(nextSession);\n setAccessKeyVersion((version) => version + 1);\n }\n\n async function handleManagedSessionSetSignup(input: {\n signupChallengeToken?: string;\n name: string;\n email: string;\n password: string;\n }) {\n invalidatePrincipalWorkspaceState();\n const acceptedPrincipal = principalTransitionIdentity.current;\n const signup = await runCurrentTransitionInvocation({\n isCurrent: () =>\n ownsPrincipalTransition(principalTransitionIdentity.current, acceptedPrincipal),\n request: async () => await signUpEmail(input),\n });\n if (signup.status === \"stale\") return;\n captureProductEvent(\"signup_submitted\", {\n method: \"email\",\n verification_required: managedEmailVerificationRequired,\n });\n }\n\n async function handleManagedSocialAuth(\n provider: \"google\" | \"github\",\n signupChallengeToken?: string,\n ) {\n invalidatePrincipalWorkspaceState({\n preservePendingSlackLink: preserveSlackLinkForManagedAuth(\"signin\", slackLink.phase()),\n });\n beginSocialLoginAnalytics(provider);\n await startManagedSocialSignIn(provider, signupChallengeToken);\n }\n\n async function handleManagedPasskeyAuth(\n mode: \"signin\" | \"signup\",\n input?: { name: string; signupChallengeToken?: string },\n ) {\n if (!signInPasskey || (mode === \"signup\" && (!signUpPasskey || !input))) {\n throw new Error(\"Passkeys aren't available here\");\n }\n invalidatePrincipalWorkspaceState({\n preservePendingSlackLink: preserveSlackLinkForManagedAuth(mode, slackLink.phase()),\n });\n const acceptedPrincipal = principalTransitionIdentity.current;\n const ownsInvocation = () =>\n ownsPrincipalTransition(principalTransitionIdentity.current, acceptedPrincipal);\n const ceremony = await runCurrentTransitionInvocation({\n isCurrent: ownsInvocation,\n request: async () =>\n mode === \"signup\" ? await signUpPasskey!(input!) : await signInPasskey(),\n });\n if (ceremony.status === \"stale\") return;\n if (mode === \"signup\") {\n captureProductEvent(\"signup_submitted\", { method: \"passkey\", verification_required: false });\n }\n const sessionRead = await runCurrentTransitionInvocation({\n isCurrent: ownsInvocation,\n request: fetchAuthSession,\n });\n if (sessionRead.status === \"stale\") return;\n const nextSession = sessionRead.value;\n if (!nextSession) throw new ManagedAuthSessionUnavailableError(mode);\n authPrincipalIdRef.current = nextSession.user.id;\n if (mode === \"signin\") noteSuccessfulLogin(nextSession.user.id, \"passkey\");\n else captureProductEvent(\"signup_completed\", { method: \"passkey\", is_new_user: true });\n setAuthSession(nextSession);\n setAccessKeyVersion((version) => version + 1);\n }\n\n async function handleManagedSignOut() {\n // Unmount authenticated readers before sign-out can invalidate their\n // cookie. Keep the neutral surface until an ambiguous response is\n // reconciled against the authoritative session.\n flushSync(() => {\n invalidatePrincipalWorkspaceState();\n setAuthSession(undefined);\n setAccessContext(null);\n setWorkspaces([]);\n setAccessError(null);\n });\n // The next person in this tab never sees this person's unsent answers.\n forgetAllHumanInputDrafts();\n const acceptedPrincipal = principalTransitionIdentity.current;\n const ownsInvocation = () =>\n ownsPrincipalTransition(principalTransitionIdentity.current, acceptedPrincipal);\n const reconciliation = await runCurrentTransitionInvocation({\n isCurrent: ownsInvocation,\n request: async () =>\n await signOutWithAuthoritativeReconciliation<AuthSession>({\n signOut: signOutManaged,\n readSession: fetchAuthSession,\n }),\n });\n if (reconciliation.status === \"stale\") return;\n const result = reconciliation.value;\n authPrincipalIdRef.current = result.session?.user.id ?? null;\n setAuthSession(result.session);\n // A definitive failure may restore the same user id. Rotate the client\n // identity anyway so access is loaded from the reconciled cookie result.\n setAccessKeyVersion((version) => version + 1);\n if (result.status === \"reconciled_failure\") {\n throw result.error;\n }\n setSession(null);\n await navigate({ to: \"/\", replace: true });\n }\n\n async function handleBrowserActorTransition(transition: BrowserAccountTransition) {\n // Commit the neutral auth/access surface before rotating transport\n // provenance. Aborting old requests while their routed tree is still\n // mounted lets rejection handlers/effects dispatch fresh work under the\n // next epoch. The synchronous commit removes those consumers first; the\n // immediately following rotation then aborts every remaining old request.\n flushSync(() => {\n invalidatePrincipalWorkspaceState();\n setAuthSession(undefined);\n setAccessContext(null);\n setWorkspaces([]);\n setAccessError(null);\n });\n configureManagedActorEpoch(transition.to?.actorEpoch ?? null);\n // Create the next client only after the old actor's transport and client\n // generation have been invalidated. This also reconnects streams for two\n // login bindings that resolve to the same canonical human but carry\n // distinct actor epochs.\n flushSync(() => {\n setAccessKeyVersion((version) => version + 1);\n });\n // A cross-tab/server hint first requests only the neutral fence. Do not\n // install or load any principal until the controller has reread authority\n // and invokes us again with the accepted projection.\n if (transition.to === null) return;\n if (transition.to.selectedSlotId === null || transition.to.state !== \"ready\") {\n // The authority reread has now proved that no tenant actor is selected.\n // Remove the revoked workspace/session deep link from browser history;\n // the earlier null transition is only a precommit hold and must not\n // navigate because its initiating mutation can still fail.\n authPrincipalIdRef.current = null;\n setAuthSession(null);\n setSession(null);\n await navigate({ to: \"/\", replace: true });\n return;\n }\n const acceptedPrincipal = principalTransitionIdentity.current;\n const ownsInvocation = () =>\n !transition.signal.aborted &&\n ownsPrincipalTransition(principalTransitionIdentity.current, acceptedPrincipal);\n try {\n const sessionRead = await runCurrentTransitionInvocation({\n isCurrent: ownsInvocation,\n request: fetchAuthSession,\n });\n if (sessionRead.status === \"stale\") return;\n const nextSession = sessionRead.value;\n authPrincipalIdRef.current = nextSession?.user.id ?? null;\n setAuthSession(nextSession);\n } catch (error) {\n if (ownsInvocation()) setAuthSession(null);\n throw error;\n }\n }\n\n // Context actions keep one identity while reading the newest committed state\n // through the callback ref. This prevents unrelated provider renders\n // (for example, an access-key draft keystroke) from invalidating the entire\n // routed application tree.\n const contextAddManualRepository = useLatestCallback(addManualRepository);\n const contextForgetAccessKey = useLatestCallback(forgetAccessKey);\n const contextHandleManagedSignOut = useLatestCallback(handleManagedSignOut);\n const contextHandleBrowserActorTransition = useLatestCallback(handleBrowserActorTransition);\n const revalidatePrincipalAccess = useCallback(\n () => setAccessKeyVersion((version) => version + 1),\n [],\n );\n // Onboarding may finish somewhere other than home (developer setup opens\n // its workspace's new chat); go there while access revalidates, so the app\n // opens on it. Resolves once the destination is the current location.\n const completeOrganizationOnboarding = useCallback(\n async (destination?: { workspaceId: string; sessionId?: string }) => {\n const arrived = destination?.sessionId\n ? navigate({\n to: \"/workspaces/$workspaceId/sessions/$sessionId\",\n params: { workspaceId: destination.workspaceId, sessionId: destination.sessionId },\n })\n : destination\n ? navigate({\n to: \"/workspaces/$workspaceId/sessions\",\n params: { workspaceId: destination.workspaceId },\n })\n : null;\n revalidatePrincipalAccess();\n await arrived;\n },\n [navigate, revalidatePrincipalAccess],\n );\n async function refreshPrincipalAccess(): Promise<boolean> {\n if (!clientConfig || !authReady) return false;\n let acceptedPrincipal = principalTransitionIdentity.current;\n const acceptedManagedIdentity =\n clientConfig.auth.mode === \"managedSession\" && authSession\n ? managedSelfContextIdentity({\n credentialGeneration: accessKeyVersion,\n managedUserId: authSession.user.id,\n })\n : null;\n managedSelfContextIdentityRef.current = acceptedManagedIdentity;\n const selfContextPromise = acceptedManagedIdentity\n ? loadCurrentManagedSelfContext({\n identity: acceptedManagedIdentity,\n currentIdentity: () => managedSelfContextIdentityRef.current,\n request: () => client.listOrganizationMemberships(),\n })\n : Promise.resolve(null);\n const [nextAccessContext, nextWorkspaces, nextManagedSelfContext] = await Promise.all([\n client.getAccessContext(),\n client.listWorkspaces(),\n selfContextPromise,\n ]);\n if (!ownsPrincipalTransition(principalTransitionIdentity.current, acceptedPrincipal)) {\n return false;\n }\n if (acceptedManagedIdentity && nextManagedSelfContext === null) return false;\n if (\n nextManagedSelfContext &&\n nextAccessContext.subjectId !== nextManagedSelfContext.identity.subjectId\n ) {\n throw new Error(\"managed self context did not match the authenticated subject\");\n }\n if (\n accessPrincipalIdRef.current !== null &&\n accessPrincipalIdRef.current !== nextAccessContext.subjectId\n ) {\n invalidatePrincipalWorkspaceState();\n acceptedPrincipal = principalTransitionIdentity.current;\n managedSelfContextIdentityRef.current = acceptedManagedIdentity;\n }\n if (!ownsPrincipalTransition(principalTransitionIdentity.current, acceptedPrincipal)) {\n return false;\n }\n accessPrincipalIdRef.current = nextAccessContext.subjectId;\n claimHumanInputDraftOwner(nextAccessContext.subjectId);\n setAccessContext(nextAccessContext);\n setWorkspaces(nextWorkspaces);\n setManagedSelfContext(nextManagedSelfContext);\n return true;\n }\n const contextRefreshPrincipalAccess = useLatestCallback(refreshPrincipalAccess);\n const contextCreateWorkspace = useLatestCallback(createWorkspace);\n const contextRenameWorkspace = useLatestCallback(renameWorkspace);\n const contextSetWorkspaceInferenceControl = useLatestCallback(setWorkspaceInferenceControl);\n const contextUpdateWorkspaceSettings = useLatestCallback(updateWorkspaceSettings);\n const contextSetWorkspaceDefaultRig = useLatestCallback(setWorkspaceDefaultRig);\n const contextUpdateSessionTitle = useLatestCallback(updateSessionTitle);\n const contextUpdateSessionProfile = useLatestCallback(updateSessionProfile);\n const contextUpdateSessionPin = useLatestCallback(updateSessionPin);\n const contextDeleteWorkspace = useLatestCallback(deleteWorkspace);\n const contextStartGitHubAppManifestFlow = useLatestCallback(startGitHubAppManifestFlow);\n const contextDisconnectGitHubInstallation = useLatestCallback(disconnectGitHubInstallation);\n const contextToggleGitHubRepository = useLatestCallback(toggleGitHubRepository);\n const contextConnectPersonalGitHub = useLatestCallback((workspaceId: string) =>\n beginPersonalGitHubOAuth(workspaceId, false),\n );\n const contextReconnectPersonalGitHub = useLatestCallback((workspaceId: string) =>\n beginPersonalGitHubOAuth(workspaceId, true),\n );\n const contextDisconnectPersonalGitHub = useLatestCallback(disconnectPersonalGitHub);\n const contextSavePersonalGitHubRepositories = useLatestCallback(savePersonalGitHubRepositories);\n const contextEnsurePersonalGitHubAuthority = useLatestCallback(ensurePersonalGitHubAuthority);\n const contextTogglePersonalGitHubRepository = useLatestCallback(togglePersonalGitHubRepository);\n const contextStartSession = useLatestCallback(startSession);\n const preparePendingSlackLink = useCallback(\n async (workspaceId: string) =>\n await slackLink.prepare(\n workspaceId,\n async (token) =>\n await client.prepareSlackUserLinkAccess(workspaceId, {\n linkToken: token,\n }),\n ),\n [client, slackLink],\n );\n const clearSlackLinkContinuation = useCallback(() => {\n slackLink.clear();\n setSlackLinkContinuationWorkspaceId(null);\n }, [slackLink]);\n\n const appContext = useMemo<AppContextValue | null>(() => {\n return clientConfig && accessContext\n ? ({\n client,\n clientConfig: withWorkspaceClientConfig(clientConfig, workspaceConfig),\n refreshWorkspaceConfig,\n authSession: authSession ?? null,\n accessContext,\n workspaces,\n managedSelfContext,\n slackLinkContinuationWorkspaceId,\n invalidSlackLinkQueryWorkspaceId,\n preparePendingSlackLink,\n clearSlackLinkContinuation,\n accessKeyVersion,\n keyAuthRequired: keyAuthRequired === true,\n model,\n setModel,\n reasoningEffort,\n setReasoningEffort,\n latencyMode,\n setLatencyMode,\n inspectorOpen,\n setInspectorOpen,\n session,\n setSession,\n sessionChannelProjectionAuthority,\n sessionCreationHandoff,\n connectionState,\n setConnectionState,\n sessionEventFeedStore,\n manualRepos,\n setManualRepos,\n manualReposOpen,\n setManualReposOpen,\n selectedRepoIds,\n setSelectedRepoIds,\n selectedRepoRefs,\n setSelectedRepoRefs,\n githubRepos,\n githubStatus,\n githubStatusFailed,\n githubCatalogReady,\n personalGitHubStatus,\n personalGitHubRepositories,\n personalGitHubSelection,\n personalGitHubCatalogReady,\n personalGitHubBusy,\n selectedPersonalGitHubRepoIds,\n setSelectedPersonalGitHubRepoIds,\n selectedPersonalGitHubRepoRefs,\n setSelectedPersonalGitHubRepoRefs,\n personalGitHubAuthority,\n githubOrg,\n setGithubOrg,\n selectedCapabilityToolIds,\n setSelectedCapabilityToolIds,\n busy,\n repoBusy,\n githubAppBusy,\n repositoryGroups,\n toolMcpServers,\n workspaceDefaultToolIds,\n workspaceMcpCatalogReady,\n workspaceMcpCatalogLoadedSuccessfully,\n workspaceCapabilityCatalog,\n workspaceMemberIntegrationSetup,\n currentResources,\n repositoryValidationError,\n workspaceStateOwnerId,\n prepareWorkspaceTransition,\n captureWorkspaceInvocation,\n ownsWorkspaceInvocation,\n addManualRepository: contextAddManualRepository,\n forgetAccessKey: contextForgetAccessKey,\n handleManagedSignOut: contextHandleManagedSignOut,\n revalidatePrincipalAccess,\n refreshPrincipalAccess: contextRefreshPrincipalAccess,\n createWorkspace: contextCreateWorkspace,\n renameWorkspace: contextRenameWorkspace,\n setWorkspaceInferenceControl: contextSetWorkspaceInferenceControl,\n refreshWorkspace,\n updateWorkspaceSettings: contextUpdateWorkspaceSettings,\n setWorkspaceDefaultRig: contextSetWorkspaceDefaultRig,\n updateSessionTitle: contextUpdateSessionTitle,\n updateSessionProfile: contextUpdateSessionProfile,\n updateSessionPin: contextUpdateSessionPin,\n deleteWorkspace: contextDeleteWorkspace,\n refreshGitHub,\n refreshPersonalGitHub,\n connectPersonalGitHub: contextConnectPersonalGitHub,\n reconnectPersonalGitHub: contextReconnectPersonalGitHub,\n disconnectPersonalGitHub: contextDisconnectPersonalGitHub,\n savePersonalGitHubRepositories: contextSavePersonalGitHubRepositories,\n ensurePersonalGitHubAuthority: contextEnsurePersonalGitHubAuthority,\n togglePersonalGitHubRepository: contextTogglePersonalGitHubRepository,\n refreshWorkspaceMcpServers,\n startGitHubAppManifestFlow: contextStartGitHubAppManifestFlow,\n disconnectGitHubInstallation: contextDisconnectGitHubInstallation,\n toggleGitHubRepository: contextToggleGitHubRepository,\n startSession: contextStartSession,\n resetSessionView,\n resetWorkspaceIntegrations,\n } satisfies AppContextValue)\n : null;\n }, [\n accessContext,\n accessKeyVersion,\n authSession,\n busy,\n captureWorkspaceInvocation,\n clearSlackLinkContinuation,\n client,\n clientConfig,\n workspaceConfig,\n refreshWorkspaceConfig,\n connectionState,\n contextAddManualRepository,\n contextCreateWorkspace,\n contextDeleteWorkspace,\n contextConnectPersonalGitHub,\n contextDisconnectPersonalGitHub,\n contextEnsurePersonalGitHubAuthority,\n contextForgetAccessKey,\n contextHandleManagedSignOut,\n contextRenameWorkspace,\n contextReconnectPersonalGitHub,\n contextSavePersonalGitHubRepositories,\n contextSetWorkspaceInferenceControl,\n contextUpdateSessionProfile,\n contextSetWorkspaceDefaultRig,\n contextDisconnectGitHubInstallation,\n contextStartGitHubAppManifestFlow,\n contextStartSession,\n contextToggleGitHubRepository,\n contextTogglePersonalGitHubRepository,\n contextUpdateSessionPin,\n contextUpdateSessionTitle,\n contextUpdateWorkspaceSettings,\n currentResources,\n repositoryValidationError,\n githubAppBusy,\n githubOrg,\n githubRepos,\n githubStatus,\n githubStatusFailed,\n personalGitHubStatus,\n personalGitHubRepositories,\n personalGitHubSelection,\n personalGitHubCatalogReady,\n personalGitHubBusy,\n selectedPersonalGitHubRepoIds,\n selectedPersonalGitHubRepoRefs,\n personalGitHubAuthority,\n githubCatalogReady,\n inspectorOpen,\n invalidSlackLinkQueryWorkspaceId,\n keyAuthRequired,\n manualRepos,\n manualReposOpen,\n managedSelfContext,\n model,\n ownsWorkspaceInvocation,\n preparePendingSlackLink,\n prepareWorkspaceTransition,\n slackLinkContinuationWorkspaceId,\n latencyMode,\n reasoningEffort,\n revalidatePrincipalAccess,\n contextRefreshPrincipalAccess,\n refreshGitHub,\n refreshPersonalGitHub,\n refreshWorkspace,\n refreshWorkspaceMcpServers,\n repoBusy,\n repositoryGroups,\n resetSessionView,\n resetWorkspaceIntegrations,\n selectedCapabilityToolIds,\n selectedRepoIds,\n selectedRepoRefs,\n session,\n sessionChannelProjectionAuthority,\n sessionCreationHandoff,\n sessionEventFeedStore,\n setSession,\n toolMcpServers,\n workspaceDefaultToolIds,\n workspaceMcpCatalogReady,\n workspaceMcpCatalogLoadedSuccessfully,\n workspaceCapabilityCatalog,\n workspaceMemberIntegrationSetup,\n workspaceStateOwnerId,\n workspaces,\n ]);\n\n return {\n appContext,\n client,\n clientConfig,\n configError,\n retryClientConfig: () => {\n // A calm waiting state stays up while the retry runs.\n setConfigError((current) => (current?.recovering ? current : null));\n setConfigRequestVersion((version) => version + 1);\n },\n authSession,\n accessContext,\n accessError,\n accessLoading,\n accessKeyVersion,\n retryAccess: () => setAccessKeyVersion((version) => version + 1),\n keyAuthRequired,\n hasAccessKey,\n accessKeyDraft,\n setAccessKeyDraft,\n saveAccessKey,\n managedAuthRequired,\n managedEmailVerificationRequired,\n managedNewSignupsEnabled,\n managedSocialProviders,\n managedPasskeySignIn,\n managedPasskeySignUp,\n browserAccountsConfigured,\n browserAccountsEnabled,\n handleManagedAuth,\n handleManagedSessionSetSignup,\n handleManagedSocialAuth,\n handleManagedPasskeyAuth,\n handleManagedSignOut: contextHandleManagedSignOut,\n handleBrowserActorTransition: contextHandleBrowserActorTransition,\n completeOrganizationOnboarding,\n revalidatePrincipalAccess,\n defaultWorkspaceId,\n slackLinkContinuationWorkspaceId,\n routedWorkspace,\n creditRequired,\n setCreditRequired,\n mutationBusy: busy || repoBusy || githubAppBusy || pendingCreateAttempt.current !== null,\n };\n}\n\n/** Posts the GitHub App manifest; an embedded app opens it beside the host page. */\nfunction submitGitHubManifest(\n actionUrl: string,\n manifest: Record<string, unknown>,\n newTab: boolean,\n): void {\n const form = document.createElement(\"form\");\n form.method = \"POST\";\n form.action = actionUrl;\n if (newTab) form.target = \"_blank\";\n form.style.display = \"none\";\n form.acceptCharset = \"utf-8\";\n\n const input = document.createElement(\"input\");\n input.type = \"hidden\";\n input.name = \"manifest\";\n input.value = JSON.stringify(manifest);\n\n form.append(input);\n document.body.append(form);\n form.submit();\n // A same-tab post leaves the page anyway; a new-tab post must not leave the\n // manifest behind in the host page.\n if (newTab) form.remove();\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,41 @@
1
+ "use client";
2
+ import {
3
+ FormPage
4
+ } from "./chunk-ZYAZUPPV.js";
5
+ import {
6
+ cn
7
+ } from "./chunk-TXS65BB2.js";
8
+
9
+ // src/ui/flush-form-page.tsx
10
+ import { jsx } from "react/jsx-runtime";
11
+ var FLUSH_FORM_PAGE_CLASS = [
12
+ "[&>form>header]:mx-0 [&>form>header]:px-0 [&>form>header]:pt-0",
13
+ "[&>form>[data-slot=form-body]]:mx-0 [&>form>[data-slot=form-body]]:px-0",
14
+ "[&>form>footer>div]:mx-0 [&>form>footer>div]:px-0",
15
+ // The footer's hairline ends where the 640px column does, like the header's.
16
+ "[&>form>footer]:max-w-[640px]"
17
+ ].join(" ");
18
+ var FLUSH_DETAIL_PAGE_CLASS = "max-w-none px-0 pt-0 pb-0 max-sm:px-0";
19
+ function FlushFormPage({
20
+ onClose,
21
+ backLabel,
22
+ className,
23
+ ...props
24
+ }) {
25
+ return /* @__PURE__ */ jsx(
26
+ FormPage,
27
+ {
28
+ back: { label: backLabel, onClick: onClose },
29
+ onCancel: onClose,
30
+ className: cn(FLUSH_FORM_PAGE_CLASS, className),
31
+ ...props
32
+ }
33
+ );
34
+ }
35
+
36
+ export {
37
+ FLUSH_FORM_PAGE_CLASS,
38
+ FLUSH_DETAIL_PAGE_CLASS,
39
+ FlushFormPage
40
+ };
41
+ //# sourceMappingURL=chunk-4E3ZJRTZ.js.map
@@ -0,0 +1,141 @@
1
+ "use client";
2
+ import {
3
+ NewSessionLink
4
+ } from "./chunk-JDTGRRNU.js";
5
+ import {
6
+ RAIL_BRAND_LINK_CLASS,
7
+ RailBrandMark,
8
+ RailBrandRow
9
+ } from "./chunk-6FHFLQAP.js";
10
+ import {
11
+ SIDEBAR_TOGGLE_IN_WINDOW_BAR,
12
+ SidebarToggleButton,
13
+ WindowBarControls
14
+ } from "./chunk-YPWU5KPE.js";
15
+ import {
16
+ useActionShortcut
17
+ } from "./chunk-HGKTHF2U.js";
18
+ import {
19
+ useRail
20
+ } from "./chunk-5EWSRZ2Y.js";
21
+ import {
22
+ useSessionUiFeature
23
+ } from "./chunk-FWXMQTVG.js";
24
+ import {
25
+ Link,
26
+ useRouterState
27
+ } from "./chunk-BXBDYNRP.js";
28
+ import {
29
+ cn
30
+ } from "./chunk-A3MTTRCX.js";
31
+ import {
32
+ Button
33
+ } from "./chunk-7QQN3KNP.js";
34
+
35
+ // src/app/components/rail/rail-sections.tsx
36
+ import { SquarePenIcon, XIcon } from "lucide-react";
37
+ import { createContext, useContext } from "react";
38
+ import { jsx, jsxs } from "react/jsx-runtime";
39
+ var SessionShellSlotsContext = createContext({});
40
+ function SessionShellSlotsProvider({
41
+ slots,
42
+ children
43
+ }) {
44
+ return /* @__PURE__ */ jsx(SessionShellSlotsContext.Provider, { value: slots, children });
45
+ }
46
+ function RailHeader({ showSwitcher = true }) {
47
+ const rail = useRail();
48
+ const { switcher } = useContext(SessionShellSlotsContext);
49
+ const brand = useSessionUiFeature("brand");
50
+ const brandless = !brand;
51
+ const toggleInWindowBar = SIDEBAR_TOGGLE_IN_WINDOW_BAR && !rail.isMobile;
52
+ const collapseToggle = !rail.isMobile ? /* @__PURE__ */ jsx(
53
+ SidebarToggleButton,
54
+ {
55
+ collapsed: rail.collapsed,
56
+ onToggle: rail.toggleCollapsed,
57
+ inWindowBar: toggleInWindowBar
58
+ }
59
+ ) : null;
60
+ const rowToggle = toggleInWindowBar ? null : collapseToggle;
61
+ return /* @__PURE__ */ jsxs("div", { "data-rail-header": true, className: "flex shrink-0 flex-col gap-3 pt-3", children: [
62
+ toggleInWindowBar && collapseToggle ? /* @__PURE__ */ jsx(WindowBarControls, { children: collapseToggle }) : null,
63
+ /* @__PURE__ */ jsxs(
64
+ RailBrandRow,
65
+ {
66
+ className: rail.collapsed ? "justify-center" : brandless ? "justify-end" : "justify-between",
67
+ children: [
68
+ brandless ? null : /* @__PURE__ */ jsx(
69
+ Link,
70
+ {
71
+ to: "/workspaces/$workspaceId/sessions",
72
+ params: { workspaceId: rail.workspaceId },
73
+ className: RAIL_BRAND_LINK_CLASS,
74
+ "aria-label": "Opengeni home",
75
+ children: /* @__PURE__ */ jsx(RailBrandMark, { collapsed: rail.collapsed })
76
+ }
77
+ ),
78
+ !rail.collapsed || brandless ? rowToggle : null,
79
+ rail.isMobile ? /* @__PURE__ */ jsx(
80
+ Button,
81
+ {
82
+ type: "button",
83
+ variant: "ghost",
84
+ size: "icon-sm",
85
+ "aria-label": "Close navigation",
86
+ onClick: () => rail.setDrawerOpen(false),
87
+ className: "pointer-coarse:size-11",
88
+ children: /* @__PURE__ */ jsx(XIcon, { className: "size-4" })
89
+ }
90
+ ) : null
91
+ ]
92
+ }
93
+ ),
94
+ rail.collapsed && rowToggle && !brandless ? /* @__PURE__ */ jsx("div", { className: "-mt-1 grid justify-items-center", children: rowToggle }) : null,
95
+ showSwitcher && !rail.collapsed ? switcher : null
96
+ ] });
97
+ }
98
+ function PrimaryNav() {
99
+ const rail = useRail();
100
+ const { primaryNav } = useContext(SessionShellSlotsContext);
101
+ const pathname = useRouterState({ select: (state) => state.location.pathname });
102
+ const newSessionActive = pathname === `/workspaces/${rail.workspaceId}/sessions`;
103
+ const newChatShortcut = useActionShortcut("chat.new");
104
+ return /* @__PURE__ */ jsxs("div", { className: cn("mt-2 grid gap-0.5 px-2", rail.collapsed && "justify-center"), children: [
105
+ /* @__PURE__ */ jsxs(
106
+ NewSessionLink,
107
+ {
108
+ "aria-label": newChatShortcut ? `New session \xB7 ${newChatShortcut.label}` : "New session",
109
+ className: cn(
110
+ "group relative flex h-8 items-center rounded-md text-sm font-normal text-fg-label outline-hidden transition-colors pointer-coarse:h-10",
111
+ "hover:bg-hover hover:text-fg focus-visible:ring-2 focus-visible:ring-ring/50",
112
+ newSessionActive && "bg-selection text-fg hover:bg-selection",
113
+ rail.collapsed ? "w-8 justify-center pointer-coarse:w-10" : "gap-2.5 px-2.5"
114
+ ),
115
+ children: [
116
+ /* @__PURE__ */ jsx(
117
+ "span",
118
+ {
119
+ "aria-hidden": "true",
120
+ className: cn(
121
+ "absolute left-0 top-1/2 h-4 w-0.5 -translate-y-1/2 rounded-full bg-brand transition-opacity",
122
+ newSessionActive ? "opacity-100" : "opacity-0"
123
+ )
124
+ }
125
+ ),
126
+ /* @__PURE__ */ jsx(SquarePenIcon, { className: "size-4 shrink-0" }),
127
+ rail.collapsed ? null : /* @__PURE__ */ jsx("span", { className: "min-w-0 truncate", children: "New session" })
128
+ ]
129
+ }
130
+ ),
131
+ primaryNav
132
+ ] });
133
+ }
134
+
135
+ export {
136
+ SessionShellSlotsContext,
137
+ SessionShellSlotsProvider,
138
+ RailHeader,
139
+ PrimaryNav
140
+ };
141
+ //# sourceMappingURL=chunk-4SAWSRAA.js.map