@opengeni/react 4.2.1-canary.39642758903001 → 4.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (693) hide show
  1. package/dist/app/app-state.js +27 -27
  2. package/dist/app/components/Composer.js +27 -26
  3. package/dist/app/components/agent/agent-capability-picker.js +5 -5
  4. package/dist/app/components/artifacts/artifact-library.js +19 -19
  5. package/dist/app/components/artifacts/chat-interactive-block.js +16 -16
  6. package/dist/app/components/artifacts/inline-chat-image.js +31 -30
  7. package/dist/app/components/artifacts/retained-file-preview.js +35 -34
  8. package/dist/app/components/artifacts/retained-text-preview.js +5 -5
  9. package/dist/app/components/artifacts/site-audience.js +5 -5
  10. package/dist/app/components/artifacts/site-conversations.js +24 -22
  11. package/dist/app/components/artifacts/site-data.js +20 -20
  12. package/dist/app/components/artifacts/site-publishing.js +39 -39
  13. package/dist/app/components/artifacts/site-settings.js +48 -48
  14. package/dist/app/components/billing-class-mark.js +5 -5
  15. package/dist/app/components/capabilities/capability-detail-sheet.js +9 -9
  16. package/dist/app/components/capabilities/capability-logo-source.js +13 -12
  17. package/dist/app/components/capabilities/connection-account-picker.js +2 -2
  18. package/dist/app/components/capabilities/connector-tool-permissions.js +5 -5
  19. package/dist/app/components/capabilities/native-connect-setup.js +14 -13
  20. package/dist/app/components/capabilities/native-connect-setup.js.map +1 -1
  21. package/dist/app/components/capabilities/perform-capability-action.js +3 -3
  22. package/dist/app/components/capabilities/prepared-mcp-setup-card.js +15 -14
  23. package/dist/app/components/capabilities/session-capability-card.js +78 -77
  24. package/dist/app/components/capabilities/session-capability-card.js.map +1 -1
  25. package/dist/app/components/capabilities/session-custom-mcp-card.js +20 -19
  26. package/dist/app/components/capabilities/session-github-card.js +25 -24
  27. package/dist/app/components/capabilities/session-machine-card.js +38 -38
  28. package/dist/app/components/capabilities/use-capabilities-catalog.js +3 -3
  29. package/dist/app/components/capabilities/use-connection-accounts.js +1 -1
  30. package/dist/app/components/command-menu/chat-switcher.d.ts +12 -0
  31. package/dist/app/components/command-menu/chat-switcher.js +142 -0
  32. package/dist/app/components/command-menu/chat-switcher.js.map +1 -0
  33. package/dist/app/components/command-menu/command-menu.d.ts +15 -0
  34. package/dist/app/components/command-menu/command-menu.js +812 -0
  35. package/dist/app/components/command-menu/command-menu.js.map +1 -0
  36. package/dist/app/components/command-menu/keycaps.d.ts +21 -0
  37. package/dist/app/components/command-menu/keycaps.js +12 -0
  38. package/dist/app/components/command-menu/shortcut-sheet.d.ts +12 -0
  39. package/dist/app/components/command-menu/shortcut-sheet.js +150 -0
  40. package/dist/app/components/command-menu/shortcut-sheet.js.map +1 -0
  41. package/dist/app/components/composer-capabilities-menu-body.js +3 -3
  42. package/dist/app/components/composer-mobile-plus-panel.js +21 -21
  43. package/dist/app/components/composer-mobile-plus.js +3 -3
  44. package/dist/app/components/credit-required-gate.js +1 -1
  45. package/dist/app/components/credit-required-prompt.js +16 -16
  46. package/dist/app/components/credits/coupon-redeem.js +2 -2
  47. package/dist/app/components/credits/credit-refusal-notice.d.ts +18 -0
  48. package/dist/app/components/credits/credit-refusal-notice.js +17 -0
  49. package/dist/app/components/cross-slot-deep-link-recovery.js +1 -1
  50. package/dist/app/components/desktop/app-shots.js +6 -6
  51. package/dist/app/components/desktop/this-computer.js +4 -4
  52. package/dist/app/components/feedback.js +5 -5
  53. package/dist/app/components/follow-up-repository-menu-body.js +7 -7
  54. package/dist/app/components/follow-up-repository-picker.js +3 -3
  55. package/dist/app/components/github-app-connect-launcher.js +1 -1
  56. package/dist/app/components/knowledge/agent-learning-settings.js +6 -6
  57. package/dist/app/components/machines/connect-machine-dialog.js +18 -18
  58. package/dist/app/components/manual-repository-editor.js +2 -2
  59. package/dist/app/components/markdown.js +10 -9
  60. package/dist/app/components/message-context-pills.js +2 -2
  61. package/dist/app/components/models/models-ui.js +10 -10
  62. package/dist/app/components/pickers.js +10 -10
  63. package/dist/app/components/rail/rail-context.d.ts +6 -0
  64. package/dist/app/components/rail/rail-context.js +3 -3
  65. package/dist/app/components/rail/rail-sections.js +61 -55
  66. package/dist/app/components/rail/session-browse-order-controls.js +2 -2
  67. package/dist/app/components/rail/session-header.js +50 -36
  68. package/dist/app/components/rail/session-list.js +59 -52
  69. package/dist/app/components/rail/session-row-hover-details.js +25 -23
  70. package/dist/app/components/rail/session-shell.js +96 -91
  71. package/dist/app/components/repository-picker.js +7 -7
  72. package/dist/app/components/secrets/session-secrets-panel.js +4 -4
  73. package/dist/app/components/session/agent-configuration-panel.js +34 -34
  74. package/dist/app/components/session/banners.js +12 -11
  75. package/dist/app/components/session/codex-account-indicator.js +12 -12
  76. package/dist/app/components/session/composer-menu-radio.js +2 -2
  77. package/dist/app/components/session/conversation-find.js +1 -1
  78. package/dist/app/components/session/editable-artifacts-workspace.js +45 -45
  79. package/dist/app/components/session/failed-session-banner.js +12 -12
  80. package/dist/app/components/session/human-input.js +48 -47
  81. package/dist/app/components/session/inspector.js +80 -79
  82. package/dist/app/components/session/inspector.js.map +1 -1
  83. package/dist/app/components/session/message-actions.js +5 -5
  84. package/dist/app/components/session/message-resource-attachments.js +21 -20
  85. package/dist/app/components/session/message-resource-attachments.js.map +1 -1
  86. package/dist/app/components/session/model-account-indicator.js +11 -11
  87. package/dist/app/components/session/model-context-inspector.js +2 -2
  88. package/dist/app/components/session/model-recovery-notice.js +3 -3
  89. package/dist/app/components/session/new-session-settings-menu.js +13 -13
  90. package/dist/app/components/session/sandbox-switcher.js +16 -16
  91. package/dist/app/components/session/sandbox-workspace.js +68 -67
  92. package/dist/app/components/session/search-markdown-highlight.js +11 -10
  93. package/dist/app/components/session/search-results-view.js +12 -11
  94. package/dist/app/components/session/session-admin-access.js +11 -11
  95. package/dist/app/components/session/session-retention.js +4 -4
  96. package/dist/app/components/session/session-search-dialog.d.ts +5 -0
  97. package/dist/app/components/session/session-search-dialog.js +22 -12
  98. package/dist/app/components/session/session-search-dialog.js.map +1 -1
  99. package/dist/app/components/session/session-skill-reviews.js +3 -3
  100. package/dist/app/components/session/session-tenancy-control.js +25 -25
  101. package/dist/app/components/session/session-usage-limit-section.js +9 -9
  102. package/dist/app/components/session/session-wait-status.js +11 -9
  103. package/dist/app/components/session/session-wait-status.js.map +1 -1
  104. package/dist/app/components/session/subagents.js +17 -15
  105. package/dist/app/components/session/subscription-account-menu.js +2 -2
  106. package/dist/app/components/session-connectors-menu-body.js +6 -6
  107. package/dist/app/components/settings/row-select.js +1 -1
  108. package/dist/app/components/transcription-settings.js +2 -2
  109. package/dist/app/components/ui/destructive-confirm.js +8 -8
  110. package/dist/app/components/usage/usage-entry.js +6 -6
  111. package/dist/app/components/workspace-composer-plus.js +22 -21
  112. package/dist/app/embed/session-app.js +264 -258
  113. package/dist/app/lib/actions/actions-provider.d.ts +30 -0
  114. package/dist/app/lib/actions/actions-provider.js +32 -0
  115. package/dist/app/lib/actions/chat-directory.d.ts +30 -0
  116. package/dist/app/lib/actions/chat-operations.d.ts +11 -0
  117. package/dist/app/lib/actions/chat-switcher.d.ts +31 -0
  118. package/dist/app/lib/actions/chords.d.ts +40 -0
  119. package/dist/app/lib/actions/events.d.ts +6 -0
  120. package/dist/app/lib/actions/rank.d.ts +17 -0
  121. package/dist/app/lib/actions/registry.d.ts +71 -0
  122. package/dist/app/lib/codex-usage-query.js +3 -3
  123. package/dist/app/lib/composer-connectors.js +14 -13
  124. package/dist/app/lib/console-text.js +2 -2
  125. package/dist/app/lib/credit-coverage.d.ts +21 -0
  126. package/dist/app/lib/credit-coverage.js +15 -0
  127. package/dist/app/lib/deployment-free-model.js +2 -2
  128. package/dist/app/lib/events.js +19 -18
  129. package/dist/app/lib/failed-session-copy.js +5 -5
  130. package/dist/app/lib/free-credit-gap.d.ts +9 -0
  131. package/dist/app/lib/free-credit-gap.js +4 -2
  132. package/dist/app/lib/integration-connect-analytics.d.ts +1 -1
  133. package/dist/app/lib/integration-connect-analytics.js +1 -1
  134. package/dist/app/lib/integration-connect-redirect.js +1 -1
  135. package/dist/app/lib/model-access-onboarding.js +4 -4
  136. package/dist/app/lib/model-policy.js +1 -1
  137. package/dist/app/lib/models-route.d.ts +6 -2
  138. package/dist/app/lib/models-route.js +6 -3
  139. package/dist/app/lib/models-route.js.map +1 -1
  140. package/dist/app/lib/move-chat-to-machine.js +3 -3
  141. package/dist/app/lib/session-branch-cache.js +15 -13
  142. package/dist/app/lib/session-create.js +2 -2
  143. package/dist/app/lib/session-group-pagination.js +15 -13
  144. package/dist/app/lib/session-hover-facts.js +16 -14
  145. package/dist/app/lib/session-model.js +3 -3
  146. package/dist/app/lib/session-rail.js +11 -9
  147. package/dist/app/lib/session-rename.js +3 -3
  148. package/dist/app/lib/session-search-route.d.ts +1 -1
  149. package/dist/app/lib/session-search-route.js +1 -1
  150. package/dist/app/lib/session-ui-features.d.ts +11 -3
  151. package/dist/app/lib/session-ui-features.js +1 -1
  152. package/dist/app/lib/sessions-group.js +15 -13
  153. package/dist/app/lib/turn-failure-analytics.js +7 -7
  154. package/dist/app/lib/unavailable-session-model.js +2 -2
  155. package/dist/app/lib/use-duplicate-site.js +2 -2
  156. package/dist/app/lib/use-follow-up-repositories.js +3 -3
  157. package/dist/app/lib/use-workspace-machines.js +8 -8
  158. package/dist/app/lib/use-workspace-model-catalog.js +6 -6
  159. package/dist/app/lib/use-workspace-rigs.js +4 -4
  160. package/dist/app/lib/workspace-navigation-preference.js +5 -5
  161. package/dist/app/lib/workspace-scope-context.js +4 -4
  162. package/dist/app/routes/artifacts.js +124 -122
  163. package/dist/app/routes/artifacts.js.map +1 -1
  164. package/dist/app/routes/retained-artifact.js +69 -68
  165. package/dist/app/routes/retained-artifact.js.map +1 -1
  166. package/dist/app/routes/session-unavailable.js +3 -3
  167. package/dist/app/routes/session.js +168 -166
  168. package/dist/app/routes/sessions-index-hydration.js +3 -3
  169. package/dist/app/routes/sessions-index.js +122 -116
  170. package/dist/artifacts-document.js +4 -4
  171. package/dist/artifacts-presentation.js +4 -4
  172. package/dist/artifacts-spreadsheet.js +4 -4
  173. package/dist/artifacts.js +39 -39
  174. package/dist/{browser-viewer-ZRFZX3VN.js → browser-viewer-HPUMK7UP.js} +7 -7
  175. package/dist/{chat-interactive-block-HUMYWVCK.js → chat-interactive-block-22PPECCT.js} +6 -6
  176. package/dist/{chunk-GVIQ7H62.js → chunk-2LUBBDZV.js} +5 -5
  177. package/dist/{chunk-SWWYYGQO.js → chunk-325C2TCI.js} +5 -2
  178. package/dist/chunk-325C2TCI.js.map +1 -0
  179. package/dist/{chunk-XMMVIY7B.js → chunk-3CCJWHQY.js} +2 -2
  180. package/dist/{chunk-XS2FZ6DX.js → chunk-3F5ZPIWI.js} +2 -2
  181. package/dist/{chunk-72US6QNB.js → chunk-3J2YZRY5.js} +2 -2
  182. package/dist/{chunk-D4YQF4E3.js → chunk-3SMJ2BIQ.js} +2 -2
  183. package/dist/{chunk-TBJINQXA.js → chunk-3WCYK36X.js} +17 -17
  184. package/dist/{chunk-WPCF34V6.js → chunk-3WG3CRL7.js} +14 -14
  185. package/dist/{chunk-JI5BYQKO.js → chunk-3X46PNBX.js} +14 -14
  186. package/dist/{chunk-UO36FC3S.js → chunk-46I7MMAL.js} +6 -2
  187. package/dist/chunk-46I7MMAL.js.map +1 -0
  188. package/dist/{chunk-PBK44WJC.js → chunk-4GJ37O6G.js} +2 -2
  189. package/dist/chunk-4IWBQUQU.js +152 -0
  190. package/dist/chunk-4IWBQUQU.js.map +1 -0
  191. package/dist/{chunk-LEXPBQ56.js → chunk-4SKJX3C4.js} +6 -6
  192. package/dist/{chunk-ZA6YD2LW.js → chunk-57SYK776.js} +2 -2
  193. package/dist/{chunk-22LBKJDE.js → chunk-5DIAN5GQ.js} +12 -12
  194. package/dist/{chunk-LJ3TDK2L.js → chunk-5FA455GR.js} +4 -4
  195. package/dist/{chunk-N2BEUKXT.js → chunk-5FBZDEHE.js} +228 -228
  196. package/dist/chunk-5FBZDEHE.js.map +1 -0
  197. package/dist/{chunk-YPR5INHV.js → chunk-5X3E2Z3D.js} +4 -4
  198. package/dist/{chunk-OXNWZTEU.js → chunk-5ZJCL6X4.js} +5 -5
  199. package/dist/{chunk-62OAZ4LO.js → chunk-6C5GQQMC.js} +12 -12
  200. package/dist/{chunk-VGITH57T.js → chunk-6ERTXDZM.js} +4 -4
  201. package/dist/{chunk-ZQ7XQZCF.js → chunk-6FX73Y4I.js} +8 -8
  202. package/dist/{chunk-QZO2KK2F.js → chunk-6P44NG6Y.js} +2 -2
  203. package/dist/{chunk-N2DDJLTM.js → chunk-6T7Y33JA.js} +3 -3
  204. package/dist/{chunk-RBAGC2MJ.js → chunk-75VE5QUS.js} +22 -22
  205. package/dist/{chunk-MRXOGI3O.js → chunk-77CUDSHG.js} +9 -9
  206. package/dist/{chunk-F2GXK2Z6.js → chunk-7G446JFO.js} +431 -348
  207. package/dist/chunk-7G446JFO.js.map +1 -0
  208. package/dist/{chunk-GZ65XQR5.js → chunk-7T7FHSGS.js} +3 -3
  209. package/dist/{chunk-YGAH34CD.js → chunk-A3S26JSP.js} +8 -8
  210. package/dist/{chunk-GYPAO6RS.js → chunk-A664GSDM.js} +8 -8
  211. package/dist/{chunk-JSZSNMDR.js → chunk-ASUYLXKO.js} +2 -2
  212. package/dist/{chunk-RTK7SUPL.js → chunk-AUUJLVA3.js} +7 -7
  213. package/dist/{chunk-OOTBYSCA.js → chunk-BBWKPNJB.js} +5 -5
  214. package/dist/{chunk-BGZIMIUU.js → chunk-BCUYWOQU.js} +2 -2
  215. package/dist/{chunk-EKN4N4LS.js → chunk-BDFMNJZJ.js} +2 -2
  216. package/dist/{chunk-YZKGOWCC.js → chunk-BIDXQAGO.js} +2 -2
  217. package/dist/{chunk-Q2UUANHF.js → chunk-BIKAJ4DY.js} +5 -5
  218. package/dist/{chunk-5IQBF2X3.js → chunk-BJPJ2OUX.js} +3 -3
  219. package/dist/{chunk-EY2EMHZW.js → chunk-BPM2OTYK.js} +8 -8
  220. package/dist/{chunk-MT4TBRQB.js → chunk-BSWS2RUZ.js} +2 -2
  221. package/dist/{chunk-T7YD3VGK.js → chunk-C52MNKXU.js} +12 -12
  222. package/dist/{chunk-THNW33K7.js → chunk-CEUDV4OA.js} +18 -18
  223. package/dist/{chunk-GRLPRM56.js → chunk-CFEFYPNR.js} +8 -2
  224. package/dist/chunk-CFEFYPNR.js.map +1 -0
  225. package/dist/{chunk-LHGIS6SZ.js → chunk-CVK74BH7.js} +2 -2
  226. package/dist/{chunk-DFO2UCYG.js → chunk-CW5I65ZX.js} +11 -11
  227. package/dist/chunk-DKNTQDVL.js +86 -0
  228. package/dist/chunk-DKNTQDVL.js.map +1 -0
  229. package/dist/{chunk-SKRLKQEG.js → chunk-DOSC2HRQ.js} +79 -79
  230. package/dist/{chunk-KVB6XDLP.js → chunk-DPJ2CWVN.js} +2 -2
  231. package/dist/{chunk-4J6V4DH7.js → chunk-DXMRO2MU.js} +3 -3
  232. package/dist/{chunk-42I4O4WQ.js → chunk-EE55IDDR.js} +26 -26
  233. package/dist/{chunk-2RA6XABP.js → chunk-EEERTLFF.js} +12 -12
  234. package/dist/{chunk-PTOTKUKO.js → chunk-EEO744XR.js} +8 -8
  235. package/dist/{chunk-LD3HVI2J.js → chunk-EMFGBAQL.js} +6 -6
  236. package/dist/{chunk-FQGUK4ST.js → chunk-ENPJKVMN.js} +38 -38
  237. package/dist/{chunk-HDHK3SXK.js → chunk-EU6RLHMP.js} +4 -4
  238. package/dist/{chunk-G7VLL3PG.js → chunk-F2YABPRJ.js} +13 -4
  239. package/dist/chunk-F2YABPRJ.js.map +1 -0
  240. package/dist/{chunk-MRUWRQBX.js → chunk-FET6XHGS.js} +2 -2
  241. package/dist/{chunk-M6KUY3YH.js → chunk-FIICQA55.js} +2 -2
  242. package/dist/{chunk-NLWLCYCT.js → chunk-FTZXCPE3.js} +19 -19
  243. package/dist/{chunk-FN2KA3MJ.js → chunk-FUS76DO4.js} +3 -3
  244. package/dist/{chunk-AM4IIPWI.js → chunk-G7N5NPRJ.js} +2 -2
  245. package/dist/{chunk-CCQ7YKOD.js → chunk-GBYZ6653.js} +2 -2
  246. package/dist/{chunk-SOOWLNC5.js → chunk-GJUPLSC5.js} +330 -109
  247. package/dist/chunk-GJUPLSC5.js.map +1 -0
  248. package/dist/{chunk-YKKVIJVX.js → chunk-GQDSC6QZ.js} +5 -5
  249. package/dist/chunk-GQGNRL2L.js +53 -0
  250. package/dist/chunk-GQGNRL2L.js.map +1 -0
  251. package/dist/{chunk-5X6JP75Q.js → chunk-GRSODLVO.js} +4 -4
  252. package/dist/{chunk-73YP3R5X.js → chunk-GSESCQFY.js} +4 -4
  253. package/dist/{chunk-KWB5U3ZT.js → chunk-GWRW4N3T.js} +199 -137
  254. package/dist/chunk-GWRW4N3T.js.map +1 -0
  255. package/dist/{chunk-RTR7RNG4.js → chunk-GYRU4PNM.js} +9 -7
  256. package/dist/{chunk-RTR7RNG4.js.map → chunk-GYRU4PNM.js.map} +1 -1
  257. package/dist/{chunk-MZLEBFUZ.js → chunk-GZD6VBIK.js} +3 -3
  258. package/dist/{chunk-IZR2QRFF.js → chunk-H3HH5AHS.js} +4 -4
  259. package/dist/{chunk-DN3TKURW.js → chunk-H3LIIAGE.js} +4 -54
  260. package/dist/chunk-H3LIIAGE.js.map +1 -0
  261. package/dist/{chunk-NPLEQMNM.js → chunk-H5GWAG4I.js} +7 -5
  262. package/dist/{chunk-NPLEQMNM.js.map → chunk-H5GWAG4I.js.map} +1 -1
  263. package/dist/{chunk-OJPUVUB6.js → chunk-HAOZCLLA.js} +3 -3
  264. package/dist/{chunk-ZBHDGAYL.js → chunk-HEFE4OZJ.js} +2 -2
  265. package/dist/{chunk-WTG34JVA.js → chunk-HI75UTI6.js} +2 -2
  266. package/dist/{chunk-OMBIG3NC.js → chunk-HM633ROV.js} +14 -14
  267. package/dist/{chunk-WDFZWSKD.js → chunk-HRIP4M6H.js} +3 -3
  268. package/dist/{chunk-A2BCW6CQ.js → chunk-HU2DRFFI.js} +3 -3
  269. package/dist/{chunk-PO35PBAB.js → chunk-HVH7FFJH.js} +2 -2
  270. package/dist/{chunk-EG7KNUF7.js → chunk-HYTXTKST.js} +18 -18
  271. package/dist/{chunk-TFHG75A4.js → chunk-I4XMDFUJ.js} +7 -7
  272. package/dist/{chunk-IZHVZZQA.js → chunk-ICAUYWSL.js} +9 -9
  273. package/dist/{chunk-ZSERYHHT.js → chunk-IDMXEPHL.js} +150 -150
  274. package/dist/chunk-IDMXEPHL.js.map +1 -0
  275. package/dist/{chunk-DCLPWYP3.js → chunk-IEVPJ3G6.js} +2 -2
  276. package/dist/{chunk-EVWZHDSF.js → chunk-IKH3VTA4.js} +2 -2
  277. package/dist/{chunk-L5UCO2UV.js → chunk-ILBSBZGC.js} +13 -4
  278. package/dist/chunk-ILBSBZGC.js.map +1 -0
  279. package/dist/{chunk-IO6K6UYJ.js → chunk-IQ64BNAG.js} +4 -2
  280. package/dist/chunk-IQ64BNAG.js.map +1 -0
  281. package/dist/{chunk-TYHLEFD2.js → chunk-IZJNMRIR.js} +9 -9
  282. package/dist/{chunk-D2SR3TEB.js → chunk-J243WGUA.js} +2 -2
  283. package/dist/{chunk-QGSGIYE3.js → chunk-J2C6LB6W.js} +4 -4
  284. package/dist/{chunk-MT6TRTXF.js → chunk-J5MEDX7C.js} +9 -9
  285. package/dist/{chunk-6QHUKBJP.js → chunk-J7SKOO44.js} +2 -2
  286. package/dist/{chunk-W2QK7PYS.js → chunk-JAAST75A.js} +11 -11
  287. package/dist/{chunk-NQCMS4AJ.js → chunk-JQCGPTZ6.js} +9 -9
  288. package/dist/chunk-JRJUSKDY.js +832 -0
  289. package/dist/chunk-JRJUSKDY.js.map +1 -0
  290. package/dist/{chunk-CMUXJHGH.js → chunk-JRSCWQMC.js} +9 -9
  291. package/dist/{chunk-Q4OHNGGB.js → chunk-JRXHSVD5.js} +4 -4
  292. package/dist/{chunk-SD2K5ZN5.js → chunk-JXYLDT6X.js} +4 -4
  293. package/dist/{chunk-S3M5WCZW.js → chunk-KA4LV7G6.js} +35 -50
  294. package/dist/chunk-KA4LV7G6.js.map +1 -0
  295. package/dist/{chunk-IXX6ZOL2.js → chunk-KGTMHEAP.js} +7 -7
  296. package/dist/{chunk-22OBGVEJ.js → chunk-KOXVGPW4.js} +3 -3
  297. package/dist/{chunk-NOZ5CGZE.js → chunk-L5GPPMUB.js} +2 -2
  298. package/dist/{chunk-KIHYJM5F.js → chunk-LXJT4WAW.js} +58 -58
  299. package/dist/{chunk-KIHYJM5F.js.map → chunk-LXJT4WAW.js.map} +1 -1
  300. package/dist/{chunk-4FOOHMTU.js → chunk-LY6727IF.js} +1 -1
  301. package/dist/{chunk-PT7MTXRE.js → chunk-MAOCN7J6.js} +2 -2
  302. package/dist/{chunk-4K2JSJNX.js → chunk-MB5LZVDO.js} +2 -2
  303. package/dist/chunk-MF464AKA.js +139 -0
  304. package/dist/chunk-MF464AKA.js.map +1 -0
  305. package/dist/{chunk-UYSZKDQY.js → chunk-MK54JLE4.js} +1 -1
  306. package/dist/chunk-MK54JLE4.js.map +1 -0
  307. package/dist/{chunk-5LES64PP.js → chunk-MKOQAVOE.js} +21 -21
  308. package/dist/{chunk-BMV2SNYX.js → chunk-MUPWNSEJ.js} +18 -18
  309. package/dist/{chunk-Y5TRG22C.js → chunk-NRXIECWC.js} +2 -2
  310. package/dist/{chunk-GOE7G5JX.js → chunk-NWSAF6P5.js} +2 -2
  311. package/dist/chunk-OB3YGXHQ.js +158 -0
  312. package/dist/chunk-OB3YGXHQ.js.map +1 -0
  313. package/dist/{chunk-DUM363VS.js → chunk-OFZQJNF6.js} +5 -5
  314. package/dist/{chunk-CKN5QPEL.js → chunk-OMF7POEY.js} +2 -2
  315. package/dist/{chunk-MVXKO2BD.js → chunk-OXD6ET34.js} +1 -1
  316. package/dist/{chunk-47JUEVME.js → chunk-PALX6HWV.js} +21 -21
  317. package/dist/{chunk-B6OGSG7I.js → chunk-PE3BLBDT.js} +3 -3
  318. package/dist/{chunk-RVISSNVE.js → chunk-PMZKJOG6.js} +15 -15
  319. package/dist/{chunk-CESAMXWX.js → chunk-PQUTMG3S.js} +2 -2
  320. package/dist/{chunk-7VFCOKPG.js → chunk-PWBGODZU.js} +3 -3
  321. package/dist/{chunk-MOPAXD2H.js → chunk-QCADUTYX.js} +2 -2
  322. package/dist/{chunk-CT5FBO7E.js → chunk-RPOUJI25.js} +1 -1
  323. package/dist/{chunk-VE3FKXJ7.js → chunk-RUSXEE7X.js} +35 -32
  324. package/dist/chunk-RUSXEE7X.js.map +1 -0
  325. package/dist/{chunk-WKHYOS72.js → chunk-RW4GFE56.js} +3 -3
  326. package/dist/{chunk-FH4GO7HO.js → chunk-RYLVVDR7.js} +1 -1
  327. package/dist/{chunk-QZRDCFHI.js → chunk-S66SBBFQ.js} +5 -5
  328. package/dist/{chunk-CQJFIPAH.js → chunk-S7TNV2I7.js} +14 -14
  329. package/dist/{chunk-ZBQSIGGR.js → chunk-SC773IMJ.js} +13 -13
  330. package/dist/{chunk-RZV7SXED.js → chunk-SF3M27AN.js} +37 -12
  331. package/dist/chunk-SF3M27AN.js.map +1 -0
  332. package/dist/{chunk-FBJ2HK7A.js → chunk-SGPJ3YS2.js} +20 -20
  333. package/dist/{chunk-A2EWJQXX.js → chunk-SM5QX6UK.js} +4 -4
  334. package/dist/chunk-SWCLN6JE.js +40 -0
  335. package/dist/chunk-SWCLN6JE.js.map +1 -0
  336. package/dist/{chunk-OS3EQOIS.js → chunk-T4F5TW2X.js} +29 -24
  337. package/dist/chunk-T4F5TW2X.js.map +1 -0
  338. package/dist/{chunk-RKZWCTXV.js → chunk-TAEKDMEF.js} +2 -2
  339. package/dist/{chunk-6AVCAUGL.js → chunk-TASEV25T.js} +3 -3
  340. package/dist/{chunk-3XOISKZC.js → chunk-TLGDPMUX.js} +6 -6
  341. package/dist/{chunk-MOF3XSUM.js → chunk-TREHTIBD.js} +3 -2
  342. package/dist/chunk-TREHTIBD.js.map +1 -0
  343. package/dist/{chunk-HUQHJSPV.js → chunk-TTPXGD5S.js} +68 -33
  344. package/dist/chunk-TTPXGD5S.js.map +1 -0
  345. package/dist/{chunk-NFCYIZHX.js → chunk-TXIIBNCA.js} +7 -3
  346. package/dist/{chunk-NFCYIZHX.js.map → chunk-TXIIBNCA.js.map} +1 -1
  347. package/dist/{chunk-5IUW34PG.js → chunk-TY3QYPJ6.js} +7 -7
  348. package/dist/{chunk-VQFR4EU4.js → chunk-U3JK5VJV.js} +2 -2
  349. package/dist/{chunk-2AWMJO54.js → chunk-U42P3RMZ.js} +5 -5
  350. package/dist/{chunk-2RIUMV7S.js → chunk-UBIJBLUK.js} +234 -234
  351. package/dist/chunk-UBIJBLUK.js.map +1 -0
  352. package/dist/{chunk-GUU75DES.js → chunk-UEJTOPLW.js} +8 -8
  353. package/dist/{chunk-QWCTYLMD.js → chunk-URDONAEJ.js} +240 -204
  354. package/dist/chunk-URDONAEJ.js.map +1 -0
  355. package/dist/{chunk-OZOEWLGR.js → chunk-UT6JAORE.js} +4 -4
  356. package/dist/{chunk-5TELOQA6.js → chunk-UTHPUINA.js} +3 -3
  357. package/dist/{chunk-SOV7DTTU.js → chunk-V6HZ2HJZ.js} +67 -67
  358. package/dist/{chunk-SOV7DTTU.js.map → chunk-V6HZ2HJZ.js.map} +1 -1
  359. package/dist/{chunk-26RQ6JBR.js → chunk-VBVCNH6D.js} +5 -5
  360. package/dist/{chunk-P646DND6.js → chunk-VCMQPCME.js} +2 -2
  361. package/dist/{chunk-LV7FMIMM.js → chunk-VGUHAHHV.js} +2 -2
  362. package/dist/{chunk-GYVXARCY.js → chunk-VIBPFVU4.js} +41 -41
  363. package/dist/{chunk-KHPOKZ6Z.js → chunk-VMAC66JX.js} +6 -6
  364. package/dist/{chunk-SHKRS6I5.js → chunk-VRPNETPK.js} +3 -3
  365. package/dist/{chunk-6U4J6RVS.js → chunk-WCHW4XN7.js} +14 -14
  366. package/dist/{chunk-CJH6QUQJ.js → chunk-WD3UXNJV.js} +3 -3
  367. package/dist/{chunk-H5EVWF6L.js → chunk-WR67FJMX.js} +4 -4
  368. package/dist/{chunk-XLIJ36RG.js → chunk-WRMQ7EX4.js} +5 -5
  369. package/dist/{chunk-VVFWOBAM.js → chunk-WTJUKYB2.js} +15 -16
  370. package/dist/chunk-WTJUKYB2.js.map +1 -0
  371. package/dist/{chunk-7KLCFJ5G.js → chunk-X4PPGXQG.js} +2 -2
  372. package/dist/{chunk-ZE2JTVCQ.js → chunk-X5BMQXFD.js} +11 -11
  373. package/dist/{chunk-OYJY4Y4A.js → chunk-XFNLU7EW.js} +14 -7
  374. package/dist/chunk-XFNLU7EW.js.map +1 -0
  375. package/dist/{chunk-UECU6LZI.js → chunk-XXRBOSWV.js} +3 -3
  376. package/dist/{chunk-SPKAIDWX.js → chunk-XZEFCPBL.js} +2 -2
  377. package/dist/{chunk-EZ5NYRHK.js → chunk-YL6N7QLA.js} +5 -5
  378. package/dist/{chunk-Q2ZJOECN.js → chunk-YMVTIV5L.js} +19 -19
  379. package/dist/chunk-YMVTIV5L.js.map +1 -0
  380. package/dist/{chunk-VAIESMPY.js → chunk-YVBHGMKC.js} +4 -4
  381. package/dist/{chunk-AR62NQXE.js → chunk-Z2S5VQG7.js} +2 -2
  382. package/dist/{chunk-2MXUB3ZO.js → chunk-Z5OGTWMZ.js} +15 -2
  383. package/dist/chunk-Z5OGTWMZ.js.map +1 -0
  384. package/dist/{chunk-7UQJEADK.js → chunk-ZL2O4BYP.js} +2 -2
  385. package/dist/{chunk-FOOITLHR.js → chunk-ZZHBT5WQ.js} +2 -2
  386. package/dist/{chunk-X6VJQJYY.js → chunk-ZZWHKC6A.js} +3 -3
  387. package/dist/components/timeline-annotation-shared.d.ts +1 -9
  388. package/dist/composer-messages.js +2 -2
  389. package/dist/composer.js +15 -15
  390. package/dist/{computer-viewer-D4NHQB5D.js → computer-viewer-S6TE6TN7.js} +8 -8
  391. package/dist/connect.js +12 -11
  392. package/dist/desktop.js +2 -2
  393. package/dist/editor.js +2 -2
  394. package/dist/{embedded-new-voice-X4ZW6SY4.js → embedded-new-voice-ZDZPGX25.js} +8 -8
  395. package/dist/{embedded-voice-4OD6Z3HU.js → embedded-voice-FKCUXSJO.js} +8 -8
  396. package/dist/{fleet-decision-row-5UCJXTDP.js → fleet-decision-row-VCGWYJAV.js} +2 -2
  397. package/dist/hooks/page-wake.d.ts +21 -0
  398. package/dist/hooks/use-session-events.d.ts +1 -0
  399. package/dist/index.js +206 -205
  400. package/dist/interaction.js +9 -9
  401. package/dist/{latest-question-VGVNUGAU.js → latest-question-SINEV4U6.js} +3 -3
  402. package/dist/lib/format.d.ts +3 -2
  403. package/dist/machines.js +6 -6
  404. package/dist/messages/en.d.ts +12 -3
  405. package/dist/messages.js +1 -1
  406. package/dist/model-picker-model.js +2 -2
  407. package/dist/{model-policy-picker-menu-XOPYY6YA.js → model-policy-picker-menu-66JPM3G5.js} +6 -6
  408. package/dist/model-policy-picker-menu-66JPM3G5.js.map +1 -0
  409. package/dist/model-policy.js +1 -1
  410. package/dist/native-previews.js +3 -3
  411. package/dist/{platform-activity-row-56XOVTRA.js → platform-activity-row-LU5WABI2.js} +2 -2
  412. package/dist/{queue-surface-implementation-OZDOBJ6W.js → queue-surface-implementation-Y4OUVS7N.js} +8 -7
  413. package/dist/{queue-surface-implementation-OZDOBJ6W.js.map → queue-surface-implementation-Y4OUVS7N.js.map} +1 -1
  414. package/dist/realtime.js +7 -7
  415. package/dist/{sandbox-files-LJCR437H.js → sandbox-files-NBIVKVCZ.js} +11 -11
  416. package/dist/sandbox-files-NBIVKVCZ.js.map +1 -0
  417. package/dist/session-app.js +266 -260
  418. package/dist/session-list-model.js +3 -3
  419. package/dist/{session-realtime-UISLBZ4A.js → session-realtime-3PALSNMJ.js} +3 -3
  420. package/dist/session-realtime-3PALSNMJ.js.map +1 -0
  421. package/dist/session-realtime.js +2 -2
  422. package/dist/session-ui.js +62 -61
  423. package/dist/session.d.ts +1 -1
  424. package/dist/session.js +17 -17
  425. package/dist/sites.js +2 -2
  426. package/dist/terminal.js +2 -2
  427. package/dist/this-computer.js +3 -3
  428. package/dist/timeline/annotation-model.d.ts +48 -0
  429. package/dist/{timeline-annotation-markers-ACT7XRMW.js → timeline-annotation-markers-6526H2NM.js} +11 -9
  430. package/dist/{timeline-annotation-markers-ACT7XRMW.js.map → timeline-annotation-markers-6526H2NM.js.map} +1 -1
  431. package/dist/{timeline-annotation-selection-2IA7T5VR.js → timeline-annotation-selection-KV5SM6TA.js} +16 -62
  432. package/dist/timeline-annotation-selection-KV5SM6TA.js.map +1 -0
  433. package/dist/{timeline-annotations-dialog-W5B2HMYY.js → timeline-annotations-dialog-7CDHWC7Y.js} +12 -10
  434. package/dist/{timeline-annotations-dialog-W5B2HMYY.js.map → timeline-annotations-dialog-7CDHWC7Y.js.map} +1 -1
  435. package/dist/timeline-model.d.ts +3 -0
  436. package/dist/timeline-model.js +40 -14
  437. package/dist/ui/access-list.js +24 -24
  438. package/dist/ui/choice-cards.js +2 -2
  439. package/dist/ui/composer-menu-action.js +2 -2
  440. package/dist/ui/context-menu.d.ts +3 -1
  441. package/dist/ui/context-menu.js +3 -1
  442. package/dist/ui/detail-page.js +3 -3
  443. package/dist/ui/detail-sheet.js +3 -3
  444. package/dist/ui/diff-view.js +3 -3
  445. package/dist/ui/disclosure.js +5 -5
  446. package/dist/ui/dropdown-menu.js +1 -1
  447. package/dist/ui/flush-form-page.js +5 -5
  448. package/dist/ui/form-dialog.js +4 -4
  449. package/dist/ui/list-row.js +5 -5
  450. package/dist/ui/load-failure.js +3 -3
  451. package/dist/ui/page-actions.js +3 -3
  452. package/dist/ui/revision-history.js +11 -11
  453. package/dist/ui/role-select.js +8 -8
  454. package/dist/ui/segmented-control.js +1 -1
  455. package/dist/ui/settings-nav.js +3 -3
  456. package/dist/ui/toolbar.js +3 -3
  457. package/dist/usage.js +2 -2
  458. package/dist/workbench.js +11 -11
  459. package/package.json +4 -4
  460. package/src/app/app-state.tsx +2 -1
  461. package/src/app/components/command-menu/chat-switcher.tsx +135 -0
  462. package/src/app/components/command-menu/command-menu.tsx +840 -0
  463. package/src/app/components/command-menu/keycaps.tsx +56 -0
  464. package/src/app/components/command-menu/shortcut-sheet.tsx +155 -0
  465. package/src/app/components/credits/credit-refusal-notice.test.tsx +132 -0
  466. package/src/app/components/credits/credit-refusal-notice.tsx +92 -0
  467. package/src/app/components/rail/rail-context.tsx +28 -5
  468. package/src/app/components/rail/rail-sections.tsx +3 -5
  469. package/src/app/components/rail/session-header-mute.test.tsx +23 -1
  470. package/src/app/components/rail/session-header.test.tsx +21 -2
  471. package/src/app/components/rail/session-header.tsx +31 -1
  472. package/src/app/components/rail/session-list.tsx +89 -16
  473. package/src/app/components/rail/session-shell.tsx +0 -14
  474. package/src/app/components/session/session-search-dialog.tsx +12 -1
  475. package/src/app/embed/session-app.tsx +6 -3
  476. package/src/app/lib/actions/actions-provider.tsx +486 -0
  477. package/src/app/lib/actions/actions.test.ts +249 -0
  478. package/src/app/lib/actions/chat-directory.ts +231 -0
  479. package/src/app/lib/actions/chat-operations.ts +145 -0
  480. package/src/app/lib/actions/chat-switcher.ts +62 -0
  481. package/src/app/lib/actions/chords.ts +185 -0
  482. package/src/app/lib/actions/events.ts +10 -0
  483. package/src/app/lib/actions/rank.ts +119 -0
  484. package/src/app/lib/actions/registry.ts +333 -0
  485. package/src/app/lib/credit-coverage.test.ts +83 -0
  486. package/src/app/lib/credit-coverage.tsx +48 -0
  487. package/src/app/lib/free-credit-gap.test.ts +32 -1
  488. package/src/app/lib/free-credit-gap.tsx +32 -2
  489. package/src/app/lib/integration-connect-analytics.test.ts +1 -0
  490. package/src/app/lib/integration-connect-analytics.tsx +4 -0
  491. package/src/app/lib/models-route.test.ts +18 -0
  492. package/src/app/lib/models-route.tsx +26 -4
  493. package/src/app/lib/session-search-route.tsx +6 -1
  494. package/src/app/lib/session-ui-features.tsx +28 -9
  495. package/src/app/routes/session.tsx +74 -16
  496. package/src/app/routes/sessions-index.tsx +83 -4
  497. package/src/components/timeline-annotation-selection.tsx +9 -64
  498. package/src/components/timeline-annotation-shared.ts +9 -57
  499. package/src/hooks/page-wake.ts +80 -0
  500. package/src/hooks/use-session-events.ts +309 -81
  501. package/src/lib/format.ts +3 -2
  502. package/src/messages/en.ts +13 -3
  503. package/src/model-picker-model.ts +3 -0
  504. package/src/model-policy.ts +9 -1
  505. package/src/session.ts +1 -0
  506. package/src/timeline/annotation-model.ts +217 -0
  507. package/src/timeline/projection.ts +27 -21
  508. package/src/timeline-model.ts +14 -0
  509. package/src/ui/context-menu.tsx +16 -0
  510. package/src/ui/dropdown-menu.tsx +4 -1
  511. package/src/ui/segmented-control.tsx +3 -0
  512. package/styles/compiled.css +92 -0
  513. package/dist/app/lib/keyboard-shortcuts.d.ts +0 -51
  514. package/dist/app/lib/keyboard-shortcuts.js +0 -16
  515. package/dist/chunk-2MXUB3ZO.js.map +0 -1
  516. package/dist/chunk-2RIUMV7S.js.map +0 -1
  517. package/dist/chunk-53IXIUYP.js +0 -39
  518. package/dist/chunk-53IXIUYP.js.map +0 -1
  519. package/dist/chunk-DN3TKURW.js.map +0 -1
  520. package/dist/chunk-F2GXK2Z6.js.map +0 -1
  521. package/dist/chunk-G7VLL3PG.js.map +0 -1
  522. package/dist/chunk-GRLPRM56.js.map +0 -1
  523. package/dist/chunk-HUQHJSPV.js.map +0 -1
  524. package/dist/chunk-IO6K6UYJ.js.map +0 -1
  525. package/dist/chunk-KWB5U3ZT.js.map +0 -1
  526. package/dist/chunk-L5UCO2UV.js.map +0 -1
  527. package/dist/chunk-MOF3XSUM.js.map +0 -1
  528. package/dist/chunk-N2BEUKXT.js.map +0 -1
  529. package/dist/chunk-OS3EQOIS.js.map +0 -1
  530. package/dist/chunk-OYJY4Y4A.js.map +0 -1
  531. package/dist/chunk-Q2ZJOECN.js.map +0 -1
  532. package/dist/chunk-QWCTYLMD.js.map +0 -1
  533. package/dist/chunk-RZV7SXED.js.map +0 -1
  534. package/dist/chunk-S3M5WCZW.js.map +0 -1
  535. package/dist/chunk-SOOWLNC5.js.map +0 -1
  536. package/dist/chunk-SWWYYGQO.js.map +0 -1
  537. package/dist/chunk-UO36FC3S.js.map +0 -1
  538. package/dist/chunk-UYSZKDQY.js.map +0 -1
  539. package/dist/chunk-VE3FKXJ7.js.map +0 -1
  540. package/dist/chunk-VVFWOBAM.js.map +0 -1
  541. package/dist/chunk-ZSERYHHT.js.map +0 -1
  542. package/dist/timeline-annotation-selection-2IA7T5VR.js.map +0 -1
  543. package/src/app/lib/keyboard-shortcuts.test.ts +0 -47
  544. package/src/app/lib/keyboard-shortcuts.tsx +0 -58
  545. /package/dist/app/{lib/keyboard-shortcuts.js.map → components/command-menu/keycaps.js.map} +0 -0
  546. /package/dist/{browser-viewer-ZRFZX3VN.js.map → app/components/credits/credit-refusal-notice.js.map} +0 -0
  547. /package/dist/{chat-interactive-block-HUMYWVCK.js.map → app/lib/actions/actions-provider.js.map} +0 -0
  548. /package/dist/{computer-viewer-D4NHQB5D.js.map → app/lib/credit-coverage.js.map} +0 -0
  549. /package/dist/{embedded-new-voice-X4ZW6SY4.js.map → browser-viewer-HPUMK7UP.js.map} +0 -0
  550. /package/dist/{embedded-voice-4OD6Z3HU.js.map → chat-interactive-block-22PPECCT.js.map} +0 -0
  551. /package/dist/{chunk-GVIQ7H62.js.map → chunk-2LUBBDZV.js.map} +0 -0
  552. /package/dist/{chunk-XMMVIY7B.js.map → chunk-3CCJWHQY.js.map} +0 -0
  553. /package/dist/{chunk-XS2FZ6DX.js.map → chunk-3F5ZPIWI.js.map} +0 -0
  554. /package/dist/{chunk-72US6QNB.js.map → chunk-3J2YZRY5.js.map} +0 -0
  555. /package/dist/{chunk-D4YQF4E3.js.map → chunk-3SMJ2BIQ.js.map} +0 -0
  556. /package/dist/{chunk-TBJINQXA.js.map → chunk-3WCYK36X.js.map} +0 -0
  557. /package/dist/{chunk-WPCF34V6.js.map → chunk-3WG3CRL7.js.map} +0 -0
  558. /package/dist/{chunk-JI5BYQKO.js.map → chunk-3X46PNBX.js.map} +0 -0
  559. /package/dist/{chunk-PBK44WJC.js.map → chunk-4GJ37O6G.js.map} +0 -0
  560. /package/dist/{chunk-LEXPBQ56.js.map → chunk-4SKJX3C4.js.map} +0 -0
  561. /package/dist/{chunk-ZA6YD2LW.js.map → chunk-57SYK776.js.map} +0 -0
  562. /package/dist/{chunk-22LBKJDE.js.map → chunk-5DIAN5GQ.js.map} +0 -0
  563. /package/dist/{chunk-LJ3TDK2L.js.map → chunk-5FA455GR.js.map} +0 -0
  564. /package/dist/{chunk-YPR5INHV.js.map → chunk-5X3E2Z3D.js.map} +0 -0
  565. /package/dist/{chunk-OXNWZTEU.js.map → chunk-5ZJCL6X4.js.map} +0 -0
  566. /package/dist/{chunk-62OAZ4LO.js.map → chunk-6C5GQQMC.js.map} +0 -0
  567. /package/dist/{chunk-VGITH57T.js.map → chunk-6ERTXDZM.js.map} +0 -0
  568. /package/dist/{chunk-ZQ7XQZCF.js.map → chunk-6FX73Y4I.js.map} +0 -0
  569. /package/dist/{chunk-QZO2KK2F.js.map → chunk-6P44NG6Y.js.map} +0 -0
  570. /package/dist/{chunk-N2DDJLTM.js.map → chunk-6T7Y33JA.js.map} +0 -0
  571. /package/dist/{chunk-RBAGC2MJ.js.map → chunk-75VE5QUS.js.map} +0 -0
  572. /package/dist/{chunk-MRXOGI3O.js.map → chunk-77CUDSHG.js.map} +0 -0
  573. /package/dist/{chunk-GZ65XQR5.js.map → chunk-7T7FHSGS.js.map} +0 -0
  574. /package/dist/{chunk-YGAH34CD.js.map → chunk-A3S26JSP.js.map} +0 -0
  575. /package/dist/{chunk-GYPAO6RS.js.map → chunk-A664GSDM.js.map} +0 -0
  576. /package/dist/{chunk-JSZSNMDR.js.map → chunk-ASUYLXKO.js.map} +0 -0
  577. /package/dist/{chunk-RTK7SUPL.js.map → chunk-AUUJLVA3.js.map} +0 -0
  578. /package/dist/{chunk-OOTBYSCA.js.map → chunk-BBWKPNJB.js.map} +0 -0
  579. /package/dist/{chunk-BGZIMIUU.js.map → chunk-BCUYWOQU.js.map} +0 -0
  580. /package/dist/{chunk-EKN4N4LS.js.map → chunk-BDFMNJZJ.js.map} +0 -0
  581. /package/dist/{chunk-YZKGOWCC.js.map → chunk-BIDXQAGO.js.map} +0 -0
  582. /package/dist/{chunk-Q2UUANHF.js.map → chunk-BIKAJ4DY.js.map} +0 -0
  583. /package/dist/{chunk-5IQBF2X3.js.map → chunk-BJPJ2OUX.js.map} +0 -0
  584. /package/dist/{chunk-EY2EMHZW.js.map → chunk-BPM2OTYK.js.map} +0 -0
  585. /package/dist/{chunk-MT4TBRQB.js.map → chunk-BSWS2RUZ.js.map} +0 -0
  586. /package/dist/{chunk-T7YD3VGK.js.map → chunk-C52MNKXU.js.map} +0 -0
  587. /package/dist/{chunk-THNW33K7.js.map → chunk-CEUDV4OA.js.map} +0 -0
  588. /package/dist/{chunk-LHGIS6SZ.js.map → chunk-CVK74BH7.js.map} +0 -0
  589. /package/dist/{chunk-DFO2UCYG.js.map → chunk-CW5I65ZX.js.map} +0 -0
  590. /package/dist/{chunk-SKRLKQEG.js.map → chunk-DOSC2HRQ.js.map} +0 -0
  591. /package/dist/{chunk-KVB6XDLP.js.map → chunk-DPJ2CWVN.js.map} +0 -0
  592. /package/dist/{chunk-4J6V4DH7.js.map → chunk-DXMRO2MU.js.map} +0 -0
  593. /package/dist/{chunk-42I4O4WQ.js.map → chunk-EE55IDDR.js.map} +0 -0
  594. /package/dist/{chunk-2RA6XABP.js.map → chunk-EEERTLFF.js.map} +0 -0
  595. /package/dist/{chunk-PTOTKUKO.js.map → chunk-EEO744XR.js.map} +0 -0
  596. /package/dist/{chunk-LD3HVI2J.js.map → chunk-EMFGBAQL.js.map} +0 -0
  597. /package/dist/{chunk-FQGUK4ST.js.map → chunk-ENPJKVMN.js.map} +0 -0
  598. /package/dist/{chunk-HDHK3SXK.js.map → chunk-EU6RLHMP.js.map} +0 -0
  599. /package/dist/{chunk-MRUWRQBX.js.map → chunk-FET6XHGS.js.map} +0 -0
  600. /package/dist/{chunk-M6KUY3YH.js.map → chunk-FIICQA55.js.map} +0 -0
  601. /package/dist/{chunk-NLWLCYCT.js.map → chunk-FTZXCPE3.js.map} +0 -0
  602. /package/dist/{chunk-FN2KA3MJ.js.map → chunk-FUS76DO4.js.map} +0 -0
  603. /package/dist/{chunk-AM4IIPWI.js.map → chunk-G7N5NPRJ.js.map} +0 -0
  604. /package/dist/{chunk-CCQ7YKOD.js.map → chunk-GBYZ6653.js.map} +0 -0
  605. /package/dist/{chunk-YKKVIJVX.js.map → chunk-GQDSC6QZ.js.map} +0 -0
  606. /package/dist/{chunk-5X6JP75Q.js.map → chunk-GRSODLVO.js.map} +0 -0
  607. /package/dist/{chunk-73YP3R5X.js.map → chunk-GSESCQFY.js.map} +0 -0
  608. /package/dist/{chunk-MZLEBFUZ.js.map → chunk-GZD6VBIK.js.map} +0 -0
  609. /package/dist/{chunk-IZR2QRFF.js.map → chunk-H3HH5AHS.js.map} +0 -0
  610. /package/dist/{chunk-OJPUVUB6.js.map → chunk-HAOZCLLA.js.map} +0 -0
  611. /package/dist/{chunk-ZBHDGAYL.js.map → chunk-HEFE4OZJ.js.map} +0 -0
  612. /package/dist/{chunk-WTG34JVA.js.map → chunk-HI75UTI6.js.map} +0 -0
  613. /package/dist/{chunk-OMBIG3NC.js.map → chunk-HM633ROV.js.map} +0 -0
  614. /package/dist/{chunk-WDFZWSKD.js.map → chunk-HRIP4M6H.js.map} +0 -0
  615. /package/dist/{chunk-A2BCW6CQ.js.map → chunk-HU2DRFFI.js.map} +0 -0
  616. /package/dist/{chunk-PO35PBAB.js.map → chunk-HVH7FFJH.js.map} +0 -0
  617. /package/dist/{chunk-EG7KNUF7.js.map → chunk-HYTXTKST.js.map} +0 -0
  618. /package/dist/{chunk-TFHG75A4.js.map → chunk-I4XMDFUJ.js.map} +0 -0
  619. /package/dist/{chunk-IZHVZZQA.js.map → chunk-ICAUYWSL.js.map} +0 -0
  620. /package/dist/{chunk-DCLPWYP3.js.map → chunk-IEVPJ3G6.js.map} +0 -0
  621. /package/dist/{chunk-EVWZHDSF.js.map → chunk-IKH3VTA4.js.map} +0 -0
  622. /package/dist/{chunk-TYHLEFD2.js.map → chunk-IZJNMRIR.js.map} +0 -0
  623. /package/dist/{chunk-D2SR3TEB.js.map → chunk-J243WGUA.js.map} +0 -0
  624. /package/dist/{chunk-QGSGIYE3.js.map → chunk-J2C6LB6W.js.map} +0 -0
  625. /package/dist/{chunk-MT6TRTXF.js.map → chunk-J5MEDX7C.js.map} +0 -0
  626. /package/dist/{chunk-6QHUKBJP.js.map → chunk-J7SKOO44.js.map} +0 -0
  627. /package/dist/{chunk-W2QK7PYS.js.map → chunk-JAAST75A.js.map} +0 -0
  628. /package/dist/{chunk-NQCMS4AJ.js.map → chunk-JQCGPTZ6.js.map} +0 -0
  629. /package/dist/{chunk-CMUXJHGH.js.map → chunk-JRSCWQMC.js.map} +0 -0
  630. /package/dist/{chunk-Q4OHNGGB.js.map → chunk-JRXHSVD5.js.map} +0 -0
  631. /package/dist/{chunk-SD2K5ZN5.js.map → chunk-JXYLDT6X.js.map} +0 -0
  632. /package/dist/{chunk-IXX6ZOL2.js.map → chunk-KGTMHEAP.js.map} +0 -0
  633. /package/dist/{chunk-22OBGVEJ.js.map → chunk-KOXVGPW4.js.map} +0 -0
  634. /package/dist/{chunk-NOZ5CGZE.js.map → chunk-L5GPPMUB.js.map} +0 -0
  635. /package/dist/{chunk-4FOOHMTU.js.map → chunk-LY6727IF.js.map} +0 -0
  636. /package/dist/{chunk-PT7MTXRE.js.map → chunk-MAOCN7J6.js.map} +0 -0
  637. /package/dist/{chunk-4K2JSJNX.js.map → chunk-MB5LZVDO.js.map} +0 -0
  638. /package/dist/{chunk-5LES64PP.js.map → chunk-MKOQAVOE.js.map} +0 -0
  639. /package/dist/{chunk-BMV2SNYX.js.map → chunk-MUPWNSEJ.js.map} +0 -0
  640. /package/dist/{chunk-Y5TRG22C.js.map → chunk-NRXIECWC.js.map} +0 -0
  641. /package/dist/{chunk-GOE7G5JX.js.map → chunk-NWSAF6P5.js.map} +0 -0
  642. /package/dist/{chunk-DUM363VS.js.map → chunk-OFZQJNF6.js.map} +0 -0
  643. /package/dist/{chunk-CKN5QPEL.js.map → chunk-OMF7POEY.js.map} +0 -0
  644. /package/dist/{chunk-MVXKO2BD.js.map → chunk-OXD6ET34.js.map} +0 -0
  645. /package/dist/{chunk-47JUEVME.js.map → chunk-PALX6HWV.js.map} +0 -0
  646. /package/dist/{chunk-B6OGSG7I.js.map → chunk-PE3BLBDT.js.map} +0 -0
  647. /package/dist/{chunk-RVISSNVE.js.map → chunk-PMZKJOG6.js.map} +0 -0
  648. /package/dist/{chunk-CESAMXWX.js.map → chunk-PQUTMG3S.js.map} +0 -0
  649. /package/dist/{chunk-7VFCOKPG.js.map → chunk-PWBGODZU.js.map} +0 -0
  650. /package/dist/{chunk-MOPAXD2H.js.map → chunk-QCADUTYX.js.map} +0 -0
  651. /package/dist/{chunk-CT5FBO7E.js.map → chunk-RPOUJI25.js.map} +0 -0
  652. /package/dist/{chunk-WKHYOS72.js.map → chunk-RW4GFE56.js.map} +0 -0
  653. /package/dist/{chunk-FH4GO7HO.js.map → chunk-RYLVVDR7.js.map} +0 -0
  654. /package/dist/{chunk-QZRDCFHI.js.map → chunk-S66SBBFQ.js.map} +0 -0
  655. /package/dist/{chunk-CQJFIPAH.js.map → chunk-S7TNV2I7.js.map} +0 -0
  656. /package/dist/{chunk-ZBQSIGGR.js.map → chunk-SC773IMJ.js.map} +0 -0
  657. /package/dist/{chunk-FBJ2HK7A.js.map → chunk-SGPJ3YS2.js.map} +0 -0
  658. /package/dist/{chunk-A2EWJQXX.js.map → chunk-SM5QX6UK.js.map} +0 -0
  659. /package/dist/{chunk-RKZWCTXV.js.map → chunk-TAEKDMEF.js.map} +0 -0
  660. /package/dist/{chunk-6AVCAUGL.js.map → chunk-TASEV25T.js.map} +0 -0
  661. /package/dist/{chunk-3XOISKZC.js.map → chunk-TLGDPMUX.js.map} +0 -0
  662. /package/dist/{chunk-5IUW34PG.js.map → chunk-TY3QYPJ6.js.map} +0 -0
  663. /package/dist/{chunk-VQFR4EU4.js.map → chunk-U3JK5VJV.js.map} +0 -0
  664. /package/dist/{chunk-2AWMJO54.js.map → chunk-U42P3RMZ.js.map} +0 -0
  665. /package/dist/{chunk-GUU75DES.js.map → chunk-UEJTOPLW.js.map} +0 -0
  666. /package/dist/{chunk-OZOEWLGR.js.map → chunk-UT6JAORE.js.map} +0 -0
  667. /package/dist/{chunk-5TELOQA6.js.map → chunk-UTHPUINA.js.map} +0 -0
  668. /package/dist/{chunk-26RQ6JBR.js.map → chunk-VBVCNH6D.js.map} +0 -0
  669. /package/dist/{chunk-P646DND6.js.map → chunk-VCMQPCME.js.map} +0 -0
  670. /package/dist/{chunk-LV7FMIMM.js.map → chunk-VGUHAHHV.js.map} +0 -0
  671. /package/dist/{chunk-GYVXARCY.js.map → chunk-VIBPFVU4.js.map} +0 -0
  672. /package/dist/{chunk-KHPOKZ6Z.js.map → chunk-VMAC66JX.js.map} +0 -0
  673. /package/dist/{chunk-SHKRS6I5.js.map → chunk-VRPNETPK.js.map} +0 -0
  674. /package/dist/{chunk-6U4J6RVS.js.map → chunk-WCHW4XN7.js.map} +0 -0
  675. /package/dist/{chunk-CJH6QUQJ.js.map → chunk-WD3UXNJV.js.map} +0 -0
  676. /package/dist/{chunk-H5EVWF6L.js.map → chunk-WR67FJMX.js.map} +0 -0
  677. /package/dist/{chunk-XLIJ36RG.js.map → chunk-WRMQ7EX4.js.map} +0 -0
  678. /package/dist/{chunk-7KLCFJ5G.js.map → chunk-X4PPGXQG.js.map} +0 -0
  679. /package/dist/{chunk-ZE2JTVCQ.js.map → chunk-X5BMQXFD.js.map} +0 -0
  680. /package/dist/{chunk-UECU6LZI.js.map → chunk-XXRBOSWV.js.map} +0 -0
  681. /package/dist/{chunk-SPKAIDWX.js.map → chunk-XZEFCPBL.js.map} +0 -0
  682. /package/dist/{chunk-EZ5NYRHK.js.map → chunk-YL6N7QLA.js.map} +0 -0
  683. /package/dist/{chunk-VAIESMPY.js.map → chunk-YVBHGMKC.js.map} +0 -0
  684. /package/dist/{chunk-AR62NQXE.js.map → chunk-Z2S5VQG7.js.map} +0 -0
  685. /package/dist/{chunk-7UQJEADK.js.map → chunk-ZL2O4BYP.js.map} +0 -0
  686. /package/dist/{chunk-FOOITLHR.js.map → chunk-ZZHBT5WQ.js.map} +0 -0
  687. /package/dist/{chunk-X6VJQJYY.js.map → chunk-ZZWHKC6A.js.map} +0 -0
  688. /package/dist/{model-policy-picker-menu-XOPYY6YA.js.map → computer-viewer-S6TE6TN7.js.map} +0 -0
  689. /package/dist/{sandbox-files-LJCR437H.js.map → embedded-new-voice-ZDZPGX25.js.map} +0 -0
  690. /package/dist/{session-realtime-UISLBZ4A.js.map → embedded-voice-FKCUXSJO.js.map} +0 -0
  691. /package/dist/{fleet-decision-row-5UCJXTDP.js.map → fleet-decision-row-VCGWYJAV.js.map} +0 -0
  692. /package/dist/{latest-question-VGVNUGAU.js.map → latest-question-SINEV4U6.js.map} +0 -0
  693. /package/dist/{platform-activity-row-56XOVTRA.js.map → platform-activity-row-LU5WABI2.js.map} +0 -0
