@opengeni/react 4.4.1 → 4.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/app-state.js +25 -25
- package/dist/app/components/Composer.js +27 -27
- package/dist/app/components/agent/agent-capability-picker.js +4 -4
- package/dist/app/components/artifacts/artifact-browse-controls.js +3 -3
- package/dist/app/components/artifacts/artifact-library.js +19 -19
- package/dist/app/components/artifacts/artifact-page-chrome.js +2 -2
- package/dist/app/components/artifacts/chat-interactive-block.js +15 -15
- package/dist/app/components/artifacts/inline-chat-image.js +30 -29
- package/dist/app/components/artifacts/retained-file-preview.js +34 -33
- package/dist/app/components/artifacts/retained-text-preview.js +5 -5
- package/dist/app/components/artifacts/site-audience.js +4 -4
- package/dist/app/components/artifacts/site-conversations.js +20 -19
- package/dist/app/components/artifacts/site-data.js +18 -18
- package/dist/app/components/artifacts/site-publishing.js +39 -39
- package/dist/app/components/artifacts/site-settings.js +46 -46
- package/dist/app/components/billing-class-mark.js +5 -5
- package/dist/app/components/capabilities/capability-detail-sheet.js +8 -8
- package/dist/app/components/capabilities/capability-logo-source.js +11 -11
- package/dist/app/components/capabilities/connector-tool-permissions.js +4 -4
- package/dist/app/components/capabilities/native-connect-setup.js +14 -14
- package/dist/app/components/capabilities/perform-capability-action.js +1 -1
- package/dist/app/components/capabilities/prepared-mcp-setup-card.js +15 -15
- package/dist/app/components/capabilities/session-capability-card.js +77 -75
- package/dist/app/components/capabilities/session-capability-card.js.map +1 -1
- package/dist/app/components/capabilities/session-chrome-card.js +35 -33
- package/dist/app/components/capabilities/session-custom-mcp-card.js +19 -19
- package/dist/app/components/capabilities/session-github-card.js +22 -22
- package/dist/app/components/capabilities/session-machine-card.js +34 -32
- package/dist/app/components/capabilities/use-capabilities-catalog.js +3 -3
- package/dist/app/components/capabilities/use-connection-accounts.js +1 -1
- package/dist/app/components/command-menu/chat-status.js +15 -14
- package/dist/app/components/command-menu/chat-switcher.js +16 -15
- package/dist/app/components/command-menu/chat-switcher.js.map +1 -1
- package/dist/app/components/command-menu/command-menu.js +32 -110
- package/dist/app/components/command-menu/command-menu.js.map +1 -1
- package/dist/app/components/command-menu/shortcut-sheet.js +15 -15
- package/dist/app/components/composer-capabilities-menu-body.js +3 -3
- package/dist/app/components/composer-mobile-plus-panel.js +17 -17
- 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 +9 -9
- package/dist/app/components/credits/coupon-redeem.js +2 -2
- package/dist/app/components/credits/credit-refusal-notice.js +2 -2
- package/dist/app/components/desktop/app-shots.js +6 -6
- package/dist/app/components/desktop/this-computer.js +4 -4
- package/dist/app/components/feedback.js +4 -4
- package/dist/app/components/follow-up-repository-menu-body.js +4 -4
- package/dist/app/components/follow-up-repository-picker.js +1 -1
- package/dist/app/components/github-app-connect-launcher.js +2 -2
- package/dist/app/components/in-app-help-link.js +2 -2
- package/dist/app/components/knowledge/agent-learning-settings.js +3 -3
- package/dist/app/components/machines/connect-machine-dialog.js +18 -18
- package/dist/app/components/markdown.js +8 -8
- package/dist/app/components/message-context-pills.js +2 -2
- package/dist/app/components/models/models-ui.js +8 -8
- package/dist/app/components/new-session-starters.js +2 -2
- package/dist/app/components/pickers.js +8 -8
- package/dist/app/components/rail/rail-context.js +3 -3
- package/dist/app/components/rail/rail-sections.js +65 -62
- package/dist/app/components/rail/session-header.js +48 -47
- package/dist/app/components/rail/session-list.js +64 -61
- package/dist/app/components/rail/session-row-content.d.ts +6 -2
- package/dist/app/components/rail/session-row-content.js +1 -1
- package/dist/app/components/rail/session-row-hover-details.js +20 -19
- package/dist/app/components/rail/session-shell.js +104 -101
- package/dist/app/components/rail/site-session-group-heading.d.ts +7 -1
- package/dist/app/components/rail/site-session-group-heading.js +20 -3
- package/dist/app/components/repository-picker.js +4 -4
- package/dist/app/components/secrets/session-secrets-panel.js +3 -3
- package/dist/app/components/session/agent-configuration-panel.js +33 -33
- package/dist/app/components/session/artifact-link-boundary.js +2 -2
- package/dist/app/components/session/artifact-session-page.js +5 -5
- package/dist/app/components/session/banners.js +10 -10
- package/dist/app/components/session/codex-account-indicator.js +11 -11
- package/dist/app/components/session/editable-artifacts-workspace.js +44 -44
- package/dist/app/components/session/failed-session-banner.js +10 -10
- package/dist/app/components/session/human-input.js +57 -53
- package/dist/app/components/session/inspector.js +94 -90
- package/dist/app/components/session/inspector.js.map +1 -1
- package/dist/app/components/session/message-actions.js +4 -4
- package/dist/app/components/session/message-resource-attachments.js +20 -19
- package/dist/app/components/session/message-resource-attachments.js.map +1 -1
- package/dist/app/components/session/model-account-indicator.js +11 -11
- package/dist/app/components/session/model-context-inspector.js +2 -2
- package/dist/app/components/session/model-recovery-notice.js +3 -3
- package/dist/app/components/session/new-session-settings-menu.js +9 -9
- package/dist/app/components/session/sandbox-switcher.js +16 -16
- package/dist/app/components/session/sandbox-workspace.js +81 -77
- package/dist/app/components/session/search-markdown-highlight.js +9 -9
- package/dist/app/components/session/search-results-view.js +10 -10
- package/dist/app/components/session/session-admin-access.js +8 -8
- package/dist/app/components/session/session-admission-notice.js +6 -6
- package/dist/app/components/session/session-machine-access-notice.js +6 -6
- package/dist/app/components/session/session-retention.js +4 -4
- package/dist/app/components/session/session-search-dialog.js +11 -11
- package/dist/app/components/session/session-skill-reviews.js +1 -1
- package/dist/app/components/session/session-tenancy-control.d.ts +2 -0
- package/dist/app/components/session/session-tenancy-control.js +40 -25
- package/dist/app/components/session/session-tenancy-control.js.map +1 -1
- package/dist/app/components/session/session-usage-limit-section.js +11 -11
- package/dist/app/components/session/session-wait-status.js +9 -8
- package/dist/app/components/session/session-wait-status.js.map +1 -1
- package/dist/app/components/session/site-origin-link.d.ts +1 -0
- package/dist/app/components/session/site-origin-link.js +2 -2
- package/dist/app/components/session/subagents.js +16 -15
- package/dist/app/components/session-connectors-menu-body.js +5 -5
- package/dist/app/components/settings/row-select.js +3 -3
- package/dist/app/components/transcription-settings.js +4 -4
- package/dist/app/components/ui/destructive-confirm.js +6 -6
- package/dist/app/components/usage/usage-entry.js +8 -8
- package/dist/app/components/workspace-composer-plus.js +21 -21
- package/dist/app/embed/memory-navigation.js +2 -2
- package/dist/app/embed/session-app.js +256 -250
- package/dist/app/lib/actions/actions-provider.js +15 -15
- package/dist/app/lib/actions/held-modifier.d.ts +11 -0
- package/dist/app/lib/app-surfaces.js +2 -2
- package/dist/app/lib/codex-usage-query.js +6 -6
- package/dist/app/lib/composer-connectors.js +12 -12
- package/dist/app/lib/console-site.d.ts +6 -0
- package/dist/app/lib/console-site.js +14 -0
- package/dist/app/lib/console-text.js +2 -2
- package/dist/app/lib/events.js +17 -16
- 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/navigation.d.ts +5 -0
- package/dist/app/lib/navigation.js +1 -1
- package/dist/app/lib/routes.d.ts +17 -0
- package/dist/app/lib/routes.js +9 -3
- package/dist/app/lib/session-branch-cache.js +13 -12
- package/dist/app/lib/session-deep-link.js +2 -2
- package/dist/app/lib/session-failure-toasts.d.ts +8 -0
- package/dist/app/lib/session-group-pagination.js +13 -12
- package/dist/app/lib/session-hover-facts.js +14 -13
- package/dist/app/lib/session-model.js +3 -3
- package/dist/app/lib/session-rail.js +9 -8
- package/dist/app/lib/session-rename.js +3 -3
- package/dist/app/lib/session-ui-features.d.ts +6 -1
- package/dist/app/lib/session-ui-features.js +1 -1
- package/dist/app/lib/sessions-group.d.ts +43 -3
- package/dist/app/lib/sessions-group.js +21 -14
- package/dist/app/lib/shared-query.js +3 -3
- package/dist/app/lib/site-opened.d.ts +6 -0
- package/dist/app/lib/site-opened.js +10 -0
- package/dist/app/lib/turn-failure-analytics.js +4 -4
- package/dist/app/lib/use-duplicate-site.js +3 -3
- package/dist/app/lib/use-follow-up-repositories.js +4 -4
- package/dist/app/lib/use-session-list-hint-refresh.d.ts +20 -2
- package/dist/app/lib/use-session-list-hint-refresh.js +5 -1
- package/dist/app/lib/use-workspace-machines.js +6 -6
- package/dist/app/lib/use-workspace-model-catalog.js +7 -7
- package/dist/app/lib/use-workspace-rigs.js +8 -8
- package/dist/app/lib/workspace-navigation-preference.js +5 -5
- package/dist/app/lib/workspace-scope-context.js +4 -4
- package/dist/app/routes/artifacts.js +132 -149
- package/dist/app/routes/artifacts.js.map +1 -1
- package/dist/app/routes/retained-artifact.js +63 -62
- package/dist/app/routes/retained-artifact.js.map +1 -1
- package/dist/app/routes/session-unavailable.js +7 -5
- package/dist/app/routes/session.js +170 -166
- package/dist/app/routes/sessions-index.js +110 -108
- package/dist/app/routes/site-view.d.ts +11 -0
- package/dist/app/routes/site-view.js +597 -0
- package/dist/app/routes/site-view.js.map +1 -0
- 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 +39 -39
- package/dist/{browser-viewer-RYYQSRTC.js → browser-viewer-QMCNV4RI.js} +9 -7
- package/dist/{chat-interactive-block-ABCRKXJ4.js → chat-interactive-block-PMIAUXSO.js} +6 -6
- package/dist/{chunk-TGVVEGZG.js → chunk-22FFOHPT.js} +9 -9
- package/dist/chunk-22GTC4MZ.js +15 -0
- package/dist/chunk-22GTC4MZ.js.map +1 -0
- package/dist/{chunk-Z5WMLJKI.js → chunk-22JFMNMF.js} +92 -4
- package/dist/chunk-22JFMNMF.js.map +1 -0
- package/dist/{chunk-UHFWF6ZU.js → chunk-2FPS5H2D.js} +2 -2
- package/dist/{chunk-NAWXARTY.js → chunk-2KO2G3RI.js} +72 -6
- package/dist/chunk-2KO2G3RI.js.map +1 -0
- package/dist/{chunk-5POTDNQT.js → chunk-2NC7NZCE.js} +6 -6
- package/dist/{chunk-ZKYYZH6L.js → chunk-2QBYDGWO.js} +9 -9
- package/dist/{chunk-TWXIFWBD.js → chunk-34EU25RL.js} +2 -2
- package/dist/{chunk-R63QEVPK.js → chunk-35BC2FU2.js} +16 -16
- package/dist/{chunk-PTGRFAMH.js → chunk-3ABPIUCK.js} +2 -2
- package/dist/{chunk-S4SC5SSV.js → chunk-3GU7AWG7.js} +18 -18
- package/dist/{chunk-722UO6YQ.js → chunk-3PEXVG4D.js} +2 -2
- package/dist/{chunk-63VGE4OH.js → chunk-3RMKPHBL.js} +3 -3
- package/dist/{chunk-6JKZILLF.js → chunk-3RQUWFZT.js} +67 -67
- package/dist/{chunk-6JKZILLF.js.map → chunk-3RQUWFZT.js.map} +1 -1
- package/dist/{chunk-RQDFYQHA.js → chunk-3STBLX4O.js} +9 -9
- package/dist/{chunk-S4EZ3JUB.js → chunk-3X5FKDYQ.js} +23 -23
- package/dist/{chunk-KTRKZRID.js → chunk-4GLLWX33.js} +11 -11
- package/dist/{chunk-ROQOVH4N.js → chunk-4HEXNAFI.js} +20 -20
- package/dist/chunk-4HEXNAFI.js.map +1 -0
- package/dist/{chunk-SD2K5ZN5.js → chunk-4LPA25NQ.js} +4 -4
- package/dist/{chunk-KWKGBGAF.js → chunk-4RMN4E2Y.js} +9 -9
- package/dist/{chunk-X7ASQHR6.js → chunk-4SAGYEVB.js} +2 -2
- package/dist/{chunk-HTT3FB7T.js → chunk-4VK2R5QC.js} +3 -3
- package/dist/{chunk-DDK4WFJ3.js → chunk-4XQC7VLT.js} +9 -9
- package/dist/{chunk-IVOA3DXA.js → chunk-4YXAQMTD.js} +12 -12
- package/dist/{chunk-HOJGAJAB.js → chunk-52WK2GGK.js} +8 -8
- package/dist/{chunk-NYZQ7LO7.js → chunk-552UYIQ7.js} +20 -20
- package/dist/{chunk-LEXPBQ56.js → chunk-5DSKMG2I.js} +4 -4
- package/dist/{chunk-WNG757ID.js → chunk-5FA455GR.js} +4 -4
- package/dist/{chunk-HWDGJFM4.js → chunk-5FEN3KYH.js} +11 -11
- package/dist/{chunk-OSVHU2WU.js → chunk-5JHRMUAZ.js} +12 -12
- package/dist/{chunk-PM3OSANE.js → chunk-5MJHH72T.js} +14 -3
- package/dist/chunk-5MJHH72T.js.map +1 -0
- package/dist/{chunk-RKB2Z457.js → chunk-5VGJXWQ2.js} +2 -2
- package/dist/{chunk-GFUUFM2O.js → chunk-5W6ZDKRR.js} +6 -6
- package/dist/{chunk-6PQNLL4E.js → chunk-5W7KJ5NQ.js} +37 -37
- package/dist/{chunk-Q35YZVDZ.js → chunk-5Y2FPLZE.js} +9 -9
- package/dist/{chunk-6W3LF3DB.js → chunk-5YFY4SFC.js} +2 -12
- package/dist/chunk-5YFY4SFC.js.map +1 -0
- package/dist/{chunk-F3NERYBQ.js → chunk-62VER7O4.js} +6 -6
- package/dist/{chunk-FBMU3VK5.js → chunk-6DCEDIF6.js} +2 -2
- package/dist/{chunk-LE2EDBXU.js → chunk-73WI7FL2.js} +18 -18
- package/dist/chunk-756MKA2J.js +45 -0
- package/dist/chunk-756MKA2J.js.map +1 -0
- package/dist/{chunk-ZRJCGBVV.js → chunk-7FJMRJDG.js} +2 -2
- package/dist/{chunk-7KGKDWWR.js → chunk-7HFLYNWN.js} +2 -2
- package/dist/{chunk-72J6C2AJ.js → chunk-7KIENXRE.js} +2 -2
- package/dist/{chunk-CBY5CXBD.js → chunk-7NPCEBZE.js} +5 -5
- package/dist/{chunk-46VBQG2D.js → chunk-7P4AQMGA.js} +13 -13
- package/dist/{chunk-X7L4H4VG.js → chunk-7TCT7KPQ.js} +742 -644
- package/dist/chunk-7TCT7KPQ.js.map +1 -0
- package/dist/{chunk-CVG4FILQ.js → chunk-7XO7YKPC.js} +280 -1035
- package/dist/chunk-7XO7YKPC.js.map +1 -0
- package/dist/{chunk-S7PVL7XH.js → chunk-A4BD4ZVB.js} +4 -4
- package/dist/{chunk-EF5SYXAY.js → chunk-ACL2V2KE.js} +30 -22
- package/dist/chunk-ACL2V2KE.js.map +1 -0
- package/dist/{chunk-73SOCVLS.js → chunk-AIEXYO2X.js} +3 -3
- package/dist/{chunk-U7TC2XJQ.js → chunk-AJPW3SV4.js} +3 -3
- package/dist/{chunk-HRJQAFKR.js → chunk-AX6YJA5U.js} +2 -2
- package/dist/{chunk-P5WABK2H.js → chunk-BCM7C3MJ.js} +9 -9
- package/dist/{chunk-DT7BORXG.js → chunk-BMJTNPWK.js} +2 -2
- package/dist/{chunk-HIHO2QE7.js → chunk-BT2MVGHT.js} +2 -2
- package/dist/{chunk-3XOISKZC.js → chunk-BXQYAAVE.js} +4 -4
- package/dist/{chunk-IBTXYLBW.js → chunk-CCFWY4GF.js} +2 -2
- package/dist/{chunk-ZOC3OP6F.js → chunk-CCR33J7L.js} +2 -2
- package/dist/{chunk-GTQ3SNEI.js → chunk-CD3MO3IC.js} +2 -2
- package/dist/{chunk-WSMYOLHG.js → chunk-CDEXRJB6.js} +5 -5
- package/dist/{chunk-3GLAPCVI.js → chunk-CFFNT2OY.js} +8 -8
- package/dist/{chunk-HO5Y2OOX.js → chunk-CMLJSF2F.js} +10 -10
- package/dist/{chunk-RA3FNMWF.js → chunk-CP7ZQHBW.js} +10 -10
- package/dist/{chunk-IOKSNX74.js → chunk-D5OWJZQR.js} +2 -2
- package/dist/{chunk-SQGXMHJO.js → chunk-DGLRZMXL.js} +3 -3
- package/dist/{chunk-GNEHAPKV.js → chunk-DJFTH2DI.js} +3 -3
- package/dist/{chunk-HQG4SLTE.js → chunk-DYJGYGPB.js} +2 -2
- package/dist/{chunk-4EAF3HSD.js → chunk-EJ7WARW7.js} +2 -2
- package/dist/{chunk-3AA6RNGE.js → chunk-ENS6E4RZ.js} +2 -2
- package/dist/{chunk-OOEO4MKY.js → chunk-EPWD4KRA.js} +2 -2
- package/dist/{chunk-PN66T6JA.js → chunk-EQE3MNQN.js} +5 -5
- package/dist/{chunk-TSBE4KOQ.js → chunk-EWL6NDOO.js} +3 -3
- package/dist/{chunk-OO2T63BY.js → chunk-EYS4ZOF5.js} +2 -2
- package/dist/{chunk-7CZTKBTI.js → chunk-FDAV72IX.js} +5 -5
- package/dist/{chunk-AG7VGUIW.js → chunk-FFNPUSVO.js} +7 -7
- package/dist/{chunk-P5T36BA3.js → chunk-FRP64DEK.js} +2 -2
- package/dist/{chunk-KBF3SE7G.js → chunk-FSP334UU.js} +2 -2
- package/dist/{chunk-BSX2R4CW.js → chunk-FTX5CNHA.js} +4 -4
- package/dist/{chunk-O756O2I7.js → chunk-FWOBNL2A.js} +1 -1
- package/dist/{chunk-6NIB2KGJ.js → chunk-FWYEZ3LE.js} +33 -33
- package/dist/{chunk-DLOYMWUQ.js → chunk-G4HQUBO4.js} +7 -7
- package/dist/{chunk-CSHBR2IZ.js → chunk-GDLDBR6B.js} +2 -2
- package/dist/chunk-GGV4NSG3.js +792 -0
- package/dist/chunk-GGV4NSG3.js.map +1 -0
- package/dist/{chunk-U36PO27Q.js → chunk-GHHM6WN4.js} +3 -3
- package/dist/{chunk-OANSIX34.js → chunk-GRSODLVO.js} +4 -4
- package/dist/{chunk-4R3JCVID.js → chunk-GT7JFQ4E.js} +410 -153
- package/dist/chunk-GT7JFQ4E.js.map +1 -0
- package/dist/{chunk-EU6XSQFM.js → chunk-GXW2I2M2.js} +2 -2
- package/dist/{chunk-5JEIDFPD.js → chunk-GZS37O3G.js} +1 -1
- package/dist/{chunk-XFNLU7EW.js → chunk-H5M33DAL.js} +15 -6
- package/dist/chunk-H5M33DAL.js.map +1 -0
- package/dist/{chunk-HNYJEAES.js → chunk-HQWVDQXW.js} +7 -7
- package/dist/{chunk-YXOKAG66.js → chunk-HU6JTNWF.js} +2 -2
- package/dist/{chunk-QRVNI5V6.js → chunk-I6KIQKU6.js} +3 -3
- package/dist/{chunk-APU42QDI.js → chunk-IBA5FMRE.js} +115 -111
- package/dist/chunk-IBA5FMRE.js.map +1 -0
- package/dist/{chunk-BNUPYHHZ.js → chunk-IDXTASGN.js} +4 -4
- package/dist/{chunk-KF3MF6FP.js → chunk-IECRGM6K.js} +3 -2
- package/dist/chunk-IECRGM6K.js.map +1 -0
- package/dist/chunk-IJYL5BZM.js +38 -0
- package/dist/chunk-IJYL5BZM.js.map +1 -0
- package/dist/{chunk-L6RXRRN3.js → chunk-ILDOW2IQ.js} +3 -3
- package/dist/{chunk-VUHPA3XQ.js → chunk-ITX2TB4K.js} +6 -6
- package/dist/{chunk-BXRIQZAH.js → chunk-J22HD2PB.js} +5 -5
- package/dist/{chunk-U47YDYLQ.js → chunk-J5MEDX7C.js} +8 -8
- package/dist/{chunk-F6LBGYS6.js → chunk-J7FBBLHF.js} +35 -35
- package/dist/{chunk-5JZYPZ72.js → chunk-JFK7NTEA.js} +4 -4
- package/dist/chunk-JFK7NTEA.js.map +1 -0
- package/dist/{chunk-QZRDCFHI.js → chunk-JM4HQPAI.js} +5 -5
- package/dist/{chunk-PIVGX42P.js → chunk-JNY5MT3I.js} +2 -2
- package/dist/{chunk-XWWXIZFP.js → chunk-JO6R5EXF.js} +7 -7
- package/dist/{chunk-NWZW2WHN.js → chunk-JQCGPTZ6.js} +9 -9
- package/dist/chunk-JRSNCSZN.js +37 -0
- package/dist/chunk-JRSNCSZN.js.map +1 -0
- package/dist/{chunk-OR37STQZ.js → chunk-KEXYBG7Q.js} +3 -3
- package/dist/{chunk-AZVANYMB.js → chunk-KUNFUSZ7.js} +2 -2
- package/dist/{chunk-DXZNDKQD.js → chunk-LEEJBZ5B.js} +2 -2
- package/dist/{chunk-STUCI6QA.js → chunk-LEKBNKLD.js} +1 -1
- package/dist/{chunk-STUCI6QA.js.map → chunk-LEKBNKLD.js.map} +1 -1
- package/dist/{chunk-AOLE4IRZ.js → chunk-LF5CBAOS.js} +5 -5
- package/dist/{chunk-BJIZ7PL7.js → chunk-LHLK7FUA.js} +145 -29
- package/dist/chunk-LHLK7FUA.js.map +1 -0
- package/dist/{chunk-RIMKJBCD.js → chunk-LMPTC4CX.js} +2 -2
- package/dist/{chunk-3KVWXKD6.js → chunk-LQ47YL6E.js} +2 -2
- package/dist/{chunk-RSNYGEVZ.js → chunk-LT4J7RHI.js} +13 -13
- package/dist/{chunk-U3HSFCON.js → chunk-MCTTONOW.js} +28 -28
- package/dist/{chunk-7DU35P5J.js → chunk-MIECLOQC.js} +9 -9
- package/dist/{chunk-FM4OUCC2.js → chunk-MOKYT3X3.js} +3 -3
- package/dist/{chunk-GZ64CASI.js → chunk-MVZYNZXE.js} +5 -4
- package/dist/chunk-MVZYNZXE.js.map +1 -0
- package/dist/{chunk-L7YURQI2.js → chunk-MXLKI7BI.js} +3 -3
- package/dist/{chunk-XRRSFQEV.js → chunk-NAZZLAWX.js} +2 -2
- package/dist/{chunk-UWJ5P5CU.js → chunk-NEK4WB5P.js} +3 -3
- package/dist/{chunk-6L7U46Y2.js → chunk-NKNVIO66.js} +2 -2
- package/dist/{chunk-JKUICTLM.js → chunk-NLAFNMPK.js} +2 -2
- package/dist/{chunk-4LKNIGHB.js → chunk-O2SBHS2N.js} +2 -2
- package/dist/{chunk-DWPOQ3S5.js → chunk-OTMWHZBY.js} +2 -2
- package/dist/{chunk-JTN3T4QN.js → chunk-PCFK7HKD.js} +14 -14
- package/dist/{chunk-VVCDB2T7.js → chunk-PCJLH45G.js} +3 -3
- package/dist/{chunk-PZ24CYDO.js → chunk-PFAUGEV5.js} +2 -2
- package/dist/{chunk-HGMWMK5K.js → chunk-PO3BH3KQ.js} +2 -2
- package/dist/{chunk-B74GSYR6.js → chunk-PUTS4DYW.js} +2 -2
- package/dist/{chunk-JSIDLTTG.js → chunk-PZ2V2XIK.js} +2 -2
- package/dist/{chunk-TMEQPODK.js → chunk-PZ37VDB5.js} +2 -2
- package/dist/{chunk-Q35DT6I6.js → chunk-QFMLAT7L.js} +234 -225
- package/dist/chunk-QFMLAT7L.js.map +1 -0
- package/dist/{chunk-LVONK3YQ.js → chunk-QRKTESVE.js} +2 -2
- package/dist/{chunk-HT5WSUC7.js → chunk-QXEDIDBZ.js} +3 -3
- package/dist/{chunk-WURSS6MP.js → chunk-R66YMYJU.js} +2 -2
- package/dist/{chunk-HDHK3SXK.js → chunk-RFLYID6H.js} +5 -5
- package/dist/{chunk-ADJJQSYC.js → chunk-RIYZFKIM.js} +39 -37
- package/dist/chunk-RIYZFKIM.js.map +1 -0
- package/dist/{chunk-JK7C5A4I.js → chunk-RQNZDTKT.js} +19 -19
- package/dist/{chunk-EHCUFCXM.js → chunk-RYSRFAHN.js} +32 -22
- package/dist/chunk-RYSRFAHN.js.map +1 -0
- package/dist/{chunk-I6VUUEXH.js → chunk-S2U4CDAC.js} +150 -150
- package/dist/chunk-S2U4CDAC.js.map +1 -0
- package/dist/{chunk-ST22GONV.js → chunk-S37GP7LX.js} +19 -19
- package/dist/{chunk-A2EWJQXX.js → chunk-SM5QX6UK.js} +4 -4
- package/dist/{chunk-FBE6AIIW.js → chunk-SOKNCW5U.js} +2 -2
- package/dist/{chunk-4W7VISE7.js → chunk-SSOO4GWN.js} +193 -194
- package/dist/chunk-SSOO4GWN.js.map +1 -0
- package/dist/{chunk-UP4BE32Y.js → chunk-SY2AAZNB.js} +5 -5
- package/dist/{chunk-33TPANCR.js → chunk-TFK4KFKA.js} +4 -4
- package/dist/{chunk-4432A3HQ.js → chunk-TIQPKOFW.js} +4 -4
- package/dist/{chunk-HPPKLBTJ.js → chunk-TJQDL3JH.js} +2 -2
- package/dist/chunk-TL7BOFFL.js +89 -0
- package/dist/chunk-TL7BOFFL.js.map +1 -0
- package/dist/{chunk-FD4Q5KFL.js → chunk-TLL22FFO.js} +2 -2
- package/dist/{chunk-QM5H4FPT.js → chunk-TV6BWONY.js} +3 -3
- package/dist/{chunk-4VKA5O7T.js → chunk-U6MPB3K6.js} +4 -4
- package/dist/{chunk-XOFUXMPP.js → chunk-ULJAOMJA.js} +2 -2
- package/dist/chunk-ULYQEFNH.js +529 -0
- package/dist/chunk-ULYQEFNH.js.map +1 -0
- package/dist/{chunk-H5EVWF6L.js → chunk-UNNJUJVD.js} +2 -2
- package/dist/{chunk-RGW24ZZM.js → chunk-UP7I3W6O.js} +51 -49
- package/dist/chunk-UP7I3W6O.js.map +1 -0
- package/dist/{chunk-5MZTJMZ3.js → chunk-UUGR3X5I.js} +17 -11
- package/dist/chunk-UUGR3X5I.js.map +1 -0
- package/dist/{chunk-Z6DKXQG7.js → chunk-UXXFMF4X.js} +2 -2
- package/dist/{chunk-OBQVTCTW.js → chunk-UYNCMZX5.js} +4 -4
- package/dist/{chunk-RGPYMHKI.js → chunk-V3K4RQO7.js} +9 -3
- package/dist/chunk-V3K4RQO7.js.map +1 -0
- package/dist/{chunk-KZHW27BV.js → chunk-V4QZ7UBK.js} +2 -2
- package/dist/{chunk-SUVEDKE2.js → chunk-VH5EGTH2.js} +3 -3
- package/dist/{chunk-MYNUBDU7.js → chunk-VYKW6TB2.js} +1 -1
- package/dist/chunk-VYKW6TB2.js.map +1 -0
- package/dist/{chunk-QEJTQTF5.js → chunk-W6T5HR3Z.js} +3 -3
- package/dist/{chunk-VP62LPLW.js → chunk-WCMG4HYI.js} +10 -10
- package/dist/{chunk-GZLLDA6P.js → chunk-WEFN327U.js} +2 -2
- package/dist/{chunk-7BST7BA6.js → chunk-WKHUZIOW.js} +1 -1
- package/dist/{chunk-ANHUMDJX.js → chunk-WNDTLK44.js} +2 -2
- package/dist/{chunk-2DS4UOYQ.js → chunk-WSZQNTVN.js} +2 -2
- package/dist/{chunk-GALB2G3W.js → chunk-X2AH4DRF.js} +2 -2
- package/dist/{chunk-Z2DAWUO3.js → chunk-XMNUZUUA.js} +6 -6
- package/dist/{chunk-GAIM5RNE.js → chunk-XN7NSPE6.js} +3 -3
- package/dist/chunk-XV6ZYRHK.js +59 -0
- package/dist/chunk-XV6ZYRHK.js.map +1 -0
- package/dist/{chunk-FLGUVRR7.js → chunk-Y5BSA3I7.js} +5 -5
- package/dist/{chunk-WRLWLGEF.js → chunk-Y5E3XQ2S.js} +25 -2
- package/dist/{chunk-WRLWLGEF.js.map → chunk-Y5E3XQ2S.js.map} +1 -1
- package/dist/{chunk-QCD5Y7K5.js → chunk-YEROLKOA.js} +16 -16
- package/dist/{chunk-NDF3SH3X.js → chunk-YJPKDRI2.js} +15 -15
- package/dist/{chunk-TQGJN5UZ.js → chunk-YV56F4UP.js} +318 -700
- package/dist/chunk-YV56F4UP.js.map +1 -0
- package/dist/{chunk-VAIESMPY.js → chunk-YVBHGMKC.js} +4 -4
- package/dist/{chunk-AD22P5X3.js → chunk-YXA2EKV3.js} +3 -3
- package/dist/{chunk-FDNJVZRE.js → chunk-YYCOSTUU.js} +17 -17
- package/dist/{chunk-NLMTNEWW.js → chunk-Z6E6TUAE.js} +2 -2
- package/dist/{chunk-BJW7G6EF.js → chunk-Z7IGO5EA.js} +3 -3
- package/dist/{chunk-NCX5SAQY.js → chunk-ZEIFJ6PX.js} +5 -5
- package/dist/{chunk-JRXHSVD5.js → chunk-ZS2UQ3DV.js} +65 -8
- package/dist/chunk-ZS2UQ3DV.js.map +1 -0
- package/dist/{chunk-4EONHNJU.js → chunk-ZVVT72MT.js} +2 -2
- package/dist/components/browser-viewer.d.ts +1 -1
- package/dist/composer.js +13 -13
- package/dist/{computer-viewer-KEDVLD42.js → computer-viewer-25AJIDYA.js} +9 -9
- package/dist/connect.js +10 -10
- package/dist/desktop.js +2 -2
- package/dist/editor.js +2 -2
- package/dist/{embedded-new-voice-LFHWWYD2.js → embedded-new-voice-RZZEJT6M.js} +7 -7
- package/dist/{embedded-voice-6QS4ANNX.js → embedded-voice-6OKSSPLW.js} +7 -7
- package/dist/{fleet-decision-row-QNSTP3VX.js → fleet-decision-row-NN2HXDX3.js} +2 -2
- package/dist/hooks/internal.d.ts +38 -0
- package/dist/hooks/use-client-config-flags.d.ts +12 -0
- package/dist/hooks/use-workspace-sessions.d.ts +10 -1
- package/dist/index.js +233 -227
- package/dist/interaction.js +11 -9
- package/dist/interaction.js.map +1 -1
- package/dist/{latest-question-AW3PPDUM.js → latest-question-2PFWQSSG.js} +4 -3
- package/dist/{latest-question-AW3PPDUM.js.map → latest-question-2PFWQSSG.js.map} +1 -1
- package/dist/machines.js +5 -5
- package/dist/messages/en.d.ts +3 -3
- package/dist/messages.js +1 -1
- package/dist/{model-policy-picker-menu-CURJ247L.js → model-policy-picker-menu-VVFGGAI6.js} +6 -6
- package/dist/native-previews.js +3 -3
- package/dist/{platform-activity-row-BMXXNZKX.js → platform-activity-row-ENQVIFTL.js} +2 -2
- package/dist/{queue-surface-implementation-2X5AXB6I.js → queue-surface-implementation-4SHOQPQQ.js} +10 -8
- package/dist/{queue-surface-implementation-2X5AXB6I.js.map → queue-surface-implementation-4SHOQPQQ.js.map} +1 -1
- package/dist/realtime.js +6 -6
- package/dist/{sandbox-files-4FBG3GS2.js → sandbox-files-CCOTGXXA.js} +11 -11
- package/dist/sandbox-files-CCOTGXXA.js.map +1 -0
- package/dist/session-app.js +258 -252
- package/dist/session-list-model.d.ts +1 -0
- package/dist/session-list-model.js +8 -2
- package/dist/{session-realtime-2XIB254N.js → session-realtime-JNKDSGH7.js} +3 -3
- package/dist/session-realtime-JNKDSGH7.js.map +1 -0
- package/dist/session-realtime.js +2 -2
- package/dist/session-ui.js +76 -71
- package/dist/session.js +24 -22
- package/dist/sites.js +2 -2
- package/dist/terminal.js +2 -2
- package/dist/this-computer.js +3 -3
- package/dist/timeline/invoked-tool.d.ts +5 -0
- package/dist/timeline/tool-display-name.d.ts +2 -2
- package/dist/timeline/tool-icon.d.ts +14 -0
- package/dist/timeline/tool-presentation.d.ts +8 -3
- package/dist/{timeline-annotation-markers-X4K2IEOO.js → timeline-annotation-markers-KHNYNY2J.js} +5 -5
- package/dist/{timeline-annotation-selection-MEHBW676.js → timeline-annotation-selection-AXEDJHBP.js} +7 -7
- package/dist/{timeline-annotations-dialog-U2FPQ3UY.js → timeline-annotations-dialog-AV4ZBXRC.js} +9 -9
- package/dist/timeline-model.js +25 -23
- package/dist/ui/access-list.js +18 -18
- package/dist/ui/cadence-picker.js +2 -2
- package/dist/ui/choice-cards.js +2 -2
- package/dist/ui/detail-page.js +2 -2
- package/dist/ui/detail-sheet.js +2 -2
- package/dist/ui/diff-view.js +2 -2
- package/dist/ui/disclosure.js +4 -4
- package/dist/ui/flush-form-page.js +3 -3
- package/dist/ui/form-dialog.js +2 -2
- package/dist/ui/list-row.js +4 -4
- package/dist/ui/revision-history.js +11 -11
- package/dist/ui/role-select.js +7 -7
- package/dist/ui/select-menu.js +2 -2
- package/dist/ui/settings-nav.js +3 -3
- package/dist/usage.js +3 -3
- package/dist/workbench.js +11 -11
- package/package.json +4 -4
- package/src/app/app-state.tsx +3 -1
- package/src/app/components/capabilities/session-machine-card.tsx +9 -2
- package/src/app/components/rail/session-list.tsx +254 -44
- package/src/app/components/rail/session-row-content.tsx +24 -2
- package/src/app/components/rail/session-shell.tsx +14 -9
- package/src/app/components/rail/site-session-group-heading.tsx +59 -20
- package/src/app/components/session/session-tenancy-control.tsx +18 -0
- package/src/app/components/session/site-origin-link.test.tsx +73 -0
- package/src/app/components/session/site-origin-link.tsx +4 -2
- package/src/app/embed/memory-navigation.tsx +1 -0
- package/src/app/lib/actions/held-modifier.test.ts +101 -0
- package/src/app/lib/actions/held-modifier.ts +108 -0
- package/src/app/lib/console-site.tsx +38 -0
- package/src/app/lib/navigation.tsx +4 -0
- package/src/app/lib/routes.tsx +42 -0
- package/src/app/lib/session-failure-toasts.ts +26 -0
- package/src/app/lib/session-ui-features.tsx +18 -4
- package/src/app/lib/sessions-group.tsx +219 -30
- package/src/app/lib/site-opened.tsx +48 -0
- package/src/app/lib/site-session-groups.test.ts +173 -6
- package/src/app/lib/site-view-routes.test.ts +55 -0
- package/src/app/lib/use-session-list-hint-refresh.tsx +44 -4
- package/src/app/routes/artifacts.tsx +2 -29
- package/src/app/routes/session-transient-failures.test.tsx +343 -0
- package/src/app/routes/session-unavailable.tsx +74 -3
- package/src/app/routes/session.tsx +4 -13
- package/src/app/routes/sessions-index.tsx +13 -9
- package/src/app/routes/site-view.test.tsx +476 -0
- package/src/app/routes/site-view.tsx +583 -0
- package/src/components/browser-viewer.tsx +16 -2
- package/src/hooks/internal.ts +129 -6
- package/src/hooks/use-client-config-flags.ts +8 -0
- package/src/hooks/use-session-events.ts +83 -9
- package/src/hooks/use-workspace-sessions.ts +21 -1
- package/src/messages/en.ts +3 -3
- package/src/session-list-model.ts +4 -0
- package/src/timeline/activity-rail.tsx +3 -2
- package/src/timeline/invoked-tool.ts +14 -4
- package/src/timeline/projection.ts +11 -6
- package/src/timeline/rolling-activity.tsx +6 -2
- package/src/timeline/tool-display-name.ts +2 -2
- package/src/timeline/tool-icon.tsx +165 -0
- package/src/timeline/tool-presentation.ts +207 -48
- package/src/timeline/tool-renderers.tsx +1 -70
- package/styles/compiled.css +38 -0
- package/dist/chunk-22ZBT6CN.js +0 -50
- package/dist/chunk-22ZBT6CN.js.map +0 -1
- package/dist/chunk-4R3JCVID.js.map +0 -1
- package/dist/chunk-4W7VISE7.js.map +0 -1
- package/dist/chunk-5JZYPZ72.js.map +0 -1
- package/dist/chunk-5MZTJMZ3.js.map +0 -1
- package/dist/chunk-6W3LF3DB.js.map +0 -1
- package/dist/chunk-ADJJQSYC.js.map +0 -1
- package/dist/chunk-APU42QDI.js.map +0 -1
- package/dist/chunk-BJIZ7PL7.js.map +0 -1
- package/dist/chunk-CVG4FILQ.js.map +0 -1
- package/dist/chunk-EF5SYXAY.js.map +0 -1
- package/dist/chunk-EHCUFCXM.js.map +0 -1
- package/dist/chunk-GZ64CASI.js.map +0 -1
- package/dist/chunk-I6VUUEXH.js.map +0 -1
- package/dist/chunk-JRXHSVD5.js.map +0 -1
- package/dist/chunk-KF3MF6FP.js.map +0 -1
- package/dist/chunk-MYNUBDU7.js.map +0 -1
- package/dist/chunk-NAWXARTY.js.map +0 -1
- package/dist/chunk-PM3OSANE.js.map +0 -1
- package/dist/chunk-Q35DT6I6.js.map +0 -1
- package/dist/chunk-R25ZKOZR.js +0 -24
- package/dist/chunk-R25ZKOZR.js.map +0 -1
- package/dist/chunk-RGPYMHKI.js.map +0 -1
- package/dist/chunk-RGW24ZZM.js.map +0 -1
- package/dist/chunk-ROQOVH4N.js.map +0 -1
- package/dist/chunk-TQGJN5UZ.js.map +0 -1
- package/dist/chunk-X7L4H4VG.js.map +0 -1
- package/dist/chunk-XFNLU7EW.js.map +0 -1
- package/dist/chunk-Z5WMLJKI.js.map +0 -1
- /package/dist/{browser-viewer-RYYQSRTC.js.map → app/lib/console-site.js.map} +0 -0
- /package/dist/{chat-interactive-block-ABCRKXJ4.js.map → app/lib/site-opened.js.map} +0 -0
- /package/dist/{computer-viewer-KEDVLD42.js.map → browser-viewer-QMCNV4RI.js.map} +0 -0
- /package/dist/{embedded-new-voice-LFHWWYD2.js.map → chat-interactive-block-PMIAUXSO.js.map} +0 -0
- /package/dist/{chunk-TGVVEGZG.js.map → chunk-22FFOHPT.js.map} +0 -0
- /package/dist/{chunk-UHFWF6ZU.js.map → chunk-2FPS5H2D.js.map} +0 -0
- /package/dist/{chunk-5POTDNQT.js.map → chunk-2NC7NZCE.js.map} +0 -0
- /package/dist/{chunk-ZKYYZH6L.js.map → chunk-2QBYDGWO.js.map} +0 -0
- /package/dist/{chunk-TWXIFWBD.js.map → chunk-34EU25RL.js.map} +0 -0
- /package/dist/{chunk-R63QEVPK.js.map → chunk-35BC2FU2.js.map} +0 -0
- /package/dist/{chunk-PTGRFAMH.js.map → chunk-3ABPIUCK.js.map} +0 -0
- /package/dist/{chunk-S4SC5SSV.js.map → chunk-3GU7AWG7.js.map} +0 -0
- /package/dist/{chunk-722UO6YQ.js.map → chunk-3PEXVG4D.js.map} +0 -0
- /package/dist/{chunk-63VGE4OH.js.map → chunk-3RMKPHBL.js.map} +0 -0
- /package/dist/{chunk-RQDFYQHA.js.map → chunk-3STBLX4O.js.map} +0 -0
- /package/dist/{chunk-S4EZ3JUB.js.map → chunk-3X5FKDYQ.js.map} +0 -0
- /package/dist/{chunk-KTRKZRID.js.map → chunk-4GLLWX33.js.map} +0 -0
- /package/dist/{chunk-SD2K5ZN5.js.map → chunk-4LPA25NQ.js.map} +0 -0
- /package/dist/{chunk-KWKGBGAF.js.map → chunk-4RMN4E2Y.js.map} +0 -0
- /package/dist/{chunk-X7ASQHR6.js.map → chunk-4SAGYEVB.js.map} +0 -0
- /package/dist/{chunk-HTT3FB7T.js.map → chunk-4VK2R5QC.js.map} +0 -0
- /package/dist/{chunk-DDK4WFJ3.js.map → chunk-4XQC7VLT.js.map} +0 -0
- /package/dist/{chunk-IVOA3DXA.js.map → chunk-4YXAQMTD.js.map} +0 -0
- /package/dist/{chunk-HOJGAJAB.js.map → chunk-52WK2GGK.js.map} +0 -0
- /package/dist/{chunk-NYZQ7LO7.js.map → chunk-552UYIQ7.js.map} +0 -0
- /package/dist/{chunk-LEXPBQ56.js.map → chunk-5DSKMG2I.js.map} +0 -0
- /package/dist/{chunk-WNG757ID.js.map → chunk-5FA455GR.js.map} +0 -0
- /package/dist/{chunk-HWDGJFM4.js.map → chunk-5FEN3KYH.js.map} +0 -0
- /package/dist/{chunk-OSVHU2WU.js.map → chunk-5JHRMUAZ.js.map} +0 -0
- /package/dist/{chunk-RKB2Z457.js.map → chunk-5VGJXWQ2.js.map} +0 -0
- /package/dist/{chunk-GFUUFM2O.js.map → chunk-5W6ZDKRR.js.map} +0 -0
- /package/dist/{chunk-6PQNLL4E.js.map → chunk-5W7KJ5NQ.js.map} +0 -0
- /package/dist/{chunk-Q35YZVDZ.js.map → chunk-5Y2FPLZE.js.map} +0 -0
- /package/dist/{chunk-F3NERYBQ.js.map → chunk-62VER7O4.js.map} +0 -0
- /package/dist/{chunk-FBMU3VK5.js.map → chunk-6DCEDIF6.js.map} +0 -0
- /package/dist/{chunk-LE2EDBXU.js.map → chunk-73WI7FL2.js.map} +0 -0
- /package/dist/{chunk-ZRJCGBVV.js.map → chunk-7FJMRJDG.js.map} +0 -0
- /package/dist/{chunk-7KGKDWWR.js.map → chunk-7HFLYNWN.js.map} +0 -0
- /package/dist/{chunk-72J6C2AJ.js.map → chunk-7KIENXRE.js.map} +0 -0
- /package/dist/{chunk-CBY5CXBD.js.map → chunk-7NPCEBZE.js.map} +0 -0
- /package/dist/{chunk-46VBQG2D.js.map → chunk-7P4AQMGA.js.map} +0 -0
- /package/dist/{chunk-S7PVL7XH.js.map → chunk-A4BD4ZVB.js.map} +0 -0
- /package/dist/{chunk-73SOCVLS.js.map → chunk-AIEXYO2X.js.map} +0 -0
- /package/dist/{chunk-U7TC2XJQ.js.map → chunk-AJPW3SV4.js.map} +0 -0
- /package/dist/{chunk-HRJQAFKR.js.map → chunk-AX6YJA5U.js.map} +0 -0
- /package/dist/{chunk-P5WABK2H.js.map → chunk-BCM7C3MJ.js.map} +0 -0
- /package/dist/{chunk-DT7BORXG.js.map → chunk-BMJTNPWK.js.map} +0 -0
- /package/dist/{chunk-HIHO2QE7.js.map → chunk-BT2MVGHT.js.map} +0 -0
- /package/dist/{chunk-3XOISKZC.js.map → chunk-BXQYAAVE.js.map} +0 -0
- /package/dist/{chunk-IBTXYLBW.js.map → chunk-CCFWY4GF.js.map} +0 -0
- /package/dist/{chunk-ZOC3OP6F.js.map → chunk-CCR33J7L.js.map} +0 -0
- /package/dist/{chunk-GTQ3SNEI.js.map → chunk-CD3MO3IC.js.map} +0 -0
- /package/dist/{chunk-WSMYOLHG.js.map → chunk-CDEXRJB6.js.map} +0 -0
- /package/dist/{chunk-3GLAPCVI.js.map → chunk-CFFNT2OY.js.map} +0 -0
- /package/dist/{chunk-HO5Y2OOX.js.map → chunk-CMLJSF2F.js.map} +0 -0
- /package/dist/{chunk-RA3FNMWF.js.map → chunk-CP7ZQHBW.js.map} +0 -0
- /package/dist/{chunk-IOKSNX74.js.map → chunk-D5OWJZQR.js.map} +0 -0
- /package/dist/{chunk-SQGXMHJO.js.map → chunk-DGLRZMXL.js.map} +0 -0
- /package/dist/{chunk-GNEHAPKV.js.map → chunk-DJFTH2DI.js.map} +0 -0
- /package/dist/{chunk-HQG4SLTE.js.map → chunk-DYJGYGPB.js.map} +0 -0
- /package/dist/{chunk-4EAF3HSD.js.map → chunk-EJ7WARW7.js.map} +0 -0
- /package/dist/{chunk-3AA6RNGE.js.map → chunk-ENS6E4RZ.js.map} +0 -0
- /package/dist/{chunk-OOEO4MKY.js.map → chunk-EPWD4KRA.js.map} +0 -0
- /package/dist/{chunk-PN66T6JA.js.map → chunk-EQE3MNQN.js.map} +0 -0
- /package/dist/{chunk-TSBE4KOQ.js.map → chunk-EWL6NDOO.js.map} +0 -0
- /package/dist/{chunk-OO2T63BY.js.map → chunk-EYS4ZOF5.js.map} +0 -0
- /package/dist/{chunk-7CZTKBTI.js.map → chunk-FDAV72IX.js.map} +0 -0
- /package/dist/{chunk-AG7VGUIW.js.map → chunk-FFNPUSVO.js.map} +0 -0
- /package/dist/{chunk-P5T36BA3.js.map → chunk-FRP64DEK.js.map} +0 -0
- /package/dist/{chunk-KBF3SE7G.js.map → chunk-FSP334UU.js.map} +0 -0
- /package/dist/{chunk-BSX2R4CW.js.map → chunk-FTX5CNHA.js.map} +0 -0
- /package/dist/{chunk-O756O2I7.js.map → chunk-FWOBNL2A.js.map} +0 -0
- /package/dist/{chunk-6NIB2KGJ.js.map → chunk-FWYEZ3LE.js.map} +0 -0
- /package/dist/{chunk-DLOYMWUQ.js.map → chunk-G4HQUBO4.js.map} +0 -0
- /package/dist/{chunk-CSHBR2IZ.js.map → chunk-GDLDBR6B.js.map} +0 -0
- /package/dist/{chunk-U36PO27Q.js.map → chunk-GHHM6WN4.js.map} +0 -0
- /package/dist/{chunk-OANSIX34.js.map → chunk-GRSODLVO.js.map} +0 -0
- /package/dist/{chunk-EU6XSQFM.js.map → chunk-GXW2I2M2.js.map} +0 -0
- /package/dist/{chunk-5JEIDFPD.js.map → chunk-GZS37O3G.js.map} +0 -0
- /package/dist/{chunk-HNYJEAES.js.map → chunk-HQWVDQXW.js.map} +0 -0
- /package/dist/{chunk-YXOKAG66.js.map → chunk-HU6JTNWF.js.map} +0 -0
- /package/dist/{chunk-QRVNI5V6.js.map → chunk-I6KIQKU6.js.map} +0 -0
- /package/dist/{chunk-BNUPYHHZ.js.map → chunk-IDXTASGN.js.map} +0 -0
- /package/dist/{chunk-L6RXRRN3.js.map → chunk-ILDOW2IQ.js.map} +0 -0
- /package/dist/{chunk-VUHPA3XQ.js.map → chunk-ITX2TB4K.js.map} +0 -0
- /package/dist/{chunk-BXRIQZAH.js.map → chunk-J22HD2PB.js.map} +0 -0
- /package/dist/{chunk-U47YDYLQ.js.map → chunk-J5MEDX7C.js.map} +0 -0
- /package/dist/{chunk-F6LBGYS6.js.map → chunk-J7FBBLHF.js.map} +0 -0
- /package/dist/{chunk-QZRDCFHI.js.map → chunk-JM4HQPAI.js.map} +0 -0
- /package/dist/{chunk-PIVGX42P.js.map → chunk-JNY5MT3I.js.map} +0 -0
- /package/dist/{chunk-XWWXIZFP.js.map → chunk-JO6R5EXF.js.map} +0 -0
- /package/dist/{chunk-NWZW2WHN.js.map → chunk-JQCGPTZ6.js.map} +0 -0
- /package/dist/{chunk-OR37STQZ.js.map → chunk-KEXYBG7Q.js.map} +0 -0
- /package/dist/{chunk-AZVANYMB.js.map → chunk-KUNFUSZ7.js.map} +0 -0
- /package/dist/{chunk-DXZNDKQD.js.map → chunk-LEEJBZ5B.js.map} +0 -0
- /package/dist/{chunk-AOLE4IRZ.js.map → chunk-LF5CBAOS.js.map} +0 -0
- /package/dist/{chunk-RIMKJBCD.js.map → chunk-LMPTC4CX.js.map} +0 -0
- /package/dist/{chunk-3KVWXKD6.js.map → chunk-LQ47YL6E.js.map} +0 -0
- /package/dist/{chunk-RSNYGEVZ.js.map → chunk-LT4J7RHI.js.map} +0 -0
- /package/dist/{chunk-U3HSFCON.js.map → chunk-MCTTONOW.js.map} +0 -0
- /package/dist/{chunk-7DU35P5J.js.map → chunk-MIECLOQC.js.map} +0 -0
- /package/dist/{chunk-FM4OUCC2.js.map → chunk-MOKYT3X3.js.map} +0 -0
- /package/dist/{chunk-L7YURQI2.js.map → chunk-MXLKI7BI.js.map} +0 -0
- /package/dist/{chunk-XRRSFQEV.js.map → chunk-NAZZLAWX.js.map} +0 -0
- /package/dist/{chunk-UWJ5P5CU.js.map → chunk-NEK4WB5P.js.map} +0 -0
- /package/dist/{chunk-6L7U46Y2.js.map → chunk-NKNVIO66.js.map} +0 -0
- /package/dist/{chunk-JKUICTLM.js.map → chunk-NLAFNMPK.js.map} +0 -0
- /package/dist/{chunk-4LKNIGHB.js.map → chunk-O2SBHS2N.js.map} +0 -0
- /package/dist/{chunk-DWPOQ3S5.js.map → chunk-OTMWHZBY.js.map} +0 -0
- /package/dist/{chunk-JTN3T4QN.js.map → chunk-PCFK7HKD.js.map} +0 -0
- /package/dist/{chunk-VVCDB2T7.js.map → chunk-PCJLH45G.js.map} +0 -0
- /package/dist/{chunk-PZ24CYDO.js.map → chunk-PFAUGEV5.js.map} +0 -0
- /package/dist/{chunk-HGMWMK5K.js.map → chunk-PO3BH3KQ.js.map} +0 -0
- /package/dist/{chunk-B74GSYR6.js.map → chunk-PUTS4DYW.js.map} +0 -0
- /package/dist/{chunk-JSIDLTTG.js.map → chunk-PZ2V2XIK.js.map} +0 -0
- /package/dist/{chunk-TMEQPODK.js.map → chunk-PZ37VDB5.js.map} +0 -0
- /package/dist/{chunk-LVONK3YQ.js.map → chunk-QRKTESVE.js.map} +0 -0
- /package/dist/{chunk-HT5WSUC7.js.map → chunk-QXEDIDBZ.js.map} +0 -0
- /package/dist/{chunk-WURSS6MP.js.map → chunk-R66YMYJU.js.map} +0 -0
- /package/dist/{chunk-HDHK3SXK.js.map → chunk-RFLYID6H.js.map} +0 -0
- /package/dist/{chunk-JK7C5A4I.js.map → chunk-RQNZDTKT.js.map} +0 -0
- /package/dist/{chunk-ST22GONV.js.map → chunk-S37GP7LX.js.map} +0 -0
- /package/dist/{chunk-A2EWJQXX.js.map → chunk-SM5QX6UK.js.map} +0 -0
- /package/dist/{chunk-FBE6AIIW.js.map → chunk-SOKNCW5U.js.map} +0 -0
- /package/dist/{chunk-UP4BE32Y.js.map → chunk-SY2AAZNB.js.map} +0 -0
- /package/dist/{chunk-33TPANCR.js.map → chunk-TFK4KFKA.js.map} +0 -0
- /package/dist/{chunk-4432A3HQ.js.map → chunk-TIQPKOFW.js.map} +0 -0
- /package/dist/{chunk-HPPKLBTJ.js.map → chunk-TJQDL3JH.js.map} +0 -0
- /package/dist/{chunk-FD4Q5KFL.js.map → chunk-TLL22FFO.js.map} +0 -0
- /package/dist/{chunk-QM5H4FPT.js.map → chunk-TV6BWONY.js.map} +0 -0
- /package/dist/{chunk-4VKA5O7T.js.map → chunk-U6MPB3K6.js.map} +0 -0
- /package/dist/{chunk-XOFUXMPP.js.map → chunk-ULJAOMJA.js.map} +0 -0
- /package/dist/{chunk-H5EVWF6L.js.map → chunk-UNNJUJVD.js.map} +0 -0
- /package/dist/{chunk-Z6DKXQG7.js.map → chunk-UXXFMF4X.js.map} +0 -0
- /package/dist/{chunk-OBQVTCTW.js.map → chunk-UYNCMZX5.js.map} +0 -0
- /package/dist/{chunk-KZHW27BV.js.map → chunk-V4QZ7UBK.js.map} +0 -0
- /package/dist/{chunk-SUVEDKE2.js.map → chunk-VH5EGTH2.js.map} +0 -0
- /package/dist/{chunk-QEJTQTF5.js.map → chunk-W6T5HR3Z.js.map} +0 -0
- /package/dist/{chunk-VP62LPLW.js.map → chunk-WCMG4HYI.js.map} +0 -0
- /package/dist/{chunk-GZLLDA6P.js.map → chunk-WEFN327U.js.map} +0 -0
- /package/dist/{chunk-7BST7BA6.js.map → chunk-WKHUZIOW.js.map} +0 -0
- /package/dist/{chunk-ANHUMDJX.js.map → chunk-WNDTLK44.js.map} +0 -0
- /package/dist/{chunk-2DS4UOYQ.js.map → chunk-WSZQNTVN.js.map} +0 -0
- /package/dist/{chunk-GALB2G3W.js.map → chunk-X2AH4DRF.js.map} +0 -0
- /package/dist/{chunk-Z2DAWUO3.js.map → chunk-XMNUZUUA.js.map} +0 -0
- /package/dist/{chunk-GAIM5RNE.js.map → chunk-XN7NSPE6.js.map} +0 -0
- /package/dist/{chunk-FLGUVRR7.js.map → chunk-Y5BSA3I7.js.map} +0 -0
- /package/dist/{chunk-QCD5Y7K5.js.map → chunk-YEROLKOA.js.map} +0 -0
- /package/dist/{chunk-NDF3SH3X.js.map → chunk-YJPKDRI2.js.map} +0 -0
- /package/dist/{chunk-VAIESMPY.js.map → chunk-YVBHGMKC.js.map} +0 -0
- /package/dist/{chunk-AD22P5X3.js.map → chunk-YXA2EKV3.js.map} +0 -0
- /package/dist/{chunk-FDNJVZRE.js.map → chunk-YYCOSTUU.js.map} +0 -0
- /package/dist/{chunk-NLMTNEWW.js.map → chunk-Z6E6TUAE.js.map} +0 -0
- /package/dist/{chunk-BJW7G6EF.js.map → chunk-Z7IGO5EA.js.map} +0 -0
- /package/dist/{chunk-NCX5SAQY.js.map → chunk-ZEIFJ6PX.js.map} +0 -0
- /package/dist/{chunk-4EONHNJU.js.map → chunk-ZVVT72MT.js.map} +0 -0
- /package/dist/{embedded-voice-6QS4ANNX.js.map → computer-viewer-25AJIDYA.js.map} +0 -0
- /package/dist/{model-policy-picker-menu-CURJ247L.js.map → embedded-new-voice-RZZEJT6M.js.map} +0 -0
- /package/dist/{sandbox-files-4FBG3GS2.js.map → embedded-voice-6OKSSPLW.js.map} +0 -0
- /package/dist/{fleet-decision-row-QNSTP3VX.js.map → fleet-decision-row-NN2HXDX3.js.map} +0 -0
- /package/dist/{session-realtime-2XIB254N.js.map → model-policy-picker-menu-VVFGGAI6.js.map} +0 -0
- /package/dist/{platform-activity-row-BMXXNZKX.js.map → platform-activity-row-ENQVIFTL.js.map} +0 -0
- /package/dist/{timeline-annotation-markers-X4K2IEOO.js.map → timeline-annotation-markers-KHNYNY2J.js.map} +0 -0
- /package/dist/{timeline-annotation-selection-MEHBW676.js.map → timeline-annotation-selection-AXEDJHBP.js.map} +0 -0
- /package/dist/{timeline-annotations-dialog-U2FPQ3UY.js.map → timeline-annotations-dialog-AV4ZBXRC.js.map} +0 -0
|
@@ -1,127 +1,120 @@
|
|
|
1
1
|
"use client";
|
|
2
|
+
import {
|
|
3
|
+
DetailBody
|
|
4
|
+
} from "../../../chunk-4RMN4E2Y.js";
|
|
5
|
+
import "../../../chunk-Y6TTMPZC.js";
|
|
6
|
+
import {
|
|
7
|
+
SessionGitHubCapabilityCard
|
|
8
|
+
} from "../../../chunk-WCMG4HYI.js";
|
|
2
9
|
import {
|
|
3
10
|
useCapabilitiesCatalog
|
|
4
|
-
} from "../../../chunk-
|
|
11
|
+
} from "../../../chunk-62VER7O4.js";
|
|
12
|
+
import "../../../chunk-MOMM26UR.js";
|
|
5
13
|
import {
|
|
6
14
|
SessionCustomMcpCard
|
|
7
|
-
} from "../../../chunk-
|
|
15
|
+
} from "../../../chunk-HQWVDQXW.js";
|
|
16
|
+
import "../../../chunk-FIPSOCVC.js";
|
|
17
|
+
import "../../../chunk-3STBLX4O.js";
|
|
18
|
+
import "../../../chunk-LF5CBAOS.js";
|
|
8
19
|
import {
|
|
9
20
|
performCapabilityAction
|
|
10
21
|
} from "../../../chunk-NWSAF6P5.js";
|
|
11
|
-
import {
|
|
12
|
-
DetailBody
|
|
13
|
-
} from "../../../chunk-KWKGBGAF.js";
|
|
14
|
-
import "../../../chunk-Y6TTMPZC.js";
|
|
15
|
-
import "../../../chunk-V3RHG7CF.js";
|
|
16
|
-
import "../../../chunk-AOLE4IRZ.js";
|
|
17
|
-
import "../../../chunk-FIPSOCVC.js";
|
|
18
|
-
import "../../../chunk-VHDCIO4V.js";
|
|
19
|
-
import "../../../chunk-IYEI5OZL.js";
|
|
20
22
|
import "../../../chunk-5N6XZ7LG.js";
|
|
23
|
+
import "../../../chunk-VHDCIO4V.js";
|
|
24
|
+
import "../../../chunk-V3RHG7CF.js";
|
|
21
25
|
import {
|
|
22
26
|
SessionChromeCapabilityCard
|
|
23
|
-
} from "../../../chunk-
|
|
24
|
-
import "../../../chunk-RQDFYQHA.js";
|
|
25
|
-
import "../../../chunk-AF53CDFM.js";
|
|
27
|
+
} from "../../../chunk-S37GP7LX.js";
|
|
26
28
|
import {
|
|
27
29
|
RepeatedMachineRequestNote,
|
|
28
30
|
SessionMachineCapabilityCard
|
|
29
|
-
} from "../../../chunk-
|
|
30
|
-
import "../../../chunk-
|
|
31
|
-
import
|
|
32
|
-
|
|
33
|
-
} from "../../../chunk-VP62LPLW.js";
|
|
34
|
-
import "../../../chunk-MOMM26UR.js";
|
|
31
|
+
} from "../../../chunk-ACL2V2KE.js";
|
|
32
|
+
import "../../../chunk-552UYIQ7.js";
|
|
33
|
+
import "../../../chunk-AF53CDFM.js";
|
|
34
|
+
import "../../../chunk-IYEI5OZL.js";
|
|
35
35
|
import "../../../chunk-LEDS7L3I.js";
|
|
36
|
-
import "../../../chunk-M27WO6W3.js";
|
|
37
36
|
import "../../../chunk-MKG5VTIJ.js";
|
|
37
|
+
import "../../../chunk-M27WO6W3.js";
|
|
38
38
|
import "../../../chunk-46I7MMAL.js";
|
|
39
39
|
import "../../../chunk-NRREC7JK.js";
|
|
40
40
|
import "../../../chunk-KV6GUPL2.js";
|
|
41
41
|
import {
|
|
42
42
|
CodexSubscriptionsSurface
|
|
43
|
-
} from "../../../chunk-
|
|
44
|
-
import "../../../chunk-
|
|
43
|
+
} from "../../../chunk-SOKNCW5U.js";
|
|
44
|
+
import "../../../chunk-JM4HQPAI.js";
|
|
45
45
|
import "../../../chunk-2LUBBDZV.js";
|
|
46
|
-
import "../../../chunk-
|
|
47
|
-
import "../../../chunk-
|
|
48
|
-
import "../../../chunk-
|
|
46
|
+
import "../../../chunk-JQCGPTZ6.js";
|
|
47
|
+
import "../../../chunk-YVBHGMKC.js";
|
|
48
|
+
import "../../../chunk-5DSKMG2I.js";
|
|
49
49
|
import "../../../chunk-J6WRB3VZ.js";
|
|
50
|
-
import "../../../chunk-
|
|
50
|
+
import "../../../chunk-TFK4KFKA.js";
|
|
51
51
|
import "../../../chunk-HI7BTJRG.js";
|
|
52
|
+
import "../../../chunk-KUNFUSZ7.js";
|
|
52
53
|
import "../../../chunk-PVNI2KHS.js";
|
|
53
|
-
import "../../../chunk-
|
|
54
|
-
import "../../../chunk-VVCDB2T7.js";
|
|
54
|
+
import "../../../chunk-PCJLH45G.js";
|
|
55
55
|
import "../../../chunk-J4OPEWC3.js";
|
|
56
56
|
import "../../../chunk-HUKUDAIP.js";
|
|
57
|
+
import "../../../chunk-55S3W7RZ.js";
|
|
58
|
+
import "../../../chunk-FABYS4WM.js";
|
|
57
59
|
import {
|
|
58
60
|
capabilityLogoSource
|
|
59
|
-
} from "../../../chunk-
|
|
60
|
-
import "../../../chunk-722UO6YQ.js";
|
|
61
|
-
import "../../../chunk-FABYS4WM.js";
|
|
61
|
+
} from "../../../chunk-7FJMRJDG.js";
|
|
62
62
|
import {
|
|
63
63
|
capabilityConnectPlan,
|
|
64
64
|
capabilityErrorToast,
|
|
65
65
|
connectionHealth
|
|
66
66
|
} from "../../../chunk-22NENBA3.js";
|
|
67
|
-
import "../../../chunk-
|
|
67
|
+
import "../../../chunk-3PEXVG4D.js";
|
|
68
68
|
import "../../../chunk-G46333YC.js";
|
|
69
69
|
import "../../../chunk-L5HJ4UYB.js";
|
|
70
70
|
import "../../../chunk-A3MTTRCX.js";
|
|
71
71
|
import "../../../chunk-ECNX3UOI.js";
|
|
72
|
-
import "../../../chunk-
|
|
72
|
+
import "../../../chunk-IZMUUUYD.js";
|
|
73
73
|
import "../../../chunk-SS3N75VI.js";
|
|
74
74
|
import "../../../chunk-325C2TCI.js";
|
|
75
|
+
import "../../../chunk-XSOPQZGH.js";
|
|
75
76
|
import "../../../chunk-WMSCYECP.js";
|
|
76
|
-
import "../../../chunk-FQQEZUSN.js";
|
|
77
|
-
import "../../../chunk-6KELG2EG.js";
|
|
78
|
-
import "../../../chunk-IZMUUUYD.js";
|
|
79
|
-
import "../../../chunk-T6KM63FZ.js";
|
|
80
77
|
import "../../../chunk-PYC2ZWBJ.js";
|
|
81
|
-
import "../../../chunk-
|
|
82
|
-
import "../../../chunk-ZMBJPN4T.js";
|
|
78
|
+
import "../../../chunk-T6KM63FZ.js";
|
|
83
79
|
import "../../../chunk-HZUL2CUH.js";
|
|
80
|
+
import "../../../chunk-6KELG2EG.js";
|
|
81
|
+
import "../../../chunk-TREHTIBD.js";
|
|
82
|
+
import "../../../chunk-FQQEZUSN.js";
|
|
83
|
+
import "../../../chunk-XNTW77T6.js";
|
|
84
|
+
import "../../../chunk-EPCPGUIF.js";
|
|
84
85
|
import "../../../chunk-X6WZOHBI.js";
|
|
85
|
-
import {
|
|
86
|
-
t
|
|
87
|
-
} from "../../../chunk-HPPKLBTJ.js";
|
|
88
86
|
import "../../../chunk-L6Y4ALSM.js";
|
|
89
87
|
import {
|
|
90
|
-
|
|
91
|
-
} from "../../../chunk-
|
|
92
|
-
import "../../../chunk-74JEZLLQ.js";
|
|
88
|
+
t
|
|
89
|
+
} from "../../../chunk-TJQDL3JH.js";
|
|
93
90
|
import "../../../chunk-YG6NARQY.js";
|
|
94
91
|
import {
|
|
95
92
|
usePage
|
|
96
|
-
} from "../../../chunk-
|
|
93
|
+
} from "../../../chunk-VYKW6TB2.js";
|
|
97
94
|
import "../../../chunk-IZUAIHR4.js";
|
|
98
95
|
import {
|
|
99
|
-
|
|
100
|
-
} from "../../../chunk-
|
|
96
|
+
hasWorkspacePermission
|
|
97
|
+
} from "../../../chunk-FIDD34ZF.js";
|
|
98
|
+
import "../../../chunk-74JEZLLQ.js";
|
|
101
99
|
import {
|
|
102
100
|
useAppContext
|
|
103
101
|
} from "../../../chunk-W6KAUGXO.js";
|
|
104
|
-
import "../../../chunk-TREHTIBD.js";
|
|
105
102
|
import "../../../chunk-5OTQA7CM.js";
|
|
106
|
-
import "../../../chunk-XNTW77T6.js";
|
|
107
|
-
import "../../../chunk-HY7EYWIG.js";
|
|
108
103
|
import "../../../chunk-XG57V2BN.js";
|
|
109
104
|
import "../../../chunk-KS57MLGE.js";
|
|
110
|
-
import "../../../chunk-
|
|
111
|
-
import "../../../chunk-
|
|
112
|
-
import {
|
|
113
|
-
Notice
|
|
114
|
-
} from "../../../chunk-WLEDGIVS.js";
|
|
105
|
+
import "../../../chunk-ZMBJPN4T.js";
|
|
106
|
+
import "../../../chunk-HY7EYWIG.js";
|
|
115
107
|
import {
|
|
116
|
-
|
|
117
|
-
} from "../../../chunk-
|
|
118
|
-
import "../../../chunk-
|
|
119
|
-
import "../../../chunk-HT5WSUC7.js";
|
|
120
|
-
import "../../../chunk-4432A3HQ.js";
|
|
108
|
+
userErrorText
|
|
109
|
+
} from "../../../chunk-L4OF77LE.js";
|
|
110
|
+
import "../../../chunk-TIQPKOFW.js";
|
|
121
111
|
import "../../../chunk-M357MHH3.js";
|
|
112
|
+
import "../../../chunk-NRP4REXE.js";
|
|
113
|
+
import "../../../chunk-DGLRZMXL.js";
|
|
114
|
+
import "../../../chunk-A3KMTJZS.js";
|
|
122
115
|
import {
|
|
123
116
|
SessionMcpCapabilityCard
|
|
124
|
-
} from "../../../chunk-
|
|
117
|
+
} from "../../../chunk-ILDOW2IQ.js";
|
|
125
118
|
import {
|
|
126
119
|
applySessionCapabilityAccess,
|
|
127
120
|
attachSessionCapability,
|
|
@@ -129,30 +122,39 @@ import {
|
|
|
129
122
|
} from "../../../chunk-CUUJROYT.js";
|
|
130
123
|
import {
|
|
131
124
|
SessionCapabilityFrame
|
|
132
|
-
} from "../../../chunk-
|
|
133
|
-
import "../../../chunk-
|
|
125
|
+
} from "../../../chunk-AX6YJA5U.js";
|
|
126
|
+
import "../../../chunk-WSZQNTVN.js";
|
|
127
|
+
import {
|
|
128
|
+
Notice
|
|
129
|
+
} from "../../../chunk-WLEDGIVS.js";
|
|
130
|
+
import {
|
|
131
|
+
Button
|
|
132
|
+
} from "../../../chunk-HMU5IELG.js";
|
|
133
|
+
import "../../../chunk-35BC2FU2.js";
|
|
134
134
|
import "../../../chunk-OYQQJL3J.js";
|
|
135
135
|
import "../../../chunk-H3LIIAGE.js";
|
|
136
136
|
import "../../../chunk-RZLBICR5.js";
|
|
137
137
|
import "../../../chunk-VHB3E6PT.js";
|
|
138
|
-
import "../../../chunk-
|
|
139
|
-
import "../../../chunk-4LKNIGHB.js";
|
|
138
|
+
import "../../../chunk-O2SBHS2N.js";
|
|
140
139
|
import "../../../chunk-BOG2FED3.js";
|
|
141
|
-
import "../../../chunk-
|
|
142
|
-
import "../../../chunk-OB3YGXHQ.js";
|
|
143
|
-
import "../../../chunk-UNJPZGNK.js";
|
|
144
|
-
import "../../../chunk-PEHTX3V7.js";
|
|
145
|
-
import "../../../chunk-NRP4REXE.js";
|
|
146
|
-
import "../../../chunk-OBQVTCTW.js";
|
|
140
|
+
import "../../../chunk-UYNCMZX5.js";
|
|
147
141
|
import "../../../chunk-J3BHDXQQ.js";
|
|
148
142
|
import "../../../chunk-XEA5BCMA.js";
|
|
149
|
-
import "../../../chunk-
|
|
143
|
+
import "../../../chunk-CPLCSM6K.js";
|
|
144
|
+
import "../../../chunk-QXEDIDBZ.js";
|
|
145
|
+
import "../../../chunk-PEHTX3V7.js";
|
|
146
|
+
import "../../../chunk-XV6ZYRHK.js";
|
|
147
|
+
import "../../../chunk-IGVL3ELX.js";
|
|
148
|
+
import "../../../chunk-2KO2G3RI.js";
|
|
150
149
|
import "../../../chunk-CM7LVUKC.js";
|
|
151
150
|
import "../../../chunk-TVQCDDSZ.js";
|
|
151
|
+
import "../../../chunk-UNJPZGNK.js";
|
|
152
|
+
import "../../../chunk-DNJ23AWQ.js";
|
|
153
|
+
import "../../../chunk-OB3YGXHQ.js";
|
|
152
154
|
import "../../../chunk-SJGAHTY5.js";
|
|
153
155
|
import "../../../chunk-4NHJ6EXL.js";
|
|
154
156
|
import "../../../chunk-TXS65BB2.js";
|
|
155
|
-
import "../../../chunk-
|
|
157
|
+
import "../../../chunk-JFK7NTEA.js";
|
|
156
158
|
|
|
157
159
|
// src/app/components/capabilities/session-capability-card.tsx
|
|
158
160
|
import { Suspense, useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/app/components/capabilities/session-capability-card.tsx"],"sourcesContent":["import { t } from \"../../lib/console-text\";\nimport {\n attachSessionCapability,\n prepareSessionCapabilityAccess,\n applySessionCapabilityAccess,\n type SessionCapabilityAccessPlan,\n} from \"./attach-session-capability\";\nimport { Suspense, useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { SessionMcpCapabilityCard } from \"../../../components/session-mcp-capability-card\";\nimport type { AuthNeededItem } from \"../../../timeline\";\nimport { CheckIcon, Loader2Icon } from \"lucide-react\";\nimport { useAppContext } from \"../../app-context\";\nimport { CodexSubscriptionsSurface } from \"../../lib/app-surfaces\";\nimport { Button } from \"../../../ui/button\";\nimport { Notice } from \"../../../ui/notice\";\nimport { SessionCapabilityFrame } from \"../../../components/session-capability-frame\";\nimport { capabilityLogoSource } from \"./capability-logo-source\";\nimport { DetailBody, type ConnectAction } from \"./capability-detail-sheet\";\nimport { performCapabilityAction } from \"./perform-capability-action\";\nimport { useCapabilitiesCatalog } from \"./use-capabilities-catalog\";\nimport { SessionCustomMcpCard } from \"./session-custom-mcp-card\";\nimport {\n capabilityConnectPlan,\n capabilityErrorToast,\n connectionHealth,\n} from \"../../lib/capabilities\";\nimport { userErrorText } from \"../../../ui/api-error\";\nimport { hasWorkspacePermission } from \"../../lib/permissions\";\nimport type { CapabilityCatalogItem, ResourceRef } from \"../../types\";\nimport type { ChatSendContext } from \"./session-github-repositories\";\nimport { SessionGitHubCapabilityCard } from \"./session-github-card\";\nimport { RepeatedMachineRequestNote, SessionMachineCapabilityCard } from \"./session-machine-card\";\nimport { SessionChromeCapabilityCard } from \"./session-chrome-card\";\nimport { usePage } from \"../../lib/navigation\";\n\n/** The built-in card for connecting a person's own computer to this chat. */\nexport const CONNECTED_MACHINE_CAPABILITY_ID = \"api:connected-machine\";\n\n/** The built-in tile and card that install the deployment's Excel add-in. */\nexport const EXCEL_ADDIN_CAPABILITY_ID = \"api:excel-addin\";\n\n/** Recommendations carry identity and rationale, never connection configuration.\n * Expand against the current authenticated catalog before rendering any form. */\ntype SessionCapabilityCardProps = {\n visibility?: \"private\" | \"workspace\" | undefined;\n onConfigured?: (() => Promise<void>) | undefined;\n item: AuthNeededItem;\n workspaceId: string;\n sessionId: string;\n /** The chat's mounted resources, for cards that add a resource to this chat. */\n resources?: readonly ResourceRef[] | undefined;\n /** What a composer Send would carry now, for cards that send a human message. */\n sendContext?: (() => ChatSendContext) | undefined;\n};\n\nexport function SessionCapabilityCard(props: SessionCapabilityCardProps) {\n const page = usePage();\n const context = useAppContext();\n const [registered, setRegistered] = useState<{ id: string; restoreFocus: boolean } | null>(null);\n const onRegistered = useCallback(\n (id: string, restoreFocus: boolean) => setRegistered({ id, restoreFocus }),\n [],\n );\n if (props.item.setupRequest && !registered) {\n return (\n <SessionCustomMcpCard\n key={`${props.workspaceId}:${props.item.id}`}\n item={props.item}\n workspaceId={props.workspaceId}\n sessionId={props.sessionId}\n onConfigured={props.onConfigured}\n onRegistered={onRegistered}\n />\n );\n }\n const item = registered\n ? {\n ...props.item,\n setupRequest: null,\n capability: {\n id: registered.id,\n name: props.item.setupRequest!.name,\n kind: \"mcp\" as const,\n source: \"manual\" as const,\n action: \"connect\" as const,\n rationale: props.item.setupRequest!.rationale,\n requiredVariables: [],\n },\n }\n : props.item;\n const capability = item.capability;\n if (capability?.id === CONNECTED_MACHINE_CAPABILITY_ID) {\n // The same request was made again further down, where its card is live.\n if (item.askedAgainLater)\n return <RepeatedMachineRequestNote chrome={item.purpose === \"chrome\"} />;\n if (item.purpose === \"chrome\") {\n return (\n <SessionChromeCapabilityCard\n key={`${props.workspaceId}:${props.sessionId}`}\n item={item}\n workspaceId={props.workspaceId}\n sessionId={props.sessionId}\n sendContext={props.sendContext}\n />\n );\n }\n return (\n <SessionMachineCapabilityCard\n key={`${props.workspaceId}:${props.sessionId}`}\n item={item}\n workspaceId={props.workspaceId}\n sessionId={props.sessionId}\n sendContext={props.sendContext}\n onConfigured={props.onConfigured}\n />\n );\n }\n if (capability?.id === \"api:github-app\") {\n return (\n <SessionGitHubCapabilityCard\n key={`${props.workspaceId}:${props.sessionId}`}\n item={item}\n workspaceId={props.workspaceId}\n sessionId={props.sessionId}\n resources={props.resources}\n sendContext={props.sendContext}\n onConfigured={props.onConfigured}\n />\n );\n }\n const resolved = context.workspaceCapabilityCatalog.find((entry) => entry.id === capability?.id);\n if (capability && resolved?.kind === \"mcp\" && resolved.authKind === \"oauth2\") {\n return (\n <SessionMcpCapabilityCard\n client={context.client}\n workspaceId={props.workspaceId}\n sessionId={props.sessionId}\n capabilityId={capability.id}\n name={capability.name}\n rationale={capability.rationale}\n returnUrl={page.href()}\n onConfigured={props.onConfigured}\n />\n );\n }\n return (\n <ScopedSessionCapabilityCard\n key={`${props.workspaceId}:${props.sessionId}:${capability!.id}`}\n {...props}\n item={item}\n restoreFocus={registered?.restoreFocus ?? false}\n />\n );\n}\n\nfunction ScopedSessionCapabilityCard({\n item,\n workspaceId,\n sessionId,\n onConfigured,\n restoreFocus = false,\n}: SessionCapabilityCardProps & { restoreFocus?: boolean | undefined }) {\n const context = useAppContext();\n const recommendation = item.capability!;\n const [expanded, setExpanded] = useState(false);\n const [complete, setComplete] = useState(false);\n const [busy, setBusy] = useState(false);\n const [resolvedItem, setResolvedItem] = useState<CapabilityCatalogItem | null>(null);\n const opener = useRef<HTMLButtonElement>(null);\n const cardRef = useRef<HTMLElement>(null);\n useEffect(() => {\n if (!restoreFocus) return;\n // The review dialog's opener is removed when the new connection card\n // replaces it. Focus the next actionable control after Radix closes it.\n const frame = requestAnimationFrame(() => opener.current?.focus());\n return () => cancelAnimationFrame(frame);\n }, [restoreFocus]);\n const catalogItem =\n resolvedItem ??\n context.workspaceCapabilityCatalog.find((entry) => entry.id === recommendation.id);\n const logo = catalogItem\n ? capabilityLogoSource(catalogItem, (path) => context.client.catalogAssetUrl(path))\n : null;\n const close = () => {\n setExpanded(false);\n };\n const skill = recommendation.kind === \"skill\";\n const excel = recommendation.id === EXCEL_ADDIN_CAPABILITY_ID;\n const apiKey = catalogItem ? capabilityConnectPlan(catalogItem).mode === \"api_key\" : false;\n return (\n <SessionCapabilityFrame\n name={catalogItem?.name ?? recommendation.name}\n subtitle={catalogItem ? (catalogItem.providerDomain ?? \"\") : item.providerDomain}\n logo={logo}\n typeLabel={\n skill ? \"Skill\" : excel ? \"Add-in\" : recommendation.kind === \"mcp\" ? \"MCP server\" : \"API\"\n }\n description={catalogItem?.description || recommendation.rationale}\n skill={skill}\n expanded={expanded}\n complete={complete}\n actionLabel={\n excel\n ? \"Add to Excel\"\n : catalogItem?.enabled\n ? \"Review\"\n : skill\n ? \"Review skill\"\n : apiKey\n ? \"Add API key\"\n : `Connect ${catalogItem?.name ?? recommendation.name}`\n }\n note={\n excel\n ? \"The add-in runs in your own Excel. Agents reach a workbook only while you have the add-in open in it.\"\n : skill\n ? \"Skill content is reviewed separately from permission to use any integration.\"\n : apiKey\n ? \"Add credentials in the protected form, not in a chat message.\"\n : \"Review access before signing in. You'll return to this conversation after authorization.\"\n }\n onOpen={() => setExpanded(true)}\n onClose={close}\n busy={busy}\n opener={opener}\n cardRef={cardRef}\n >\n {recommendation.id === \"mcp:codex_apps\" ? (\n <SessionCodexAppsSetup\n busy={busy}\n setBusy={setBusy}\n workspaceId={workspaceId}\n sessionId={sessionId}\n onClose={close}\n onComplete={() => {\n setComplete(true);\n close();\n }}\n />\n ) : (\n <SessionCapabilitySetup\n busy={busy}\n setBusy={setBusy}\n key={`${workspaceId}:${sessionId}:${recommendation.id}`}\n capabilityId={recommendation.id}\n onResolvedItem={setResolvedItem}\n onConfigured={onConfigured}\n workspaceId={workspaceId}\n sessionId={sessionId}\n onClose={close}\n onComplete={() => {\n setComplete(true);\n close();\n }}\n />\n )}\n </SessionCapabilityFrame>\n );\n}\n\nfunction SessionCapabilitySetup({\n busy,\n setBusy,\n capabilityId,\n onResolvedItem,\n onConfigured,\n workspaceId,\n sessionId,\n onClose,\n onComplete,\n}: {\n busy: boolean;\n setBusy: (busy: boolean) => void;\n capabilityId: string;\n onResolvedItem: (item: CapabilityCatalogItem) => void;\n onConfigured?: (() => Promise<void>) | undefined;\n workspaceId: string;\n sessionId: string;\n onClose: () => void;\n onComplete: () => void;\n}) {\n const page = usePage();\n const context = useAppContext();\n const catalog = useCapabilitiesCatalog(workspaceId);\n const canReadConnections =\n context.accessContext === null\n ? null\n : hasWorkspacePermission(context.accessContext, workspaceId, \"connections:read\");\n const [error, setError] = useState<string | null>(null);\n const subjectId = context.accessContext?.subjectId ?? null;\n const [parentAccessReview, setParentAccessReview] = useState<{\n plan: SessionCapabilityAccessPlan;\n invocation: object;\n } | null>(null);\n const [authInspection, setAuthInspection] = useState<{\n id: string;\n url: string;\n kind: \"oauth2\" | \"none\" | \"unknown\";\n message?: string | undefined;\n } | null>(null);\n const [authInspectionRevision, setAuthInspectionRevision] = useState(0);\n const inFlight = useRef<object | null>(null);\n const scope = useRef({\n client: context.client,\n workspaceId,\n sessionId,\n canReadConnections,\n subjectId,\n authorityKey: catalog.authorityKey,\n alive: true,\n });\n if (\n scope.current.client !== context.client ||\n scope.current.workspaceId !== workspaceId ||\n scope.current.sessionId !== sessionId ||\n scope.current.canReadConnections !== canReadConnections ||\n scope.current.subjectId !== subjectId ||\n scope.current.authorityKey !== catalog.authorityKey\n ) {\n scope.current = {\n client: context.client,\n workspaceId,\n sessionId,\n canReadConnections,\n subjectId,\n authorityKey: catalog.authorityKey,\n alive: true,\n };\n }\n const parentAccessPlan =\n parentAccessReview?.invocation === scope.current ? parentAccessReview.plan : null;\n useEffect(() => {\n // StrictMode replays setup after cleanup. Give the replay a new owner:\n // reusing the retired object would either keep it dead or revive old work.\n if (!scope.current.alive) scope.current = { ...scope.current, alive: true };\n const activeScope = scope.current;\n setParentAccessReview(null);\n setBusy(false);\n void catalog.refresh();\n return () => {\n activeScope.alive = false;\n };\n // Refetch on a live read-grant change; the hook masks prior rows during render.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n context.client,\n workspaceId,\n sessionId,\n canReadConnections,\n subjectId,\n catalog.authorityKey,\n setBusy,\n ]);\n const rawItem = catalog.items.find((entry) => entry.id === capabilityId);\n const rawItemId = rawItem?.id;\n const inspectUrl = rawItem?.mcpUrl ?? rawItem?.endpointUrl;\n const needsAuthInspection =\n rawItem?.kind === \"mcp\" &&\n !rawItem.enabled &&\n capabilityConnectPlan(rawItem).mode === \"setup_required\" &&\n Boolean(inspectUrl);\n useEffect(() => {\n if (!needsAuthInspection || !rawItemId || !inspectUrl) return;\n let active = true;\n setAuthInspection(null);\n void context.client.inspectMcpAuthentication(workspaceId, inspectUrl).then(\n (result) => {\n if (active) setAuthInspection({ id: rawItemId, url: inspectUrl, ...result });\n },\n () => {\n if (active) setAuthInspection({ id: rawItemId, url: inspectUrl, kind: \"unknown\" });\n },\n );\n return () => {\n active = false;\n };\n }, [\n context.client,\n workspaceId,\n rawItemId,\n inspectUrl,\n needsAuthInspection,\n authInspectionRevision,\n ]);\n const item = useMemo(() => {\n if (!rawItem || !needsAuthInspection) return rawItem;\n const inspection =\n authInspection?.id === rawItem.id && authInspection.url === inspectUrl\n ? authInspection.kind\n : \"checking\";\n return {\n ...rawItem,\n authKind:\n inspection === \"oauth2\"\n ? (\"oauth2\" as const)\n : inspection === \"none\"\n ? (\"none\" as const)\n : null,\n metadata: {\n ...rawItem.metadata,\n authDiscovery: inspection,\n authDiscoveryMessage: inspection === \"unknown\" ? authInspection?.message : undefined,\n },\n };\n }, [rawItem, needsAuthInspection, inspectUrl, authInspection]);\n useEffect(() => {\n if (item) onResolvedItem(item);\n }, [item, onResolvedItem]);\n const refreshRuntime = useCallback(() => {\n void context.refreshWorkspaceMcpServers(workspaceId);\n }, [context, workspaceId]);\n async function act(action: ConnectAction) {\n if (!item) return;\n const invocation = scope.current;\n if (inFlight.current === invocation) return;\n inFlight.current = invocation;\n setBusy(true);\n setError(null);\n setParentAccessReview(null);\n const current = () => scope.current === invocation && invocation.alive;\n try {\n await performCapabilityAction(\n {\n client: context.client,\n workspaceId,\n item,\n connections: catalog.connectionsLoadFailed ? null : catalog.connections,\n canManageSkills: hasWorkspacePermission(\n context.accessContext,\n workspaceId,\n \"capabilities:manage\",\n ),\n refresh: catalog.refresh,\n onRuntimeChanged: () => {\n if (current()) refreshRuntime();\n },\n onComplete: async () => {\n if (!current()) return;\n const updated = (await context.client.listCapabilities(workspaceId)).items.find(\n (entry) => entry.id === item.id,\n );\n if (!current()) return;\n if (!updated?.enabled)\n throw new Error(\"Setup could not be verified. Refresh and try again.\");\n const plan = await prepareSessionCapabilityAccess(\n t,\n context.client,\n workspaceId,\n sessionId,\n updated,\n current,\n );\n if (!current()) return;\n if (plan.sessions.some((chat) => chat.id !== sessionId && chat.request)) {\n setParentAccessReview({ plan, invocation });\n return;\n }\n await applySessionCapabilityAccess(t, context.client, plan, current);\n await onConfigured?.();\n if (current()) onComplete();\n },\n onSkillRemoval: () => {\n throw new Error(\n \"Use the workspace Skill controls to review removal and its other owners.\",\n );\n },\n returnPathFor: (id) =>\n `/workspaces/${encodeURIComponent(workspaceId)}/sessions/${encodeURIComponent(sessionId)}?capability_auth=${encodeURIComponent(id)}`,\n redirect: (url) => {\n if (current()) page.assign(url);\n },\n },\n action,\n );\n } catch (failure) {\n // A credential may have committed before enabling failed. Reconcile before\n // offering Retry so it reuses that row instead of minting a duplicate.\n if (current()) await catalog.refresh();\n if (current()) setError(capabilityErrorToast(failure, \"Couldn't complete setup\").description);\n } finally {\n if (inFlight.current === invocation) inFlight.current = null;\n if (current()) setBusy(false);\n }\n }\n async function useConnected() {\n if (!item) return;\n const invocation = scope.current;\n if (inFlight.current === invocation) return;\n inFlight.current = invocation;\n setBusy(true);\n setError(null);\n const current = () => scope.current === invocation && invocation.alive;\n try {\n const plan =\n parentAccessPlan ??\n (await prepareSessionCapabilityAccess(\n t,\n context.client,\n workspaceId,\n sessionId,\n item,\n current,\n ));\n if (!current()) return;\n if (\n !parentAccessPlan &&\n plan.sessions.some((chat) => chat.id !== sessionId && chat.request)\n ) {\n setParentAccessReview({ plan, invocation });\n return;\n }\n await applySessionCapabilityAccess(t, context.client, plan, current);\n if (current()) setParentAccessReview(null);\n if (current()) await onConfigured?.();\n if (current()) onComplete();\n } catch (failure) {\n if (current()) {\n setParentAccessReview(null);\n setError(`Couldn't add this connection. ${userErrorText(failure, \"Try again.\")}`);\n }\n } finally {\n if (inFlight.current === invocation) inFlight.current = null;\n if (current()) setBusy(false);\n }\n }\n const ownsActionRow =\n !catalog.loadError && item && !item.enabled && (item.kind === \"skill\" || item.kind === \"mcp\");\n const health = item\n ? connectionHealth(item, catalog.connections ?? [], catalog.connections !== null)\n : null;\n return (\n <div className=\"p-6 sm:p-8\">\n {catalog.loading && !item ? (\n <p role=\"status\" className=\"flex items-center gap-2 text-sm text-fg-muted\">\n <Loader2Icon className=\"size-4 animate-spin\" />\n Loading connection details…\n </p>\n ) : catalog.loadError || !item ? (\n <Notice\n tone=\"failed\"\n action={\n <Button size=\"sm\" onClick={() => void catalog.refresh()}>\n Retry\n </Button>\n }\n >\n {catalog.loadError\n ? \"Couldn't load the integration catalog.\"\n : \"This recommendation is no longer in the current catalog.\"}\n </Notice>\n ) : (\n <DetailBody\n workspaceId={workspaceId}\n setupOnly\n showIdentity={false}\n onCancel={ownsActionRow ? onClose : undefined}\n item={item}\n health={connectionHealth(item, catalog.connections ?? [], catalog.connections !== null)}\n logoSrc={capabilityLogoSource(item, (path) => context.client.catalogAssetUrl(path))}\n busy={busy}\n errorMessage={error}\n socialConnections={catalog.socialConnections}\n canManageSocial={hasWorkspacePermission(\n context.accessContext,\n workspaceId,\n \"connections:write\",\n )}\n canManageSkills={hasWorkspacePermission(\n context.accessContext,\n workspaceId,\n \"capabilities:manage\",\n )}\n onAction={(action) => void act(action)}\n onRetryAuthInspection={\n needsAuthInspection\n ? () => {\n setAuthInspection(null);\n setAuthInspectionRevision((revision) => revision + 1);\n }\n : undefined\n }\n />\n )}\n {parentAccessPlan && item ? (\n <Notice tone=\"waiting\" live=\"polite\">\n <p>\n This chat inherits its tool access from its parent. To add {item.name}, enable its tools\n in these parent chats first:\n </p>\n <ul className=\"mt-2 list-disc pl-5\">\n {parentAccessPlan.sessions\n .filter((chat) => chat.id !== sessionId && chat.request)\n .map((chat) => (\n <li key={chat.id}>\n <a\n className=\"underline\"\n href={`/workspaces/${encodeURIComponent(workspaceId)}/sessions/${encodeURIComponent(chat.id)}`}\n >\n {chat.title || \"Parent chat\"}\n </a>\n </li>\n ))}\n </ul>\n <p className=\"mt-2\">\n Confirming adds {item.name}'s tools to these chats and this chat. Parent chats and\n future children can then use them. Existing tool choices are preserved; workspace\n defaults become chat-specific selections where needed. Current turns keep their accepted\n access.\n </p>\n <p className=\"mt-2\">\n Updates are saved separately. If a later update fails, approved parent changes may\n already be saved.\n </p>\n </Notice>\n ) : null}\n <div className=\"mt-2 flex justify-end gap-2\">\n {!ownsActionRow ? (\n <Button size=\"sm\" variant=\"ghost\" disabled={busy} onClick={onClose}>\n Cancel\n </Button>\n ) : null}\n {item?.enabled && health?.state !== \"attention\" && health?.state !== \"unverified\" ? (\n <Button size=\"sm\" disabled={busy} onClick={() => void useConnected()}>\n {busy ? <Loader2Icon className=\"animate-spin\" /> : <CheckIcon />}\n {parentAccessPlan ? \"Enable in parents and add tools\" : \"Add tools\"}\n </Button>\n ) : null}\n </div>\n </div>\n );\n}\n\nfunction SessionCodexAppsSetup({\n busy,\n setBusy,\n workspaceId,\n sessionId,\n onClose,\n onComplete,\n}: {\n busy: boolean;\n setBusy: (busy: boolean) => void;\n workspaceId: string;\n sessionId: string;\n onClose: () => void;\n onComplete: () => void;\n}) {\n const context = useAppContext();\n const [error, setError] = useState<string | null>(null);\n const inFlight = useRef(false);\n const active = useRef(true);\n useEffect(\n () => () => {\n active.current = false;\n },\n [],\n );\n async function useApps() {\n if (inFlight.current) return;\n inFlight.current = true;\n setBusy(true);\n setError(null);\n try {\n const catalog = await context.client.listCapabilities(workspaceId);\n const item = catalog.items.find((entry) => entry.id === \"mcp:codex_apps\");\n if (!active.current) return;\n if (!item?.enabled || !item.runtime.available)\n throw new Error(\"Choose an active subscription for Codex Apps before continuing.\");\n await attachSessionCapability(\n t,\n context.client,\n workspaceId,\n sessionId,\n item,\n () => active.current,\n );\n await context.refreshWorkspaceMcpServers(workspaceId);\n if (active.current) onComplete();\n } catch (failure) {\n if (active.current)\n setError(\n `Couldn't enable Apps in this conversation. ${userErrorText(failure, \"Try again.\")}`,\n );\n } finally {\n inFlight.current = false;\n if (active.current) setBusy(false);\n }\n }\n return (\n <div className=\"p-6 sm:p-8\">\n <Suspense fallback={<p role=\"status\">Loading connection controls…</p>}>\n <CodexSubscriptionsSurface\n workspaceId={workspaceId}\n canManage={hasWorkspacePermission(\n context.accessContext,\n workspaceId,\n \"connections:write\",\n )}\n />\n </Suspense>\n {error ? <Notice tone=\"failed\">{error}</Notice> : null}\n <div className=\"mt-2 flex justify-end gap-2\">\n <Button variant=\"ghost\" size=\"sm\" disabled={busy} onClick={onClose}>\n Cancel\n </Button>\n <Button size=\"sm\" disabled={busy} onClick={() => void useApps()}>\n {busy ? <Loader2Icon className=\"animate-spin\" /> : <CheckIcon />}Use in this conversation\n </Button>\n </div>\n </div>\n );\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/app/components/capabilities/session-capability-card.tsx"],"sourcesContent":["import { t } from \"../../lib/console-text\";\nimport {\n attachSessionCapability,\n prepareSessionCapabilityAccess,\n applySessionCapabilityAccess,\n type SessionCapabilityAccessPlan,\n} from \"./attach-session-capability\";\nimport { Suspense, useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport { SessionMcpCapabilityCard } from \"../../../components/session-mcp-capability-card\";\nimport type { AuthNeededItem } from \"../../../timeline\";\nimport { CheckIcon, Loader2Icon } from \"lucide-react\";\nimport { useAppContext } from \"../../app-context\";\nimport { CodexSubscriptionsSurface } from \"../../lib/app-surfaces\";\nimport { Button } from \"../../../ui/button\";\nimport { Notice } from \"../../../ui/notice\";\nimport { SessionCapabilityFrame } from \"../../../components/session-capability-frame\";\nimport { capabilityLogoSource } from \"./capability-logo-source\";\nimport { DetailBody, type ConnectAction } from \"./capability-detail-sheet\";\nimport { performCapabilityAction } from \"./perform-capability-action\";\nimport { useCapabilitiesCatalog } from \"./use-capabilities-catalog\";\nimport { SessionCustomMcpCard } from \"./session-custom-mcp-card\";\nimport {\n capabilityConnectPlan,\n capabilityErrorToast,\n connectionHealth,\n} from \"../../lib/capabilities\";\nimport { userErrorText } from \"../../../ui/api-error\";\nimport { hasWorkspacePermission } from \"../../lib/permissions\";\nimport type { CapabilityCatalogItem, ResourceRef } from \"../../types\";\nimport type { ChatSendContext } from \"./session-github-repositories\";\nimport { SessionGitHubCapabilityCard } from \"./session-github-card\";\nimport { RepeatedMachineRequestNote, SessionMachineCapabilityCard } from \"./session-machine-card\";\nimport { SessionChromeCapabilityCard } from \"./session-chrome-card\";\nimport { usePage } from \"../../lib/navigation\";\n\n/** The built-in card for connecting a person's own computer to this chat. */\nexport const CONNECTED_MACHINE_CAPABILITY_ID = \"api:connected-machine\";\n\n/** The built-in tile and card that install the deployment's Excel add-in. */\nexport const EXCEL_ADDIN_CAPABILITY_ID = \"api:excel-addin\";\n\n/** Recommendations carry identity and rationale, never connection configuration.\n * Expand against the current authenticated catalog before rendering any form. */\ntype SessionCapabilityCardProps = {\n visibility?: \"private\" | \"workspace\" | undefined;\n onConfigured?: (() => Promise<void>) | undefined;\n item: AuthNeededItem;\n workspaceId: string;\n sessionId: string;\n /** The chat's mounted resources, for cards that add a resource to this chat. */\n resources?: readonly ResourceRef[] | undefined;\n /** What a composer Send would carry now, for cards that send a human message. */\n sendContext?: (() => ChatSendContext) | undefined;\n};\n\nexport function SessionCapabilityCard(props: SessionCapabilityCardProps) {\n const page = usePage();\n const context = useAppContext();\n const [registered, setRegistered] = useState<{ id: string; restoreFocus: boolean } | null>(null);\n const onRegistered = useCallback(\n (id: string, restoreFocus: boolean) => setRegistered({ id, restoreFocus }),\n [],\n );\n if (props.item.setupRequest && !registered) {\n return (\n <SessionCustomMcpCard\n key={`${props.workspaceId}:${props.item.id}`}\n item={props.item}\n workspaceId={props.workspaceId}\n sessionId={props.sessionId}\n onConfigured={props.onConfigured}\n onRegistered={onRegistered}\n />\n );\n }\n const item = registered\n ? {\n ...props.item,\n setupRequest: null,\n capability: {\n id: registered.id,\n name: props.item.setupRequest!.name,\n kind: \"mcp\" as const,\n source: \"manual\" as const,\n action: \"connect\" as const,\n rationale: props.item.setupRequest!.rationale,\n requiredVariables: [],\n },\n }\n : props.item;\n const capability = item.capability;\n if (capability?.id === CONNECTED_MACHINE_CAPABILITY_ID) {\n // The same request was made again further down, where its card is live.\n if (item.askedAgainLater)\n return <RepeatedMachineRequestNote chrome={item.purpose === \"chrome\"} />;\n if (item.purpose === \"chrome\") {\n return (\n <SessionChromeCapabilityCard\n key={`${props.workspaceId}:${props.sessionId}`}\n item={item}\n workspaceId={props.workspaceId}\n sessionId={props.sessionId}\n sendContext={props.sendContext}\n />\n );\n }\n return (\n <SessionMachineCapabilityCard\n key={`${props.workspaceId}:${props.sessionId}`}\n item={item}\n workspaceId={props.workspaceId}\n sessionId={props.sessionId}\n sendContext={props.sendContext}\n onConfigured={props.onConfigured}\n />\n );\n }\n if (capability?.id === \"api:github-app\") {\n return (\n <SessionGitHubCapabilityCard\n key={`${props.workspaceId}:${props.sessionId}`}\n item={item}\n workspaceId={props.workspaceId}\n sessionId={props.sessionId}\n resources={props.resources}\n sendContext={props.sendContext}\n onConfigured={props.onConfigured}\n />\n );\n }\n const resolved = context.workspaceCapabilityCatalog.find((entry) => entry.id === capability?.id);\n if (capability && resolved?.kind === \"mcp\" && resolved.authKind === \"oauth2\") {\n return (\n <SessionMcpCapabilityCard\n client={context.client}\n workspaceId={props.workspaceId}\n sessionId={props.sessionId}\n capabilityId={capability.id}\n name={capability.name}\n rationale={capability.rationale}\n returnUrl={page.href()}\n onConfigured={props.onConfigured}\n />\n );\n }\n return (\n <ScopedSessionCapabilityCard\n key={`${props.workspaceId}:${props.sessionId}:${capability!.id}`}\n {...props}\n item={item}\n restoreFocus={registered?.restoreFocus ?? false}\n />\n );\n}\n\nfunction ScopedSessionCapabilityCard({\n item,\n workspaceId,\n sessionId,\n onConfigured,\n restoreFocus = false,\n}: SessionCapabilityCardProps & { restoreFocus?: boolean | undefined }) {\n const context = useAppContext();\n const recommendation = item.capability!;\n const [expanded, setExpanded] = useState(false);\n const [complete, setComplete] = useState(false);\n const [busy, setBusy] = useState(false);\n const [resolvedItem, setResolvedItem] = useState<CapabilityCatalogItem | null>(null);\n const opener = useRef<HTMLButtonElement>(null);\n const cardRef = useRef<HTMLElement>(null);\n useEffect(() => {\n if (!restoreFocus) return;\n // The review dialog's opener is removed when the new connection card\n // replaces it. Focus the next actionable control after Radix closes it.\n const frame = requestAnimationFrame(() => opener.current?.focus());\n return () => cancelAnimationFrame(frame);\n }, [restoreFocus]);\n const catalogItem =\n resolvedItem ??\n context.workspaceCapabilityCatalog.find((entry) => entry.id === recommendation.id);\n const logo = catalogItem\n ? capabilityLogoSource(catalogItem, (path) => context.client.catalogAssetUrl(path))\n : null;\n const close = () => {\n setExpanded(false);\n };\n const skill = recommendation.kind === \"skill\";\n const excel = recommendation.id === EXCEL_ADDIN_CAPABILITY_ID;\n const apiKey = catalogItem ? capabilityConnectPlan(catalogItem).mode === \"api_key\" : false;\n return (\n <SessionCapabilityFrame\n name={catalogItem?.name ?? recommendation.name}\n subtitle={catalogItem ? (catalogItem.providerDomain ?? \"\") : item.providerDomain}\n logo={logo}\n typeLabel={\n skill ? \"Skill\" : excel ? \"Add-in\" : recommendation.kind === \"mcp\" ? \"MCP server\" : \"API\"\n }\n description={catalogItem?.description || recommendation.rationale}\n skill={skill}\n expanded={expanded}\n complete={complete}\n actionLabel={\n excel\n ? \"Add to Excel\"\n : catalogItem?.enabled\n ? \"Review\"\n : skill\n ? \"Review skill\"\n : apiKey\n ? \"Add API key\"\n : `Connect ${catalogItem?.name ?? recommendation.name}`\n }\n note={\n excel\n ? \"The add-in runs in your own Excel. Agents reach a workbook only while you have the add-in open in it.\"\n : skill\n ? \"Skill content is reviewed separately from permission to use any integration.\"\n : apiKey\n ? \"Add credentials in the protected form, not in a chat message.\"\n : \"Review access before signing in. You'll return to this conversation after authorization.\"\n }\n onOpen={() => setExpanded(true)}\n onClose={close}\n busy={busy}\n opener={opener}\n cardRef={cardRef}\n >\n {recommendation.id === \"mcp:codex_apps\" ? (\n <SessionCodexAppsSetup\n busy={busy}\n setBusy={setBusy}\n workspaceId={workspaceId}\n sessionId={sessionId}\n onClose={close}\n onComplete={() => {\n setComplete(true);\n close();\n }}\n />\n ) : (\n <SessionCapabilitySetup\n busy={busy}\n setBusy={setBusy}\n key={`${workspaceId}:${sessionId}:${recommendation.id}`}\n capabilityId={recommendation.id}\n onResolvedItem={setResolvedItem}\n onConfigured={onConfigured}\n workspaceId={workspaceId}\n sessionId={sessionId}\n onClose={close}\n onComplete={() => {\n setComplete(true);\n close();\n }}\n />\n )}\n </SessionCapabilityFrame>\n );\n}\n\nfunction SessionCapabilitySetup({\n busy,\n setBusy,\n capabilityId,\n onResolvedItem,\n onConfigured,\n workspaceId,\n sessionId,\n onClose,\n onComplete,\n}: {\n busy: boolean;\n setBusy: (busy: boolean) => void;\n capabilityId: string;\n onResolvedItem: (item: CapabilityCatalogItem) => void;\n onConfigured?: (() => Promise<void>) | undefined;\n workspaceId: string;\n sessionId: string;\n onClose: () => void;\n onComplete: () => void;\n}) {\n const page = usePage();\n const context = useAppContext();\n const catalog = useCapabilitiesCatalog(workspaceId);\n const canReadConnections =\n context.accessContext === null\n ? null\n : hasWorkspacePermission(context.accessContext, workspaceId, \"connections:read\");\n const [error, setError] = useState<string | null>(null);\n const subjectId = context.accessContext?.subjectId ?? null;\n const [parentAccessReview, setParentAccessReview] = useState<{\n plan: SessionCapabilityAccessPlan;\n invocation: object;\n } | null>(null);\n const [authInspection, setAuthInspection] = useState<{\n id: string;\n url: string;\n kind: \"oauth2\" | \"none\" | \"unknown\";\n message?: string | undefined;\n } | null>(null);\n const [authInspectionRevision, setAuthInspectionRevision] = useState(0);\n const inFlight = useRef<object | null>(null);\n const scope = useRef({\n client: context.client,\n workspaceId,\n sessionId,\n canReadConnections,\n subjectId,\n authorityKey: catalog.authorityKey,\n alive: true,\n });\n if (\n scope.current.client !== context.client ||\n scope.current.workspaceId !== workspaceId ||\n scope.current.sessionId !== sessionId ||\n scope.current.canReadConnections !== canReadConnections ||\n scope.current.subjectId !== subjectId ||\n scope.current.authorityKey !== catalog.authorityKey\n ) {\n scope.current = {\n client: context.client,\n workspaceId,\n sessionId,\n canReadConnections,\n subjectId,\n authorityKey: catalog.authorityKey,\n alive: true,\n };\n }\n const parentAccessPlan =\n parentAccessReview?.invocation === scope.current ? parentAccessReview.plan : null;\n useEffect(() => {\n // StrictMode replays setup after cleanup. Give the replay a new owner:\n // reusing the retired object would either keep it dead or revive old work.\n if (!scope.current.alive) scope.current = { ...scope.current, alive: true };\n const activeScope = scope.current;\n setParentAccessReview(null);\n setBusy(false);\n void catalog.refresh();\n return () => {\n activeScope.alive = false;\n };\n // Refetch on a live read-grant change; the hook masks prior rows during render.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n context.client,\n workspaceId,\n sessionId,\n canReadConnections,\n subjectId,\n catalog.authorityKey,\n setBusy,\n ]);\n const rawItem = catalog.items.find((entry) => entry.id === capabilityId);\n const rawItemId = rawItem?.id;\n const inspectUrl = rawItem?.mcpUrl ?? rawItem?.endpointUrl;\n const needsAuthInspection =\n rawItem?.kind === \"mcp\" &&\n !rawItem.enabled &&\n capabilityConnectPlan(rawItem).mode === \"setup_required\" &&\n Boolean(inspectUrl);\n useEffect(() => {\n if (!needsAuthInspection || !rawItemId || !inspectUrl) return;\n let active = true;\n setAuthInspection(null);\n void context.client.inspectMcpAuthentication(workspaceId, inspectUrl).then(\n (result) => {\n if (active) setAuthInspection({ id: rawItemId, url: inspectUrl, ...result });\n },\n () => {\n if (active) setAuthInspection({ id: rawItemId, url: inspectUrl, kind: \"unknown\" });\n },\n );\n return () => {\n active = false;\n };\n }, [\n context.client,\n workspaceId,\n rawItemId,\n inspectUrl,\n needsAuthInspection,\n authInspectionRevision,\n ]);\n const item = useMemo(() => {\n if (!rawItem || !needsAuthInspection) return rawItem;\n const inspection =\n authInspection?.id === rawItem.id && authInspection.url === inspectUrl\n ? authInspection.kind\n : \"checking\";\n return {\n ...rawItem,\n authKind:\n inspection === \"oauth2\"\n ? (\"oauth2\" as const)\n : inspection === \"none\"\n ? (\"none\" as const)\n : null,\n metadata: {\n ...rawItem.metadata,\n authDiscovery: inspection,\n authDiscoveryMessage: inspection === \"unknown\" ? authInspection?.message : undefined,\n },\n };\n }, [rawItem, needsAuthInspection, inspectUrl, authInspection]);\n useEffect(() => {\n if (item) onResolvedItem(item);\n }, [item, onResolvedItem]);\n const refreshRuntime = useCallback(() => {\n void context.refreshWorkspaceMcpServers(workspaceId);\n }, [context, workspaceId]);\n async function act(action: ConnectAction) {\n if (!item) return;\n const invocation = scope.current;\n if (inFlight.current === invocation) return;\n inFlight.current = invocation;\n setBusy(true);\n setError(null);\n setParentAccessReview(null);\n const current = () => scope.current === invocation && invocation.alive;\n try {\n await performCapabilityAction(\n {\n client: context.client,\n workspaceId,\n item,\n connections: catalog.connectionsLoadFailed ? null : catalog.connections,\n canManageSkills: hasWorkspacePermission(\n context.accessContext,\n workspaceId,\n \"capabilities:manage\",\n ),\n refresh: catalog.refresh,\n onRuntimeChanged: () => {\n if (current()) refreshRuntime();\n },\n onComplete: async () => {\n if (!current()) return;\n const updated = (await context.client.listCapabilities(workspaceId)).items.find(\n (entry) => entry.id === item.id,\n );\n if (!current()) return;\n if (!updated?.enabled)\n throw new Error(\"Setup could not be verified. Refresh and try again.\");\n const plan = await prepareSessionCapabilityAccess(\n t,\n context.client,\n workspaceId,\n sessionId,\n updated,\n current,\n );\n if (!current()) return;\n if (plan.sessions.some((chat) => chat.id !== sessionId && chat.request)) {\n setParentAccessReview({ plan, invocation });\n return;\n }\n await applySessionCapabilityAccess(t, context.client, plan, current);\n await onConfigured?.();\n if (current()) onComplete();\n },\n onSkillRemoval: () => {\n throw new Error(\n \"Use the workspace Skill controls to review removal and its other owners.\",\n );\n },\n returnPathFor: (id) =>\n `/workspaces/${encodeURIComponent(workspaceId)}/sessions/${encodeURIComponent(sessionId)}?capability_auth=${encodeURIComponent(id)}`,\n redirect: (url) => {\n if (current()) page.assign(url);\n },\n },\n action,\n );\n } catch (failure) {\n // A credential may have committed before enabling failed. Reconcile before\n // offering Retry so it reuses that row instead of minting a duplicate.\n if (current()) await catalog.refresh();\n if (current()) setError(capabilityErrorToast(failure, \"Couldn't complete setup\").description);\n } finally {\n if (inFlight.current === invocation) inFlight.current = null;\n if (current()) setBusy(false);\n }\n }\n async function useConnected() {\n if (!item) return;\n const invocation = scope.current;\n if (inFlight.current === invocation) return;\n inFlight.current = invocation;\n setBusy(true);\n setError(null);\n const current = () => scope.current === invocation && invocation.alive;\n try {\n const plan =\n parentAccessPlan ??\n (await prepareSessionCapabilityAccess(\n t,\n context.client,\n workspaceId,\n sessionId,\n item,\n current,\n ));\n if (!current()) return;\n if (\n !parentAccessPlan &&\n plan.sessions.some((chat) => chat.id !== sessionId && chat.request)\n ) {\n setParentAccessReview({ plan, invocation });\n return;\n }\n await applySessionCapabilityAccess(t, context.client, plan, current);\n if (current()) setParentAccessReview(null);\n if (current()) await onConfigured?.();\n if (current()) onComplete();\n } catch (failure) {\n if (current()) {\n setParentAccessReview(null);\n setError(`Couldn't add this connection. ${userErrorText(failure, \"Try again.\")}`);\n }\n } finally {\n if (inFlight.current === invocation) inFlight.current = null;\n if (current()) setBusy(false);\n }\n }\n const ownsActionRow =\n !catalog.loadError && item && !item.enabled && (item.kind === \"skill\" || item.kind === \"mcp\");\n const health = item\n ? connectionHealth(item, catalog.connections ?? [], catalog.connections !== null)\n : null;\n return (\n <div className=\"p-6 sm:p-8\">\n {catalog.loading && !item ? (\n <p role=\"status\" className=\"flex items-center gap-2 text-sm text-fg-muted\">\n <Loader2Icon className=\"size-4 animate-spin\" />\n Loading connection details…\n </p>\n ) : catalog.loadError || !item ? (\n <Notice\n tone=\"failed\"\n action={\n <Button size=\"sm\" onClick={() => void catalog.refresh()}>\n Retry\n </Button>\n }\n >\n {catalog.loadError\n ? \"Couldn't load the integration catalog.\"\n : \"This recommendation is no longer in the current catalog.\"}\n </Notice>\n ) : (\n <DetailBody\n workspaceId={workspaceId}\n setupOnly\n showIdentity={false}\n onCancel={ownsActionRow ? onClose : undefined}\n item={item}\n health={connectionHealth(item, catalog.connections ?? [], catalog.connections !== null)}\n logoSrc={capabilityLogoSource(item, (path) => context.client.catalogAssetUrl(path))}\n busy={busy}\n errorMessage={error}\n socialConnections={catalog.socialConnections}\n canManageSocial={hasWorkspacePermission(\n context.accessContext,\n workspaceId,\n \"connections:write\",\n )}\n canManageSkills={hasWorkspacePermission(\n context.accessContext,\n workspaceId,\n \"capabilities:manage\",\n )}\n onAction={(action) => void act(action)}\n onRetryAuthInspection={\n needsAuthInspection\n ? () => {\n setAuthInspection(null);\n setAuthInspectionRevision((revision) => revision + 1);\n }\n : undefined\n }\n />\n )}\n {parentAccessPlan && item ? (\n <Notice tone=\"waiting\" live=\"polite\">\n <p>\n This chat inherits its tool access from its parent. To add {item.name}, enable its tools\n in these parent chats first:\n </p>\n <ul className=\"mt-2 list-disc pl-5\">\n {parentAccessPlan.sessions\n .filter((chat) => chat.id !== sessionId && chat.request)\n .map((chat) => (\n <li key={chat.id}>\n <a\n className=\"underline\"\n href={`/workspaces/${encodeURIComponent(workspaceId)}/sessions/${encodeURIComponent(chat.id)}`}\n >\n {chat.title || \"Parent chat\"}\n </a>\n </li>\n ))}\n </ul>\n <p className=\"mt-2\">\n Confirming adds {item.name}'s tools to these chats and this chat. Parent chats and\n future children can then use them. Existing tool choices are preserved; workspace\n defaults become chat-specific selections where needed. Current turns keep their accepted\n access.\n </p>\n <p className=\"mt-2\">\n Updates are saved separately. If a later update fails, approved parent changes may\n already be saved.\n </p>\n </Notice>\n ) : null}\n <div className=\"mt-2 flex justify-end gap-2\">\n {!ownsActionRow ? (\n <Button size=\"sm\" variant=\"ghost\" disabled={busy} onClick={onClose}>\n Cancel\n </Button>\n ) : null}\n {item?.enabled && health?.state !== \"attention\" && health?.state !== \"unverified\" ? (\n <Button size=\"sm\" disabled={busy} onClick={() => void useConnected()}>\n {busy ? <Loader2Icon className=\"animate-spin\" /> : <CheckIcon />}\n {parentAccessPlan ? \"Enable in parents and add tools\" : \"Add tools\"}\n </Button>\n ) : null}\n </div>\n </div>\n );\n}\n\nfunction SessionCodexAppsSetup({\n busy,\n setBusy,\n workspaceId,\n sessionId,\n onClose,\n onComplete,\n}: {\n busy: boolean;\n setBusy: (busy: boolean) => void;\n workspaceId: string;\n sessionId: string;\n onClose: () => void;\n onComplete: () => void;\n}) {\n const context = useAppContext();\n const [error, setError] = useState<string | null>(null);\n const inFlight = useRef(false);\n const active = useRef(true);\n useEffect(\n () => () => {\n active.current = false;\n },\n [],\n );\n async function useApps() {\n if (inFlight.current) return;\n inFlight.current = true;\n setBusy(true);\n setError(null);\n try {\n const catalog = await context.client.listCapabilities(workspaceId);\n const item = catalog.items.find((entry) => entry.id === \"mcp:codex_apps\");\n if (!active.current) return;\n if (!item?.enabled || !item.runtime.available)\n throw new Error(\"Choose an active subscription for Codex Apps before continuing.\");\n await attachSessionCapability(\n t,\n context.client,\n workspaceId,\n sessionId,\n item,\n () => active.current,\n );\n await context.refreshWorkspaceMcpServers(workspaceId);\n if (active.current) onComplete();\n } catch (failure) {\n if (active.current)\n setError(\n `Couldn't enable Apps in this conversation. ${userErrorText(failure, \"Try again.\")}`,\n );\n } finally {\n inFlight.current = false;\n if (active.current) setBusy(false);\n }\n }\n return (\n <div className=\"p-6 sm:p-8\">\n <Suspense fallback={<p role=\"status\">Loading connection controls…</p>}>\n <CodexSubscriptionsSurface\n workspaceId={workspaceId}\n canManage={hasWorkspacePermission(\n context.accessContext,\n workspaceId,\n \"connections:write\",\n )}\n />\n </Suspense>\n {error ? <Notice tone=\"failed\">{error}</Notice> : null}\n <div className=\"mt-2 flex justify-end gap-2\">\n <Button variant=\"ghost\" size=\"sm\" disabled={busy} onClick={onClose}>\n Cancel\n </Button>\n <Button size=\"sm\" disabled={busy} onClick={() => void useApps()}>\n {busy ? <Loader2Icon className=\"animate-spin\" /> : <CheckIcon />}Use in this conversation\n </Button>\n </div>\n </div>\n );\n}\n"],"mappings":"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","names":[]}
|
|
@@ -2,67 +2,69 @@
|
|
|
2
2
|
import {
|
|
3
3
|
CHROME_CONNECTED_MESSAGE,
|
|
4
4
|
SessionChromeCapabilityCard
|
|
5
|
-
} from "../../../chunk-
|
|
6
|
-
import "../../../chunk-
|
|
7
|
-
import "../../../chunk-
|
|
5
|
+
} from "../../../chunk-S37GP7LX.js";
|
|
6
|
+
import "../../../chunk-ACL2V2KE.js";
|
|
7
|
+
import "../../../chunk-552UYIQ7.js";
|
|
8
8
|
import "../../../chunk-M27WO6W3.js";
|
|
9
9
|
import "../../../chunk-KV6GUPL2.js";
|
|
10
|
-
import "../../../chunk-
|
|
10
|
+
import "../../../chunk-JM4HQPAI.js";
|
|
11
11
|
import "../../../chunk-2LUBBDZV.js";
|
|
12
|
-
import "../../../chunk-
|
|
13
|
-
import "../../../chunk-
|
|
14
|
-
import "../../../chunk-
|
|
12
|
+
import "../../../chunk-JQCGPTZ6.js";
|
|
13
|
+
import "../../../chunk-YVBHGMKC.js";
|
|
14
|
+
import "../../../chunk-5DSKMG2I.js";
|
|
15
15
|
import "../../../chunk-J6WRB3VZ.js";
|
|
16
|
-
import "../../../chunk-
|
|
17
|
-
import "../../../chunk-
|
|
16
|
+
import "../../../chunk-KUNFUSZ7.js";
|
|
17
|
+
import "../../../chunk-PCJLH45G.js";
|
|
18
18
|
import "../../../chunk-J4OPEWC3.js";
|
|
19
|
-
import "../../../chunk-722UO6YQ.js";
|
|
20
19
|
import "../../../chunk-FABYS4WM.js";
|
|
20
|
+
import "../../../chunk-3PEXVG4D.js";
|
|
21
21
|
import "../../../chunk-L5HJ4UYB.js";
|
|
22
|
-
import "../../../chunk-EPCPGUIF.js";
|
|
23
|
-
import "../../../chunk-325C2TCI.js";
|
|
24
|
-
import "../../../chunk-FQQEZUSN.js";
|
|
25
|
-
import "../../../chunk-6KELG2EG.js";
|
|
26
22
|
import "../../../chunk-IZMUUUYD.js";
|
|
27
|
-
import "../../../chunk-
|
|
23
|
+
import "../../../chunk-325C2TCI.js";
|
|
28
24
|
import "../../../chunk-XSOPQZGH.js";
|
|
29
|
-
import "../../../chunk-
|
|
25
|
+
import "../../../chunk-T6KM63FZ.js";
|
|
30
26
|
import "../../../chunk-HZUL2CUH.js";
|
|
27
|
+
import "../../../chunk-6KELG2EG.js";
|
|
28
|
+
import "../../../chunk-TREHTIBD.js";
|
|
29
|
+
import "../../../chunk-FQQEZUSN.js";
|
|
30
|
+
import "../../../chunk-XNTW77T6.js";
|
|
31
|
+
import "../../../chunk-EPCPGUIF.js";
|
|
31
32
|
import "../../../chunk-X6WZOHBI.js";
|
|
32
|
-
import "../../../chunk-
|
|
33
|
+
import "../../../chunk-TJQDL3JH.js";
|
|
34
|
+
import "../../../chunk-IZUAIHR4.js";
|
|
33
35
|
import "../../../chunk-FIDD34ZF.js";
|
|
34
36
|
import "../../../chunk-74JEZLLQ.js";
|
|
35
|
-
import "../../../chunk-IZUAIHR4.js";
|
|
36
|
-
import "../../../chunk-L4OF77LE.js";
|
|
37
37
|
import "../../../chunk-W6KAUGXO.js";
|
|
38
|
-
import "../../../chunk-TREHTIBD.js";
|
|
39
38
|
import "../../../chunk-5OTQA7CM.js";
|
|
40
|
-
import "../../../chunk-XNTW77T6.js";
|
|
41
|
-
import "../../../chunk-HY7EYWIG.js";
|
|
42
39
|
import "../../../chunk-XG57V2BN.js";
|
|
43
40
|
import "../../../chunk-KS57MLGE.js";
|
|
41
|
+
import "../../../chunk-ZMBJPN4T.js";
|
|
42
|
+
import "../../../chunk-HY7EYWIG.js";
|
|
43
|
+
import "../../../chunk-L4OF77LE.js";
|
|
44
|
+
import "../../../chunk-M357MHH3.js";
|
|
45
|
+
import "../../../chunk-NRP4REXE.js";
|
|
46
|
+
import "../../../chunk-DGLRZMXL.js";
|
|
44
47
|
import "../../../chunk-A3KMTJZS.js";
|
|
45
|
-
import "../../../chunk-
|
|
48
|
+
import "../../../chunk-AX6YJA5U.js";
|
|
49
|
+
import "../../../chunk-WSZQNTVN.js";
|
|
46
50
|
import "../../../chunk-WLEDGIVS.js";
|
|
47
51
|
import "../../../chunk-HMU5IELG.js";
|
|
48
|
-
import "../../../chunk-
|
|
49
|
-
import "../../../chunk-HT5WSUC7.js";
|
|
50
|
-
import "../../../chunk-M357MHH3.js";
|
|
51
|
-
import "../../../chunk-HRJQAFKR.js";
|
|
52
|
-
import "../../../chunk-SQGXMHJO.js";
|
|
53
|
-
import "../../../chunk-4LKNIGHB.js";
|
|
52
|
+
import "../../../chunk-O2SBHS2N.js";
|
|
54
53
|
import "../../../chunk-BOG2FED3.js";
|
|
55
|
-
import "../../../chunk-PEHTX3V7.js";
|
|
56
|
-
import "../../../chunk-NRP4REXE.js";
|
|
57
54
|
import "../../../chunk-J3BHDXQQ.js";
|
|
58
55
|
import "../../../chunk-XEA5BCMA.js";
|
|
59
|
-
import "../../../chunk-
|
|
56
|
+
import "../../../chunk-CPLCSM6K.js";
|
|
57
|
+
import "../../../chunk-QXEDIDBZ.js";
|
|
58
|
+
import "../../../chunk-PEHTX3V7.js";
|
|
59
|
+
import "../../../chunk-XV6ZYRHK.js";
|
|
60
|
+
import "../../../chunk-IGVL3ELX.js";
|
|
61
|
+
import "../../../chunk-2KO2G3RI.js";
|
|
60
62
|
import "../../../chunk-CM7LVUKC.js";
|
|
61
63
|
import "../../../chunk-TVQCDDSZ.js";
|
|
62
64
|
import "../../../chunk-SJGAHTY5.js";
|
|
63
65
|
import "../../../chunk-4NHJ6EXL.js";
|
|
64
66
|
import "../../../chunk-TXS65BB2.js";
|
|
65
|
-
import "../../../chunk-
|
|
67
|
+
import "../../../chunk-JFK7NTEA.js";
|
|
66
68
|
export {
|
|
67
69
|
CHROME_CONNECTED_MESSAGE,
|
|
68
70
|
SessionChromeCapabilityCard
|
|
@@ -1,42 +1,42 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
SessionCustomMcpCard
|
|
4
|
-
} from "../../../chunk-
|
|
5
|
-
import "../../../chunk-
|
|
4
|
+
} from "../../../chunk-HQWVDQXW.js";
|
|
5
|
+
import "../../../chunk-3STBLX4O.js";
|
|
6
6
|
import "../../../chunk-AF53CDFM.js";
|
|
7
7
|
import "../../../chunk-ECNX3UOI.js";
|
|
8
8
|
import "../../../chunk-WMSCYECP.js";
|
|
9
|
-
import "../../../chunk-
|
|
9
|
+
import "../../../chunk-TJQDL3JH.js";
|
|
10
|
+
import "../../../chunk-VYKW6TB2.js";
|
|
11
|
+
import "../../../chunk-IZUAIHR4.js";
|
|
10
12
|
import "../../../chunk-FIDD34ZF.js";
|
|
11
13
|
import "../../../chunk-74JEZLLQ.js";
|
|
12
|
-
import "../../../chunk-MYNUBDU7.js";
|
|
13
|
-
import "../../../chunk-IZUAIHR4.js";
|
|
14
|
-
import "../../../chunk-L4OF77LE.js";
|
|
15
14
|
import "../../../chunk-W6KAUGXO.js";
|
|
16
|
-
import "../../../chunk-
|
|
17
|
-
import "../../../chunk-
|
|
18
|
-
import "../../../chunk-4432A3HQ.js";
|
|
15
|
+
import "../../../chunk-L4OF77LE.js";
|
|
16
|
+
import "../../../chunk-TIQPKOFW.js";
|
|
19
17
|
import "../../../chunk-M357MHH3.js";
|
|
20
|
-
import "../../../chunk-
|
|
18
|
+
import "../../../chunk-NRP4REXE.js";
|
|
19
|
+
import "../../../chunk-A3KMTJZS.js";
|
|
20
|
+
import "../../../chunk-ILDOW2IQ.js";
|
|
21
21
|
import "../../../chunk-CUUJROYT.js";
|
|
22
|
-
import "../../../chunk-
|
|
23
|
-
import "../../../chunk-
|
|
22
|
+
import "../../../chunk-AX6YJA5U.js";
|
|
23
|
+
import "../../../chunk-HMU5IELG.js";
|
|
24
|
+
import "../../../chunk-35BC2FU2.js";
|
|
24
25
|
import "../../../chunk-OYQQJL3J.js";
|
|
25
26
|
import "../../../chunk-H3LIIAGE.js";
|
|
26
27
|
import "../../../chunk-RZLBICR5.js";
|
|
27
28
|
import "../../../chunk-VHB3E6PT.js";
|
|
28
|
-
import "../../../chunk-
|
|
29
|
-
import "../../../chunk-OB3YGXHQ.js";
|
|
30
|
-
import "../../../chunk-UNJPZGNK.js";
|
|
31
|
-
import "../../../chunk-PEHTX3V7.js";
|
|
32
|
-
import "../../../chunk-NRP4REXE.js";
|
|
33
|
-
import "../../../chunk-OBQVTCTW.js";
|
|
29
|
+
import "../../../chunk-UYNCMZX5.js";
|
|
34
30
|
import "../../../chunk-J3BHDXQQ.js";
|
|
35
31
|
import "../../../chunk-XEA5BCMA.js";
|
|
32
|
+
import "../../../chunk-PEHTX3V7.js";
|
|
33
|
+
import "../../../chunk-UNJPZGNK.js";
|
|
34
|
+
import "../../../chunk-DNJ23AWQ.js";
|
|
35
|
+
import "../../../chunk-OB3YGXHQ.js";
|
|
36
36
|
import "../../../chunk-SJGAHTY5.js";
|
|
37
37
|
import "../../../chunk-4NHJ6EXL.js";
|
|
38
38
|
import "../../../chunk-TXS65BB2.js";
|
|
39
|
-
import "../../../chunk-
|
|
39
|
+
import "../../../chunk-JFK7NTEA.js";
|
|
40
40
|
export {
|
|
41
41
|
SessionCustomMcpCard
|
|
42
42
|
};
|