@opengeni/react 4.6.1 → 4.6.2-canary.39854174564001
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.
- package/dist/app/app-state.js +5 -5
- package/dist/app/components/Composer.js +14 -14
- package/dist/app/components/artifacts/artifact-library.js +2 -2
- package/dist/app/components/artifacts/chat-interactive-block.js +10 -10
- package/dist/app/components/artifacts/inline-chat-image.js +14 -14
- package/dist/app/components/artifacts/retained-file-preview.js +15 -15
- package/dist/app/components/artifacts/retained-text-preview.js +2 -2
- package/dist/app/components/artifacts/site-conversations.js +4 -3
- package/dist/app/components/artifacts/site-data.js +2 -2
- package/dist/app/components/artifacts/site-publishing.js +11 -11
- package/dist/app/components/artifacts/site-settings.js +12 -12
- package/dist/app/components/billing-class-mark.js +3 -3
- package/dist/app/components/capabilities/capability-detail-sheet.js +2 -2
- package/dist/app/components/capabilities/capability-logo-source.js +7 -7
- package/dist/app/components/capabilities/native-connect-readiness.js +1 -0
- package/dist/app/components/capabilities/native-connect-readiness.js.map +1 -1
- package/dist/app/components/capabilities/native-connect-setup.js +6 -6
- package/dist/app/components/capabilities/perform-capability-action.js +2 -1
- package/dist/app/components/capabilities/prepared-mcp-setup-card.js +8 -8
- package/dist/app/components/capabilities/session-capability-card.js +28 -27
- package/dist/app/components/capabilities/session-capability-card.js.map +1 -1
- package/dist/app/components/capabilities/session-chrome-card.js +14 -14
- package/dist/app/components/capabilities/session-custom-mcp-card.js +9 -9
- package/dist/app/components/capabilities/session-github-card.js +9 -9
- package/dist/app/components/capabilities/session-machine-card.js +13 -13
- package/dist/app/components/command-menu/chat-status.js +6 -5
- package/dist/app/components/command-menu/chat-switcher.d.ts +2 -0
- package/dist/app/components/command-menu/chat-switcher.js +26 -9
- package/dist/app/components/command-menu/chat-switcher.js.map +1 -1
- package/dist/app/components/command-menu/command-menu.js +9 -8
- package/dist/app/components/command-menu/command-menu.js.map +1 -1
- package/dist/app/components/command-menu/shortcut-sheet.js +4 -4
- package/dist/app/components/composer-mobile-plus-panel.js +5 -5
- package/dist/app/components/composer-mobile-plus.js +1 -1
- package/dist/app/components/credit-required-gate.js +1 -1
- package/dist/app/components/credit-required-prompt.js +3 -3
- package/dist/app/components/desktop/app-shots.js +5 -5
- package/dist/app/components/desktop/this-computer.js +4 -4
- package/dist/app/components/feedback.js +3 -3
- package/dist/app/components/github-app-connect-launcher.js +1 -1
- package/dist/app/components/machines/connect-machine-dialog.js +3 -3
- package/dist/app/components/markdown.js +4 -4
- package/dist/app/components/models/models-ui.js +2 -2
- package/dist/app/components/pickers.js +5 -5
- package/dist/app/components/rail/rail-context.js +1 -1
- package/dist/app/components/rail/rail-sections.js +15 -14
- package/dist/app/components/rail/session-header.d.ts +6 -5
- package/dist/app/components/rail/session-header.js +11 -10
- package/dist/app/components/rail/session-list.js +14 -13
- package/dist/app/components/rail/session-row-hover-details.js +7 -6
- package/dist/app/components/rail/session-shell.js +30 -32
- package/dist/app/components/rail/site-session-group-heading.js +2 -1
- package/dist/app/components/session/agent-configuration-panel.js +3 -3
- package/dist/app/components/session/banners.js +6 -6
- package/dist/app/components/session/editable-artifacts-workspace.js +12 -12
- package/dist/app/components/session/failed-session-banner.js +4 -4
- package/dist/app/components/session/human-input.js +24 -24
- package/dist/app/components/session/inspector.js +30 -30
- package/dist/app/components/session/message-actions.js +3 -3
- package/dist/app/components/session/message-resource-attachments.js +5 -5
- package/dist/app/components/session/model-recovery-notice.js +3 -3
- package/dist/app/components/session/new-session-settings-menu.js +4 -4
- package/dist/app/components/session/sandbox-switcher.js +7 -7
- package/dist/app/components/session/sandbox-workspace.js +33 -33
- package/dist/app/components/session/search-markdown-highlight.js +5 -5
- package/dist/app/components/session/search-results-view.js +6 -6
- package/dist/app/components/session/session-admission-notice.js +4 -4
- package/dist/app/components/session/session-machine-access-notice.js +4 -4
- package/dist/app/components/session/session-search-dialog.js +6 -6
- package/dist/app/components/session/session-usage-limit-section.js +3 -3
- package/dist/app/components/session/session-wait-status.js +2 -1
- package/dist/app/components/session/session-wait-status.js.map +1 -1
- package/dist/app/components/session/subagents.js +5 -4
- package/dist/app/components/session/subscription-account-indicator.d.ts +35 -0
- package/dist/app/components/session/{codex-account-indicator.js → subscription-account-indicator.js} +23 -10
- package/dist/app/components/session/subscription-account-menu.d.ts +11 -12
- package/dist/app/components/session/subscription-account-menu.js +1 -1
- package/dist/app/components/session/subscription-account.d.ts +105 -0
- package/dist/app/components/usage/usage-entry.js +3 -3
- package/dist/app/components/workspace-composer-plus.js +10 -10
- package/dist/app/embed/session-app.js +92 -94
- package/dist/app/lib/actions/actions-provider.js +4 -4
- package/dist/app/lib/actions/chat-switcher.d.ts +19 -7
- package/dist/app/lib/codex-usage-query.js +2 -2
- package/dist/app/lib/composer-connectors.js +8 -8
- package/dist/app/lib/console-text.js +2 -2
- package/dist/app/lib/drive-connect-return.d.ts +26 -0
- package/dist/app/lib/drive-connect-return.js +16 -0
- package/dist/app/lib/events.js +7 -7
- package/dist/app/lib/failed-session-copy.js +3 -3
- package/dist/app/lib/model-access-onboarding.js +3 -3
- package/dist/app/lib/move-chat-to-machine.js +3 -3
- package/dist/app/lib/session-branch-cache.js +6 -5
- package/dist/app/lib/session-group-pagination.js +6 -5
- package/dist/app/lib/session-hover-facts.js +6 -5
- package/dist/app/lib/session-rail.js +2 -1
- package/dist/app/lib/sessions-group.js +5 -4
- package/dist/app/lib/turn-failure-analytics.js +4 -4
- package/dist/app/lib/use-workspace-machines.js +4 -4
- package/dist/app/lib/use-workspace-model-catalog.js +3 -3
- package/dist/app/lib/use-workspace-rigs.js +2 -2
- package/dist/app/lib/workspace-navigation-preference.js +4 -4
- package/dist/app/lib/workspace-scope-context.js +3 -3
- package/dist/app/routes/artifacts.js +26 -25
- package/dist/app/routes/artifacts.js.map +1 -1
- package/dist/app/routes/retained-artifact.js +15 -15
- package/dist/app/routes/session.js +64 -63
- package/dist/app/routes/sessions-index.js +41 -41
- package/dist/app/routes/site-view.js +30 -29
- package/dist/app/routes/site-view.js.map +1 -1
- package/dist/artifacts-document.js +4 -4
- package/dist/artifacts-presentation.js +4 -4
- package/dist/artifacts-spreadsheet.js +4 -4
- package/dist/artifacts.js +10 -10
- package/dist/{browser-viewer-YQC6BFMS.js → browser-viewer-VKIAULG7.js} +4 -4
- package/dist/{chat-interactive-block-Z22YHDRU.js → chat-interactive-block-JGYSW4KB.js} +5 -5
- package/dist/{chunk-WN2MIB4Q.js → chunk-22V2QCEM.js} +2 -2
- package/dist/{chunk-SJPAKWWP.js → chunk-2BISI664.js} +2 -2
- package/dist/{chunk-O5UOCMH4.js → chunk-2LPJVEWY.js} +3 -3
- package/dist/{chunk-JI6WPLZB.js → chunk-2SBCOGQN.js} +4 -4
- package/dist/{chunk-6JF7C3U3.js → chunk-2WERWWSS.js} +2 -2
- package/dist/{chunk-4XKT4ENZ.js → chunk-2Y3QL3DA.js} +4 -4
- package/dist/{chunk-KVMFT6FN.js → chunk-3FL3F4WF.js} +2 -2
- package/dist/{chunk-4VJOZJDV.js → chunk-3JPQAIYJ.js} +2 -2
- package/dist/{chunk-27EORKJ4.js → chunk-3N4LNBJF.js} +2 -2
- package/dist/{chunk-7JZSFJHB.js → chunk-3OJU3RUR.js} +2 -2
- package/dist/{chunk-NV5OYV3G.js → chunk-3U6K36QA.js} +5 -5
- package/dist/{chunk-MDRLP5DO.js → chunk-3W7ROHN4.js} +3 -3
- package/dist/{chunk-3MQM4ZOC.js → chunk-3Y6ZR2VN.js} +3 -3
- package/dist/{chunk-HXZIX7MR.js → chunk-47AB65IO.js} +4 -4
- package/dist/{chunk-DNYD7AUG.js → chunk-4BOLIZ7Y.js} +3 -3
- package/dist/{chunk-4XO346BW.js → chunk-4FBJFQFU.js} +2 -2
- package/dist/{chunk-DAQG3C4W.js → chunk-4HM6YDBX.js} +3 -3
- package/dist/{chunk-BWKZEW6K.js → chunk-4T3E56NT.js} +3 -3
- package/dist/{chunk-4PC7LIQK.js → chunk-4ZMUWRFF.js} +3 -3
- package/dist/{chunk-O4AWXTZQ.js → chunk-52XIYULR.js} +3 -3
- package/dist/{chunk-GXK4CUAB.js → chunk-5WQKTT5Z.js} +2 -2
- package/dist/{chunk-MHIYYHCL.js → chunk-5ZAHAUWD.js} +10 -10
- package/dist/{chunk-6N7W3TOV.js → chunk-63BPMTBM.js} +2 -2
- package/dist/{chunk-R5YZ3ROM.js → chunk-63PQKTTT.js} +2 -2
- package/dist/{chunk-WLZVXCPZ.js → chunk-6GO6WN22.js} +3 -3
- package/dist/{chunk-6PQBKMUL.js → chunk-6IIA63VD.js} +11 -7
- package/dist/chunk-6IIA63VD.js.map +1 -0
- package/dist/{chunk-PQCFW2KT.js → chunk-6IRDW7K3.js} +18 -13
- package/dist/chunk-6IRDW7K3.js.map +1 -0
- package/dist/{chunk-XDCZBOEY.js → chunk-6LGBGPBU.js} +1 -1
- package/dist/{chunk-D4QOZXPM.js → chunk-7ITDATTP.js} +2 -2
- package/dist/{chunk-M5E3CKSE.js → chunk-7QWWE5XL.js} +2 -2
- package/dist/{chunk-RABKQFTA.js → chunk-A2HCAMRH.js} +2 -2
- package/dist/{chunk-6K3WNTRI.js → chunk-AODISQO6.js} +2 -2
- package/dist/{chunk-C6JL6PBL.js → chunk-AQDRH6VF.js} +3 -3
- package/dist/{chunk-72XEFLMD.js → chunk-ASWINLSW.js} +2 -2
- package/dist/{chunk-DNLXQUBX.js → chunk-B746OUJC.js} +24 -36
- package/dist/chunk-B746OUJC.js.map +1 -0
- package/dist/{chunk-FVCLVASD.js → chunk-B7ZKSROO.js} +24 -24
- package/dist/{chunk-EURDMOXZ.js → chunk-BYJZUCOQ.js} +2 -2
- package/dist/{chunk-ZWACUOU5.js → chunk-CDBGAAJY.js} +3 -3
- package/dist/chunk-CDBGAAJY.js.map +1 -0
- package/dist/{chunk-BPD4IJBG.js → chunk-CG6CJMIS.js} +2 -2
- package/dist/{chunk-B254JG72.js → chunk-CQX24PT7.js} +2 -2
- package/dist/{chunk-HJTTDLF6.js → chunk-CY3NO4JN.js} +4 -4
- package/dist/{chunk-OLUG4IFF.js → chunk-D2RLPRSG.js} +2 -2
- package/dist/{chunk-74NIHMAT.js → chunk-D653JH6D.js} +3 -3
- package/dist/{chunk-FMATVQFW.js → chunk-DA6EQDFR.js} +6 -6
- package/dist/{chunk-2LUO22FR.js → chunk-DAI5CTQF.js} +4 -4
- package/dist/{chunk-HTKVYEVB.js → chunk-DBM4ZXDN.js} +2 -2
- package/dist/{chunk-MB2DTUEG.js → chunk-DNYKLU3K.js} +4 -4
- package/dist/{chunk-NPDL4W4Y.js → chunk-DT53LBQN.js} +44 -45
- package/dist/chunk-DT53LBQN.js.map +1 -0
- package/dist/{chunk-26P7B46A.js → chunk-DXYARXK3.js} +3 -3
- package/dist/{chunk-JQKURO3S.js → chunk-E4MQRQ6Z.js} +2 -2
- package/dist/{chunk-KW53DBY7.js → chunk-EBW2E32G.js} +2 -2
- package/dist/{chunk-O73DRA77.js → chunk-ENKBO7FC.js} +4 -4
- package/dist/{chunk-32HA7DXJ.js → chunk-EQNGX77H.js} +11 -11
- package/dist/{chunk-CA64OZLZ.js → chunk-FAPYRTG6.js} +4 -4
- package/dist/{chunk-WWM7WVD2.js → chunk-GABFKHQE.js} +2 -2
- package/dist/chunk-GLCOKWLH.js +42 -0
- package/dist/chunk-GLCOKWLH.js.map +1 -0
- package/dist/{chunk-OHG2UQ2O.js → chunk-GNM3OY36.js} +51 -13
- package/dist/chunk-GNM3OY36.js.map +1 -0
- package/dist/{chunk-JJ7VMIEQ.js → chunk-H2GTWX4D.js} +14 -14
- package/dist/{chunk-LR7U3HCD.js → chunk-HPSATFLQ.js} +4 -4
- package/dist/{chunk-TM2ZLY3Q.js → chunk-I56TUH3Z.js} +13 -13
- package/dist/{chunk-ZZUKJ5HQ.js → chunk-IG2ERMSB.js} +2 -2
- package/dist/{chunk-2SZ3KC5S.js → chunk-IMKIIS4Y.js} +2 -2
- package/dist/{chunk-I57HZMMA.js → chunk-IXIE3H43.js} +2 -2
- package/dist/{chunk-OWJD3V4V.js → chunk-J3YQ3554.js} +2 -2
- package/dist/{chunk-BCFHMBMK.js → chunk-J5HZBHU4.js} +7 -7
- package/dist/{chunk-UHMMRQGU.js → chunk-KD7GNHOP.js} +3 -3
- package/dist/{chunk-RXMIXKB3.js → chunk-KIKAVZOW.js} +2 -2
- package/dist/{chunk-X7Z4B5GK.js → chunk-KPL7EXS6.js} +2 -2
- package/dist/{chunk-GTR2WUBA.js → chunk-KX6M5CJI.js} +1 -1
- package/dist/{chunk-CYO5HL4C.js → chunk-KYL2BPS2.js} +2 -2
- package/dist/{chunk-ZPZYYSHW.js → chunk-L7EAQGWN.js} +5 -5
- package/dist/{chunk-QLDMF7MH.js → chunk-LC5HE7PZ.js} +2 -2
- package/dist/{chunk-3SMJ2BIQ.js → chunk-LGD5RESZ.js} +7 -33
- package/dist/chunk-LGD5RESZ.js.map +1 -0
- package/dist/{chunk-4ICPJZAB.js → chunk-LMYSYG6U.js} +2 -2
- package/dist/{chunk-3ZZOE4SN.js → chunk-LOCDYMD6.js} +4 -4
- package/dist/{chunk-DNWBLT4U.js → chunk-MASBMJ2M.js} +2 -2
- package/dist/{chunk-6VITVQ23.js → chunk-MTYE2PPR.js} +1 -1
- package/dist/{chunk-NZMQDUOD.js → chunk-MU6HYDNF.js} +5 -5
- package/dist/{chunk-GMVKCEBG.js → chunk-MY6QEDZ2.js} +2 -2
- package/dist/{chunk-SK57RWSA.js → chunk-MZGKQ5WV.js} +2 -2
- package/dist/{chunk-HSQRYJ4P.js → chunk-N52SFH2K.js} +2 -2
- package/dist/{chunk-CEQUNJJY.js → chunk-NDCP5TVN.js} +2 -2
- package/dist/{chunk-MY6VZVCP.js → chunk-OAJX5CEL.js} +4 -4
- package/dist/{chunk-BQWUXC55.js → chunk-OBBLVC2W.js} +9 -9
- package/dist/{chunk-IWIMIRV3.js → chunk-OSJTLQXA.js} +9 -4
- package/dist/chunk-OSJTLQXA.js.map +1 -0
- package/dist/{chunk-FH75NNLB.js → chunk-OZ5NAXCP.js} +2 -2
- package/dist/{chunk-PEGNFZ3F.js → chunk-P5S777YI.js} +2 -2
- package/dist/{chunk-LY6727IF.js → chunk-PPSVFNEA.js} +1 -1
- package/dist/{chunk-K4FDZVMQ.js → chunk-PR42VIVY.js} +2 -2
- package/dist/{chunk-I74J2UZ2.js → chunk-PWMZCW4H.js} +8 -8
- package/dist/{chunk-6YDXUE5H.js → chunk-PYA2O3WS.js} +2 -2
- package/dist/{chunk-GUIZDI5T.js → chunk-Q2PA4KZS.js} +2 -2
- package/dist/{chunk-DZH2HTTB.js → chunk-R27GW5WV.js} +1 -1
- package/dist/chunk-R4U4EWZG.js +414 -0
- package/dist/chunk-R4U4EWZG.js.map +1 -0
- package/dist/{chunk-7OIBLMDP.js → chunk-RAQISW42.js} +2 -2
- package/dist/{chunk-CPKD2YGK.js → chunk-RNU5CUPI.js} +2 -2
- package/dist/{chunk-467VRP4E.js → chunk-RO5YZQHZ.js} +3 -3
- package/dist/{chunk-SSZROOOI.js → chunk-ROLXYGT5.js} +2 -2
- package/dist/{chunk-F4B2YYCN.js → chunk-TAWFXRXB.js} +3 -3
- package/dist/{chunk-G3FU2IF7.js → chunk-TB7UW5BB.js} +3 -3
- package/dist/{chunk-NF6Q4XTN.js → chunk-TQF2I5SY.js} +3 -3
- package/dist/{chunk-MM7OKOTE.js → chunk-UBXHP224.js} +43 -18
- package/dist/chunk-UBXHP224.js.map +1 -0
- package/dist/{chunk-M7A226EQ.js → chunk-UL44R3W2.js} +2 -2
- package/dist/{chunk-65K5LV4L.js → chunk-UQKBV22P.js} +21 -20
- package/dist/{chunk-65K5LV4L.js.map → chunk-UQKBV22P.js.map} +1 -1
- package/dist/{chunk-GTR5NLVP.js → chunk-VCRQPLKS.js} +2 -2
- package/dist/{chunk-NWSAF6P5.js → chunk-WJDH7CH5.js} +22 -1
- package/dist/chunk-WJDH7CH5.js.map +1 -0
- package/dist/{chunk-LG67ZNRU.js → chunk-WK2ZCTUF.js} +2 -2
- package/dist/{chunk-XGE75VPK.js → chunk-WNARM3LY.js} +3 -3
- package/dist/{chunk-RNBH5TSM.js → chunk-WQ2RTQYO.js} +2 -2
- package/dist/chunk-X5XEYQ4B.js +84 -0
- package/dist/chunk-X5XEYQ4B.js.map +1 -0
- package/dist/{chunk-W57QFLQD.js → chunk-X6JIGNLI.js} +4 -4
- package/dist/{chunk-CKA4SJRK.js → chunk-XIQDCQX7.js} +2 -2
- package/dist/{chunk-AJ7PY4FJ.js → chunk-Y3GCG6CA.js} +2 -2
- package/dist/{chunk-2K27S6LK.js → chunk-Y565N5ZJ.js} +24 -7
- package/dist/chunk-Y565N5ZJ.js.map +1 -0
- package/dist/{chunk-ZRB4M3GG.js → chunk-YC5KH7ZB.js} +3 -3
- package/dist/{chunk-4RY64KQY.js → chunk-YJUKLLNP.js} +2 -2
- package/dist/{chunk-24POWVUY.js → chunk-ZDJNRRVS.js} +4 -4
- package/dist/{chunk-S6WJ6TUT.js → chunk-ZEVJGMNB.js} +2 -2
- package/dist/chunk-ZEVJGMNB.js.map +1 -0
- package/dist/{chunk-M7YEZR6X.js → chunk-ZITMDA4C.js} +2 -2
- package/dist/components/model-policy-picker.d.ts +2 -0
- package/dist/composer.js +6 -6
- package/dist/{computer-viewer-BWVNDFTO.js → computer-viewer-6CRLWQHP.js} +5 -5
- package/dist/connect.js +6 -6
- package/dist/connection-service-presentation.d.ts +1 -4
- package/dist/desktop.js +2 -2
- package/dist/editor.js +2 -2
- package/dist/{embedded-new-voice-GBXSZ3TO.js → embedded-new-voice-KILV3RYM.js} +5 -5
- package/dist/{embedded-voice-MGI7EK7C.js → embedded-voice-GHDRLCFX.js} +5 -5
- package/dist/{fleet-decision-row-35S3GAUN.js → fleet-decision-row-DQXRRBT7.js} +2 -2
- package/dist/index.js +36 -36
- package/dist/interaction.js +5 -5
- package/dist/machines.js +3 -3
- package/dist/messages/en.d.ts +1 -1
- package/dist/messages.js +1 -1
- package/dist/{model-policy-picker-menu-KP53N6UJ.js → model-policy-picker-menu-5ALKUJMR.js} +4 -4
- package/dist/{platform-activity-row-ISMXR7NJ.js → platform-activity-row-227C764Z.js} +2 -2
- package/dist/{queue-surface-implementation-ULW7DDJA.js → queue-surface-implementation-H3NOBXU5.js} +5 -5
- package/dist/realtime.js +4 -4
- package/dist/{sandbox-files-QYSD4XCZ.js → sandbox-files-5FEOHUMD.js} +6 -6
- package/dist/session-app.js +92 -94
- package/dist/{session-realtime-JXRLPNUH.js → session-realtime-OHBMODNX.js} +3 -3
- package/dist/session-realtime.js +2 -2
- package/dist/session-ui.js +24 -24
- package/dist/session.js +5 -5
- package/dist/sites.js +2 -2
- package/dist/terminal.js +2 -2
- package/dist/this-computer.js +3 -3
- package/dist/timeline/connector-logo-index.d.ts +19 -0
- package/dist/{timeline-annotation-markers-OJYKHBEO.js → timeline-annotation-markers-NDHS7MCK.js} +2 -2
- package/dist/{timeline-annotation-selection-6OAZLXFU.js → timeline-annotation-selection-DRQSTJOV.js} +2 -2
- package/dist/{timeline-annotations-dialog-5M6DP5FX.js → timeline-annotations-dialog-G6J5ZJKN.js} +3 -3
- package/dist/timeline-model.d.ts +2 -0
- package/dist/timeline-model.js +9 -1
- package/dist/ui/list-row.js +1 -1
- package/dist/usage.js +2 -2
- package/dist/workbench.js +4 -4
- package/package.json +4 -4
- package/src/app/components/capabilities/native-connect-readiness.tsx +1 -0
- package/src/app/components/capabilities/perform-capability-action.test.ts +67 -0
- package/src/app/components/capabilities/perform-capability-action.tsx +28 -0
- package/src/app/components/command-menu/chat-switcher.tsx +25 -4
- package/src/app/components/rail/session-header.test.tsx +73 -2
- package/src/app/components/rail/session-header.tsx +20 -12
- package/src/app/components/rail/session-shell.tsx +10 -18
- package/src/app/components/session/subscription-account-indicator.test.ts +239 -0
- package/src/app/components/session/subscription-account-indicator.tsx +361 -0
- package/src/app/components/session/subscription-account-menu.tsx +21 -43
- package/src/app/components/session/subscription-account.test.ts +314 -0
- package/src/app/components/session/subscription-account.ts +354 -0
- package/src/app/lib/actions/actions-provider.tsx +11 -0
- package/src/app/lib/actions/actions.test.ts +59 -4
- package/src/app/lib/actions/chat-switcher.ts +73 -20
- package/src/app/lib/drive-connect-return.test.ts +183 -0
- package/src/app/lib/drive-connect-return.tsx +116 -0
- package/src/app/routes/session.tsx +12 -14
- package/src/app/routes/sessions-index.tsx +1 -0
- package/src/components/model-policy-picker-menu.tsx +25 -4
- package/src/components/model-policy-picker.tsx +2 -0
- package/src/components/session-mcp-capability-card.tsx +13 -4
- package/src/connection-service-presentation.ts +6 -1
- package/src/messages/en.ts +1 -1
- package/src/timeline/connector-logo-index.test.ts +46 -0
- package/src/timeline/connector-logo-index.ts +68 -0
- package/src/timeline-model.ts +6 -0
- package/src/ui/list-row.tsx +38 -10
- package/styles/compiled.css +13 -0
- package/dist/app/components/session/codex-account-indicator.d.ts +0 -9
- package/dist/app/components/session/model-account-indicator.d.ts +0 -10
- package/dist/app/components/session/model-account-indicator.js +0 -34
- package/dist/app/components/session/model-account-usage.d.ts +0 -8
- package/dist/app/components/session/model-account-usage.js +0 -8
- package/dist/chunk-2K27S6LK.js.map +0 -1
- package/dist/chunk-3SMJ2BIQ.js.map +0 -1
- package/dist/chunk-6PQBKMUL.js.map +0 -1
- package/dist/chunk-7H2D4VNU.js +0 -150
- package/dist/chunk-7H2D4VNU.js.map +0 -1
- package/dist/chunk-DNLXQUBX.js.map +0 -1
- package/dist/chunk-HCCSAECI.js +0 -132
- package/dist/chunk-HCCSAECI.js.map +0 -1
- package/dist/chunk-IWIMIRV3.js.map +0 -1
- package/dist/chunk-M77ZQE5T.js +0 -58
- package/dist/chunk-M77ZQE5T.js.map +0 -1
- package/dist/chunk-MM7OKOTE.js.map +0 -1
- package/dist/chunk-NPDL4W4Y.js.map +0 -1
- package/dist/chunk-NWSAF6P5.js.map +0 -1
- package/dist/chunk-OHG2UQ2O.js.map +0 -1
- package/dist/chunk-PQCFW2KT.js.map +0 -1
- package/dist/chunk-S6WJ6TUT.js.map +0 -1
- package/dist/chunk-ZWACUOU5.js.map +0 -1
- package/dist/session-realtime-JXRLPNUH.js.map +0 -1
- package/src/app/components/session/codex-account-indicator.tsx +0 -207
- package/src/app/components/session/model-account-indicator.tsx +0 -189
- package/src/app/components/session/model-account-usage.test.ts +0 -59
- package/src/app/components/session/model-account-usage.tsx +0 -89
- /package/dist/app/components/session/{codex-account-indicator.js.map → subscription-account-indicator.js.map} +0 -0
- /package/dist/app/{components/session/model-account-indicator.js.map → lib/drive-connect-return.js.map} +0 -0
- /package/dist/{app/components/session/model-account-usage.js.map → browser-viewer-VKIAULG7.js.map} +0 -0
- /package/dist/{browser-viewer-YQC6BFMS.js.map → chat-interactive-block-JGYSW4KB.js.map} +0 -0
- /package/dist/{chunk-WN2MIB4Q.js.map → chunk-22V2QCEM.js.map} +0 -0
- /package/dist/{chunk-SJPAKWWP.js.map → chunk-2BISI664.js.map} +0 -0
- /package/dist/{chunk-O5UOCMH4.js.map → chunk-2LPJVEWY.js.map} +0 -0
- /package/dist/{chunk-JI6WPLZB.js.map → chunk-2SBCOGQN.js.map} +0 -0
- /package/dist/{chunk-6JF7C3U3.js.map → chunk-2WERWWSS.js.map} +0 -0
- /package/dist/{chunk-4XKT4ENZ.js.map → chunk-2Y3QL3DA.js.map} +0 -0
- /package/dist/{chunk-KVMFT6FN.js.map → chunk-3FL3F4WF.js.map} +0 -0
- /package/dist/{chunk-4VJOZJDV.js.map → chunk-3JPQAIYJ.js.map} +0 -0
- /package/dist/{chunk-27EORKJ4.js.map → chunk-3N4LNBJF.js.map} +0 -0
- /package/dist/{chunk-7JZSFJHB.js.map → chunk-3OJU3RUR.js.map} +0 -0
- /package/dist/{chunk-NV5OYV3G.js.map → chunk-3U6K36QA.js.map} +0 -0
- /package/dist/{chunk-MDRLP5DO.js.map → chunk-3W7ROHN4.js.map} +0 -0
- /package/dist/{chunk-3MQM4ZOC.js.map → chunk-3Y6ZR2VN.js.map} +0 -0
- /package/dist/{chunk-HXZIX7MR.js.map → chunk-47AB65IO.js.map} +0 -0
- /package/dist/{chunk-DNYD7AUG.js.map → chunk-4BOLIZ7Y.js.map} +0 -0
- /package/dist/{chunk-4XO346BW.js.map → chunk-4FBJFQFU.js.map} +0 -0
- /package/dist/{chunk-DAQG3C4W.js.map → chunk-4HM6YDBX.js.map} +0 -0
- /package/dist/{chunk-BWKZEW6K.js.map → chunk-4T3E56NT.js.map} +0 -0
- /package/dist/{chunk-4PC7LIQK.js.map → chunk-4ZMUWRFF.js.map} +0 -0
- /package/dist/{chunk-O4AWXTZQ.js.map → chunk-52XIYULR.js.map} +0 -0
- /package/dist/{chunk-GXK4CUAB.js.map → chunk-5WQKTT5Z.js.map} +0 -0
- /package/dist/{chunk-MHIYYHCL.js.map → chunk-5ZAHAUWD.js.map} +0 -0
- /package/dist/{chunk-6N7W3TOV.js.map → chunk-63BPMTBM.js.map} +0 -0
- /package/dist/{chunk-R5YZ3ROM.js.map → chunk-63PQKTTT.js.map} +0 -0
- /package/dist/{chunk-WLZVXCPZ.js.map → chunk-6GO6WN22.js.map} +0 -0
- /package/dist/{chunk-XDCZBOEY.js.map → chunk-6LGBGPBU.js.map} +0 -0
- /package/dist/{chunk-D4QOZXPM.js.map → chunk-7ITDATTP.js.map} +0 -0
- /package/dist/{chunk-M5E3CKSE.js.map → chunk-7QWWE5XL.js.map} +0 -0
- /package/dist/{chunk-RABKQFTA.js.map → chunk-A2HCAMRH.js.map} +0 -0
- /package/dist/{chunk-6K3WNTRI.js.map → chunk-AODISQO6.js.map} +0 -0
- /package/dist/{chunk-C6JL6PBL.js.map → chunk-AQDRH6VF.js.map} +0 -0
- /package/dist/{chunk-72XEFLMD.js.map → chunk-ASWINLSW.js.map} +0 -0
- /package/dist/{chunk-FVCLVASD.js.map → chunk-B7ZKSROO.js.map} +0 -0
- /package/dist/{chunk-EURDMOXZ.js.map → chunk-BYJZUCOQ.js.map} +0 -0
- /package/dist/{chunk-BPD4IJBG.js.map → chunk-CG6CJMIS.js.map} +0 -0
- /package/dist/{chunk-B254JG72.js.map → chunk-CQX24PT7.js.map} +0 -0
- /package/dist/{chunk-HJTTDLF6.js.map → chunk-CY3NO4JN.js.map} +0 -0
- /package/dist/{chunk-OLUG4IFF.js.map → chunk-D2RLPRSG.js.map} +0 -0
- /package/dist/{chunk-74NIHMAT.js.map → chunk-D653JH6D.js.map} +0 -0
- /package/dist/{chunk-FMATVQFW.js.map → chunk-DA6EQDFR.js.map} +0 -0
- /package/dist/{chunk-2LUO22FR.js.map → chunk-DAI5CTQF.js.map} +0 -0
- /package/dist/{chunk-HTKVYEVB.js.map → chunk-DBM4ZXDN.js.map} +0 -0
- /package/dist/{chunk-MB2DTUEG.js.map → chunk-DNYKLU3K.js.map} +0 -0
- /package/dist/{chunk-26P7B46A.js.map → chunk-DXYARXK3.js.map} +0 -0
- /package/dist/{chunk-JQKURO3S.js.map → chunk-E4MQRQ6Z.js.map} +0 -0
- /package/dist/{chunk-KW53DBY7.js.map → chunk-EBW2E32G.js.map} +0 -0
- /package/dist/{chunk-O73DRA77.js.map → chunk-ENKBO7FC.js.map} +0 -0
- /package/dist/{chunk-32HA7DXJ.js.map → chunk-EQNGX77H.js.map} +0 -0
- /package/dist/{chunk-CA64OZLZ.js.map → chunk-FAPYRTG6.js.map} +0 -0
- /package/dist/{chunk-WWM7WVD2.js.map → chunk-GABFKHQE.js.map} +0 -0
- /package/dist/{chunk-JJ7VMIEQ.js.map → chunk-H2GTWX4D.js.map} +0 -0
- /package/dist/{chunk-LR7U3HCD.js.map → chunk-HPSATFLQ.js.map} +0 -0
- /package/dist/{chunk-TM2ZLY3Q.js.map → chunk-I56TUH3Z.js.map} +0 -0
- /package/dist/{chunk-ZZUKJ5HQ.js.map → chunk-IG2ERMSB.js.map} +0 -0
- /package/dist/{chunk-2SZ3KC5S.js.map → chunk-IMKIIS4Y.js.map} +0 -0
- /package/dist/{chunk-I57HZMMA.js.map → chunk-IXIE3H43.js.map} +0 -0
- /package/dist/{chunk-OWJD3V4V.js.map → chunk-J3YQ3554.js.map} +0 -0
- /package/dist/{chunk-BCFHMBMK.js.map → chunk-J5HZBHU4.js.map} +0 -0
- /package/dist/{chunk-UHMMRQGU.js.map → chunk-KD7GNHOP.js.map} +0 -0
- /package/dist/{chunk-RXMIXKB3.js.map → chunk-KIKAVZOW.js.map} +0 -0
- /package/dist/{chunk-X7Z4B5GK.js.map → chunk-KPL7EXS6.js.map} +0 -0
- /package/dist/{chunk-GTR2WUBA.js.map → chunk-KX6M5CJI.js.map} +0 -0
- /package/dist/{chunk-CYO5HL4C.js.map → chunk-KYL2BPS2.js.map} +0 -0
- /package/dist/{chunk-ZPZYYSHW.js.map → chunk-L7EAQGWN.js.map} +0 -0
- /package/dist/{chunk-QLDMF7MH.js.map → chunk-LC5HE7PZ.js.map} +0 -0
- /package/dist/{chunk-4ICPJZAB.js.map → chunk-LMYSYG6U.js.map} +0 -0
- /package/dist/{chunk-3ZZOE4SN.js.map → chunk-LOCDYMD6.js.map} +0 -0
- /package/dist/{chunk-DNWBLT4U.js.map → chunk-MASBMJ2M.js.map} +0 -0
- /package/dist/{chunk-6VITVQ23.js.map → chunk-MTYE2PPR.js.map} +0 -0
- /package/dist/{chunk-NZMQDUOD.js.map → chunk-MU6HYDNF.js.map} +0 -0
- /package/dist/{chunk-GMVKCEBG.js.map → chunk-MY6QEDZ2.js.map} +0 -0
- /package/dist/{chunk-SK57RWSA.js.map → chunk-MZGKQ5WV.js.map} +0 -0
- /package/dist/{chunk-HSQRYJ4P.js.map → chunk-N52SFH2K.js.map} +0 -0
- /package/dist/{chunk-CEQUNJJY.js.map → chunk-NDCP5TVN.js.map} +0 -0
- /package/dist/{chunk-MY6VZVCP.js.map → chunk-OAJX5CEL.js.map} +0 -0
- /package/dist/{chunk-BQWUXC55.js.map → chunk-OBBLVC2W.js.map} +0 -0
- /package/dist/{chunk-FH75NNLB.js.map → chunk-OZ5NAXCP.js.map} +0 -0
- /package/dist/{chunk-PEGNFZ3F.js.map → chunk-P5S777YI.js.map} +0 -0
- /package/dist/{chunk-LY6727IF.js.map → chunk-PPSVFNEA.js.map} +0 -0
- /package/dist/{chunk-K4FDZVMQ.js.map → chunk-PR42VIVY.js.map} +0 -0
- /package/dist/{chunk-I74J2UZ2.js.map → chunk-PWMZCW4H.js.map} +0 -0
- /package/dist/{chunk-6YDXUE5H.js.map → chunk-PYA2O3WS.js.map} +0 -0
- /package/dist/{chunk-GUIZDI5T.js.map → chunk-Q2PA4KZS.js.map} +0 -0
- /package/dist/{chunk-DZH2HTTB.js.map → chunk-R27GW5WV.js.map} +0 -0
- /package/dist/{chunk-7OIBLMDP.js.map → chunk-RAQISW42.js.map} +0 -0
- /package/dist/{chunk-CPKD2YGK.js.map → chunk-RNU5CUPI.js.map} +0 -0
- /package/dist/{chunk-467VRP4E.js.map → chunk-RO5YZQHZ.js.map} +0 -0
- /package/dist/{chunk-SSZROOOI.js.map → chunk-ROLXYGT5.js.map} +0 -0
- /package/dist/{chunk-F4B2YYCN.js.map → chunk-TAWFXRXB.js.map} +0 -0
- /package/dist/{chunk-G3FU2IF7.js.map → chunk-TB7UW5BB.js.map} +0 -0
- /package/dist/{chunk-NF6Q4XTN.js.map → chunk-TQF2I5SY.js.map} +0 -0
- /package/dist/{chunk-M7A226EQ.js.map → chunk-UL44R3W2.js.map} +0 -0
- /package/dist/{chunk-GTR5NLVP.js.map → chunk-VCRQPLKS.js.map} +0 -0
- /package/dist/{chunk-LG67ZNRU.js.map → chunk-WK2ZCTUF.js.map} +0 -0
- /package/dist/{chunk-XGE75VPK.js.map → chunk-WNARM3LY.js.map} +0 -0
- /package/dist/{chunk-RNBH5TSM.js.map → chunk-WQ2RTQYO.js.map} +0 -0
- /package/dist/{chunk-W57QFLQD.js.map → chunk-X6JIGNLI.js.map} +0 -0
- /package/dist/{chunk-CKA4SJRK.js.map → chunk-XIQDCQX7.js.map} +0 -0
- /package/dist/{chunk-AJ7PY4FJ.js.map → chunk-Y3GCG6CA.js.map} +0 -0
- /package/dist/{chunk-ZRB4M3GG.js.map → chunk-YC5KH7ZB.js.map} +0 -0
- /package/dist/{chunk-4RY64KQY.js.map → chunk-YJUKLLNP.js.map} +0 -0
- /package/dist/{chunk-24POWVUY.js.map → chunk-ZDJNRRVS.js.map} +0 -0
- /package/dist/{chunk-M7YEZR6X.js.map → chunk-ZITMDA4C.js.map} +0 -0
- /package/dist/{chat-interactive-block-Z22YHDRU.js.map → computer-viewer-6CRLWQHP.js.map} +0 -0
- /package/dist/{computer-viewer-BWVNDFTO.js.map → embedded-new-voice-KILV3RYM.js.map} +0 -0
- /package/dist/{embedded-new-voice-GBXSZ3TO.js.map → embedded-voice-GHDRLCFX.js.map} +0 -0
- /package/dist/{fleet-decision-row-35S3GAUN.js.map → fleet-decision-row-DQXRRBT7.js.map} +0 -0
- /package/dist/{embedded-voice-MGI7EK7C.js.map → model-policy-picker-menu-5ALKUJMR.js.map} +0 -0
- /package/dist/{platform-activity-row-ISMXR7NJ.js.map → platform-activity-row-227C764Z.js.map} +0 -0
- /package/dist/{queue-surface-implementation-ULW7DDJA.js.map → queue-surface-implementation-H3NOBXU5.js.map} +0 -0
- /package/dist/{model-policy-picker-menu-KP53N6UJ.js.map → sandbox-files-5FEOHUMD.js.map} +0 -0
- /package/dist/{sandbox-files-QYSD4XCZ.js.map → session-realtime-OHBMODNX.js.map} +0 -0
- /package/dist/{timeline-annotation-markers-OJYKHBEO.js.map → timeline-annotation-markers-NDHS7MCK.js.map} +0 -0
- /package/dist/{timeline-annotation-selection-6OAZLXFU.js.map → timeline-annotation-selection-DRQSTJOV.js.map} +0 -0
- /package/dist/{timeline-annotations-dialog-5M6DP5FX.js.map → timeline-annotations-dialog-G6J5ZJKN.js.map} +0 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** The catalog fields that name a connector's domains and logo. */
|
|
2
|
+
export type ConnectorLogoSource = {
|
|
3
|
+
providerDomain?: string | null | undefined;
|
|
4
|
+
mcpUrl?: string | null | undefined;
|
|
5
|
+
connectionRef?: {
|
|
6
|
+
providerDomain?: string | null | undefined;
|
|
7
|
+
} | null | undefined;
|
|
8
|
+
logoAssetPath?: string | null | undefined;
|
|
9
|
+
};
|
|
10
|
+
/** "WWW.Linear.app " → "linear.app". */
|
|
11
|
+
export declare function normalizeConnectorDomain(domain: string): string;
|
|
12
|
+
/**
|
|
13
|
+
* Every domain each catalog entry is known by, mapped to its logo URL. The
|
|
14
|
+
* provider's own domain is claimed first across the whole catalog, so another
|
|
15
|
+
* entry's server host never takes over a provider's logo.
|
|
16
|
+
*/
|
|
17
|
+
export declare function connectorLogoIndex(catalog: readonly ConnectorLogoSource[], logoUrl: (logoAssetPath: string | null | undefined) => string | null | undefined): ReadonlyMap<string, string>;
|
|
18
|
+
/** The logo for a connector domain from an index built by `connectorLogoIndex`. */
|
|
19
|
+
export declare function connectorLogo(index: ReadonlyMap<string, string>, domain: string | null | undefined): string | null;
|
package/dist/{timeline-annotation-markers-OJYKHBEO.js → timeline-annotation-markers-NDHS7MCK.js}
RENAMED
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
} from "./chunk-TXS65BB2.js";
|
|
24
24
|
import {
|
|
25
25
|
useOpenGeniText
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-ZEVJGMNB.js";
|
|
27
27
|
|
|
28
28
|
// src/components/timeline-annotation-markers.tsx
|
|
29
29
|
import { useLayoutEffect, useState } from "react";
|
|
@@ -173,4 +173,4 @@ export {
|
|
|
173
173
|
TimelineAnnotationMarkers,
|
|
174
174
|
timeline_annotation_markers_default as default
|
|
175
175
|
};
|
|
176
|
-
//# sourceMappingURL=timeline-annotation-markers-
|
|
176
|
+
//# sourceMappingURL=timeline-annotation-markers-NDHS7MCK.js.map
|
package/dist/{timeline-annotation-selection-6OAZLXFU.js → timeline-annotation-selection-DRQSTJOV.js}
RENAMED
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
} from "./chunk-XEA5BCMA.js";
|
|
18
18
|
import {
|
|
19
19
|
useOpenGeniText
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-ZEVJGMNB.js";
|
|
21
21
|
|
|
22
22
|
// src/components/timeline-annotation-selection.tsx
|
|
23
23
|
import { QuoteIcon } from "lucide-react";
|
|
@@ -201,4 +201,4 @@ export {
|
|
|
201
201
|
TimelineAnnotationSelection,
|
|
202
202
|
timeline_annotation_selection_default as default
|
|
203
203
|
};
|
|
204
|
-
//# sourceMappingURL=timeline-annotation-selection-
|
|
204
|
+
//# sourceMappingURL=timeline-annotation-selection-DRQSTJOV.js.map
|
package/dist/{timeline-annotations-dialog-5M6DP5FX.js → timeline-annotations-dialog-G6J5ZJKN.js}
RENAMED
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
AnnotationNoteField,
|
|
5
5
|
AnnotationNotePreview,
|
|
6
6
|
AnnotationQuoteSourceButton
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-LC5HE7PZ.js";
|
|
8
8
|
import {
|
|
9
9
|
cssEscapeAttribute
|
|
10
10
|
} from "./chunk-H3LIIAGE.js";
|
|
@@ -25,7 +25,7 @@ import {
|
|
|
25
25
|
import "./chunk-TXS65BB2.js";
|
|
26
26
|
import {
|
|
27
27
|
useOpenGeniText
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-ZEVJGMNB.js";
|
|
29
29
|
|
|
30
30
|
// src/components/timeline-annotations-dialog.tsx
|
|
31
31
|
import { XIcon } from "lucide-react";
|
|
@@ -280,4 +280,4 @@ export {
|
|
|
280
280
|
TimelineAnnotationsDialog,
|
|
281
281
|
timeline_annotations_dialog_default as default
|
|
282
282
|
};
|
|
283
|
-
//# sourceMappingURL=timeline-annotations-dialog-
|
|
283
|
+
//# sourceMappingURL=timeline-annotations-dialog-G6J5ZJKN.js.map
|
package/dist/timeline-model.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ export { clusterIsSettled, compactedLandmarkCount, durationBetween, flattenActiv
|
|
|
4
4
|
export type { ActivityGroup, ReadableWorkOptions, TurnGroup } from "./timeline/work-presentation.js";
|
|
5
5
|
export { timelineGroupContainsPresentedImage } from "./timeline/presented-image.js";
|
|
6
6
|
export { mcpToolLeaf, toolDisplayName } from "./timeline/tool-display-name.js";
|
|
7
|
+
export { connectorLogo, connectorLogoIndex, normalizeConnectorDomain, } from "./timeline/connector-logo-index.js";
|
|
8
|
+
export type { ConnectorLogoSource } from "./timeline/connector-logo-index.js";
|
|
7
9
|
export { BUILT_IN_TOOL_STEP_NAMES, builtInToolStep, builtInToolStepLabel, TOOL_STEP_IDS, toolStepLabel, toolStepPhase, } from "./timeline/tool-steps.js";
|
|
8
10
|
export type { ToolStepId, ToolStepPhase } from "./timeline/tool-steps.js";
|
|
9
11
|
export { rawTypeOf } from "./timeline/registry.js";
|
package/dist/timeline-model.js
CHANGED
|
@@ -3,7 +3,12 @@ import {
|
|
|
3
3
|
notificationPlainText,
|
|
4
4
|
parseNotificationInline,
|
|
5
5
|
parseNotificationText
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-PPSVFNEA.js";
|
|
7
|
+
import {
|
|
8
|
+
connectorLogo,
|
|
9
|
+
connectorLogoIndex,
|
|
10
|
+
normalizeConnectorDomain
|
|
11
|
+
} from "./chunk-GLCOKWLH.js";
|
|
7
12
|
import {
|
|
8
13
|
QUESTION_NAV_HIDDEN_PX,
|
|
9
14
|
QUESTION_NAV_MARGIN_PX,
|
|
@@ -168,6 +173,8 @@ export {
|
|
|
168
173
|
callStepPhase,
|
|
169
174
|
clusterIsSettled,
|
|
170
175
|
compactedLandmarkCount,
|
|
176
|
+
connectorLogo,
|
|
177
|
+
connectorLogoIndex,
|
|
171
178
|
createTurnSummaryContext,
|
|
172
179
|
defaultHumanInputFormMessages,
|
|
173
180
|
durationBetween,
|
|
@@ -190,6 +197,7 @@ export {
|
|
|
190
197
|
matchingQuoteInSource,
|
|
191
198
|
mcpToolLeaf,
|
|
192
199
|
namedAgentTitle,
|
|
200
|
+
normalizeConnectorDomain,
|
|
193
201
|
noticeDisplayText,
|
|
194
202
|
noticeIsResolvedApproval,
|
|
195
203
|
noticeTone,
|
package/dist/ui/list-row.js
CHANGED
package/dist/usage.js
CHANGED
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
summarizeUsage,
|
|
14
14
|
usagePercentLabel,
|
|
15
15
|
useUsage
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-RAQISW42.js";
|
|
17
17
|
import {
|
|
18
18
|
DEFAULT_ALLOWANCE_LABELS,
|
|
19
19
|
DEFAULT_SESSION_USAGE_LIMIT_LABELS,
|
|
@@ -30,7 +30,7 @@ import "./chunk-2KO2G3RI.js";
|
|
|
30
30
|
import "./chunk-CM7LVUKC.js";
|
|
31
31
|
import "./chunk-TVQCDDSZ.js";
|
|
32
32
|
import "./chunk-TXS65BB2.js";
|
|
33
|
-
import "./chunk-
|
|
33
|
+
import "./chunk-ZEVJGMNB.js";
|
|
34
34
|
export {
|
|
35
35
|
DEFAULT_ALLOWANCE_LABELS,
|
|
36
36
|
DEFAULT_SESSION_USAGE_LIMIT_LABELS,
|
package/dist/workbench.js
CHANGED
|
@@ -6,21 +6,21 @@ import {
|
|
|
6
6
|
enableCodeEditor
|
|
7
7
|
} from "./chunk-TOTNIUZK.js";
|
|
8
8
|
import "./chunk-YSRBFJMQ.js";
|
|
9
|
-
import "./chunk-
|
|
9
|
+
import "./chunk-2BISI664.js";
|
|
10
10
|
import {
|
|
11
11
|
enableDesktopViewer
|
|
12
12
|
} from "./chunk-QIOARE4I.js";
|
|
13
|
-
import "./chunk-
|
|
13
|
+
import "./chunk-22V2QCEM.js";
|
|
14
14
|
import "./chunk-ZUWF4NF7.js";
|
|
15
15
|
import {
|
|
16
16
|
enableSandboxTerminal
|
|
17
17
|
} from "./chunk-FPS7ARET.js";
|
|
18
|
-
import "./chunk-
|
|
18
|
+
import "./chunk-4FBJFQFU.js";
|
|
19
19
|
import "./chunk-QV3DJVRZ.js";
|
|
20
20
|
import "./chunk-TNEZNMSN.js";
|
|
21
21
|
import "./chunk-5I4VRWBB.js";
|
|
22
22
|
import "./chunk-TXS65BB2.js";
|
|
23
|
-
import "./chunk-
|
|
23
|
+
import "./chunk-ZEVJGMNB.js";
|
|
24
24
|
|
|
25
25
|
// src/workbench.ts
|
|
26
26
|
function enableWorkbench() {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opengeni/react",
|
|
3
|
-
"version": "4.6.
|
|
3
|
+
"version": "4.6.2-canary.39854174564001",
|
|
4
4
|
"description": "React hooks and styled components for Opengeni: live session streaming, chat composer, message timeline, session status, and fleet views — token-themed (CSS variables), dark-first, built on Tailwind v4 + Radix + Motion.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -251,9 +251,9 @@
|
|
|
251
251
|
"@dnd-kit/utilities": "3.2.2",
|
|
252
252
|
"@fontsource-variable/noto-sans-arabic": "5.2.10",
|
|
253
253
|
"@fontsource-variable/noto-sans-jp": "5.2.10",
|
|
254
|
-
"@opengeni/connect": "4.6.
|
|
255
|
-
"@opengeni/contracts": "4.6.
|
|
256
|
-
"@opengeni/sdk": "4.6.
|
|
254
|
+
"@opengeni/connect": "4.6.2-canary.39854174564001",
|
|
255
|
+
"@opengeni/contracts": "4.6.2-canary.39854174564001",
|
|
256
|
+
"@opengeni/sdk": "4.6.2-canary.39854174564001",
|
|
257
257
|
"@tanstack/react-virtual": "^3.14.11",
|
|
258
258
|
"class-variance-authority": "^0.7.1",
|
|
259
259
|
"clsx": "^2.1.1",
|
|
@@ -34,6 +34,7 @@ export function nativeCatalogProviderId(
|
|
|
34
34
|
if (item.kind !== "mcp") return null;
|
|
35
35
|
const url = item.mcpUrl ?? item.endpointUrl;
|
|
36
36
|
if (url === "https://gmailmcp.googleapis.com/mcp/v1") return "gmail";
|
|
37
|
+
if (url === "https://drivemcp.googleapis.com/mcp/v1") return "google-drive";
|
|
37
38
|
if (url === "https://mcp.slack.com/mcp") return "slack-personal";
|
|
38
39
|
return null;
|
|
39
40
|
}
|
|
@@ -270,3 +270,70 @@ describe("shared capability connection lifecycle", () => {
|
|
|
270
270
|
});
|
|
271
271
|
});
|
|
272
272
|
});
|
|
273
|
+
|
|
274
|
+
test("Drive actions use the dedicated Connect attempt and never generic OAuth or early enable", async () => {
|
|
275
|
+
const originalWindow = Object.getOwnPropertyDescriptor(globalThis, "window");
|
|
276
|
+
const saved = new Map<string, string>();
|
|
277
|
+
Object.defineProperty(globalThis, "window", {
|
|
278
|
+
configurable: true,
|
|
279
|
+
value: {
|
|
280
|
+
location: { href: "https://app.example/capabilities" },
|
|
281
|
+
sessionStorage: {
|
|
282
|
+
setItem: (key: string, value: string) => saved.set(key, value),
|
|
283
|
+
getItem: (key: string) => saved.get(key) ?? null,
|
|
284
|
+
removeItem: (key: string) => saved.delete(key),
|
|
285
|
+
},
|
|
286
|
+
},
|
|
287
|
+
});
|
|
288
|
+
try {
|
|
289
|
+
const drive = CapabilityCatalogItem.parse({
|
|
290
|
+
...item,
|
|
291
|
+
id: "drive",
|
|
292
|
+
authKind: "oauth2",
|
|
293
|
+
mcpUrl: "https://drivemcp.googleapis.com/mcp/v1",
|
|
294
|
+
providerDomain: "drivemcp.googleapis.com",
|
|
295
|
+
});
|
|
296
|
+
const beginConnect = mock(async () => ({
|
|
297
|
+
id: "drive-attempt",
|
|
298
|
+
revision: 1,
|
|
299
|
+
state: "credential_input",
|
|
300
|
+
}));
|
|
301
|
+
const advanceConnectAttempt = mock(async () => ({
|
|
302
|
+
id: "drive-attempt",
|
|
303
|
+
nextAction: { type: "authorize", url: "https://accounts.google.com/consent" },
|
|
304
|
+
}));
|
|
305
|
+
const startConnectionOAuth = mock(async () => {
|
|
306
|
+
throw new Error("Generic OAuth must not run");
|
|
307
|
+
});
|
|
308
|
+
const h = harness({
|
|
309
|
+
beginConnect,
|
|
310
|
+
connectTransport: () => ({ advance: advanceConnectAttempt }),
|
|
311
|
+
startConnectionOAuth,
|
|
312
|
+
});
|
|
313
|
+
await performCapabilityAction(
|
|
314
|
+
{ ...h.options, item: drive, connectReturnUrl: "https://app.example/capabilities" },
|
|
315
|
+
{
|
|
316
|
+
type: "reconnect_oauth",
|
|
317
|
+
item: drive,
|
|
318
|
+
ownership: "personal",
|
|
319
|
+
connectionId: "existing",
|
|
320
|
+
connectionWorkspaceId: "account-workspace",
|
|
321
|
+
},
|
|
322
|
+
);
|
|
323
|
+
expect(beginConnect).toHaveBeenCalledWith(
|
|
324
|
+
"account-workspace",
|
|
325
|
+
expect.objectContaining({
|
|
326
|
+
providerId: "google-drive",
|
|
327
|
+
reconnectAccountId: "existing",
|
|
328
|
+
ownership: "personal",
|
|
329
|
+
}),
|
|
330
|
+
);
|
|
331
|
+
expect(startConnectionOAuth).not.toHaveBeenCalled();
|
|
332
|
+
expect(h.enableCapability).not.toHaveBeenCalled();
|
|
333
|
+
expect(h.options.redirect).toHaveBeenCalledWith("https://accounts.google.com/consent");
|
|
334
|
+
expect(saved.size).toBe(1);
|
|
335
|
+
} finally {
|
|
336
|
+
if (originalWindow) Object.defineProperty(globalThis, "window", originalWindow);
|
|
337
|
+
else Reflect.deleteProperty(globalThis, "window");
|
|
338
|
+
}
|
|
339
|
+
});
|
|
@@ -15,6 +15,7 @@ import {
|
|
|
15
15
|
type IntegrationClass,
|
|
16
16
|
type IntegrationConnectMethod,
|
|
17
17
|
} from "../../lib/integration-connect-analytics";
|
|
18
|
+
import { beginDriveConnect, DRIVE_MCP_URL } from "../../lib/drive-connect-return";
|
|
18
19
|
import { startMcpOAuthWithTimeout } from "../../lib/mcp-oauth";
|
|
19
20
|
import { toast } from "../../lib/toast";
|
|
20
21
|
|
|
@@ -132,6 +133,33 @@ async function performCapabilityActionUntracked(
|
|
|
132
133
|
);
|
|
133
134
|
}
|
|
134
135
|
|
|
136
|
+
// The built-in Drive action uses a server-owned Connect provider identity.
|
|
137
|
+
// Custom MCP requests continue through the generic OAuth route below.
|
|
138
|
+
if (
|
|
139
|
+
["oauth", "add_oauth_account", "reconnect_oauth"].includes(action.type) &&
|
|
140
|
+
(item.mcpUrl ?? item.endpointUrl) === DRIVE_MCP_URL
|
|
141
|
+
) {
|
|
142
|
+
if (!("ownership" in action) || action.ownership !== "personal")
|
|
143
|
+
throw new Error("Google Drive connections must be personal-owned.");
|
|
144
|
+
const persisted = await persistIfRegistry(item, registry);
|
|
145
|
+
const target = new URL(returnPathFor(persisted.id), connectReturnUrl ?? window.location.href);
|
|
146
|
+
const authorizationUrl = await beginDriveConnect({
|
|
147
|
+
client,
|
|
148
|
+
workspaceId,
|
|
149
|
+
itemId: persisted.id,
|
|
150
|
+
returnUrl: target.toString(),
|
|
151
|
+
...(action.type === "reconnect_oauth" && action.connectionId
|
|
152
|
+
? { reconnectAccountId: action.connectionId }
|
|
153
|
+
: {}),
|
|
154
|
+
...(action.type === "reconnect_oauth" && action.connectionWorkspaceId
|
|
155
|
+
? { connectionWorkspaceId: action.connectionWorkspaceId }
|
|
156
|
+
: {}),
|
|
157
|
+
storage: window.sessionStorage,
|
|
158
|
+
});
|
|
159
|
+
redirect(authorizationUrl);
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
|
|
135
163
|
if (action.type === "install_skill") {
|
|
136
164
|
if (!canManageSkills) {
|
|
137
165
|
throw new Error("You need permission to manage workspace documents to install Skills.");
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Control (and the chat being switched to) behaves exactly as without it.
|
|
6
6
|
*/
|
|
7
7
|
import { MessageSquareIcon, PinIcon, type LucideIcon } from "lucide-react";
|
|
8
|
-
import { useEffect, useRef } from "react";
|
|
8
|
+
import { Fragment, useEffect, useRef } from "react";
|
|
9
9
|
import { createPortal } from "react-dom";
|
|
10
10
|
import type { ChatRecord } from "../../lib/actions/chat-directory";
|
|
11
11
|
import { readChatDirectory, useChatDirectoryVersion } from "../../lib/actions/chat-directory";
|
|
@@ -31,11 +31,13 @@ export default function ChatSwitcher(props: {
|
|
|
31
31
|
currentChatId: string | null;
|
|
32
32
|
platform: ChordPlatform;
|
|
33
33
|
onHover(index: number): void;
|
|
34
|
+
/** The app learned about more chats; the list may grow at its end. */
|
|
35
|
+
onDirectoryChange(): void;
|
|
34
36
|
onPick(index: number): void;
|
|
35
37
|
onDismiss(): void;
|
|
36
38
|
}) {
|
|
37
39
|
const listRef = useRef<HTMLDivElement>(null);
|
|
38
|
-
const { index, visible } = props.state;
|
|
40
|
+
const { index, visible, viewed } = props.state;
|
|
39
41
|
// Read statuses as soon as Control+Tab is pressed, before the list shows.
|
|
40
42
|
useChatStatusRefresh({
|
|
41
43
|
subjectId: props.subjectId,
|
|
@@ -43,7 +45,12 @@ export default function ChatSwitcher(props: {
|
|
|
43
45
|
ids: props.state.ids,
|
|
44
46
|
active: true,
|
|
45
47
|
});
|
|
46
|
-
useChatDirectoryVersion(props.subjectId);
|
|
48
|
+
const version = useChatDirectoryVersion(props.subjectId);
|
|
49
|
+
const onDirectoryChange = useRef(props.onDirectoryChange);
|
|
50
|
+
onDirectoryChange.current = props.onDirectoryChange;
|
|
51
|
+
useEffect(() => {
|
|
52
|
+
onDirectoryChange.current();
|
|
53
|
+
}, [version]);
|
|
47
54
|
useEffect(() => {
|
|
48
55
|
if (!visible) return;
|
|
49
56
|
listRef.current
|
|
@@ -100,7 +107,7 @@ export default function ChatSwitcher(props: {
|
|
|
100
107
|
record && record.workspaceId !== props.workspaceId
|
|
101
108
|
? (workspaceNames.get(record.workspaceId) ?? null)
|
|
102
109
|
: null;
|
|
103
|
-
|
|
110
|
+
const row = (
|
|
104
111
|
<div
|
|
105
112
|
key={id}
|
|
106
113
|
id={`og-chat-switcher-${position}`}
|
|
@@ -135,6 +142,20 @@ export default function ChatSwitcher(props: {
|
|
|
135
142
|
) : null}
|
|
136
143
|
</div>
|
|
137
144
|
);
|
|
145
|
+
// Past the chats the person opened, the list goes on by activity.
|
|
146
|
+
return position === viewed && viewed > 0 ? (
|
|
147
|
+
<Fragment key={id}>
|
|
148
|
+
<div
|
|
149
|
+
role="presentation"
|
|
150
|
+
className="mt-1 border-t border-border px-2.5 pt-2.5 pb-1 text-xs leading-4.5 font-medium text-fg-muted"
|
|
151
|
+
>
|
|
152
|
+
Recently active
|
|
153
|
+
</div>
|
|
154
|
+
{row}
|
|
155
|
+
</Fragment>
|
|
156
|
+
) : (
|
|
157
|
+
row
|
|
158
|
+
);
|
|
138
159
|
})}
|
|
139
160
|
</div>
|
|
140
161
|
<div className="flex shrink-0 items-center gap-4 border-t border-border px-4 py-2 text-xs text-fg-muted">
|
|
@@ -316,8 +316,11 @@ test("names the model cleanly for org- and workspace-connected copies alike", as
|
|
|
316
316
|
const text = container.querySelector("header")?.textContent ?? "";
|
|
317
317
|
expect(text).toContain("Opus 5.5");
|
|
318
318
|
expect(text).not.toContain("claude-subscription");
|
|
319
|
-
|
|
320
|
-
|
|
319
|
+
const mark = container.querySelector(
|
|
320
|
+
'[data-testid="billing-class-icon-claude_subscription"]',
|
|
321
|
+
);
|
|
322
|
+
expect(mark).not.toBeNull();
|
|
323
|
+
seen.push(mark?.parentElement?.textContent ?? "");
|
|
321
324
|
}
|
|
322
325
|
expect(seen[0]).toBe(seen[1]);
|
|
323
326
|
} finally {
|
|
@@ -325,3 +328,71 @@ test("names the model cleanly for org- and workspace-connected copies alike", as
|
|
|
325
328
|
container.remove();
|
|
326
329
|
}
|
|
327
330
|
});
|
|
331
|
+
|
|
332
|
+
// Bendik's report: a Claude chat showed a static Claude logo where a Codex chat
|
|
333
|
+
// shows its account control. Every subscription rail gets the same control.
|
|
334
|
+
test.each([
|
|
335
|
+
["codex_subscription", "codex/gpt-6-astra"],
|
|
336
|
+
["claude_subscription", "organization-claude-subscription/claude-opus-5-5"],
|
|
337
|
+
["supergrok_subscription", "supergrok/grok-4.6"],
|
|
338
|
+
] as const)("the %s header shows the account control", async (billingClass, model) => {
|
|
339
|
+
const container = document.createElement("div");
|
|
340
|
+
document.body.append(container);
|
|
341
|
+
const root = createRoot(container);
|
|
342
|
+
try {
|
|
343
|
+
await act(async () =>
|
|
344
|
+
root.render(
|
|
345
|
+
<SessionHeader
|
|
346
|
+
session={{ ...session, model }}
|
|
347
|
+
ancestors={[]}
|
|
348
|
+
connectionState="live"
|
|
349
|
+
status="idle"
|
|
350
|
+
keyAuthRequired={false}
|
|
351
|
+
onForgetAccessKey={() => undefined}
|
|
352
|
+
inspectorOpen={false}
|
|
353
|
+
onToggleInspector={() => undefined}
|
|
354
|
+
onRename={async () => null}
|
|
355
|
+
onPin={async () => null}
|
|
356
|
+
billingClass={billingClass}
|
|
357
|
+
accountSlot={<button type="button" data-testid="account-control" />}
|
|
358
|
+
/>,
|
|
359
|
+
),
|
|
360
|
+
);
|
|
361
|
+
expect(container.querySelector('[data-testid="account-control"]')).not.toBeNull();
|
|
362
|
+
expect(container.querySelector("[data-model-vendor]")).toBeNull();
|
|
363
|
+
} finally {
|
|
364
|
+
await act(async () => root.unmount());
|
|
365
|
+
container.remove();
|
|
366
|
+
}
|
|
367
|
+
});
|
|
368
|
+
|
|
369
|
+
test("other payment rails keep the maker's logo and never show an account control", async () => {
|
|
370
|
+
const container = document.createElement("div");
|
|
371
|
+
document.body.append(container);
|
|
372
|
+
const root = createRoot(container);
|
|
373
|
+
try {
|
|
374
|
+
await act(async () =>
|
|
375
|
+
root.render(
|
|
376
|
+
<SessionHeader
|
|
377
|
+
session={{ ...session, model: "opper/aws/claude-opus-5-5" }}
|
|
378
|
+
ancestors={[]}
|
|
379
|
+
connectionState="live"
|
|
380
|
+
status="idle"
|
|
381
|
+
keyAuthRequired={false}
|
|
382
|
+
onForgetAccessKey={() => undefined}
|
|
383
|
+
inspectorOpen={false}
|
|
384
|
+
onToggleInspector={() => undefined}
|
|
385
|
+
onRename={async () => null}
|
|
386
|
+
onPin={async () => null}
|
|
387
|
+
billingClass="opengeni_credits"
|
|
388
|
+
accountSlot={<button type="button" data-testid="account-control" />}
|
|
389
|
+
/>,
|
|
390
|
+
),
|
|
391
|
+
);
|
|
392
|
+
expect(container.querySelector('[data-testid="account-control"]')).toBeNull();
|
|
393
|
+
expect(container.querySelector('[data-model-vendor="anthropic"]')).not.toBeNull();
|
|
394
|
+
} finally {
|
|
395
|
+
await act(async () => root.unmount());
|
|
396
|
+
container.remove();
|
|
397
|
+
}
|
|
398
|
+
});
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
// (breadcrumb → title) on the left and the action cluster on the right
|
|
5
5
|
// (provider+model·effort·speed, sandbox, pin, connection, status, panel).
|
|
6
6
|
// The live children that need their own hooks — the sandbox switcher and the
|
|
7
|
-
//
|
|
7
|
+
// subscription account control — arrive as slots so the whole bar can be rendered
|
|
8
8
|
// (and screenshotted) in isolation. `CanvasTopStrip` in session-shell owns the
|
|
9
9
|
// data wiring and passes the real slots.
|
|
10
10
|
import { t } from "../../lib/console-text";
|
|
@@ -87,6 +87,12 @@ import type { LatencyMode, Session } from "../../types";
|
|
|
87
87
|
import { usePage } from "../../lib/navigation";
|
|
88
88
|
import { useUiEventTarget } from "../../lib/ui-events";
|
|
89
89
|
|
|
90
|
+
const SUBSCRIPTION_RAILS: ReadonlySet<BillingClass> = new Set([
|
|
91
|
+
"codex_subscription",
|
|
92
|
+
"claude_subscription",
|
|
93
|
+
"supergrok_subscription",
|
|
94
|
+
]);
|
|
95
|
+
|
|
90
96
|
export function SessionHeader({
|
|
91
97
|
session,
|
|
92
98
|
ancestors,
|
|
@@ -106,7 +112,7 @@ export function SessionHeader({
|
|
|
106
112
|
adminAccess,
|
|
107
113
|
onOpenUsageLimit,
|
|
108
114
|
sandboxSlot,
|
|
109
|
-
|
|
115
|
+
accountSlot,
|
|
110
116
|
accessSlot,
|
|
111
117
|
leading,
|
|
112
118
|
lastStartedModel,
|
|
@@ -156,10 +162,11 @@ export function SessionHeader({
|
|
|
156
162
|
/** The "Run on <machine>" control — a live component in production. */
|
|
157
163
|
sandboxSlot?: ReactNode | undefined;
|
|
158
164
|
/**
|
|
159
|
-
* Replaces the static provider mark when the session
|
|
160
|
-
*
|
|
165
|
+
* Replaces the static provider mark when the session runs on a subscription
|
|
166
|
+
* (Codex, Claude, SuperGrok): the same mark, clickable for the account and
|
|
167
|
+
* its usage. Absent for other payment rails.
|
|
161
168
|
*/
|
|
162
|
-
|
|
169
|
+
accountSlot?: ReactNode | undefined;
|
|
163
170
|
/** Compact session access state/menu, lazy-mounted by the route shell. */
|
|
164
171
|
accessSlot?: ReactNode | undefined;
|
|
165
172
|
/** Leading control (the mobile hamburger); absent on desktop. */
|
|
@@ -172,7 +179,7 @@ export function SessionHeader({
|
|
|
172
179
|
lastStartedModel?: string | undefined;
|
|
173
180
|
lastStartedReasoningEffort?: IntelligenceEffort | undefined;
|
|
174
181
|
lastStartedLatencyMode?: LatencyMode | undefined;
|
|
175
|
-
/** Billing rail:
|
|
182
|
+
/** Billing rail: subscription account chip, or the mark for makers without a logo. */
|
|
176
183
|
billingClass?: BillingClass | undefined;
|
|
177
184
|
/** Product model label (e.g. GPT-5.6 Luna). */
|
|
178
185
|
modelLabel?: string | undefined;
|
|
@@ -206,9 +213,10 @@ export function SessionHeader({
|
|
|
206
213
|
const resolvedModel = modelLabel?.trim() || modelDisplayName(modelId);
|
|
207
214
|
const displayEffort: IntelligenceEffort = lastStartedReasoningEffort ?? session.reasoningEffort;
|
|
208
215
|
const displayLatency: LatencyMode = lastStartedLatencyMode ?? session.latencyMode;
|
|
209
|
-
//
|
|
210
|
-
//
|
|
211
|
-
|
|
216
|
+
// Subscription rails → clickable account chip, the same for every provider.
|
|
217
|
+
// Other rails → static provider icon only (never invent a text
|
|
218
|
+
// "Opengeni"/"BYOK" word). Don't key off `accountSlot != null`.
|
|
219
|
+
const isSubscriptionRail = SUBSCRIPTION_RAILS.has(resolvedBilling);
|
|
212
220
|
const policyBits = [
|
|
213
221
|
resolvedModel,
|
|
214
222
|
labelEffort(displayEffort),
|
|
@@ -240,10 +248,10 @@ export function SessionHeader({
|
|
|
240
248
|
uiEvents.addEventListener(RENAME_CURRENT_CHAT_EVENT, start);
|
|
241
249
|
return () => uiEvents.removeEventListener(RENAME_CURRENT_CHAT_EVENT, start);
|
|
242
250
|
}, [uiEvents, startRenaming]);
|
|
243
|
-
const providerControl =
|
|
244
|
-
(
|
|
251
|
+
const providerControl = isSubscriptionRail ? (
|
|
252
|
+
(accountSlot ?? (
|
|
245
253
|
<BillingClassMark
|
|
246
|
-
billingClass=
|
|
254
|
+
billingClass={resolvedBilling}
|
|
247
255
|
className="size-3.5 shrink-0 text-fg-muted"
|
|
248
256
|
aria-label=""
|
|
249
257
|
/>
|
|
@@ -51,8 +51,8 @@ import {
|
|
|
51
51
|
SessionComputeIndicator,
|
|
52
52
|
sessionSupportsFleetSwitching,
|
|
53
53
|
} from "../session/sandbox-switcher";
|
|
54
|
-
import {
|
|
55
|
-
import {
|
|
54
|
+
import { SubscriptionAccountIndicator } from "../session/subscription-account-indicator";
|
|
55
|
+
import { subscriptionAccountProvider } from "../session/subscription-account";
|
|
56
56
|
import { PrivateSessionIndicator } from "../session/private-session-indicator";
|
|
57
57
|
import { Button } from "../../../ui/button";
|
|
58
58
|
import { Sheet, SheetContent, SheetDescription, SheetTitle } from "../../../ui/sheet";
|
|
@@ -61,7 +61,6 @@ import { Link, useNavigate, useRouterState } from "../../lib/navigation";
|
|
|
61
61
|
import { useWorkspaceModelCatalog } from "../../lib/use-workspace-model-catalog";
|
|
62
62
|
import { useAppContext } from "../../app-context";
|
|
63
63
|
import { isPersonalWorkspace } from "../../lib/managed-self-context";
|
|
64
|
-
import { isCodexProductModel } from "../../lib/session-model";
|
|
65
64
|
import { isIntelligenceEffort } from "../../lib/session-tools";
|
|
66
65
|
import { useSessionRepliesMute } from "../../lib/inbox";
|
|
67
66
|
import { useSessionAdminAccess } from "../session/session-admin-access";
|
|
@@ -548,9 +547,10 @@ function SessionRouteHeader({
|
|
|
548
547
|
const catalog = useWorkspaceModelCatalog(session.workspaceId);
|
|
549
548
|
const selectedRow = findPickerRow(catalog.rows, displayModelId);
|
|
550
549
|
const policyLoading = lastStarted.loading || catalog.loading;
|
|
551
|
-
const
|
|
552
|
-
|
|
553
|
-
|
|
550
|
+
const accountProvider = subscriptionAccountProvider(
|
|
551
|
+
displayModelId,
|
|
552
|
+
selectedRow?.catalog.credentialSource,
|
|
553
|
+
);
|
|
554
554
|
const repliesMute = useSessionRepliesMute(session);
|
|
555
555
|
const sessionAdminAccess = useSessionAdminAccess(session);
|
|
556
556
|
const adminAccess = useSessionUiFeature("adminAccess") ? sessionAdminAccess : null;
|
|
@@ -660,24 +660,16 @@ function SessionRouteHeader({
|
|
|
660
660
|
<SessionComputeIndicator sessionId={session.id} sandboxBackend={session.sandboxBackend} />
|
|
661
661
|
) : null
|
|
662
662
|
}
|
|
663
|
-
|
|
664
|
-
policyReady &&
|
|
665
|
-
<
|
|
666
|
-
workspaceId={session.workspaceId}
|
|
667
|
-
sessionId={session.id}
|
|
668
|
-
model={displayModelId}
|
|
669
|
-
modelReady={policyReady}
|
|
670
|
-
events={events}
|
|
671
|
-
/>
|
|
672
|
-
) : policyReady && subscriptionProvider ? (
|
|
673
|
-
<ModelAccountIndicator
|
|
663
|
+
accountSlot={
|
|
664
|
+
policyReady && accountProvider ? (
|
|
665
|
+
<SubscriptionAccountIndicator
|
|
674
666
|
workspaceId={session.workspaceId}
|
|
675
667
|
sessionId={session.id}
|
|
676
668
|
organizationId={
|
|
677
669
|
context.workspaces.find((candidate) => candidate.id === session.workspaceId)
|
|
678
670
|
?.accountId ?? null
|
|
679
671
|
}
|
|
680
|
-
provider={
|
|
672
|
+
provider={accountProvider}
|
|
681
673
|
servingTurnId={lastStarted.policy?.turnId}
|
|
682
674
|
events={events}
|
|
683
675
|
/>
|