@@ -2,43 +2,43 @@
2
2
  import {
3
3
  OPEN_WORKSTREAM_CONTROL_EVENT
4
4
  } from "./chunk-3IWPC6O3.js";
5
- import {
6
- shouldSteerOnKey,
7
- shouldSubmitOnKey
8
- } from "./chunk-5IQBF2X3.js";
9
- import {
10
- defaultChatComposerMessages
11
- } from "./chunk-MOPAXD2H.js";
12
- import {
13
- COMPOSER_VOICE_INPUT_START_EVENT,
14
- composerVoiceEventScope
15
- } from "./chunk-NX4ADH73.js";
16
5
  import {
17
6
  Tooltip,
18
7
  TooltipContent,
19
8
  TooltipProvider,
20
9
  TooltipTrigger,
21
10
  useLightboxOptional
22
- } from "./chunk-Y5TRG22C.js";
11
+ } from "./chunk-NRXIECWC.js";
23
12
  import {
24
- groupPickerRowsByBillingClass
25
- } from "./chunk-GRLPRM56.js";
13
+ COMPOSER_VOICE_INPUT_START_EVENT,
14
+ composerVoiceEventScope
15
+ } from "./chunk-NX4ADH73.js";
26
16
  import {
27
17
  ComposerResponsiveContext
28
18
  } from "./chunk-XEA5BCMA.js";
