@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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
TimelineAnnotationsChip
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-LOCDYMD6.js";
|
|
5
5
|
import {
|
|
6
6
|
Actions,
|
|
7
7
|
AlternateSendButton,
|
|
@@ -26,7 +26,7 @@ import {
|
|
|
26
26
|
StopButton,
|
|
27
27
|
Surface,
|
|
28
28
|
useChatComposerController
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-DNYKLU3K.js";
|
|
30
30
|
|
|
31
31
|
// src/components/chat-composer.tsx
|
|
32
32
|
import { LayoutGroup, motion } from "motion/react";
|
|
@@ -191,4 +191,4 @@ function ChatComposer({
|
|
|
191
191
|
export {
|
|
192
192
|
ChatComposer
|
|
193
193
|
};
|
|
194
|
-
//# sourceMappingURL=chunk-
|
|
194
|
+
//# sourceMappingURL=chunk-TAWFXRXB.js.map
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
ArtifactButton
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-63BPMTBM.js";
|
|
5
5
|
import {
|
|
6
6
|
cn
|
|
7
7
|
} from "./chunk-TXS65BB2.js";
|
|
8
8
|
import {
|
|
9
9
|
useOpenGeniText
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-ZEVJGMNB.js";
|
|
11
11
|
|
|
12
12
|
// src/components/artifacts/artifact-surface.tsx
|
|
13
13
|
import {
|
|
@@ -336,4 +336,4 @@ export {
|
|
|
336
336
|
asEditableArtifactError,
|
|
337
337
|
EditableArtifactDownloadButton
|
|
338
338
|
};
|
|
339
|
-
//# sourceMappingURL=chunk-
|
|
339
|
+
//# sourceMappingURL=chunk-TB7UW5BB.js.map
|
|
@@ -4,14 +4,14 @@ import {
|
|
|
4
4
|
} from "./chunk-HUKUDAIP.js";
|
|
5
5
|
import {
|
|
6
6
|
composerConnectorOptions
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-3OJU3RUR.js";
|
|
8
8
|
import {
|
|
9
9
|
capabilityReconnectPlan,
|
|
10
10
|
connectionHealth
|
|
11
11
|
} from "./chunk-22NENBA3.js";
|
|
12
12
|
import {
|
|
13
13
|
ComposerMobilePlus
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-KX6M5CJI.js";
|
|
15
15
|
import {
|
|
16
16
|
hasWorkspacePermission,
|
|
17
17
|
isWorkspacePermissionDenied
|
|
@@ -264,4 +264,4 @@ function WorkspaceComposerPlus(props) {
|
|
|
264
264
|
export {
|
|
265
265
|
WorkspaceComposerPlus
|
|
266
266
|
};
|
|
267
|
-
//# sourceMappingURL=chunk-
|
|
267
|
+
//# sourceMappingURL=chunk-TQF2I5SY.js.map
|
|
@@ -334,6 +334,7 @@ function ListRow({
|
|
|
334
334
|
const gridded = !catalog;
|
|
335
335
|
const hasColumns = gridded && columns.length > 0;
|
|
336
336
|
const expandable = !table && expanded !== void 0;
|
|
337
|
+
const singleLine = !catalog;
|
|
337
338
|
const presentFacts = columns.filter((column) => cells[column.id] != null);
|
|
338
339
|
const facts = [
|
|
339
340
|
...presentFacts.filter((column) => column.leadsWhenFolded),
|
|
@@ -346,6 +347,7 @@ function ListRow({
|
|
|
346
347
|
{
|
|
347
348
|
order,
|
|
348
349
|
keep: leads,
|
|
350
|
+
oneLine: singleLine,
|
|
349
351
|
className: cn(
|
|
350
352
|
hasColumns && "@[640px]/list:hidden",
|
|
351
353
|
// A phone-width line has room for one folded fact (none next to a
|
|
@@ -368,16 +370,21 @@ function ListRow({
|
|
|
368
370
|
...facts.slice(0, leadingFacts).map((column, index) => foldedFact(column, index, index, true)),
|
|
369
371
|
...metaItems.map((item, index) => {
|
|
370
372
|
const last = index === metaItems.length - 1;
|
|
371
|
-
return (
|
|
372
|
-
|
|
373
|
-
|
|
373
|
+
return /* @__PURE__ */ jsx(
|
|
374
|
+
MetaPart,
|
|
375
|
+
{
|
|
376
|
+
order: leadingFacts + index,
|
|
377
|
+
keep: !last,
|
|
378
|
+
oneLine: singleLine,
|
|
379
|
+
children: item
|
|
380
|
+
},
|
|
381
|
+
`meta-${index}`
|
|
374
382
|
);
|
|
375
383
|
}),
|
|
376
384
|
...facts.slice(leadingFacts).map(
|
|
377
385
|
(column, index) => foldedFact(column, leadingFacts + index, leadingFacts + metaItems.length + index, false)
|
|
378
386
|
)
|
|
379
387
|
];
|
|
380
|
-
const singleLine = !catalog;
|
|
381
388
|
const statusPart = status ? /* @__PURE__ */ jsx(MetaPart, { keep: true, className: "@[480px]/list:hidden", children: status }, "status") : null;
|
|
382
389
|
const narrowStatePart = singleLine && narrowState ? /* @__PURE__ */ jsx(
|
|
383
390
|
MetaPart,
|
|
@@ -558,16 +565,25 @@ function ListRow({
|
|
|
558
565
|
children: [
|
|
559
566
|
secondary && !(disabled && disabledReason) ? /* @__PURE__ */ jsx("span", { id: secondaryId, className: "min-w-0 shrink truncate text-fg-muted", children: secondary }) : null,
|
|
560
567
|
keptLeadParts.length > 0 ? /* @__PURE__ */ jsx("span", { className: "flex shrink-0 items-center", children: keptLeadParts }) : null,
|
|
561
|
-
restLineParts.length > 0 ?
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
568
|
+
restLineParts.length > 0 ? (
|
|
569
|
+
// One line tall and wrapping: a part with no room for a few
|
|
570
|
+
// letters wraps onto the clipped second line and disappears
|
|
571
|
+
// whole, instead of staying behind as a lone dot. The empty
|
|
572
|
+
// first item lets even the first part wrap away.
|
|
573
|
+
/* @__PURE__ */ jsxs(
|
|
574
|
+
"span",
|
|
575
|
+
{
|
|
576
|
+
className: cn(
|
|
577
|
+
"flex h-4.5 min-w-0 shrink-[2] flex-wrap content-start items-center overflow-hidden",
|
|
578
|
+
// No description: drop the first part's leading dot.
|
|
579
|
+
!(secondary && !(disabled && disabledReason)) && "-ml-4"
|
|
580
|
+
),
|
|
581
|
+
children: [
|
|
582
|
+
/* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "h-4.5 w-0 shrink-0" }),
|
|
583
|
+
restLineParts
|
|
584
|
+
]
|
|
585
|
+
}
|
|
586
|
+
)
|
|
571
587
|
) : null,
|
|
572
588
|
trailingParts.length > 0 ? /* @__PURE__ */ jsx(
|
|
573
589
|
"span",
|
|
@@ -697,15 +713,24 @@ function MetaPart({
|
|
|
697
713
|
children,
|
|
698
714
|
hidden = false,
|
|
699
715
|
order = 0,
|
|
700
|
-
keep = false
|
|
716
|
+
keep = false,
|
|
717
|
+
oneLine = false
|
|
701
718
|
}) {
|
|
719
|
+
const sizing = keep ? { flexShrink: 0 } : oneLine ? (
|
|
720
|
+
// Earlier parts fill to their full width before later ones grow past
|
|
721
|
+
// their few letters, so the line still gives way from the end.
|
|
722
|
+
{ flexBasis: "3.5rem", flexGrow: 64 ** (4 - Math.min(order, 4)), flexShrink: 0 }
|
|
723
|
+
) : { flexShrink: 64 ** Math.min(order, 4) };
|
|
702
724
|
return /* @__PURE__ */ jsxs(
|
|
703
725
|
"span",
|
|
704
726
|
{
|
|
705
727
|
"aria-hidden": hidden || void 0,
|
|
706
|
-
style:
|
|
728
|
+
style: sizing,
|
|
707
729
|
className: cn(
|
|
708
|
-
"flex
|
|
730
|
+
"flex min-w-0 items-center overflow-hidden whitespace-nowrap",
|
|
731
|
+
// max-content caps the growth; the 3.5rem basis is the most a part
|
|
732
|
+
// asks for before it fits, so a short fact never gains empty space.
|
|
733
|
+
oneLine && !keep ? "max-w-max" : "max-w-full",
|
|
709
734
|
className
|
|
710
735
|
),
|
|
711
736
|
children: [
|
|
@@ -779,4 +804,4 @@ export {
|
|
|
779
804
|
ListRow,
|
|
780
805
|
ListRowSkeleton
|
|
781
806
|
};
|
|
782
|
-
//# sourceMappingURL=chunk-
|
|
807
|
+
//# sourceMappingURL=chunk-UBXHP224.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ui/list-row.tsx"],"sourcesContent":["import {\n createContext,\n isValidElement,\n useContext,\n useId,\n useMemo,\n useRef,\n type AnchorHTMLAttributes,\n type CSSProperties,\n type MouseEvent,\n type ReactNode,\n type RefObject,\n} from \"react\";\nimport {\n ArrowDownIcon,\n ArrowUpIcon,\n ArrowUpRightIcon,\n CheckIcon,\n ChevronDownIcon,\n ChevronRightIcon,\n ChevronsUpDownIcon,\n CircleAlertIcon,\n LoaderCircleIcon,\n MoreHorizontalIcon,\n PlusIcon,\n} from \"lucide-react\";\n\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuTrigger } from \"./dropdown-menu\";\nimport { LogoTileSizeProvider, type LogoTileSize } from \"./logo-tile\";\nimport { useSectionListFrame } from \"./section-variant\";\nimport { RelativeTimeDefaultsContext } from \"./relative-time\";\nimport { Skeleton } from \"./skeleton\";\nimport { cn } from \"../lib/cn\";\n\n/* ----------------------------------------------------------------------------\n RowList and ListRow (design brief 7.4) - the one way to show a thing in a\n list. The Capabilities catalog row, generalized: leading tile, title, one\n line of description, quiet meta, and one trailing affordance.\n\n One row definition renders in three layouts, chosen on the list:\n - \"catalog\" (A) 76px rows, 40px tile, two columns at 720px+, trailing\n + / check. For discovering things (Capabilities).\n - \"resource\" (B, default) 56-64px rows in one column with hairlines, a\n 32px tile, title + one line, fact columns and a chevron or ⋯\n menu. For things you own.\n - \"table\" (C) column headers and sortable columns, 44px rows. For more\n than ~20 items or numeric data.\n\n The whole row is the action (a stretched button or link) unless it holds\n one control. Menus and controls sit above the stretched target.\n\n Resource and table rows share one grid (CSS subgrid), so fact columns and\n the trailing slot line up across rows whatever each row holds. Under 640px\n of list width (a container query, so a list in a sheet or a 390px frame\n behaves like a phone) the fact columns fold into the meta line.\n -------------------------------------------------------------------------- */\n\nexport type RowListVariant = \"catalog\" | \"resource\" | \"table\";\n\nexport interface RowListColumn {\n /** Key into each row's `cells`. */\n id: string;\n /** Header in tables; the small label above the value in resource rows. */\n label: string;\n /** Column width in px on wide layouts. Default 132. */\n width?: number | undefined;\n align?: \"start\" | \"end\" | undefined;\n /** Tables only: the header becomes a sort button. */\n sortable?: boolean | undefined;\n /**\n * Hide the label in resource rows and the folded meta line, for values that\n * explain themselves (\"4 variables\"). The table header still shows it.\n */\n hideLabel?: boolean | undefined;\n /**\n * On narrow lists this fact folds in ahead of the meta items instead of\n * after them and stays on a phone-width line, for a value the row exists to\n * show (an amount). Keep it to one or two short facts per list.\n */\n leadsWhenFolded?: boolean | undefined;\n}\n\nexport interface RowListSort {\n /** A column id, or \"name\" for the title column. */\n column: string;\n direction: \"asc\" | \"desc\";\n}\n\ninterface RowListContextValue {\n variant: RowListVariant;\n columns: RowListColumn[];\n}\n\nconst RowListContext = createContext<RowListContextValue | null>(null);\n\nfunction useRowList(): RowListContextValue {\n return useContext(RowListContext) ?? { variant: \"resource\", columns: NO_COLUMNS };\n}\n\n/** The layout of the enclosing RowList. */\nexport function useRowListVariant(): RowListVariant {\n return useRowList().variant;\n}\n\nconst TILE_SIZE: Record<RowListVariant, LogoTileSize> = {\n catalog: \"lg\",\n resource: \"md\",\n table: \"sm\",\n};\n\nconst DEFAULT_COLUMN_WIDTH = 132;\nconst NO_COLUMNS: RowListColumn[] = [];\nconst NO_META: ReactNode[] = [];\nconst NO_CELLS: Record<string, ReactNode> = {};\n/** The row is the tab stop; times inside it show their tooltip on hover. */\nconst ROW_TIME_DEFAULTS = { focusable: false };\n\n/** Wide layout: title, one track per fact column, then the trailing slot. */\nfunction gridTemplate(columns: RowListColumn[], variant: RowListVariant): string {\n const facts = columns.map((column) => `${column.width ?? DEFAULT_COLUMN_WIDTH}px`);\n return [\"minmax(0,1fr)\", ...facts, variant === \"table\" ? \"minmax(2.5rem,auto)\" : \"auto\"].join(\n \" \",\n );\n}\n\n/*\n * Container-query classes are written out in full (`@[640px]/list:`) so\n * Tailwind can see them. Narrow lists use two tracks: title and trailing.\n */\nconst SHARED_GRID =\n \"grid grid-cols-[minmax(0,1fr)_auto] @[640px]/list:[grid-template-columns:var(--row-list-template)]\";\nconst SUBGRID = \"col-span-full grid grid-cols-subgrid\";\n\nexport interface RowListProps {\n /** Default \"resource\". */\n variant?: RowListVariant | undefined;\n /** Fact columns: labelled values in resource rows, real columns in tables. */\n columns?: RowListColumn[] | undefined;\n /** Accessible name for the list or table, for example \"Variable sets\". */\n label: string;\n /** Header of the title column in tables. Default \"Name\". */\n nameLabel?: string | undefined;\n /** Tables: make the title column sortable. */\n nameSortable?: boolean | undefined;\n /** Tables: the current sort. Sorting the rows is the caller's job. */\n sort?: RowListSort | undefined;\n onSortChange?: ((sort: RowListSort) => void) | undefined;\n /** Rows are loading; announces it and sets aria-busy. */\n busy?: boolean | undefined;\n /**\n * Resource lists inside an open section or page: tiles and titles line up\n * with the section's edge, the row hover bleeds 12px out with rounded\n * corners, and the hairlines stay inside the content edge.\n */\n flush?: boolean | undefined;\n className?: string | undefined;\n children: ReactNode;\n}\n\n/* Hairlines drawn inside the row padding, so they end where the content does. */\nconst FLUSH_LIST = cn(\n \"[&>li]:relative [&>li+li]:before:pointer-events-none [&>li+li]:before:absolute [&>li+li]:before:inset-x-3 [&>li+li]:before:top-0 [&>li+li]:before:h-px [&>li+li]:before:bg-border [&>li+li]:before:content-['']\",\n \"[&>li>div]:rounded-[10px]\",\n);\n\nexport function RowList({\n variant = \"resource\",\n columns = NO_COLUMNS,\n label,\n nameLabel = \"Name\",\n nameSortable = false,\n sort,\n onSortChange,\n busy = false,\n flush = false,\n className,\n children,\n}: RowListProps) {\n const value = useMemo<RowListContextValue>(() => ({ variant, columns }), [variant, columns]);\n // In settings (grouped sections) a flush list that is not already inside a\n // section card becomes the card itself: rows keep their 12px padding, the\n // card adds 8px so titles sit 20px in, like setting rows.\n const frame = useSectionListFrame();\n const flushCard = flush && frame === \"card\";\n const templateStyle = {\n \"--row-list-template\": gridTemplate(columns, variant),\n } as CSSProperties;\n const busyNote = busy ? (\n <span role=\"status\" className=\"sr-only\">\n Loading {label.toLocaleLowerCase()}\n </span>\n ) : null;\n\n let body: ReactNode;\n if (variant === \"table\") {\n body = (\n <div\n role=\"table\"\n aria-label={label}\n aria-busy={busy || undefined}\n className={cn(\"min-w-0 gap-x-4\", SHARED_GRID)}\n style={templateStyle}\n >\n <div role=\"rowgroup\" className={cn(SUBGRID, \"hidden\", \"@[640px]/list:grid\")}>\n <div\n role=\"row\"\n className={cn(SUBGRID, \"min-h-9 items-center border-b border-border px-3\")}\n >\n <HeaderCell\n label={nameLabel}\n columnId=\"name\"\n sortable={nameSortable}\n sort={sort}\n onSortChange={onSortChange}\n />\n {columns.map((column) => (\n <HeaderCell\n key={column.id}\n label={column.label}\n columnId={column.id}\n align={column.align}\n sortable={column.sortable}\n sort={sort}\n onSortChange={onSortChange}\n />\n ))}\n <div role=\"columnheader\">\n <span className=\"sr-only\">Actions</span>\n </div>\n </div>\n </div>\n <div role=\"rowgroup\" className={cn(SUBGRID, \"divide-y divide-border\")}>\n {children}\n </div>\n </div>\n );\n } else if (variant === \"catalog\") {\n body = (\n <ul\n aria-label={label}\n aria-busy={busy || undefined}\n className=\"m-0 grid min-w-0 list-none grid-cols-1 gap-x-6 gap-y-1 p-0 @[720px]/list:grid-cols-2\"\n >\n {children}\n </ul>\n );\n } else {\n body = (\n <ul\n aria-label={label}\n aria-busy={busy || undefined}\n className={cn(\n \"m-0 min-w-0 list-none gap-x-3 p-0\",\n SHARED_GRID,\n flush ? FLUSH_LIST : \"divide-y divide-border\",\n )}\n style={templateStyle}\n >\n {children}\n </ul>\n );\n }\n\n return (\n <RowListContext.Provider value={value}>\n <LogoTileSizeProvider size={TILE_SIZE[variant]}>\n <div\n data-slot=\"row-list\"\n data-variant={variant}\n data-flush={flush || undefined}\n data-frame={flushCard ? \"card\" : undefined}\n className={cn(\n \"@container/list min-w-0\",\n flushCard ? \"rounded-lg border border-border bg-surface px-2 py-1\" : flush && \"-mx-3\",\n className,\n )}\n >\n {busyNote}\n {body}\n </div>\n </LogoTileSizeProvider>\n </RowListContext.Provider>\n );\n}\n\nfunction HeaderCell({\n label,\n columnId,\n align = \"start\",\n sortable = false,\n sort,\n onSortChange,\n}: {\n label: string;\n columnId: string;\n align?: \"start\" | \"end\" | undefined;\n sortable?: boolean | undefined;\n sort?: RowListSort | undefined;\n onSortChange?: ((sort: RowListSort) => void) | undefined;\n}) {\n const active = sort?.column === columnId;\n const ariaSort = active ? (sort.direction === \"asc\" ? \"ascending\" : \"descending\") : undefined;\n const text = \"text-xs leading-4.5 font-medium text-fg-subtle\";\n if (!sortable || !onSortChange) {\n return (\n <div\n role=\"columnheader\"\n className={cn(\"min-w-0 truncate\", text, align === \"end\" && \"text-right\")}\n >\n {label}\n </div>\n );\n }\n const SortIcon = active\n ? sort.direction === \"asc\"\n ? ArrowUpIcon\n : ArrowDownIcon\n : ChevronsUpDownIcon;\n return (\n <div\n role=\"columnheader\"\n aria-sort={ariaSort}\n className={cn(\"min-w-0\", align === \"end\" && \"text-right\")}\n >\n <button\n type=\"button\"\n onClick={() =>\n onSortChange({\n column: columnId,\n direction: active && sort.direction === \"asc\" ? \"desc\" : \"asc\",\n })\n }\n className={cn(\n \"-mx-1.5 inline-flex max-w-full items-center gap-1 rounded-[6px] px-1.5 py-0.5 transition-colors duration-[120ms] hover:bg-hover hover:text-fg pointer-coarse:min-h-11\",\n text,\n active && \"text-fg\",\n align === \"end\" && \"flex-row-reverse\",\n )}\n >\n <span className=\"min-w-0 truncate\">{label}</span>\n <SortIcon aria-hidden=\"true\" className={cn(\"size-3.5 shrink-0\", !active && \"opacity-60\")} />\n </button>\n </div>\n );\n}\n\n/* ----------------------------------------------------------------------------\n RowIndicator: the display-only trailing glyph. The row is the action.\n -------------------------------------------------------------------------- */\n\nexport type RowIndicatorKind =\n | \"open\"\n | \"expand\"\n | \"external\"\n | \"add\"\n | \"added\"\n | \"attention\"\n | \"unavailable\"\n | \"loading\";\n\nconst INDICATOR_LABEL: Record<RowIndicatorKind, string> = {\n open: \"Open\",\n expand: \"Show details\",\n external: \"Opens in a new tab\",\n add: \"Available to add\",\n added: \"Added\",\n attention: \"Needs attention\",\n unavailable: \"Unavailable\",\n loading: \"Working\",\n};\n\nexport interface RowIndicatorProps {\n kind: RowIndicatorKind;\n /**\n * The state in words. Visible for \"attention\" and \"unavailable\" (\"Needs\n * reconnect\"); screen-reader only for the others.\n */\n label?: string | undefined;\n id?: string | undefined;\n className?: string | undefined;\n}\n\nexport function RowIndicator({ kind, label, id, className }: RowIndicatorProps) {\n const Icon =\n kind === \"open\"\n ? ChevronRightIcon\n : kind === \"expand\"\n ? ChevronDownIcon\n : kind === \"external\"\n ? ArrowUpRightIcon\n : kind === \"add\"\n ? PlusIcon\n : kind === \"added\"\n ? CheckIcon\n : kind === \"loading\"\n ? LoaderCircleIcon\n : CircleAlertIcon;\n const visibleLabel = kind === \"attention\" || kind === \"unavailable\";\n return (\n <span\n data-slot=\"row-indicator\"\n data-kind={kind}\n className={cn(\n \"pointer-events-none inline-flex min-w-0 shrink-0 items-center justify-end gap-1.5\",\n kind === \"attention\"\n ? \"text-status-waiting\"\n : kind === \"added\"\n ? \"text-fg-muted\"\n : \"text-fg-subtle\",\n className,\n )}\n >\n {visibleLabel ? (\n // On narrow lists the row repeats the words under its title (see\n // ListRow), so only the icon stays here and nothing truncates.\n <span\n id={id}\n className=\"max-w-40 min-w-0 truncate text-xs leading-4.5 font-medium @max-[479px]/list:sr-only\"\n >\n {label ?? INDICATOR_LABEL[kind]}\n </span>\n ) : null}\n <Icon\n aria-hidden=\"true\"\n className={cn(\n visibleLabel ? \"size-4\" : \"size-[18px]\",\n kind === \"loading\" && \"motion-safe:animate-spin\",\n kind === \"expand\" && \"transition-transform duration-[120ms]\",\n )}\n />\n {visibleLabel ? null : (\n <span id={id} className=\"sr-only\">\n {label ?? INDICATOR_LABEL[kind]}\n </span>\n )}\n </span>\n );\n}\n\n/* ----------------------------------------------------------------------------\n ListRow.\n -------------------------------------------------------------------------- */\n\ntype RowLinkProps = Omit<AnchorHTMLAttributes<HTMLAnchorElement>, \"className\" | \"children\">;\n\nexport interface ListRowProps {\n /** Leading tile: a LogoTile (sized by the list), an avatar or a status dot. */\n leading?: (ReactNode | ((size: LogoTileSize) => ReactNode)) | undefined;\n /** One line, 14/500. The row's accessible name. */\n title: ReactNode;\n /** Small chips right after the title: \"Organization\", \"Primary\", \"You\". */\n titleAddon?: ReactNode | undefined;\n /** One sentence, 12/18 muted. Two lines in catalog rows, one elsewhere. */\n description?: ReactNode | undefined;\n /** Quiet facts joined with \" · \" (the meta line). */\n meta?: ReactNode[] | undefined;\n /**\n * The row's state, usually a dot StatusBadge (\"Suspended\", \"Invited ·\n * expires in 14 days\"). It sits at the right of the name area on wide lists\n * and joins the meta line on narrow ones: a status never adds a line.\n */\n status?: ReactNode | undefined;\n /** Values for the list's fact columns, by column id. */\n cells?: Record<string, ReactNode> | undefined;\n /** Display-only trailing glyph. A kind, or a kind with its state in words. */\n indicator?: RowIndicatorKind | { kind: RowIndicatorKind; label?: string };\n /**\n * One interactive control (a switch, a small button). Sits above the row\n * target; drops under the text on narrow lists that have fact columns.\n */\n control?: ReactNode | undefined;\n /** Items for the row's ⋯ menu (DropdownMenuItem elements). */\n menu?: ReactNode | undefined;\n /** Accessible name of the ⋯ button. Default \"More actions for <title>\". */\n menuLabel?: string | undefined;\n /** Makes the whole row a button. */\n onOpen?: ((event: MouseEvent<HTMLElement>) => void) | undefined;\n /** Makes the whole row a link. */\n href?: string | undefined;\n /**\n * Extra props for the link (target, rel, router handlers). An in-app `href`\n * needs `onClick` (or `onOpen`) to call the router and preventDefault on a\n * plain click; otherwise the row loads the whole page.\n */\n linkProps?: RowLinkProps | undefined;\n /** The row's detail is open (sheet or page). */\n selected?: boolean | undefined;\n /**\n * Expand in place (one level of secondary detail). The row toggles `panel`\n * below it and announces aria-expanded. Prefer a sheet for anything larger.\n */\n expanded?: boolean | undefined;\n /** The content shown under the row while `expanded`. List layouts only. */\n panel?: ReactNode | undefined;\n /** Not actionable right now. Say why with `disabledReason`. */\n disabled?: boolean | undefined;\n /** Why the row can't be used, and who can fix it. Replaces the description. */\n disabledReason?: ReactNode | undefined;\n className?: string | undefined;\n}\n\nfunction textOf(node: ReactNode): string {\n if (typeof node === \"string\" || typeof node === \"number\") return String(node);\n if (Array.isArray(node)) return node.map(textOf).join(\"\");\n if (isValidElement<{ children?: ReactNode }>(node)) return textOf(node.props.children);\n return \"\";\n}\n\nconst RAISED = \"[data-slot=relative-time], [data-slot=status-badge]\";\n\nexport function ListRow({\n leading,\n title,\n titleAddon,\n description,\n meta = NO_META,\n status,\n cells = NO_CELLS,\n indicator,\n control,\n menu,\n menuLabel,\n onOpen,\n href,\n linkProps,\n selected = false,\n expanded,\n panel,\n disabled = false,\n disabledReason,\n className,\n}: ListRowProps) {\n const { variant, columns } = useRowList();\n const actionRef = useRef<HTMLElement>(null);\n const titleId = useId();\n const secondaryId = useId();\n const indicatorId = useId();\n const panelId = useId();\n const actionable = !disabled && Boolean(onOpen || href);\n const indicatorSpec = typeof indicator === \"string\" ? { kind: indicator } : indicator;\n const secondary = disabled && disabledReason ? disabledReason : description;\n // \"Needs reconnect\" and \"Unavailable\" move under the title on narrow lists.\n const narrowState =\n indicatorSpec && (indicatorSpec.kind === \"attention\" || indicatorSpec.kind === \"unavailable\")\n ? (indicatorSpec.label ?? INDICATOR_LABEL[indicatorSpec.kind])\n : null;\n const table = variant === \"table\";\n const catalog = variant === \"catalog\";\n const gridded = !catalog;\n const hasColumns = gridded && columns.length > 0;\n const expandable = !table && expanded !== undefined;\n\n // Resource and table rows keep one fixed height: the description, the meta\n // facts and (on narrow lists) the status and indicator words share ONE\n // secondary line that truncates. Catalog rows keep a two-line description\n // with the facts under it.\n const singleLine = !catalog;\n /* The meta line: quiet facts, then the fact columns folded in on narrow lists. */\n const presentFacts = columns.filter((column) => cells[column.id] != null);\n const facts = [\n ...presentFacts.filter((column) => column.leadsWhenFolded),\n ...presentFacts.filter((column) => !column.leadsWhenFolded),\n ];\n const leadingFacts = facts.filter((column) => column.leadsWhenFolded).length;\n const metaItems = meta.filter((item) => item != null && item !== false && item !== \"\");\n // On one line the facts give way from the end: a later part truncates (and\n // then disappears) before an earlier one, so a narrow row reads \"Fact ·\n // Staging runs on walrus-2…\" instead of every part cut to a few letters.\n // Only the last meta item and the folded facts after it shrink at all: any\n // shrink, however small, would put an ellipsis into a short fact (\"Fa…\").\n const foldedFact = (column: RowListColumn, index: number, order: number, leads: boolean) => (\n <MetaPart\n key={column.id}\n order={order}\n keep={leads}\n oneLine={singleLine}\n className={cn(\n hasColumns && \"@[640px]/list:hidden\",\n // A phone-width line has room for one folded fact (none next to a\n // status) beyond the leading ones; more would only be cut to a dot\n // and a few letters.\n !leads && (index > 0 || status) && \"@max-[479px]/list:hidden\",\n )}\n >\n {column.hideLabel ? null : <span className=\"text-fg-subtle\">{column.label} </span>}\n <span className=\"text-fg-muted\">{cells[column.id]}</span>\n </MetaPart>\n );\n const metaParts: ReactNode[] = [\n // A leading fact never shrinks: the meta after it gives way instead.\n ...facts.slice(0, leadingFacts).map((column, index) => foldedFact(column, index, index, true)),\n ...metaItems.map((item, index) => {\n const last = index === metaItems.length - 1;\n return (\n <MetaPart\n // oxlint-disable-next-line react/no-array-index-key -- meta items are positional\n key={`meta-${index}`}\n order={leadingFacts + index}\n keep={!last}\n oneLine={singleLine}\n >\n {item}\n </MetaPart>\n );\n }),\n ...facts\n .slice(leadingFacts)\n .map((column, index) =>\n foldedFact(column, leadingFacts + index, leadingFacts + metaItems.length + index, false),\n ),\n ];\n const statusPart = status ? (\n <MetaPart key=\"status\" keep className=\"@[480px]/list:hidden\">\n {status}\n </MetaPart>\n ) : null;\n const narrowStatePart =\n singleLine && narrowState ? (\n <MetaPart\n key=\"narrow-state\"\n keep\n hidden\n className={cn(\n \"hidden font-medium @max-[479px]/list:flex\",\n indicatorSpec?.kind === \"attention\" ? \"text-status-waiting\" : \"text-fg-subtle\",\n )}\n >\n {narrowState}\n </MetaPart>\n ) : null;\n const lineParts = metaParts;\n // The status and the narrow state end the line and always stay whole: the\n // description and the facts before them give way instead.\n const trailingParts = [\n ...(singleLine && statusPart ? [statusPart] : []),\n ...(narrowStatePart ? [narrowStatePart] : []),\n ];\n const hasLineDescription = Boolean(secondary && !(disabled && disabledReason));\n const keptLeadParts = singleLine && hasLineDescription ? lineParts.slice(0, leadingFacts) : [];\n const restLineParts = lineParts.slice(keptLeadParts.length);\n // Every part leads with its separator and the line is shifted left by one\n // separator and clipped, so no line of a wrapped meta line starts or ends\n // with a dot.\n const metaLine =\n !singleLine && metaParts.length > 0 ? (\n <div\n className={cn(\n \"mt-0.5 min-w-0 overflow-hidden text-xs leading-4.5 text-fg-subtle\",\n // Only folded facts: the line disappears once the columns show.\n hasColumns && metaItems.length === 0 && \"@[640px]/list:hidden\",\n )}\n >\n <p className=\"m-0 -ml-4 flex min-w-0 flex-wrap items-center\">{metaParts}</p>\n </div>\n ) : null;\n\n /* The title is the row's action, stretched over the whole row. */\n // The chevron is decoration; every other indicator states something worth hearing.\n const announceIndicator =\n indicatorSpec && indicatorSpec.kind !== \"open\" && indicatorSpec.kind !== \"expand\";\n const labelledBy = [titleId, announceIndicator ? indicatorId : null].filter(Boolean).join(\" \");\n const actionProps = {\n \"data-row-action\": \"\",\n \"aria-labelledby\": labelledBy,\n \"aria-describedby\": secondary ? secondaryId : undefined,\n \"aria-current\": selected ? (\"true\" as const) : undefined,\n \"aria-expanded\": expandable ? expanded : undefined,\n \"aria-controls\": expandable && expanded ? panelId : undefined,\n // The row draws the focus ring; the global focus outline is unlayered, so\n // only an inline style keeps it off the title.\n style: { outline: \"none\" },\n className: cn(\n \"min-w-0 cursor-pointer truncate text-left text-sm leading-5 font-medium text-fg\",\n \"after:absolute after:inset-0 after:z-0 after:content-['']\",\n ),\n };\n const titleNode = actionable ? (\n href ? (\n <a\n {...linkProps}\n {...actionProps}\n ref={actionRef as RefObject<HTMLAnchorElement>}\n href={href}\n // Both handlers run: `linkProps.onClick` is how callers keep a plain\n // click in the router. Letting an absent `onOpen` replace it made the\n // row a full page load.\n onClick={(event) => {\n onOpen?.(event);\n if (!event.defaultPrevented) linkProps?.onClick?.(event);\n }}\n >\n <span id={titleId}>{title}</span>\n </a>\n ) : (\n <button\n {...actionProps}\n ref={actionRef as RefObject<HTMLButtonElement>}\n type=\"button\"\n onClick={onOpen}\n >\n <span id={titleId}>{title}</span>\n </button>\n )\n ) : (\n <span\n id={titleId}\n className={cn(\n \"min-w-0 truncate text-sm leading-5 font-medium\",\n disabled ? \"text-fg-muted\" : \"text-fg\",\n )}\n >\n {title}\n </span>\n );\n\n const leadingNode =\n typeof leading === \"function\" ? leading(TILE_SIZE[variant]) : leading ? leading : null;\n\n const menuNode = menu ? (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <button\n type=\"button\"\n aria-label={menuLabel ?? `More actions for ${textOf(title) || \"this item\"}`}\n className=\"grid size-8 shrink-0 place-items-center rounded-[10px] text-fg-subtle transition-colors duration-[120ms] hover:bg-surface-3 hover:text-fg data-[state=open]:bg-surface-3 data-[state=open]:text-fg pointer-coarse:size-11\"\n >\n <MoreHorizontalIcon aria-hidden=\"true\" className=\"size-4\" />\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"min-w-44\">\n {menu}\n </DropdownMenuContent>\n </DropdownMenu>\n ) : null;\n\n // In gridded lists the control sits right after the text (before the fact\n // columns) and drops under the text when the list is narrow.\n const controlNode = control ? (\n <div\n className={cn(\n \"relative z-10 flex shrink-0 items-center\",\n hasColumns &&\n (table\n ? \"@max-[639px]/list:basis-full @max-[639px]/list:pl-9\"\n : \"@max-[639px]/list:basis-full @max-[639px]/list:pl-11\"),\n )}\n >\n {control}\n </div>\n ) : null;\n const controlInline = hasColumns;\n\n const trailingContent =\n indicatorSpec || menuNode || (control && !controlInline) ? (\n <>\n {controlInline ? null : controlNode}\n {menuNode ? <div className=\"relative z-10 flex items-center\">{menuNode}</div> : null}\n {indicatorSpec ? (\n <RowIndicator\n kind={indicatorSpec.kind}\n label={indicatorSpec.label}\n id={indicatorId}\n className={\n indicatorSpec.kind === \"expand\" && expanded ? \"[&>svg]:rotate-180\" : undefined\n }\n />\n ) : null}\n </>\n ) : null;\n // Gridded rows always fill the trailing track so the grid stays in step.\n const trailing =\n trailingContent || gridded ? (\n <div\n role={table ? \"cell\" : undefined}\n className=\"flex min-w-0 shrink-0 items-center justify-end gap-1\"\n >\n {trailingContent}\n </div>\n ) : null;\n\n const main = (\n <div\n className={cn(\n \"flex min-w-0 flex-1 items-center gap-x-3\",\n controlInline && control && \"flex-wrap gap-y-2\",\n )}\n >\n {leadingNode ? (\n <div\n className={cn(\n \"flex shrink-0 items-center justify-center\",\n disabled && \"opacity-60 grayscale\",\n )}\n >\n {leadingNode}\n </div>\n ) : null}\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex min-w-0 items-center gap-2\">\n {titleNode}\n {titleAddon ? (\n // Held to the title's 20px line: a chip never makes its row taller.\n <span className=\"flex h-5 shrink-0 items-center gap-1.5\">{titleAddon}</span>\n ) : null}\n </div>\n {secondary && (catalog || (disabled && disabledReason)) ? (\n <p\n id={secondaryId}\n className={cn(\n \"mt-0.5 min-w-0 text-xs leading-4.5 text-fg-muted\",\n // A disabled reason is the point of the row: it never truncates.\n disabled && disabledReason ? \"break-words\" : \"line-clamp-2 break-words\",\n )}\n >\n {secondary}\n </p>\n ) : null}\n {singleLine &&\n ((secondary && !(disabled && disabledReason)) ||\n lineParts.length > 0 ||\n trailingParts.length > 0) ? (\n <p\n className={cn(\n \"m-0 mt-0.5 flex min-w-0 items-center overflow-hidden text-xs leading-4.5 whitespace-nowrap text-fg-subtle\",\n // Tables keep rows to one line once the columns show, unless\n // the line still has facts that aren't columns.\n table && metaItems.length === 0 && \"@[640px]/list:hidden\",\n // Only folded facts: the line disappears once the columns show.\n !table &&\n !secondary &&\n hasColumns &&\n metaItems.length === 0 &&\n !status &&\n !narrowState &&\n \"@[640px]/list:hidden\",\n )}\n >\n {secondary && !(disabled && disabledReason) ? (\n <span id={secondaryId} className=\"min-w-0 shrink truncate text-fg-muted\">\n {secondary}\n </span>\n ) : null}\n {/* Leading facts after a description stay whole: the description\n gives way instead (\"Credentials the whole te… · 6 items\"). */}\n {keptLeadParts.length > 0 ? (\n <span className=\"flex shrink-0 items-center\">{keptLeadParts}</span>\n ) : null}\n {restLineParts.length > 0 ? (\n // One line tall and wrapping: a part with no room for a few\n // letters wraps onto the clipped second line and disappears\n // whole, instead of staying behind as a lone dot. The empty\n // first item lets even the first part wrap away.\n <span\n className={cn(\n \"flex h-4.5 min-w-0 shrink-[2] flex-wrap content-start items-center overflow-hidden\",\n // No description: drop the first part's leading dot.\n !(secondary && !(disabled && disabledReason)) && \"-ml-4\",\n )}\n >\n <span aria-hidden=\"true\" className=\"h-4.5 w-0 shrink-0\" />\n {restLineParts}\n </span>\n ) : null}\n {trailingParts.length > 0 ? (\n <span\n className={cn(\n \"flex shrink-0 items-center\",\n // Nothing before it: drop its leading dot.\n !(secondary && !(disabled && disabledReason)) &&\n restLineParts.length === 0 &&\n \"-ml-4\",\n )}\n >\n {trailingParts}\n </span>\n ) : null}\n </p>\n ) : null}\n {metaLine}\n {!singleLine && narrowState ? (\n <p\n aria-hidden=\"true\"\n className={cn(\n \"mt-1 hidden min-w-0 items-center text-xs leading-4.5 font-medium @max-[479px]/list:flex\",\n indicatorSpec?.kind === \"attention\" ? \"text-status-waiting\" : \"text-fg-subtle\",\n )}\n >\n <span className=\"min-w-0 truncate\">{narrowState}</span>\n </p>\n ) : null}\n </div>\n {status ? (\n <div className=\"relative z-10 hidden shrink-0 items-center @[480px]/list:flex\">\n {status}\n </div>\n ) : null}\n {controlInline ? controlNode : null}\n </div>\n );\n\n const factColumns = hasColumns\n ? columns.map((column) => {\n const value = cells[column.id];\n return (\n <div\n key={column.id}\n role={table ? \"cell\" : undefined}\n className={cn(\n \"hidden min-w-0 @[640px]/list:block\",\n column.align === \"end\" && \"text-right\",\n )}\n >\n {table ? (\n <span className=\"block truncate text-sm leading-5 text-fg-muted\">\n {value ?? <span className=\"text-fg-subtle\">-</span>}\n </span>\n ) : value == null ? null : (\n <>\n {column.hideLabel ? null : (\n <span className=\"block truncate text-2xs leading-4 text-fg-subtle\">\n {column.label}\n </span>\n )}\n <span className=\"block truncate text-xs leading-4.5 text-fg-muted\">{value}</span>\n </>\n )}\n </div>\n );\n })\n : null;\n\n // Times and badges float above the stretched target so their tooltips work\n // on hover; a click on them still opens the row.\n const forwardClick = actionable\n ? (event: MouseEvent<HTMLElement>) => {\n if (event.defaultPrevented || !(event.target instanceof Element)) return;\n if (event.target.closest(\"[data-row-action]\")) return;\n if (!event.target.closest(RAISED)) return;\n actionRef.current?.click();\n }\n : undefined;\n\n const rowClass = cn(\n // isolate: the raised times and badges stack inside the row, never above\n // sticky headers or overlays around the list.\n \"group/row relative isolate min-w-0 items-center transition-colors duration-[120ms]\",\n \"[&_[data-slot=relative-time]]:relative [&_[data-slot=relative-time]]:z-10 [&_[data-slot=status-badge]]:relative [&_[data-slot=status-badge]]:z-10\",\n catalog && \"flex min-h-[76px] gap-3 rounded-[14px] px-3 py-3.5\",\n // One fixed height per list type: 64px resource rows (title plus one\n // secondary line; a title-only row centers in the same height).\n variant === \"resource\" && cn(SUBGRID, \"min-h-16 px-3 py-3\"),\n table && cn(SUBGRID, \"min-h-11 px-3 py-2\"),\n actionable && \"hover:bg-hover\",\n selected &&\n cn(\n \"bg-selection hover:bg-selection\",\n \"before:absolute before:top-1/2 before:left-0 before:h-4 before:w-0.5 before:-translate-y-1/2 before:rounded-full before:bg-brand before:content-['']\",\n ),\n // Focus ring on the whole row when its target has keyboard focus.\n actionable &&\n cn(\n \"has-[[data-row-action]:focus-visible]:outline-2 has-[[data-row-action]:focus-visible]:outline-brand/55\",\n catalog\n ? \"has-[[data-row-action]:focus-visible]:outline-offset-2\"\n : \"has-[[data-row-action]:focus-visible]:-outline-offset-2\",\n ),\n className,\n );\n\n const content = (\n <RelativeTimeDefaultsContext.Provider value={ROW_TIME_DEFAULTS}>\n {table ? (\n <div role=\"rowheader\" className=\"flex min-w-0 items-center\">\n {main}\n </div>\n ) : (\n main\n )}\n {factColumns}\n {trailing}\n </RelativeTimeDefaultsContext.Provider>\n );\n\n if (table) {\n return (\n <div\n role=\"row\"\n data-slot=\"list-row\"\n data-selected={selected || undefined}\n data-disabled={disabled || undefined}\n aria-disabled={disabled || undefined}\n className={rowClass}\n onClick={forwardClick}\n >\n {content}\n </div>\n );\n }\n\n return (\n <li\n data-slot=\"list-row\"\n data-selected={selected || undefined}\n data-disabled={disabled || undefined}\n data-expanded={expandable ? expanded : undefined}\n aria-disabled={disabled || undefined}\n className={cn(\"min-w-0\", gridded && SUBGRID)}\n >\n <div className={rowClass} onClick={forwardClick}>\n {content}\n </div>\n {expandable && expanded && panel ? (\n <div\n id={panelId}\n role=\"region\"\n aria-labelledby={titleId}\n className={cn(\"col-span-full min-w-0 pr-3 pb-4\", catalog ? \"pl-16\" : \"pl-14\")}\n >\n {panel}\n </div>\n ) : null}\n </li>\n );\n}\n\nfunction MetaPart({\n className,\n children,\n hidden = false,\n order = 0,\n keep = false,\n oneLine = false,\n}: {\n className?: string | undefined;\n children: ReactNode;\n /** A visual copy of something already announced elsewhere. */\n hidden?: boolean | undefined;\n /** Position on the line: later parts give way first when it runs out of room. */\n order?: number | undefined;\n /** Never shrinks (a status): it stays whole while the facts before it give way. */\n keep?: boolean | undefined;\n /**\n * On a one-line meta line (which wraps into a clipped second line): the part\n * claims room for its dot and a few letters, then takes what is left in\n * order. One without even that much wraps away whole.\n */\n oneLine?: boolean | undefined;\n}) {\n const sizing: CSSProperties = keep\n ? { flexShrink: 0 }\n : oneLine\n ? // Earlier parts fill to their full width before later ones grow past\n // their few letters, so the line still gives way from the end.\n { flexBasis: \"3.5rem\", flexGrow: 64 ** (4 - Math.min(order, 4)), flexShrink: 0 }\n : { flexShrink: 64 ** Math.min(order, 4) };\n return (\n <span\n aria-hidden={hidden || undefined}\n style={sizing}\n className={cn(\n \"flex min-w-0 items-center overflow-hidden whitespace-nowrap\",\n // max-content caps the growth; the 3.5rem basis is the most a part\n // asks for before it fits, so a short fact never gains empty space.\n oneLine && !keep ? \"max-w-max\" : \"max-w-full\",\n className,\n )}\n >\n <span aria-hidden=\"true\" className=\"w-4 shrink-0 text-center text-fg-subtle\">\n ·\n </span>\n <span className=\"min-w-0 truncate\">{children}</span>\n </span>\n );\n}\n\n/* ----------------------------------------------------------------------------\n Loading placeholders in the same geometry as the list's rows.\n -------------------------------------------------------------------------- */\n\nexport function ListRowSkeleton({ count = 3 }: { count?: number }) {\n const { variant, columns } = useRowList();\n const table = variant === \"table\";\n const catalog = variant === \"catalog\";\n const tile = catalog\n ? \"size-10 rounded-[10px]\"\n : variant === \"resource\"\n ? \"size-8 rounded-[10px]\"\n : \"size-6 rounded-[6px]\";\n const widths = [\"w-2/5\", \"w-1/3\", \"w-1/2\", \"w-1/4\"];\n return (\n <>\n {Array.from({ length: count }, (_, index) => {\n const inner = (\n <>\n <div className=\"flex min-w-0 flex-1 items-center gap-3\">\n <Skeleton className={cn(\"shrink-0 bg-surface-2\", tile)} />\n <div className=\"min-w-0 flex-1\">\n <Skeleton\n className={cn(\"h-3.5 rounded-full bg-surface-2\", widths[index % widths.length])}\n />\n {table ? null : (\n <Skeleton\n className={cn(\n \"mt-2 h-3 rounded-full bg-surface-2\",\n catalog ? \"w-4/5\" : \"w-3/5\",\n )}\n />\n )}\n </div>\n </div>\n {catalog\n ? null\n : columns.map((column) => (\n <div key={column.id} className=\"hidden min-w-0 @[640px]/list:block\">\n {table ? null : <Skeleton className=\"h-2.5 w-12 rounded-full bg-surface-2\" />}\n <Skeleton\n className={cn(\"h-3 w-20 rounded-full bg-surface-2\", !table && \"mt-1.5\")}\n />\n </div>\n ))}\n {catalog ? null : <div />}\n </>\n );\n const rowClass = cn(\n \"min-w-0 items-center\",\n catalog && \"flex min-h-[76px] gap-3 px-3 py-3.5\",\n // One fixed height per list type: 64px resource rows (title plus one\n // secondary line; a title-only row centers in the same height).\n variant === \"resource\" && cn(SUBGRID, \"min-h-16 px-3 py-3\"),\n table && cn(SUBGRID, \"min-h-11 px-3 py-2\"),\n );\n return table ? (\n // oxlint-disable-next-line react/no-array-index-key -- identical placeholders\n <div key={index} role=\"row\" aria-hidden=\"true\" className={rowClass}>\n {inner}\n </div>\n ) : (\n // oxlint-disable-next-line react/no-array-index-key -- identical placeholders\n <li key={index} aria-hidden=\"true\" className={cn(!catalog && SUBGRID)}>\n <div className={rowClass}>{inner}</div>\n </li>\n );\n })}\n </>\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
} from "./chunk-W6KAUGXO.js";
|
|
8
8
|
import {
|
|
9
9
|
useMachines
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-GABFKHQE.js";
|
|
11
11
|
import {
|
|
12
12
|
useOpenGeni
|
|
13
13
|
} from "./chunk-TVQCDDSZ.js";
|
|
@@ -53,4 +53,4 @@ function useWorkspaceMachines(options = {}) {
|
|
|
53
53
|
export {
|
|
54
54
|
useWorkspaceMachines
|
|
55
55
|
};
|
|
56
|
-
//# sourceMappingURL=chunk-
|
|
56
|
+
//# sourceMappingURL=chunk-UL44R3W2.js.map
|
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
3
|
-
ChannelCreateDialog
|
|
4
|
-
} from "./chunk-6WVASCYA.js";
|
|
5
2
|
import {
|
|
6
3
|
RunsOnMenuBody,
|
|
7
4
|
RunsOnNotice,
|
|
@@ -12,13 +9,16 @@ import {
|
|
|
12
9
|
runsOnAttention,
|
|
13
10
|
runsOnSummary,
|
|
14
11
|
visibilitySummary
|
|
15
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-Q2PA4KZS.js";
|
|
13
|
+
import {
|
|
14
|
+
ChannelCreateDialog
|
|
15
|
+
} from "./chunk-6WVASCYA.js";
|
|
16
16
|
import {
|
|
17
17
|
CreditRefusalNotice
|
|
18
18
|
} from "./chunk-KUO5WFXG.js";
|
|
19
19
|
import {
|
|
20
20
|
composerFallbackModel
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-E4MQRQ6Z.js";
|
|
22
22
|
import {
|
|
23
23
|
initialWorkspaceMachineCompute
|
|
24
24
|
} from "./chunk-66PZHYXZ.js";
|
|
@@ -73,7 +73,7 @@ import {
|
|
|
73
73
|
} from "./chunk-ILBSBZGC.js";
|
|
74
74
|
import {
|
|
75
75
|
useWorkspaceMachines
|
|
76
|
-
} from "./chunk-
|
|
76
|
+
} from "./chunk-UL44R3W2.js";
|
|
77
77
|
import {
|
|
78
78
|
useSessionUiFeature
|
|
79
79
|
} from "./chunk-H5M33DAL.js";
|
|
@@ -88,7 +88,7 @@ import {
|
|
|
88
88
|
} from "./chunk-LOG6TAHF.js";
|
|
89
89
|
import {
|
|
90
90
|
useWorkspaceModelCatalog
|
|
91
|
-
} from "./chunk-
|
|
91
|
+
} from "./chunk-EBW2E32G.js";
|
|
92
92
|
import {
|
|
93
93
|
hydratedNewSessionProjectProvenancePresent,
|
|
94
94
|
initialNewSessionProjectLaunchIntent,
|
|
@@ -100,7 +100,7 @@ import {
|
|
|
100
100
|
} from "./chunk-45WYYFP6.js";
|
|
101
101
|
import {
|
|
102
102
|
useGitHubAppConnectLauncher
|
|
103
|
-
} from "./chunk-
|
|
103
|
+
} from "./chunk-R27GW5WV.js";
|
|
104
104
|
import {
|
|
105
105
|
openGitHubInstallationSettings
|
|
106
106
|
} from "./chunk-6D473WWV.js";
|
|
@@ -109,19 +109,19 @@ import {
|
|
|
109
109
|
} from "./chunk-NOZQIEHJ.js";
|
|
110
110
|
import {
|
|
111
111
|
ModelPicker
|
|
112
|
-
} from "./chunk-
|
|
112
|
+
} from "./chunk-CY3NO4JN.js";
|
|
113
113
|
import {
|
|
114
114
|
WorkspaceComposerPlus
|
|
115
|
-
} from "./chunk-
|
|
115
|
+
} from "./chunk-TQF2I5SY.js";
|
|
116
116
|
import {
|
|
117
117
|
addsConnectorOutsideDefaults,
|
|
118
118
|
changedConnectorExclusions,
|
|
119
119
|
defaultConnectorSelection,
|
|
120
120
|
newSessionConnectorCustomizeState
|
|
121
|
-
} from "./chunk-
|
|
121
|
+
} from "./chunk-3OJU3RUR.js";
|
|
122
122
|
import {
|
|
123
123
|
BillingClassMark
|
|
124
|
-
} from "./chunk-
|
|
124
|
+
} from "./chunk-ZITMDA4C.js";
|
|
125
125
|
import {
|
|
126
126
|
RepositoryContextMenuBody
|
|
127
127
|
} from "./chunk-4BF3DD6R.js";
|
|
@@ -134,7 +134,7 @@ import {
|
|
|
134
134
|
import {
|
|
135
135
|
ConsoleComposer,
|
|
136
136
|
useDraftAttachments
|
|
137
|
-
} from "./chunk-
|
|
137
|
+
} from "./chunk-ENKBO7FC.js";
|
|
138
138
|
import {
|
|
139
139
|
useForgetLastSession
|
|
140
140
|
} from "./chunk-AVAR2CFB.js";
|
|
@@ -168,7 +168,7 @@ import {
|
|
|
168
168
|
} from "./chunk-KNFDWNCH.js";
|
|
169
169
|
import {
|
|
170
170
|
t
|
|
171
|
-
} from "./chunk-
|
|
171
|
+
} from "./chunk-CG6CJMIS.js";
|
|
172
172
|
import {
|
|
173
173
|
clientFirstPartyMcpToolPolicy,
|
|
174
174
|
firstPartySessionToolOptionsFor,
|
|
@@ -232,7 +232,7 @@ import {
|
|
|
232
232
|
} from "./chunk-5VGJXWQ2.js";
|
|
233
233
|
import {
|
|
234
234
|
NewSessionRealtimeControl
|
|
235
|
-
} from "./chunk-
|
|
235
|
+
} from "./chunk-2SBCOGQN.js";
|
|
236
236
|
import {
|
|
237
237
|
Notice
|
|
238
238
|
} from "./chunk-WLEDGIVS.js";
|
|
@@ -247,11 +247,11 @@ import {
|
|
|
247
247
|
} from "./chunk-CPLCSM6K.js";
|
|
248
248
|
import {
|
|
249
249
|
MACHINES_COMPOSER_POLL_MS
|
|
250
|
-
} from "./chunk-
|
|
250
|
+
} from "./chunk-GABFKHQE.js";
|
|
251
251
|
import {
|
|
252
252
|
prestartSessionRealtime,
|
|
253
253
|
useRealtimeModelSelection
|
|
254
|
-
} from "./chunk-
|
|
254
|
+
} from "./chunk-VCRQPLKS.js";
|
|
255
255
|
import {
|
|
256
256
|
recentSessionModelPresentation,
|
|
257
257
|
recentSessionStatus,
|
|
@@ -262,13 +262,13 @@ import {
|
|
|
262
262
|
} from "./chunk-F2RMKGDQ.js";
|
|
263
263
|
import {
|
|
264
264
|
FILE_ONLY_MESSAGE_TEXT
|
|
265
|
-
} from "./chunk-
|
|
265
|
+
} from "./chunk-IXIE3H43.js";
|
|
266
266
|
import {
|
|
267
267
|
ModelMark
|
|
268
268
|
} from "./chunk-WJPMYXKZ.js";
|
|
269
269
|
import {
|
|
270
270
|
LightboxProvider
|
|
271
|
-
} from "./chunk-
|
|
271
|
+
} from "./chunk-MASBMJ2M.js";
|
|
272
272
|
import {
|
|
273
273
|
effortOptionsForModel,
|
|
274
274
|
findPickerRow,
|
|
@@ -1904,6 +1904,7 @@ function SessionModelControl({
|
|
|
1904
1904
|
error: modelCatalog.error ?? policyError,
|
|
1905
1905
|
menuSide: "bottom",
|
|
1906
1906
|
connectModelsHref: `/workspaces/${encodeURIComponent(workspaceId)}/settings?section=models`,
|
|
1907
|
+
claudeSubscriptionAvailable: context.clientConfig.claudeSubscriptionEnabled === true,
|
|
1907
1908
|
onModelChange: (model) => {
|
|
1908
1909
|
onPolicyChosen();
|
|
1909
1910
|
context.setModel(model);
|
|
@@ -2243,4 +2244,4 @@ function PrivateWorkspaceNote() {
|
|
|
2243
2244
|
export {
|
|
2244
2245
|
SessionsIndexRoute
|
|
2245
2246
|
};
|
|
2246
|
-
//# sourceMappingURL=chunk-
|
|
2247
|
+
//# sourceMappingURL=chunk-UQKBV22P.js.map
|