19
+ import {
20
+ shouldSteerOnKey,
21
+ shouldSubmitOnKey
22
+ } from "./chunk-BJPJ2OUX.js";
23
+ import {
24
+ groupPickerRowsByBillingClass
25
+ } from "./chunk-CFEFYPNR.js";
26
+ import {
27
+ defaultChatComposerMessages
28
+ } from "./chunk-QCADUTYX.js";
29
29
  import {
30
30
  useErrorMessage
31
31
  } from "./chunk-CM7LVUKC.js";
32
32
  import {
33
33
  composerSubmissionErrorMessage
34
- } from "./chunk-UYSZKDQY.js";
34
+ } from "./chunk-MK54JLE4.js";
35
35
  import {
36
36
  cn
37
37
  } from "./chunk-TXS65BB2.js";
38
38
  import {
39
39
  singleSendText,
40
40
  useOpenGeniText
41
- } from "./chunk-G7VLL3PG.js";
41
+ } from "./chunk-F2YABPRJ.js";
42
42
 
43
43
  // src/commands/registry.ts
44
44
  import { formatErrorMessage } from "@opengeni/sdk";
@@ -5016,4 +5016,4 @@ export {
5016
5016
  useVoiceInput,
5017
5017
  ComposerTranscriptionControl
5018
5018
  };
5019
- //# sourceMappingURL=chunk-TBJINQXA.js.map
5019
+ //# sourceMappingURL=chunk-3WCYK36X.js.map
@@ -10,46 +10,46 @@ import {
10
10
  import {
11
11
  cn
12
12
  } from "./chunk-A3MTTRCX.js";
13
- import {
14
- SegmentedControl
15
- } from "./chunk-SWWYYGQO.js";
16
13
  import {
17
14
  HelpLink,
18
15
  HelpTip,
19
16
  InlineHelp
20
17
  } from "./chunk-GQPRDEHX.js";
18
+ import {
19
+ SegmentedControl
20
+ } from "./chunk-325C2TCI.js";
21
21
  import {
22
22
  SettingRow
23
23
  } from "./chunk-XSOPQZGH.js";
24
+ import {
25
+ Field,
26
+ TextInput
27
+ } from "./chunk-XNTW77T6.js";
24
28
  import {
25
29
  StatusDot
26
30
  } from "./chunk-X6WZOHBI.js";
27
- import {
28
- hasWorkspacePermission
29
- } from "./chunk-OWQBERKV.js";
30
31
  import {
31
32
  toast
32
33
  } from "./chunk-YG6NARQY.js";
34
+ import {
35
+ hasWorkspacePermission
36
+ } from "./chunk-OWQBERKV.js";
33
37
  import {
34
38
  useAppContext
35
39
  } from "./chunk-W6KAUGXO.js";
36
40
  import {
37
- Field,
38
- TextInput
39
- } from "./chunk-XNTW77T6.js";
41
+ Button
42
+ } from "./chunk-HMU5IELG.js";
40
43
  import {
41
44
  Skeleton
42
45
  } from "./chunk-HY7EYWIG.js";
43
- import {
44
- Button
45
- } from "./chunk-HMU5IELG.js";
46
46
  import {
47
47
  DEFAULT_SESSION_USAGE_LIMIT_LABELS,
48
48
  summarizeSessionUsageLimit
49
49
  } from "./chunk-4U7SHFQ2.js";
50
50
  import {
51
51
  useOpenGeniText
52
- } from "./chunk-G7VLL3PG.js";
52
+ } from "./chunk-F2YABPRJ.js";
53
53
 
54
54
  // src/app/components/session/session-usage-limit-section.tsx
55
55
  import {
@@ -409,4 +409,4 @@ export {
409
409
  sessionHref,
410
410
  SessionUsageLimitSection
411
411
  };
412
- //# sourceMappingURL=chunk-WPCF34V6.js.map
412
+ //# sourceMappingURL=chunk-3WG3CRL7.js.map
@@ -3,16 +3,16 @@ import {
3
3
  RadioGroup,
4
4
  RadioRow,
5
5
  useFocusCheckedRow
6
- } from "./chunk-AR62NQXE.js";
7
- import {
8
- useWorkspaceRigs
9
- } from "./chunk-HZXH4XYA.js";
6
+ } from "./chunk-Z2S5VQG7.js";
10
7
  import {
11
8
  isMachineComputeSelectable
12
9
  } from "./chunk-3O3ZUGMX.js";
10
+ import {
11
+ useWorkspaceRigs
12
+ } from "./chunk-HZXH4XYA.js";
13
13
  import {
14
14
  useWorkspaceMachines
15
- } from "./chunk-VQFR4EU4.js";
15
+ } from "./chunk-U3JK5VJV.js";
16
16
  import {
17
17
  cn
18
18
  } from "./chunk-A3MTTRCX.js";
@@ -21,22 +21,22 @@ import {
21
21
  } from "./chunk-O2LGEYG4.js";
22
22
  import {
23
23
  t
24
- } from "./chunk-PT7MTXRE.js";
25
- import {
26
- userErrorText
27
- } from "./chunk-L4OF77LE.js";
28
- import {
29
- Button
30
- } from "./chunk-HMU5IELG.js";
24
+ } from "./chunk-MAOCN7J6.js";
31
25
  import {
32
26
  MENU_LABEL_CLASS,
33
27
  MENU_NOTE_CLASS,
34
28
  MENU_SEPARATOR_CLASS,
35
29
  MENU_SURFACE_CLASS
36
30
  } from "./chunk-5OTQA7CM.js";
31
+ import {
32
+ Button
33
+ } from "./chunk-HMU5IELG.js";
34
+ import {
35
+ userErrorText
36
+ } from "./chunk-L4OF77LE.js";
37
37
  import {
38
38
  MACHINES_SESSION_POLL_MS
39
- } from "./chunk-4J6V4DH7.js";
39
+ } from "./chunk-DXMRO2MU.js";
40
40
  import {
41
41
  machineDisplayName,
42
42
  sessionSandboxLabel
@@ -252,4 +252,4 @@ export {
252
252
  SessionRunsOnMenuBody,
253
253
  SessionComputeIndicator
254
254
  };
255
- //# sourceMappingURL=chunk-JI5BYQKO.js.map
255
+ //# sourceMappingURL=chunk-3X46PNBX.js.map
@@ -34,7 +34,9 @@ var MODEL_CONNECTION_CLASSES = [
34
34
  "anthropic",
35
35
  "claude_subscription",
36
36
  "opper",
37
- "elevenlabs"
37
+ "elevenlabs",
38
+ "openai",
39
+ "azure_openai"
38
40
  ];
39
41
  var INTEGRATION_CONNECT_METHODS = [
40
42
  "oauth",
@@ -101,6 +103,8 @@ function modelConnectionClass(provider) {
101
103
  case "supergrok":
102
104
  case "openrouter":
103
105
  case "opper":
106
+ case "openai":
107
+ case "azure_openai":
104
108
  case "anthropic":
105
109
  case "claude_subscription":
106
110
  case "elevenlabs":
@@ -296,4 +300,4 @@ export {
296
300
  useIntegrationConnectJourney,
297
301
  beginModelConnectJourney
298
302
  };
299
- //# sourceMappingURL=chunk-UO36FC3S.js.map
303
+ //# sourceMappingURL=chunk-46I7MMAL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/app/lib/integration-connect-analytics.tsx"],"sourcesContent":["// Consent-gated integration connect journey (PostHog through\n// `captureAnalyticsEvent`). Every connect flow for an integration,\n// capability, or model provider reports\n//\n// integration_connect_started{integration_class, method}\n// integration_connect_finished{integration_class, method, outcome}\n//\n// `integration_class` reuses the closed provider classes of the server\n// lifecycle facts (`connection.created` and `model.connected` in\n// @opengeni/contracts product-lifecycle-facts), so browser funnels join the\n// server facts. Only closed values leave the browser: never a provider\n// domain, account, URL, error text, or identifier.\n//\n// Outcomes: `connected`, `denied` (the person or provider refused\n// authorization), `provider_error`, `cancelled` (the person cancelled or\n// closed the authorization window), `abandoned` (best effort: the setup\n// dialog was closed, the page was left, or the person came back from a\n// provider redirect without an outcome), and `outcome_unknown`.\nimport type { PRODUCT_LIFECYCLE_FACT_ATTRIBUTES } from \"@opengeni/contracts\";\nimport { useCallback, useEffect, useRef } from \"react\";\n\nimport { captureAnalyticsEvent } from \"./analytics-observer\";\nimport {\n takeIntegrationConnectReturn,\n type IntegrationConnectReturn,\n} from \"./integration-connect-return\";\n\ntype ConnectionClass = (typeof PRODUCT_LIFECYCLE_FACT_ATTRIBUTES)[\"connection.created\"][number];\ntype ModelClass = (typeof PRODUCT_LIFECYCLE_FACT_ATTRIBUTES)[\"model.connected\"][number];\n\n/** The `connection.created` provider classes (a test keeps them identical). */\nexport const INTEGRATION_CONNECTION_CLASSES = [\n \"slack\",\n \"github\",\n \"gitlab\",\n \"azure_devops\",\n \"bitbucket\",\n \"google\",\n \"microsoft\",\n \"linear\",\n \"atlassian\",\n \"notion\",\n \"supabase\",\n \"datadog\",\n \"posthog\",\n \"openai\",\n \"x\",\n \"other\",\n] as const satisfies readonly ConnectionClass[];\n\n/** The `model.connected` provider classes (a test keeps them identical). */\nexport const MODEL_CONNECTION_CLASSES = [\n \"codex\",\n \"supergrok\",\n \"vercel_gateway\",\n \"openrouter\",\n \"anthropic\",\n \"claude_subscription\",\n \"opper\",\n \"elevenlabs\",\n \"openai\",\n \"azure_openai\",\n] as const satisfies readonly ModelClass[];\n\nexport type IntegrationClass = ConnectionClass | ModelClass;\n\nexport const INTEGRATION_CONNECT_METHODS = [\n \"oauth\",\n \"api_key\",\n \"device_code\",\n \"app_install\",\n \"custom\",\n] as const;\nexport type IntegrationConnectMethod = (typeof INTEGRATION_CONNECT_METHODS)[number];\n\nexport const INTEGRATION_CONNECT_OUTCOMES = [\n \"connected\",\n \"denied\",\n \"provider_error\",\n \"cancelled\",\n \"abandoned\",\n \"outcome_unknown\",\n] as const;\nexport type IntegrationConnectOutcome = (typeof INTEGRATION_CONNECT_OUTCOMES)[number];\n\nconst DOMAIN_CLASSES: ReadonlyArray<readonly [ConnectionClass, readonly string[]]> = [\n [\"slack\", [\"slack.com\"]],\n [\"github\", [\"github.com\"]],\n [\"gitlab\", [\"gitlab.com\"]],\n [\"azure_devops\", [\"dev.azure.com\", \"visualstudio.com\"]],\n [\"bitbucket\", [\"bitbucket.org\"]],\n [\"google\", [\"google.com\", \"googleapis.com\"]],\n [\"microsoft\", [\"microsoft.com\", \"office.com\", \"microsoftonline.com\"]],\n [\"linear\", [\"linear.app\"]],\n [\"atlassian\", [\"atlassian.com\", \"atlassian.net\"]],\n [\"notion\", [\"notion.so\", \"notion.com\"]],\n [\"supabase\", [\"supabase.com\", \"supabase.co\"]],\n [\"datadog\", [\"datadoghq.com\", \"datadog.com\", \"datadoghq.eu\"]],\n [\"posthog\", [\"posthog.com\"]],\n [\"openai\", [\"openai.com\", \"chatgpt.com\"]],\n [\"x\", [\"x.com\", \"twitter.com\"]],\n];\n\n/**\n * The provider class of a connection domain or MCP host, mirroring\n * `opengeni_private.product_lifecycle_connection_class` (migration 0532).\n */\nexport function integrationClassFromDomain(domain: string | null | undefined): ConnectionClass {\n let host = (domain ?? \"\").trim().toLowerCase();\n try {\n if (host.includes(\"/\")) host = new URL(host).hostname;\n } catch {\n return \"other\";\n }\n for (const [integrationClass, roots] of DOMAIN_CLASSES) {\n if (\n roots.some((root) =>\n integrationClass === \"azure_devops\" && root === \"dev.azure.com\"\n ? host === root\n : host === root || host.endsWith(`.${root}`),\n )\n ) {\n return integrationClass;\n }\n }\n return \"other\";\n}\n\nconst CONNECT_PROVIDER_CLASSES: ReadonlyArray<readonly [RegExp, ConnectionClass]> = [\n [/^slack(-|$)/, \"slack\"],\n [/^github(-|$)/, \"github\"],\n [/^(google-drive|gmail)(-|$)/, \"google\"],\n [/^(microsoft|outlook|onedrive)(-|$)/, \"microsoft\"],\n [/^atlassian(-|$)/, \"atlassian\"],\n [/^x$/, \"x\"],\n];\n\n/** The provider class of a Connect API `providerId` (for example `slack-bot`). */\nexport function integrationClassFromConnectProvider(providerId: string): ConnectionClass {\n return CONNECT_PROVIDER_CLASSES.find(([pattern]) => pattern.test(providerId))?.[1] ?? \"other\";\n}\n\n/** The `model.connected` class of a model provider name used in the console. */\nexport function modelConnectionClass(provider: string): ModelClass | null {\n switch (provider) {\n case \"codex\":\n case \"supergrok\":\n case \"openrouter\":\n case \"opper\":\n case \"openai\":\n case \"azure_openai\":\n case \"anthropic\":\n case \"claude_subscription\":\n case \"elevenlabs\":\n return provider;\n case \"ai-gateway\":\n case \"vercel_gateway\":\n case \"vercel_ai_gateway\":\n case \"gateway\":\n return \"vercel_gateway\";\n default:\n return null;\n }\n}\n\n/** The outcome of a failed connect request or authorization. */\nexport function integrationConnectErrorOutcome(error: unknown): IntegrationConnectOutcome {\n const name =\n typeof error === \"object\" && error !== null ? (error as { name?: unknown }).name : undefined;\n if (name === \"AbortError\" || name === \"ConnectPopupClosedError\") return \"cancelled\";\n const status =\n typeof error === \"object\" && error !== null\n ? (error as { status?: unknown }).status\n : undefined;\n if (typeof status === \"number\" && status >= 400 && status < 600) return \"provider_error\";\n return \"outcome_unknown\";\n}\n\n/** The outcome of a settled Connect API attempt, or null while it is still in progress. */\nexport function connectAttemptOutcome(attempt: {\n state: string;\n error?: { code: string } | undefined;\n}): IntegrationConnectOutcome | null {\n switch (attempt.state) {\n case \"complete\":\n return \"connected\";\n case \"cancelled\":\n return \"cancelled\";\n case \"expired\":\n return \"abandoned\";\n case \"uncertain\":\n return \"outcome_unknown\";\n case \"failed\":\n return /denied/i.test(attempt.error?.code ?? \"\") ? \"denied\" : \"provider_error\";\n default:\n return null;\n }\n}\n\nexport type IntegrationConnectTracker = {\n /** Report the outcome. Only the first call reports. */\n finish(outcome: IntegrationConnectOutcome): void;\n /**\n * The page is about to leave for the provider. The journey finishes when\n * the browser returns (see `captureIntegrationConnectReturn`), so leaving\n * the page is not reported as `abandoned`.\n */\n redirecting(options?: { returnsWithOutcome?: boolean | undefined }): void;\n};\n\ntype Capture = (\n name: \"integration_connect_started\" | \"integration_connect_finished\",\n properties: Record<string, string>,\n) => boolean;\n\nconst REDIRECT_MARKER_KEY = \"opengeni.analytics.integrationConnect\";\nconst REDIRECT_MARKER_MAX_AGE_MS = 60 * 60_000;\ntype RedirectMarker = {\n integrationClass: IntegrationClass;\n method: IntegrationConnectMethod;\n returnsWithOutcome: boolean;\n startedAt: number;\n};\n\nconst pending = new Set<{ abandon(): void }>();\nlet pageHideInstalled = false;\n\nfunction installPageHide(): void {\n if (pageHideInstalled || typeof window === \"undefined\") return;\n pageHideInstalled = true;\n window.addEventListener(\"pagehide\", () => {\n for (const tracker of [...pending]) tracker.abandon();\n });\n}\n\nfunction sessionStore(): Storage | null {\n try {\n return typeof window === \"undefined\" ? null : window.sessionStorage;\n } catch {\n return null;\n }\n}\n\n/**\n * Start a connect journey. `capture` defaults to the consent-gated product\n * analytics; when collection is not allowed nothing is reported or stored.\n */\nexport function beginIntegrationConnect(\n integrationClass: IntegrationClass,\n method: IntegrationConnectMethod,\n options: {\n capture?: Capture | undefined;\n storage?: Storage | null | undefined;\n now?: (() => number) | undefined;\n } = {},\n): IntegrationConnectTracker {\n const capture: Capture = options.capture ?? captureAnalyticsEvent;\n const properties = { integration_class: integrationClass, method };\n let accepted = false;\n try {\n accepted = capture(\"integration_connect_started\", properties);\n } catch {\n accepted = false;\n }\n let settled = false;\n const entry = { abandon: () => finish(\"abandoned\") };\n function finish(outcome: IntegrationConnectOutcome) {\n if (settled) return;\n settled = true;\n pending.delete(entry);\n if (!accepted) return;\n try {\n capture(\"integration_connect_finished\", { ...properties, outcome });\n } catch {\n // Optional telemetry cannot fail product work.\n }\n }\n if (accepted) {\n pending.add(entry);\n installPageHide();\n }\n return {\n finish,\n redirecting({ returnsWithOutcome = true } = {}) {\n if (settled) return;\n settled = true;\n pending.delete(entry);\n if (!accepted) return;\n const marker: RedirectMarker = {\n integrationClass,\n method,\n returnsWithOutcome,\n startedAt: (options.now ?? Date.now)(),\n };\n try {\n (options.storage === undefined ? sessionStore() : options.storage)?.setItem(\n REDIRECT_MARKER_KEY,\n JSON.stringify(marker),\n );\n } catch {\n // Without the marker the return still reports its outcome as `other`.\n }\n },\n };\n}\n\nfunction readRedirectMarker(storage: Storage | null, now: number): RedirectMarker | null {\n if (!storage) return null;\n let raw: string | null = null;\n try {\n raw = storage.getItem(REDIRECT_MARKER_KEY);\n storage.removeItem(REDIRECT_MARKER_KEY);\n } catch {\n return null;\n }\n if (!raw) return null;\n try {\n const marker = JSON.parse(raw) as Partial<RedirectMarker>;\n const known: readonly string[] = [\n ...INTEGRATION_CONNECTION_CLASSES,\n ...MODEL_CONNECTION_CLASSES,\n ];\n if (\n typeof marker.integrationClass !== \"string\" ||\n !known.includes(marker.integrationClass) ||\n !INTEGRATION_CONNECT_METHODS.includes(marker.method as IntegrationConnectMethod) ||\n typeof marker.startedAt !== \"number\" ||\n now - marker.startedAt > REDIRECT_MARKER_MAX_AGE_MS\n ) {\n return null;\n }\n return marker as RedirectMarker;\n } catch {\n return null;\n }\n}\n\nconst RETURN_CLASSES: Partial<Record<IntegrationConnectReturn[\"parameter\"], ConnectionClass>> = {\n slack: \"slack\",\n google_drive: \"google\",\n atlassian: \"atlassian\",\n github_personal_oauth: \"github\",\n github: \"github\",\n};\n\n/** The closed outcome of a provider return parameter. */\nexport function integrationConnectReturnOutcome(\n value: IntegrationConnectReturn,\n): IntegrationConnectOutcome {\n if ([\"success\", \"connected\", \"complete\"].includes(value.status)) return \"connected\";\n // A GitHub install request waits on an organization owner; nothing failed yet.\n if (value.parameter === \"github\" && value.status === \"requested\") return \"outcome_unknown\";\n const reason = value.reason ?? \"\";\n if (/denied/i.test(reason)) return \"denied\";\n if (/cancel/i.test(reason)) return \"cancelled\";\n if (/^(state_expired|missing_code)$/.test(reason)) return \"abandoned\";\n if (/timeout/i.test(reason)) return \"outcome_unknown\";\n return \"provider_error\";\n}\n\n/**\n * Finish a redirect connect journey once analytics collection is active:\n * report the outcome of the provider return parameters this document loaded\n * with, or `abandoned` (`outcome_unknown` for flows whose return carries no\n * outcome) when a redirect started in this tab and the person came back\n * without one.\n */\nexport function captureIntegrationConnectReturn(\n options: {\n returned?: IntegrationConnectReturn | null | undefined;\n capture?: Capture | undefined;\n storage?: Storage | null | undefined;\n now?: (() => number) | undefined;\n } = {},\n): void {\n const returned =\n options.returned === undefined ? takeIntegrationConnectReturn() : options.returned;\n const marker = readRedirectMarker(\n options.storage === undefined ? sessionStore() : options.storage,\n (options.now ?? Date.now)(),\n );\n if (!returned && !marker) return;\n const capture: Capture = options.capture ?? captureAnalyticsEvent;\n const integrationClass: IntegrationClass =\n marker?.integrationClass ??\n (returned\n ? (RETURN_CLASSES[returned.parameter] ??\n (returned.providerDomain ? integrationClassFromDomain(returned.providerDomain) : \"other\"))\n : \"other\");\n const outcome: IntegrationConnectOutcome = returned\n ? integrationConnectReturnOutcome(returned)\n : marker?.returnsWithOutcome\n ? \"abandoned\"\n : \"outcome_unknown\";\n try {\n capture(\"integration_connect_finished\", {\n integration_class: integrationClass,\n method: marker?.method ?? (returned?.parameter === \"github\" ? \"app_install\" : \"oauth\"),\n outcome,\n });\n } catch {\n // Optional telemetry cannot fail product work.\n }\n}\n\n/**\n * A connect journey bound to a mounted setup surface: started on mount,\n * `abandoned` when it unmounts before `finish` was called.\n */\nexport function useIntegrationConnectJourney(\n integrationClass: IntegrationClass,\n method: IntegrationConnectMethod,\n): (outcome: IntegrationConnectOutcome) => void {\n const tracker = useRef<IntegrationConnectTracker | null>(null);\n useEffect(() => {\n const started = beginIntegrationConnect(integrationClass, method);\n tracker.current = started;\n return () => {\n started.finish(\"abandoned\");\n if (tracker.current === started) tracker.current = null;\n };\n }, [integrationClass, method]);\n return useCallback((outcome) => tracker.current?.finish(outcome), []);\n}\n\n/**\n * A model-provider connect journey with the outcome vocabulary of\n * `trackModelConnection`, for flows that have no workspace-scoped tracker\n * (organization connections, Claude). `expired` is reported as `abandoned`.\n */\nexport function beginModelConnectJourney(\n provider: string,\n method: IntegrationConnectMethod,\n): (outcome: \"connected\" | \"expired\" | \"denied\" | \"outcome_unknown\") => void {\n const tracker = beginIntegrationConnect(modelConnectionClass(provider) ?? \"other\", method);\n return (outcome) => tracker.finish(outcome === \"expired\" ? \"abandoned\" : outcome);\n}\n"],"mappings":"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","names":[]}
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  mergeSessionForRail
4
- } from "./chunk-6AVCAUGL.js";
4
+ } from "./chunk-TASEV25T.js";
5
5
 
6
6
  // src/app/lib/session-branch-cache.tsx
7
7
  function sessionBranchSummaryKey(session, readRevision = 0) {
@@ -183,4 +183,4 @@ export {
183
183
  sessionBranchNeedsHydration,
184
184
  sessionBranchSummaryDecision
185
185
  };
186
- //# sourceMappingURL=chunk-PBK44WJC.js.map
186
+ //# sourceMappingURL=chunk-4GJ37O6G.js.map
@@ -0,0 +1,152 @@
1
+ "use client";
2
+ import {
3
+ sessionDisplayTitle
4
+ } from "./chunk-J2C6LB6W.js";
5
+
6
+ // src/app/lib/actions/chat-directory.ts
7
+ import { useSyncExternalStore } from "react";
8
+ var RECENT_LIMIT = 30;
9
+ var directories = /* @__PURE__ */ new Map();
10
+ var listeners = /* @__PURE__ */ new Map();
11
+ function key(subjectId, workspaceId) {
12
+ return `${subjectId}\0${workspaceId}`;
13
+ }
14
+ function storageKey(subjectId, workspaceId) {
15
+ return `opengeni.recentChats.${subjectId}.${workspaceId}`;
16
+ }
17
+ function readStoredRecent(subjectId, workspaceId) {
18
+ if (typeof window === "undefined") return [];
19
+ try {
20
+ const raw = window.localStorage.getItem(storageKey(subjectId, workspaceId));
21
+ const parsed = raw ? JSON.parse(raw) : [];
22
+ if (!Array.isArray(parsed)) return [];
23
+ return parsed.filter(
24
+ (item) => typeof item === "object" && item !== null && typeof item.id === "string" && typeof item.title === "string" && typeof item.at === "number"
25
+ );
26
+ } catch {
27
+ return [];
28
+ }
29
+ }
30
+ function directory(subjectId, workspaceId) {
31
+ const id = key(subjectId, workspaceId);
32
+ let state = directories.get(id);
33
+ if (!state) {
34
+ const stored = readStoredRecent(subjectId, workspaceId);
35
+ state = {
36
+ rows: new Map(
37
+ stored.map((item) => [
38
+ item.id,
39
+ {
40
+ id: item.id,
41
+ workspaceId,
42
+ title: item.title,
43
+ updatedAt: item.at,
44
+ pinned: false,
45
+ archived: false,
46
+ row: null
47
+ }
48
+ ])
49
+ ),
50
+ recent: stored.map((item) => item.id),
51
+ sidebarOrder: [],
52
+ pinnedOrder: [],
53
+ version: 0
54
+ };
55
+ directories.set(id, state);
56
+ }
57
+ return state;
58
+ }
59
+ function emit(subjectId, workspaceId) {
60
+ const state = directory(subjectId, workspaceId);
61
+ state.version += 1;
62
+ for (const listener of listeners.get(key(subjectId, workspaceId)) ?? []) listener();
63
+ }
64
+ function persistRecent(subjectId, workspaceId, state) {
65
+ if (typeof window === "undefined") return;
66
+ const stored = state.recent.flatMap((id) => {
67
+ const record = state.rows.get(id);
68
+ return record ? [{ id, title: record.title, at: record.updatedAt }] : [];
69
+ });
70
+ try {
71
+ window.localStorage.setItem(storageKey(subjectId, workspaceId), JSON.stringify(stored));
72
+ } catch {
73
+ }
74
+ }
75
+ function chatRecordFromRow(row) {
76
+ return {
77
+ id: row.id,
78
+ workspaceId: row.workspaceId,
79
+ title: sessionDisplayTitle(row),
80
+ updatedAt: Date.parse(row.updatedAt) || 0,
81
+ pinned: Boolean(row.pinned),
82
+ archived: Boolean(row.archived),
83
+ row
84
+ };
85
+ }
86
+ function rememberChats(subjectId, workspaceId, rows) {
87
+ if (rows.length === 0) return;
88
+ const state = directory(subjectId, workspaceId);
89
+ let changed = false;
90
+ for (const row of rows) {
91
+ if (row.workspaceId !== workspaceId) continue;
92
+ const next = chatRecordFromRow(row);
93
+ const current = state.rows.get(row.id);
94
+ if (current?.row === row || current && current.row && current.title === next.title && current.updatedAt === next.updatedAt && current.pinned === next.pinned && current.archived === next.archived) {
95
+ continue;
96
+ }
97
+ state.rows.set(row.id, next);
98
+ changed = true;
99
+ }
100
+ if (changed) emit(subjectId, workspaceId);
101
+ }
102
+ function recordChatVisit(subjectId, workspaceId, row) {
103
+ const state = directory(subjectId, workspaceId);
104
+ const record = { ...chatRecordFromRow(row), updatedAt: Date.now() };
105
+ const previous = state.rows.get(row.id);
106
+ state.rows.set(row.id, previous?.row && !record.row ? { ...previous, ...record } : record);
107
+ if (state.recent[0] !== row.id) {
108
+ state.recent = [row.id, ...state.recent.filter((id) => id !== row.id)].slice(0, RECENT_LIMIT);
109
+ }
110
+ persistRecent(subjectId, workspaceId, state);
111
+ emit(subjectId, workspaceId);
112
+ }
113
+ function setSidebarOrder(subjectId, workspaceId, order, pinnedOrder) {
114
+ const state = directory(subjectId, workspaceId);
115
+ if (state.sidebarOrder.length === order.length && state.sidebarOrder.every((id, index) => id === order[index]) && state.pinnedOrder.length === pinnedOrder.length && state.pinnedOrder.every((id, index) => id === pinnedOrder[index])) {
116
+ return;
117
+ }
118
+ state.sidebarOrder = [...order];
119
+ state.pinnedOrder = [...pinnedOrder];
120
+ emit(subjectId, workspaceId);
121
+ }
122
+ function readChatDirectory(subjectId, workspaceId) {
123
+ return directory(subjectId, workspaceId);
124
+ }
125
+ function subscribe(subjectId, workspaceId, listener) {
126
+ const id = key(subjectId, workspaceId);
127
+ let set = listeners.get(id);
128
+ if (!set) {
129
+ set = /* @__PURE__ */ new Set();
130
+ listeners.set(id, set);
131
+ }
132
+ set.add(listener);
133
+ return () => {
134
+ set.delete(listener);
135
+ };
136
+ }
137
+ function useChatDirectoryVersion(subjectId, workspaceId) {
138
+ return useSyncExternalStore(
139
+ (listener) => subscribe(subjectId, workspaceId, listener),
140
+ () => directory(subjectId, workspaceId).version,
141
+ () => 0
142
+ );
143
+ }
144
+
145
+ export {
146
+ rememberChats,
147
+ recordChatVisit,
148
+ setSidebarOrder,
149
+ readChatDirectory,
150
+ useChatDirectoryVersion
151
+ };
152
+ //# sourceMappingURL=chunk-4IWBQUQU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/app/lib/actions/chat-directory.ts"],"sourcesContent":["/**\n * What the app already knows about chats, so the command menu can answer\n * instantly: rows the sidebar has loaded, the chats someone opened recently\n * (kept across reloads), and the sidebar's visible order for next and previous\n * chat. It is a cache for speed, never a source of authority: opening a chat\n * still goes through the normal authorized reads.\n */\nimport { useSyncExternalStore } from \"react\";\nimport { sessionDisplayTitle, type SessionListRow } from \"../../../session-list-model\";\n\nexport type ChatRecord = {\n id: string;\n workspaceId: string;\n title: string;\n updatedAt: number;\n pinned: boolean;\n archived: boolean;\n /** Present when the app holds a full or list row, needed for pin and archive. */\n row: SessionListRow | null;\n};\n\ntype DirectoryState = {\n rows: Map<string, ChatRecord>;\n /** Recently opened chat ids, most recent first. */\n recent: string[];\n /** Sidebar order of visible chats (pinned first), for next and previous. */\n sidebarOrder: string[];\n pinnedOrder: string[];\n version: number;\n};\n\nconst RECENT_LIMIT = 30;\nconst directories = new Map<string, DirectoryState>();\nconst listeners = new Map<string, Set<() => void>>();\n\nfunction key(subjectId: string, workspaceId: string): string {\n return `${subjectId}\\u0000${workspaceId}`;\n}\n\nfunction storageKey(subjectId: string, workspaceId: string): string {\n return `opengeni.recentChats.${subjectId}.${workspaceId}`;\n}\n\ntype StoredRecent = { id: string; title: string; at: number };\n\nfunction readStoredRecent(subjectId: string, workspaceId: string): StoredRecent[] {\n if (typeof window === \"undefined\") return [];\n try {\n const raw = window.localStorage.getItem(storageKey(subjectId, workspaceId));\n const parsed: unknown = raw ? JSON.parse(raw) : [];\n if (!Array.isArray(parsed)) return [];\n return parsed.filter(\n (item): item is StoredRecent =>\n typeof item === \"object\" &&\n item !== null &&\n typeof (item as StoredRecent).id === \"string\" &&\n typeof (item as StoredRecent).title === \"string\" &&\n typeof (item as StoredRecent).at === \"number\",\n );\n } catch {\n return [];\n }\n}\n\nfunction directory(subjectId: string, workspaceId: string): DirectoryState {\n const id = key(subjectId, workspaceId);\n let state = directories.get(id);\n if (!state) {\n const stored = readStoredRecent(subjectId, workspaceId);\n state = {\n rows: new Map(\n stored.map((item) => [\n item.id,\n {\n id: item.id,\n workspaceId,\n title: item.title,\n updatedAt: item.at,\n pinned: false,\n archived: false,\n row: null,\n },\n ]),\n ),\n recent: stored.map((item) => item.id),\n sidebarOrder: [],\n pinnedOrder: [],\n version: 0,\n };\n directories.set(id, state);\n }\n return state;\n}\n\nfunction emit(subjectId: string, workspaceId: string): void {\n const state = directory(subjectId, workspaceId);\n state.version += 1;\n for (const listener of listeners.get(key(subjectId, workspaceId)) ?? []) listener();\n}\n\nfunction persistRecent(subjectId: string, workspaceId: string, state: DirectoryState): void {\n if (typeof window === \"undefined\") return;\n const stored: StoredRecent[] = state.recent.flatMap((id) => {\n const record = state.rows.get(id);\n return record ? [{ id, title: record.title, at: record.updatedAt }] : [];\n });\n try {\n window.localStorage.setItem(storageKey(subjectId, workspaceId), JSON.stringify(stored));\n } catch {\n // Storage full or blocked: recent chats then last only for this page.\n }\n}\n\nexport function chatRecordFromRow(row: SessionListRow): ChatRecord {\n return {\n id: row.id,\n workspaceId: row.workspaceId,\n title: sessionDisplayTitle(row),\n updatedAt: Date.parse(row.updatedAt) || 0,\n pinned: Boolean(row.pinned),\n archived: Boolean(row.archived),\n row,\n };\n}\n\n/** Remember rows the app has read (sidebar pages, search results, the open chat). */\nexport function rememberChats(\n subjectId: string,\n workspaceId: string,\n rows: readonly SessionListRow[],\n): void {\n if (rows.length === 0) return;\n const state = directory(subjectId, workspaceId);\n let changed = false;\n for (const row of rows) {\n if (row.workspaceId !== workspaceId) continue;\n const next = chatRecordFromRow(row);\n const current = state.rows.get(row.id);\n if (\n current?.row === row ||\n (current &&\n current.row &&\n current.title === next.title &&\n current.updatedAt === next.updatedAt &&\n current.pinned === next.pinned &&\n current.archived === next.archived)\n ) {\n continue;\n }\n state.rows.set(row.id, next);\n changed = true;\n }\n if (changed) emit(subjectId, workspaceId);\n}\n\n/** The chat was opened: move it to the front of the recent list. */\nexport function recordChatVisit(subjectId: string, workspaceId: string, row: SessionListRow): void {\n const state = directory(subjectId, workspaceId);\n const record = { ...chatRecordFromRow(row), updatedAt: Date.now() };\n const previous = state.rows.get(row.id);\n state.rows.set(row.id, previous?.row && !record.row ? { ...previous, ...record } : record);\n if (state.recent[0] !== row.id) {\n state.recent = [row.id, ...state.recent.filter((id) => id !== row.id)].slice(0, RECENT_LIMIT);\n }\n persistRecent(subjectId, workspaceId, state);\n emit(subjectId, workspaceId);\n}\n\n/** A chat was deleted or is no longer reachable: forget it. */\nexport function forgetChat(subjectId: string, workspaceId: string, chatId: string): void {\n const state = directory(subjectId, workspaceId);\n if (!state.rows.delete(chatId) && !state.recent.includes(chatId)) return;\n state.recent = state.recent.filter((id) => id !== chatId);\n persistRecent(subjectId, workspaceId, state);\n emit(subjectId, workspaceId);\n}\n\n/** The sidebar reports the chats it shows, in order, so next and previous follow it. */\nexport function setSidebarOrder(\n subjectId: string,\n workspaceId: string,\n order: readonly string[],\n pinnedOrder: readonly string[],\n): void {\n const state = directory(subjectId, workspaceId);\n if (\n state.sidebarOrder.length === order.length &&\n state.sidebarOrder.every((id, index) => id === order[index]) &&\n state.pinnedOrder.length === pinnedOrder.length &&\n state.pinnedOrder.every((id, index) => id === pinnedOrder[index])\n ) {\n return;\n }\n state.sidebarOrder = [...order];\n state.pinnedOrder = [...pinnedOrder];\n emit(subjectId, workspaceId);\n}\n\nexport type ChatDirectorySnapshot = Readonly<{\n rows: ReadonlyMap<string, ChatRecord>;\n recent: readonly string[];\n sidebarOrder: readonly string[];\n pinnedOrder: readonly string[];\n version: number;\n}>;\n\nexport function readChatDirectory(subjectId: string, workspaceId: string): ChatDirectorySnapshot {\n return directory(subjectId, workspaceId);\n}\n\nfunction subscribe(subjectId: string, workspaceId: string, listener: () => void): () => void {\n const id = key(subjectId, workspaceId);\n let set = listeners.get(id);\n if (!set) {\n set = new Set();\n listeners.set(id, set);\n }\n set.add(listener);\n return () => {\n set.delete(listener);\n };\n}\n\n/** Re-renders when the directory changes; read the snapshot through `readChatDirectory`. */\nexport function useChatDirectoryVersion(subjectId: string, workspaceId: string): number {\n return useSyncExternalStore(\n (listener) => subscribe(subjectId, workspaceId, listener),\n () => directory(subjectId, workspaceId).version,\n () => 0,\n );\n}\n"],"mappings":"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","names":[]}
@@ -2,9 +2,6 @@
2
2
  import {
3
3
  SECTION_TITLE_CLASS
4
4
  } from "./chunk-J6WRB3VZ.js";
5
- import {
6
- LogoTileSizeProvider
7
- } from "./chunk-FQQEZUSN.js";
8
5
  import {
9
6
  Sheet,
10
7
  SheetClose,
@@ -13,11 +10,14 @@ import {
13
10
  SheetTrigger
14
11
  } from "./chunk-6KELG2EG.js";
15
12
  import {
16
- Skeleton
17
- } from "./chunk-HY7EYWIG.js";
13
+ LogoTileSizeProvider
14
+ } from "./chunk-FQQEZUSN.js";
18
15
  import {
19
16
  Button
20
17
  } from "./chunk-HMU5IELG.js";
18
+ import {
19
+ Skeleton
20
+ } from "./chunk-HY7EYWIG.js";
21
21
  import {
22
22
  containedPortal
23
23
  } from "./chunk-J3BHDXQQ.js";
@@ -473,4 +473,4 @@ export {
473
473
  DetailFooterConfirm,
474
474
  DetailSkeleton
475
475
  };
476
- //# sourceMappingURL=chunk-LEXPBQ56.js.map
476
+ //# sourceMappingURL=chunk-4SKJX3C4.js.map
@@ -7,7 +7,7 @@ import {
7
7
  } from "./chunk-XEA5BCMA.js";
8
8
  import {
9
9
  useOpenGeniText
10
- } from "./chunk-G7VLL3PG.js";
10
+ } from "./chunk-F2YABPRJ.js";
11
11
 
12
12
  // src/components/session-capability-frame.tsx
13
13
  import { CheckIcon, InfoIcon, ShieldCheckIcon, XIcon } from "lucide-react";
@@ -152,4 +152,4 @@ function SessionCapabilityFrame({
152
152
  export {
153
153
  SessionCapabilityFrame
154
154
  };
155
- //# sourceMappingURL=chunk-ZA6YD2LW.js.map
155
+ //# sourceMappingURL=chunk-57SYK776.js.map
@@ -3,7 +3,7 @@ import {
3
3
  RadioGroup,
4
4
  RadioRow,
5
5
  useFocusCheckedRow
6
- } from "./chunk-AR62NQXE.js";
6
+ } from "./chunk-Z2S5VQG7.js";
7
7
  import {
8
8
  isMachineComputeSelectable
9
9
  } from "./chunk-3O3ZUGMX.js";
@@ -23,26 +23,26 @@ import {
23
23
  ComposerMenuHeader
24
24
  } from "./chunk-O2LGEYG4.js";
25
25
  import {
26
- Notice
27
- } from "./chunk-WLEDGIVS.js";
26
+ DropdownMenuItem
27
+ } from "./chunk-TREHTIBD.js";
28
28
  import {
29
29
  rememberedMachineFolder,
30
30
  workspaceDefaultRigOptionLabel
31
- } from "./chunk-XLIJ36RG.js";
31
+ } from "./chunk-WRMQ7EX4.js";
32
32
  import {
33
33
  t
34
- } from "./chunk-PT7MTXRE.js";
35
- import {
36
- Button
37
- } from "./chunk-HMU5IELG.js";
38
- import {
39
- DropdownMenuItem
40
- } from "./chunk-MOF3XSUM.js";
34
+ } from "./chunk-MAOCN7J6.js";
41
35
  import {
42
36
  MENU_LABEL_CLASS,
43
37
  MENU_NOTE_CLASS,
44
38
  MENU_SEPARATOR_CLASS
45
39
  } from "./chunk-5OTQA7CM.js";
40
+ import {
41
+ Notice
42
+ } from "./chunk-WLEDGIVS.js";
43
+ import {
44
+ Button
45
+ } from "./chunk-HMU5IELG.js";
46
46
  import {
47
47
  DEFAULT_SESSION_USAGE_LIMIT_LABELS
48
48
  } from "./chunk-4U7SHFQ2.js";
@@ -493,4 +493,4 @@ export {
493
493
  VisibilityMenuBody,
494
494
  UsageLimitMenuBody
495
495
  };
496
- //# sourceMappingURL=chunk-22LBKJDE.js.map
496
+ //# sourceMappingURL=chunk-5DIAN5GQ.js.map
@@ -5,14 +5,14 @@ import {
5
5
  import {
6
6
  cn
7
7
  } from "./chunk-A3MTTRCX.js";
8
- import {
9
- ConnectorAction
10
- } from "./chunk-QZO2KK2F.js";
11
8
  import {
12
9
  ComposerMenuHeader,
13
10
  ComposerMenuRowsSkeleton,
14
11
  ComposerMenuSwitchIndicator
15
12
  } from "./chunk-O2LGEYG4.js";
13
+ import {
14
+ ConnectorAction
15
+ } from "./chunk-6P44NG6Y.js";
16
16
  import {
17
17
  MENU_BACK_BUTTON_CLASS,
18
18
  MENU_CHECK_SLOT_CLASS,
@@ -275,4 +275,4 @@ export {
275
275
  SessionSecretsMenuBody,
276
276
  sessionSecretsRows
277
277
  };
278
- //# sourceMappingURL=chunk-LJ3TDK2L.js.map
278
+ //# sourceMappingURL=chunk-5FA455GR.js.map