@opengeni/react 4.5.0 → 4.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/app-state.js +25 -25
- package/dist/app/components/Composer.js +25 -25
- package/dist/app/components/agent/agent-capability-picker.js +4 -4
- package/dist/app/components/artifacts/artifact-library.js +17 -17
- package/dist/app/components/artifacts/chat-interactive-block.js +16 -16
- package/dist/app/components/artifacts/inline-chat-image.js +29 -29
- package/dist/app/components/artifacts/retained-file-preview.js +33 -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 -20
- package/dist/app/components/artifacts/site-data.js +22 -20
- package/dist/app/components/artifacts/site-publishing.js +38 -38
- package/dist/app/components/artifacts/site-settings.js +47 -47
- 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 +12 -12
- package/dist/app/components/capabilities/connector-tool-permissions.js +3 -3
- package/dist/app/components/capabilities/native-connect-setup.js +15 -15
- 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 +75 -75
- package/dist/app/components/capabilities/session-chrome-card.js +36 -36
- package/dist/app/components/capabilities/session-custom-mcp-card.js +20 -20
- package/dist/app/components/capabilities/session-github-card.js +24 -24
- package/dist/app/components/capabilities/session-machine-card.js +35 -35
- 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 +19 -18
- package/dist/app/components/command-menu/chat-switcher.js +23 -22
- package/dist/app/components/command-menu/chat-switcher.js.map +1 -1
- package/dist/app/components/command-menu/command-menu.js +35 -34
- package/dist/app/components/command-menu/command-menu.js.map +1 -1
- package/dist/app/components/command-menu/shortcut-sheet.js +16 -16
- package/dist/app/components/composer-capabilities-menu-body.js +3 -3
- package/dist/app/components/composer-mobile-plus-panel.js +20 -20
- 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 +15 -13
- package/dist/app/components/credit-required-prompt.js.map +1 -1
- package/dist/app/components/credits/credit-refusal-notice.js +5 -3
- 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 +8 -6
- package/dist/app/components/follow-up-repository-menu-body.js.map +1 -1
- package/dist/app/components/follow-up-repository-picker.js +4 -2
- package/dist/app/components/github-app-connect-launcher.js +1 -1
- 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 +9 -9
- package/dist/app/components/message-context-pills.js +2 -2
- package/dist/app/components/models/models-ui.js +8 -8
- package/dist/app/components/pickers.js +9 -9
- package/dist/app/components/rail/rail-context.js +2 -2
- package/dist/app/components/rail/rail-sections.js +63 -62
- package/dist/app/components/rail/session-header.js +48 -48
- package/dist/app/components/rail/session-list.js +62 -61
- package/dist/app/components/rail/session-row-content.js +4 -2
- package/dist/app/components/rail/session-row-hover-details.js +25 -24
- package/dist/app/components/rail/session-shell.js +100 -99
- package/dist/app/components/rail/site-session-group-heading.js +13 -12
- package/dist/app/components/repository-picker.js +8 -6
- package/dist/app/components/secrets/session-secrets-panel.js +3 -3
- package/dist/app/components/session/agent-configuration-panel.js +35 -35
- package/dist/app/components/session/artifact-session-page.js +2 -2
- package/dist/app/components/session/banners.js +14 -12
- package/dist/app/components/session/codex-account-indicator.js +10 -10
- package/dist/app/components/session/editable-artifacts-workspace.js +43 -43
- package/dist/app/components/session/failed-session-banner.js +10 -10
- package/dist/app/components/session/human-input.js +56 -56
- package/dist/app/components/session/inspector.js +90 -89
- 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 -20
- package/dist/app/components/session/model-account-indicator.js +9 -9
- 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 +11 -11
- package/dist/app/components/session/sandbox-switcher.js +14 -14
- package/dist/app/components/session/sandbox-workspace.js +73 -73
- package/dist/app/components/session/search-markdown-highlight.js +10 -10
- package/dist/app/components/session/search-results-view.js +11 -11
- package/dist/app/components/session/session-admin-access.js +9 -9
- package/dist/app/components/session/session-admission-notice.js +5 -5
- package/dist/app/components/session/session-machine-access-notice.js +5 -5
- 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.js +22 -22
- package/dist/app/components/session/session-usage-limit-section.js +10 -10
- package/dist/app/components/session/session-wait-status.js +9 -9
- package/dist/app/components/session/subagents.js +16 -16
- package/dist/app/components/session-connectors-menu-body.js +5 -5
- package/dist/app/components/settings/row-select.js +1 -1
- package/dist/app/components/transcription-settings.js +2 -2
- package/dist/app/components/ui/destructive-confirm.js +6 -6
- package/dist/app/components/usage/usage-entry.js +6 -6
- package/dist/app/components/workspace-composer-plus.js +21 -21
- package/dist/app/embed/session-app.js +265 -265
- package/dist/app/lib/actions/actions-provider.js +13 -13
- package/dist/app/lib/codex-usage-query.js +3 -3
- package/dist/app/lib/composer-connectors.js +13 -13
- package/dist/app/lib/console-text.js +2 -2
- package/dist/app/lib/credit-coverage.js +4 -2
- package/dist/app/lib/events.js +17 -17
- package/dist/app/lib/failed-session-copy.js +3 -3
- package/dist/app/lib/format.d.ts +2 -7
- package/dist/app/lib/format.js +5 -2
- package/dist/app/lib/model-access-onboarding.js +3 -3
- package/dist/app/lib/move-chat-to-machine.js +3 -3
- package/dist/app/lib/session-branch-cache.js +15 -14
- package/dist/app/lib/session-create.js +2 -2
- package/dist/app/lib/session-group-pagination.js +15 -14
- package/dist/app/lib/session-hover-facts.js +16 -15
- package/dist/app/lib/session-model.js +3 -3
- package/dist/app/lib/session-rail.js +9 -9
- package/dist/app/lib/session-rename.js +3 -3
- package/dist/app/lib/sessions-group.js +15 -14
- package/dist/app/lib/turn-failure-analytics.js +5 -5
- package/dist/app/lib/use-duplicate-site.js +2 -2
- package/dist/app/lib/use-follow-up-repositories.js +3 -3
- package/dist/app/lib/use-workspace-machines.js +5 -5
- package/dist/app/lib/use-workspace-model-catalog.js +5 -5
- package/dist/app/lib/use-workspace-rigs.js +4 -4
- 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 +128 -127
- package/dist/app/routes/artifacts.js.map +1 -1
- package/dist/app/routes/retained-artifact.js +67 -67
- package/dist/app/routes/session-unavailable.js +3 -3
- package/dist/app/routes/session.js +169 -169
- package/dist/app/routes/sessions-index-hydration.js +3 -3
- package/dist/app/routes/sessions-index.js +121 -120
- package/dist/app/routes/site-view.js +89 -88
- package/dist/app/routes/site-view.js.map +1 -1
- package/dist/artifacts-document.js +4 -4
- package/dist/artifacts-presentation.js +4 -4
- package/dist/artifacts-spreadsheet.js +4 -4
- package/dist/artifacts.js +39 -39
- package/dist/{browser-viewer-QMCNV4RI.js → browser-viewer-YQC6BFMS.js} +7 -7
- package/dist/{chat-interactive-block-PMIAUXSO.js → chat-interactive-block-Z22YHDRU.js} +6 -6
- package/dist/{chunk-YJPKDRI2.js → chunk-24POWVUY.js} +15 -15
- package/dist/{chunk-35BC2FU2.js → chunk-26P7B46A.js} +19 -19
- package/dist/{chunk-ZVVT72MT.js → chunk-27EORKJ4.js} +2 -2
- package/dist/{chunk-2NC7NZCE.js → chunk-2K27S6LK.js} +6 -6
- package/dist/{chunk-2QBYDGWO.js → chunk-2LUO22FR.js} +9 -9
- package/dist/{chunk-FSP334UU.js → chunk-2SZ3KC5S.js} +2 -2
- package/dist/{chunk-3X5FKDYQ.js → chunk-32HA7DXJ.js} +26 -26
- package/dist/{chunk-CFFNT2OY.js → chunk-3GLAPCVI.js} +8 -8
- package/dist/{chunk-PCJLH45G.js → chunk-3MQM4ZOC.js} +3 -3
- package/dist/{chunk-BXQYAAVE.js → chunk-3XOISKZC.js} +4 -4
- package/dist/{chunk-IDXTASGN.js → chunk-3ZZOE4SN.js} +4 -4
- package/dist/{chunk-N3ZP4IDU.js → chunk-45WYYFP6.js} +2 -2
- package/dist/{chunk-NEK4WB5P.js → chunk-467VRP4E.js} +3 -3
- package/dist/{chunk-PCFK7HKD.js → chunk-4BF3DD6R.js} +18 -18
- package/dist/{chunk-552UYIQ7.js → chunk-4ICPJZAB.js} +20 -20
- package/dist/{chunk-ITX2TB4K.js → chunk-4PC7LIQK.js} +6 -6
- package/dist/{chunk-D5OWJZQR.js → chunk-4RY64KQY.js} +2 -2
- package/dist/{chunk-PUTS4DYW.js → chunk-4VJOZJDV.js} +2 -2
- package/dist/{chunk-7P4AQMGA.js → chunk-4XKT4ENZ.js} +12 -12
- package/dist/{chunk-4VK2R5QC.js → chunk-4XO346BW.js} +3 -3
- package/dist/{chunk-IBA5FMRE.js → chunk-65K5LV4L.js} +136 -136
- package/dist/{chunk-S2U4CDAC.js → chunk-6AFSZKZA.js} +149 -149
- package/dist/chunk-6AFSZKZA.js.map +1 -0
- package/dist/{chunk-5Y2FPLZE.js → chunk-6JF7C3U3.js} +8 -8
- package/dist/{chunk-LQ47YL6E.js → chunk-6K3WNTRI.js} +2 -2
- package/dist/{chunk-UUGR3X5I.js → chunk-6MRY2RUZ.js} +5 -5
- package/dist/{chunk-CCR33J7L.js → chunk-6N7W3TOV.js} +2 -2
- package/dist/chunk-6NXQCOLD.js +71 -0
- package/dist/chunk-6NXQCOLD.js.map +1 -0
- package/dist/{chunk-ILDOW2IQ.js → chunk-6PQBKMUL.js} +3 -3
- package/dist/{chunk-SY2AAZNB.js → chunk-6VITVQ23.js} +4 -4
- package/dist/{chunk-AIEXYO2X.js → chunk-6YDXUE5H.js} +2 -2
- package/dist/{chunk-GXW2I2M2.js → chunk-72XEFLMD.js} +2 -2
- package/dist/{chunk-KEXYBG7Q.js → chunk-74NIHMAT.js} +3 -3
- package/dist/{chunk-FTX5CNHA.js → chunk-767WCGAX.js} +4 -4
- package/dist/{chunk-5MJHH72T.js → chunk-7EGWIME2.js} +4 -4
- package/dist/{chunk-Z7IGO5EA.js → chunk-7H2D4VNU.js} +2 -2
- package/dist/{chunk-EJ7WARW7.js → chunk-7J7PZB4S.js} +2 -2
- package/dist/{chunk-4SAGYEVB.js → chunk-7JZSFJHB.js} +2 -2
- package/dist/{chunk-AJPW3SV4.js → chunk-7OIBLMDP.js} +2 -2
- package/dist/{chunk-SM5QX6UK.js → chunk-A2EWJQXX.js} +4 -4
- package/dist/{chunk-5YFY4SFC.js → chunk-AJ7PY4FJ.js} +2 -2
- package/dist/{chunk-RFLYID6H.js → chunk-AT4K4F6S.js} +4 -4
- package/dist/{chunk-YV56F4UP.js → chunk-AW3QEFOF.js} +179 -179
- package/dist/chunk-AW3QEFOF.js.map +1 -0
- package/dist/{chunk-3ABPIUCK.js → chunk-B254JG72.js} +2 -2
- package/dist/{chunk-7TCT7KPQ.js → chunk-BCFHMBMK.js} +228 -228
- package/dist/chunk-BCFHMBMK.js.map +1 -0
- package/dist/{chunk-TJQDL3JH.js → chunk-BPD4IJBG.js} +2 -2
- package/dist/{chunk-S37GP7LX.js → chunk-BQWUXC55.js} +21 -21
- package/dist/{chunk-DGLRZMXL.js → chunk-BWKZEW6K.js} +3 -3
- package/dist/{chunk-LF5CBAOS.js → chunk-C535KSTY.js} +4 -4
- package/dist/{chunk-MOKYT3X3.js → chunk-C6JL6PBL.js} +3 -3
- package/dist/{chunk-4XQC7VLT.js → chunk-CA64OZLZ.js} +13 -13
- package/dist/{chunk-EQE3MNQN.js → chunk-CEQUNJJY.js} +5 -5
- package/dist/{chunk-JO6R5EXF.js → chunk-CKA4SJRK.js} +5 -5
- package/dist/{chunk-LHLK7FUA.js → chunk-CPKD2YGK.js} +6 -6
- package/dist/{chunk-4GLLWX33.js → chunk-CYO5HL4C.js} +17 -33
- package/dist/chunk-CYO5HL4C.js.map +1 -0
- package/dist/{chunk-5FEN3KYH.js → chunk-D4QOZXPM.js} +11 -11
- package/dist/{chunk-UP7I3W6O.js → chunk-DAQG3C4W.js} +55 -55
- package/dist/{chunk-RIYZFKIM.js → chunk-DNLXQUBX.js} +36 -36
- package/dist/{chunk-UYNCMZX5.js → chunk-DNWBLT4U.js} +4 -4
- package/dist/{chunk-MXLKI7BI.js → chunk-DNYD7AUG.js} +3 -3
- package/dist/{chunk-7KIENXRE.js → chunk-DZH2HTTB.js} +1 -1
- package/dist/{chunk-CD3MO3IC.js → chunk-E36IC3LU.js} +2 -2
- package/dist/{chunk-Z6E6TUAE.js → chunk-EURDMOXZ.js} +2 -2
- package/dist/{chunk-22JFMNMF.js → chunk-F2RMKGDQ.js} +4 -4
- package/dist/{chunk-62VER7O4.js → chunk-F3NERYBQ.js} +6 -6
- package/dist/{chunk-YXA2EKV3.js → chunk-F4B2YYCN.js} +3 -3
- package/dist/{chunk-ENS6E4RZ.js → chunk-FH75NNLB.js} +2 -2
- package/dist/{chunk-GGV4NSG3.js → chunk-FMATVQFW.js} +8 -8
- package/dist/{chunk-7XO7YKPC.js → chunk-FVCLVASD.js} +73 -73
- package/dist/{chunk-3RQUWFZT.js → chunk-G3FU2IF7.js} +67 -67
- package/dist/{chunk-3RQUWFZT.js.map → chunk-G3FU2IF7.js.map} +1 -1
- package/dist/{chunk-HU6JTNWF.js → chunk-GMVKCEBG.js} +2 -2
- package/dist/{chunk-SWCLN6JE.js → chunk-GRNE5ANU.js} +2 -2
- package/dist/{chunk-FWOBNL2A.js → chunk-GTR2WUBA.js} +1 -1
- package/dist/{chunk-BT2MVGHT.js → chunk-GTR5NLVP.js} +2 -2
- package/dist/{chunk-J22HD2PB.js → chunk-GUIZDI5T.js} +6 -6
- package/dist/{chunk-ULJAOMJA.js → chunk-GXK4CUAB.js} +4 -4
- package/dist/{chunk-XN7NSPE6.js → chunk-HCCSAECI.js} +2 -2
- package/dist/{chunk-22FFOHPT.js → chunk-HJTTDLF6.js} +11 -11
- package/dist/{chunk-YEROLKOA.js → chunk-HSQRYJ4P.js} +15 -15
- package/dist/{chunk-73WI7FL2.js → chunk-HTKVYEVB.js} +19 -19
- package/dist/{chunk-4RMN4E2Y.js → chunk-HXZIX7MR.js} +11 -11
- package/dist/{chunk-DJFTH2DI.js → chunk-I57HZMMA.js} +2 -2
- package/dist/{chunk-3GU7AWG7.js → chunk-I74J2UZ2.js} +19 -19
- package/dist/{chunk-FDAV72IX.js → chunk-IC7KNOBB.js} +7 -7
- package/dist/{chunk-5TLEWXAB.js → chunk-IKQMSROV.js} +1 -13
- package/dist/chunk-IKQMSROV.js.map +1 -0
- package/dist/{chunk-TIQPKOFW.js → chunk-IWIMIRV3.js} +4 -4
- package/dist/{chunk-U6MPB3K6.js → chunk-JI6WPLZB.js} +9 -9
- package/dist/{chunk-GT7JFQ4E.js → chunk-JJ7VMIEQ.js} +119 -119
- package/dist/{chunk-GDLDBR6B.js → chunk-JQKURO3S.js} +2 -2
- package/dist/{chunk-O2SBHS2N.js → chunk-K4FDZVMQ.js} +2 -2
- package/dist/{chunk-JXT5QDJC.js → chunk-KNFDWNCH.js} +5 -5
- package/dist/{chunk-TLL22FFO.js → chunk-KUO5WFXG.js} +2 -2
- package/dist/{chunk-KUNFUSZ7.js → chunk-KVMFT6FN.js} +2 -2
- package/dist/{chunk-5W6ZDKRR.js → chunk-KW53DBY7.js} +5 -5
- package/dist/{chunk-5DSKMG2I.js → chunk-LEXPBQ56.js} +4 -4
- package/dist/{chunk-3RMKPHBL.js → chunk-LG67ZNRU.js} +3 -3
- package/dist/{chunk-WKHUZIOW.js → chunk-LJZNHDKI.js} +2 -2
- package/dist/{chunk-4YXAQMTD.js → chunk-LR7U3HCD.js} +12 -12
- package/dist/{chunk-2FPS5H2D.js → chunk-M5E3CKSE.js} +2 -2
- package/dist/{chunk-3PEXVG4D.js → chunk-M7A226EQ.js} +2 -2
- package/dist/{chunk-PO3BH3KQ.js → chunk-M7YEZR6X.js} +2 -2
- package/dist/{chunk-YYCOSTUU.js → chunk-MB2DTUEG.js} +17 -17
- package/dist/{chunk-HQWVDQXW.js → chunk-MDRLP5DO.js} +7 -7
- package/dist/{chunk-ACL2V2KE.js → chunk-MHIYYHCL.js} +23 -23
- package/dist/{chunk-JQCGPTZ6.js → chunk-MM7OKOTE.js} +9 -9
- package/dist/{chunk-5W7KJ5NQ.js → chunk-MY6VZVCP.js} +37 -37
- package/dist/{chunk-CMLJSF2F.js → chunk-NF6Q4XTN.js} +11 -11
- package/dist/{chunk-EYS4ZOF5.js → chunk-NML44AW2.js} +2 -2
- package/dist/{chunk-QFMLAT7L.js → chunk-NPDL4W4Y.js} +183 -183
- package/dist/{chunk-TL7BOFFL.js → chunk-NURA4KUR.js} +3 -3
- package/dist/{chunk-3STBLX4O.js → chunk-NV5OYV3G.js} +8 -8
- package/dist/{chunk-MIECLOQC.js → chunk-NZMQDUOD.js} +7 -7
- package/dist/{chunk-SSOO4GWN.js → chunk-O4AWXTZQ.js} +116 -116
- package/dist/{chunk-SSOO4GWN.js.map → chunk-O4AWXTZQ.js.map} +1 -1
- package/dist/{chunk-CP7ZQHBW.js → chunk-O4DYOSOL.js} +13 -13
- package/dist/{chunk-VH5EGTH2.js → chunk-O5UOCMH4.js} +3 -3
- package/dist/{chunk-Y5BSA3I7.js → chunk-O73DRA77.js} +5 -5
- package/dist/{chunk-GRSODLVO.js → chunk-OANSIX34.js} +4 -4
- package/dist/{chunk-RQNZDTKT.js → chunk-OHG2UQ2O.js} +16 -16
- package/dist/{chunk-5JHRMUAZ.js → chunk-OLUG4IFF.js} +12 -12
- package/dist/{chunk-EPWD4KRA.js → chunk-OOEO4MKY.js} +2 -2
- package/dist/{chunk-7NPCEBZE.js → chunk-OWJD3V4V.js} +5 -5
- package/dist/{chunk-4HEXNAFI.js → chunk-PEGNFZ3F.js} +19 -19
- package/dist/chunk-PEGNFZ3F.js.map +1 -0
- package/dist/{chunk-CDEXRJB6.js → chunk-PEKPWK5M.js} +4 -4
- package/dist/{chunk-FWYEZ3LE.js → chunk-PQCFW2KT.js} +35 -35
- package/dist/{chunk-LMPTC4CX.js → chunk-QLDMF7MH.js} +2 -2
- package/dist/{chunk-JM4HQPAI.js → chunk-QZRDCFHI.js} +5 -5
- package/dist/{chunk-DYJGYGPB.js → chunk-R5YZ3ROM.js} +2 -2
- package/dist/{chunk-I6KIQKU6.js → chunk-RABKQFTA.js} +3 -3
- package/dist/{chunk-7FJMRJDG.js → chunk-RNBH5TSM.js} +2 -2
- package/dist/{chunk-J7FBBLHF.js → chunk-RXMIXKB3.js} +37 -37
- package/dist/{chunk-JFK7NTEA.js → chunk-S6WJ6TUT.js} +7 -1
- package/dist/{chunk-JFK7NTEA.js.map → chunk-S6WJ6TUT.js.map} +1 -1
- package/dist/{chunk-A4BD4ZVB.js → chunk-S7PVL7XH.js} +4 -4
- package/dist/{chunk-4LPA25NQ.js → chunk-SD2K5ZN5.js} +4 -4
- package/dist/{chunk-UXXFMF4X.js → chunk-SJPAKWWP.js} +2 -2
- package/dist/{chunk-FRP64DEK.js → chunk-SK57RWSA.js} +2 -2
- package/dist/{chunk-ZS2UQ3DV.js → chunk-SOXZ4LGS.js} +4 -4
- package/dist/{chunk-WSZQNTVN.js → chunk-SSZROOOI.js} +2 -2
- package/dist/{chunk-MCTTONOW.js → chunk-TM2ZLY3Q.js} +26 -26
- package/dist/{chunk-J5MEDX7C.js → chunk-U47YDYLQ.js} +8 -8
- package/dist/{chunk-TV6BWONY.js → chunk-UHMMRQGU.js} +3 -3
- package/dist/{chunk-YVBHGMKC.js → chunk-VAIESMPY.js} +4 -4
- package/dist/{chunk-WCMG4HYI.js → chunk-W57QFLQD.js} +10 -10
- package/dist/{chunk-RYSRFAHN.js → chunk-WLZVXCPZ.js} +20 -20
- package/dist/{chunk-PFAUGEV5.js → chunk-WN2MIB4Q.js} +2 -2
- package/dist/{chunk-5FA455GR.js → chunk-WNG757ID.js} +4 -4
- package/dist/{chunk-G4HQUBO4.js → chunk-WSLPZ43N.js} +12 -12
- package/dist/{chunk-QXEDIDBZ.js → chunk-WWM7WVD2.js} +2 -2
- package/dist/{chunk-V4QZ7UBK.js → chunk-WYEPUXGL.js} +2 -2
- package/dist/{chunk-AX6YJA5U.js → chunk-X7Z4B5GK.js} +2 -2
- package/dist/{chunk-GZS37O3G.js → chunk-XDCZBOEY.js} +1 -1
- package/dist/{chunk-52WK2GGK.js → chunk-XGE75VPK.js} +8 -8
- package/dist/{chunk-XMNUZUUA.js → chunk-Z2DAWUO3.js} +6 -6
- package/dist/{chunk-BCM7C3MJ.js → chunk-Z4GJB24B.js} +8 -8
- package/dist/{chunk-LT4J7RHI.js → chunk-ZPZYYSHW.js} +12 -12
- package/dist/{chunk-GHHM6WN4.js → chunk-ZRB4M3GG.js} +4 -4
- package/dist/{chunk-FFNPUSVO.js → chunk-ZWACUOU5.js} +7 -7
- package/dist/{chunk-ZEIFJ6PX.js → chunk-ZZUKJ5HQ.js} +7 -7
- package/dist/composer.js +13 -13
- package/dist/{computer-viewer-25AJIDYA.js → computer-viewer-BWVNDFTO.js} +8 -8
- package/dist/connect.js +11 -11
- package/dist/desktop.js +2 -2
- package/dist/editor.js +2 -2
- package/dist/{embedded-new-voice-RZZEJT6M.js → embedded-new-voice-GBXSZ3TO.js} +8 -8
- package/dist/{embedded-voice-6OKSSPLW.js → embedded-voice-MGI7EK7C.js} +8 -8
- package/dist/{fleet-decision-row-NN2HXDX3.js → fleet-decision-row-35S3GAUN.js} +2 -2
- package/dist/index.js +220 -220
- package/dist/interaction.js +9 -9
- package/dist/{latest-question-2PFWQSSG.js → latest-question-4WDBECXB.js} +2 -2
- package/dist/machines.js +4 -4
- package/dist/messages/en.d.ts +6 -0
- package/dist/messages.js +1 -1
- package/dist/{model-policy-picker-menu-VVFGGAI6.js → model-policy-picker-menu-KP53N6UJ.js} +6 -6
- package/dist/native-previews.js +3 -3
- package/dist/{platform-activity-row-ENQVIFTL.js → platform-activity-row-ISMXR7NJ.js} +2 -2
- package/dist/{queue-surface-implementation-4SHOQPQQ.js → queue-surface-implementation-ULW7DDJA.js} +7 -7
- package/dist/realtime.js +7 -7
- package/dist/{sandbox-files-CCOTGXXA.js → sandbox-files-QYSD4XCZ.js} +10 -10
- package/dist/session-agents-model.d.ts +23 -1
- package/dist/session-agents-model.js +6 -1
- package/dist/session-app.js +265 -265
- package/dist/session-list-model.js +2 -2
- package/dist/{session-realtime-JNKDSGH7.js → session-realtime-JXRLPNUH.js} +3 -3
- package/dist/session-realtime.js +2 -2
- package/dist/session-ui.js +68 -68
- package/dist/session.js +22 -22
- package/dist/sites.js +2 -2
- package/dist/terminal.js +2 -2
- package/dist/this-computer.js +3 -3
- package/dist/{timeline-annotation-markers-KHNYNY2J.js → timeline-annotation-markers-OJYKHBEO.js} +5 -5
- package/dist/{timeline-annotation-selection-AXEDJHBP.js → timeline-annotation-selection-6OAZLXFU.js} +7 -7
- package/dist/{timeline-annotations-dialog-AV4ZBXRC.js → timeline-annotations-dialog-5M6DP5FX.js} +9 -9
- package/dist/timeline-model.js +27 -27
- package/dist/ui/access-list.js +20 -20
- 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 +5 -5
- package/dist/ui/revision-history.js +11 -11
- package/dist/ui/role-select.js +6 -6
- package/dist/ui/settings-nav.js +3 -3
- package/dist/usage.js +2 -2
- package/dist/workbench.js +11 -11
- package/package.json +4 -4
- package/src/app/components/session/subagents.tsx +6 -28
- package/src/app/lib/format.tsx +2 -17
- package/src/messages/en.ts +6 -0
- package/src/session-agents-model.ts +75 -1
- package/dist/chunk-4GLLWX33.js.map +0 -1
- package/dist/chunk-4HEXNAFI.js.map +0 -1
- package/dist/chunk-5TLEWXAB.js.map +0 -1
- package/dist/chunk-7TCT7KPQ.js.map +0 -1
- package/dist/chunk-IE5YUCOT.js +0 -26
- package/dist/chunk-IE5YUCOT.js.map +0 -1
- package/dist/chunk-S2U4CDAC.js.map +0 -1
- package/dist/chunk-YV56F4UP.js.map +0 -1
- /package/dist/{browser-viewer-QMCNV4RI.js.map → browser-viewer-YQC6BFMS.js.map} +0 -0
- /package/dist/{chat-interactive-block-PMIAUXSO.js.map → chat-interactive-block-Z22YHDRU.js.map} +0 -0
- /package/dist/{chunk-YJPKDRI2.js.map → chunk-24POWVUY.js.map} +0 -0
- /package/dist/{chunk-35BC2FU2.js.map → chunk-26P7B46A.js.map} +0 -0
- /package/dist/{chunk-ZVVT72MT.js.map → chunk-27EORKJ4.js.map} +0 -0
- /package/dist/{chunk-2NC7NZCE.js.map → chunk-2K27S6LK.js.map} +0 -0
- /package/dist/{chunk-2QBYDGWO.js.map → chunk-2LUO22FR.js.map} +0 -0
- /package/dist/{chunk-FSP334UU.js.map → chunk-2SZ3KC5S.js.map} +0 -0
- /package/dist/{chunk-3X5FKDYQ.js.map → chunk-32HA7DXJ.js.map} +0 -0
- /package/dist/{chunk-CFFNT2OY.js.map → chunk-3GLAPCVI.js.map} +0 -0
- /package/dist/{chunk-PCJLH45G.js.map → chunk-3MQM4ZOC.js.map} +0 -0
- /package/dist/{chunk-BXQYAAVE.js.map → chunk-3XOISKZC.js.map} +0 -0
- /package/dist/{chunk-IDXTASGN.js.map → chunk-3ZZOE4SN.js.map} +0 -0
- /package/dist/{chunk-N3ZP4IDU.js.map → chunk-45WYYFP6.js.map} +0 -0
- /package/dist/{chunk-NEK4WB5P.js.map → chunk-467VRP4E.js.map} +0 -0
- /package/dist/{chunk-PCFK7HKD.js.map → chunk-4BF3DD6R.js.map} +0 -0
- /package/dist/{chunk-552UYIQ7.js.map → chunk-4ICPJZAB.js.map} +0 -0
- /package/dist/{chunk-ITX2TB4K.js.map → chunk-4PC7LIQK.js.map} +0 -0
- /package/dist/{chunk-D5OWJZQR.js.map → chunk-4RY64KQY.js.map} +0 -0
- /package/dist/{chunk-PUTS4DYW.js.map → chunk-4VJOZJDV.js.map} +0 -0
- /package/dist/{chunk-7P4AQMGA.js.map → chunk-4XKT4ENZ.js.map} +0 -0
- /package/dist/{chunk-4VK2R5QC.js.map → chunk-4XO346BW.js.map} +0 -0
- /package/dist/{chunk-IBA5FMRE.js.map → chunk-65K5LV4L.js.map} +0 -0
- /package/dist/{chunk-5Y2FPLZE.js.map → chunk-6JF7C3U3.js.map} +0 -0
- /package/dist/{chunk-LQ47YL6E.js.map → chunk-6K3WNTRI.js.map} +0 -0
- /package/dist/{chunk-UUGR3X5I.js.map → chunk-6MRY2RUZ.js.map} +0 -0
- /package/dist/{chunk-CCR33J7L.js.map → chunk-6N7W3TOV.js.map} +0 -0
- /package/dist/{chunk-ILDOW2IQ.js.map → chunk-6PQBKMUL.js.map} +0 -0
- /package/dist/{chunk-SY2AAZNB.js.map → chunk-6VITVQ23.js.map} +0 -0
- /package/dist/{chunk-AIEXYO2X.js.map → chunk-6YDXUE5H.js.map} +0 -0
- /package/dist/{chunk-GXW2I2M2.js.map → chunk-72XEFLMD.js.map} +0 -0
- /package/dist/{chunk-KEXYBG7Q.js.map → chunk-74NIHMAT.js.map} +0 -0
- /package/dist/{chunk-FTX5CNHA.js.map → chunk-767WCGAX.js.map} +0 -0
- /package/dist/{chunk-5MJHH72T.js.map → chunk-7EGWIME2.js.map} +0 -0
- /package/dist/{chunk-Z7IGO5EA.js.map → chunk-7H2D4VNU.js.map} +0 -0
- /package/dist/{chunk-EJ7WARW7.js.map → chunk-7J7PZB4S.js.map} +0 -0
- /package/dist/{chunk-4SAGYEVB.js.map → chunk-7JZSFJHB.js.map} +0 -0
- /package/dist/{chunk-AJPW3SV4.js.map → chunk-7OIBLMDP.js.map} +0 -0
- /package/dist/{chunk-SM5QX6UK.js.map → chunk-A2EWJQXX.js.map} +0 -0
- /package/dist/{chunk-5YFY4SFC.js.map → chunk-AJ7PY4FJ.js.map} +0 -0
- /package/dist/{chunk-RFLYID6H.js.map → chunk-AT4K4F6S.js.map} +0 -0
- /package/dist/{chunk-3ABPIUCK.js.map → chunk-B254JG72.js.map} +0 -0
- /package/dist/{chunk-TJQDL3JH.js.map → chunk-BPD4IJBG.js.map} +0 -0
- /package/dist/{chunk-S37GP7LX.js.map → chunk-BQWUXC55.js.map} +0 -0
- /package/dist/{chunk-DGLRZMXL.js.map → chunk-BWKZEW6K.js.map} +0 -0
- /package/dist/{chunk-LF5CBAOS.js.map → chunk-C535KSTY.js.map} +0 -0
- /package/dist/{chunk-MOKYT3X3.js.map → chunk-C6JL6PBL.js.map} +0 -0
- /package/dist/{chunk-4XQC7VLT.js.map → chunk-CA64OZLZ.js.map} +0 -0
- /package/dist/{chunk-EQE3MNQN.js.map → chunk-CEQUNJJY.js.map} +0 -0
- /package/dist/{chunk-JO6R5EXF.js.map → chunk-CKA4SJRK.js.map} +0 -0
- /package/dist/{chunk-LHLK7FUA.js.map → chunk-CPKD2YGK.js.map} +0 -0
- /package/dist/{chunk-5FEN3KYH.js.map → chunk-D4QOZXPM.js.map} +0 -0
- /package/dist/{chunk-UP7I3W6O.js.map → chunk-DAQG3C4W.js.map} +0 -0
- /package/dist/{chunk-RIYZFKIM.js.map → chunk-DNLXQUBX.js.map} +0 -0
- /package/dist/{chunk-UYNCMZX5.js.map → chunk-DNWBLT4U.js.map} +0 -0
- /package/dist/{chunk-MXLKI7BI.js.map → chunk-DNYD7AUG.js.map} +0 -0
- /package/dist/{chunk-7KIENXRE.js.map → chunk-DZH2HTTB.js.map} +0 -0
- /package/dist/{chunk-CD3MO3IC.js.map → chunk-E36IC3LU.js.map} +0 -0
- /package/dist/{chunk-Z6E6TUAE.js.map → chunk-EURDMOXZ.js.map} +0 -0
- /package/dist/{chunk-22JFMNMF.js.map → chunk-F2RMKGDQ.js.map} +0 -0
- /package/dist/{chunk-62VER7O4.js.map → chunk-F3NERYBQ.js.map} +0 -0
- /package/dist/{chunk-YXA2EKV3.js.map → chunk-F4B2YYCN.js.map} +0 -0
- /package/dist/{chunk-ENS6E4RZ.js.map → chunk-FH75NNLB.js.map} +0 -0
- /package/dist/{chunk-GGV4NSG3.js.map → chunk-FMATVQFW.js.map} +0 -0
- /package/dist/{chunk-7XO7YKPC.js.map → chunk-FVCLVASD.js.map} +0 -0
- /package/dist/{chunk-HU6JTNWF.js.map → chunk-GMVKCEBG.js.map} +0 -0
- /package/dist/{chunk-SWCLN6JE.js.map → chunk-GRNE5ANU.js.map} +0 -0
- /package/dist/{chunk-FWOBNL2A.js.map → chunk-GTR2WUBA.js.map} +0 -0
- /package/dist/{chunk-BT2MVGHT.js.map → chunk-GTR5NLVP.js.map} +0 -0
- /package/dist/{chunk-J22HD2PB.js.map → chunk-GUIZDI5T.js.map} +0 -0
- /package/dist/{chunk-ULJAOMJA.js.map → chunk-GXK4CUAB.js.map} +0 -0
- /package/dist/{chunk-XN7NSPE6.js.map → chunk-HCCSAECI.js.map} +0 -0
- /package/dist/{chunk-22FFOHPT.js.map → chunk-HJTTDLF6.js.map} +0 -0
- /package/dist/{chunk-YEROLKOA.js.map → chunk-HSQRYJ4P.js.map} +0 -0
- /package/dist/{chunk-73WI7FL2.js.map → chunk-HTKVYEVB.js.map} +0 -0
- /package/dist/{chunk-4RMN4E2Y.js.map → chunk-HXZIX7MR.js.map} +0 -0
- /package/dist/{chunk-DJFTH2DI.js.map → chunk-I57HZMMA.js.map} +0 -0
- /package/dist/{chunk-3GU7AWG7.js.map → chunk-I74J2UZ2.js.map} +0 -0
- /package/dist/{chunk-FDAV72IX.js.map → chunk-IC7KNOBB.js.map} +0 -0
- /package/dist/{chunk-TIQPKOFW.js.map → chunk-IWIMIRV3.js.map} +0 -0
- /package/dist/{chunk-U6MPB3K6.js.map → chunk-JI6WPLZB.js.map} +0 -0
- /package/dist/{chunk-GT7JFQ4E.js.map → chunk-JJ7VMIEQ.js.map} +0 -0
- /package/dist/{chunk-GDLDBR6B.js.map → chunk-JQKURO3S.js.map} +0 -0
- /package/dist/{chunk-O2SBHS2N.js.map → chunk-K4FDZVMQ.js.map} +0 -0
- /package/dist/{chunk-JXT5QDJC.js.map → chunk-KNFDWNCH.js.map} +0 -0
- /package/dist/{chunk-TLL22FFO.js.map → chunk-KUO5WFXG.js.map} +0 -0
- /package/dist/{chunk-KUNFUSZ7.js.map → chunk-KVMFT6FN.js.map} +0 -0
- /package/dist/{chunk-5W6ZDKRR.js.map → chunk-KW53DBY7.js.map} +0 -0
- /package/dist/{chunk-5DSKMG2I.js.map → chunk-LEXPBQ56.js.map} +0 -0
- /package/dist/{chunk-3RMKPHBL.js.map → chunk-LG67ZNRU.js.map} +0 -0
- /package/dist/{chunk-WKHUZIOW.js.map → chunk-LJZNHDKI.js.map} +0 -0
- /package/dist/{chunk-4YXAQMTD.js.map → chunk-LR7U3HCD.js.map} +0 -0
- /package/dist/{chunk-2FPS5H2D.js.map → chunk-M5E3CKSE.js.map} +0 -0
- /package/dist/{chunk-3PEXVG4D.js.map → chunk-M7A226EQ.js.map} +0 -0
- /package/dist/{chunk-PO3BH3KQ.js.map → chunk-M7YEZR6X.js.map} +0 -0
- /package/dist/{chunk-YYCOSTUU.js.map → chunk-MB2DTUEG.js.map} +0 -0
- /package/dist/{chunk-HQWVDQXW.js.map → chunk-MDRLP5DO.js.map} +0 -0
- /package/dist/{chunk-ACL2V2KE.js.map → chunk-MHIYYHCL.js.map} +0 -0
- /package/dist/{chunk-JQCGPTZ6.js.map → chunk-MM7OKOTE.js.map} +0 -0
- /package/dist/{chunk-5W7KJ5NQ.js.map → chunk-MY6VZVCP.js.map} +0 -0
- /package/dist/{chunk-CMLJSF2F.js.map → chunk-NF6Q4XTN.js.map} +0 -0
- /package/dist/{chunk-EYS4ZOF5.js.map → chunk-NML44AW2.js.map} +0 -0
- /package/dist/{chunk-QFMLAT7L.js.map → chunk-NPDL4W4Y.js.map} +0 -0
- /package/dist/{chunk-TL7BOFFL.js.map → chunk-NURA4KUR.js.map} +0 -0
- /package/dist/{chunk-3STBLX4O.js.map → chunk-NV5OYV3G.js.map} +0 -0
- /package/dist/{chunk-MIECLOQC.js.map → chunk-NZMQDUOD.js.map} +0 -0
- /package/dist/{chunk-CP7ZQHBW.js.map → chunk-O4DYOSOL.js.map} +0 -0
- /package/dist/{chunk-VH5EGTH2.js.map → chunk-O5UOCMH4.js.map} +0 -0
- /package/dist/{chunk-Y5BSA3I7.js.map → chunk-O73DRA77.js.map} +0 -0
- /package/dist/{chunk-GRSODLVO.js.map → chunk-OANSIX34.js.map} +0 -0
- /package/dist/{chunk-RQNZDTKT.js.map → chunk-OHG2UQ2O.js.map} +0 -0
- /package/dist/{chunk-5JHRMUAZ.js.map → chunk-OLUG4IFF.js.map} +0 -0
- /package/dist/{chunk-EPWD4KRA.js.map → chunk-OOEO4MKY.js.map} +0 -0
- /package/dist/{chunk-7NPCEBZE.js.map → chunk-OWJD3V4V.js.map} +0 -0
- /package/dist/{chunk-CDEXRJB6.js.map → chunk-PEKPWK5M.js.map} +0 -0
- /package/dist/{chunk-FWYEZ3LE.js.map → chunk-PQCFW2KT.js.map} +0 -0
- /package/dist/{chunk-LMPTC4CX.js.map → chunk-QLDMF7MH.js.map} +0 -0
- /package/dist/{chunk-JM4HQPAI.js.map → chunk-QZRDCFHI.js.map} +0 -0
- /package/dist/{chunk-DYJGYGPB.js.map → chunk-R5YZ3ROM.js.map} +0 -0
- /package/dist/{chunk-I6KIQKU6.js.map → chunk-RABKQFTA.js.map} +0 -0
- /package/dist/{chunk-7FJMRJDG.js.map → chunk-RNBH5TSM.js.map} +0 -0
- /package/dist/{chunk-J7FBBLHF.js.map → chunk-RXMIXKB3.js.map} +0 -0
- /package/dist/{chunk-A4BD4ZVB.js.map → chunk-S7PVL7XH.js.map} +0 -0
- /package/dist/{chunk-4LPA25NQ.js.map → chunk-SD2K5ZN5.js.map} +0 -0
- /package/dist/{chunk-UXXFMF4X.js.map → chunk-SJPAKWWP.js.map} +0 -0
- /package/dist/{chunk-FRP64DEK.js.map → chunk-SK57RWSA.js.map} +0 -0
- /package/dist/{chunk-ZS2UQ3DV.js.map → chunk-SOXZ4LGS.js.map} +0 -0
- /package/dist/{chunk-WSZQNTVN.js.map → chunk-SSZROOOI.js.map} +0 -0
- /package/dist/{chunk-MCTTONOW.js.map → chunk-TM2ZLY3Q.js.map} +0 -0
- /package/dist/{chunk-J5MEDX7C.js.map → chunk-U47YDYLQ.js.map} +0 -0
- /package/dist/{chunk-TV6BWONY.js.map → chunk-UHMMRQGU.js.map} +0 -0
- /package/dist/{chunk-YVBHGMKC.js.map → chunk-VAIESMPY.js.map} +0 -0
- /package/dist/{chunk-WCMG4HYI.js.map → chunk-W57QFLQD.js.map} +0 -0
- /package/dist/{chunk-RYSRFAHN.js.map → chunk-WLZVXCPZ.js.map} +0 -0
- /package/dist/{chunk-PFAUGEV5.js.map → chunk-WN2MIB4Q.js.map} +0 -0
- /package/dist/{chunk-5FA455GR.js.map → chunk-WNG757ID.js.map} +0 -0
- /package/dist/{chunk-G4HQUBO4.js.map → chunk-WSLPZ43N.js.map} +0 -0
- /package/dist/{chunk-QXEDIDBZ.js.map → chunk-WWM7WVD2.js.map} +0 -0
- /package/dist/{chunk-V4QZ7UBK.js.map → chunk-WYEPUXGL.js.map} +0 -0
- /package/dist/{chunk-AX6YJA5U.js.map → chunk-X7Z4B5GK.js.map} +0 -0
- /package/dist/{chunk-GZS37O3G.js.map → chunk-XDCZBOEY.js.map} +0 -0
- /package/dist/{chunk-52WK2GGK.js.map → chunk-XGE75VPK.js.map} +0 -0
- /package/dist/{chunk-XMNUZUUA.js.map → chunk-Z2DAWUO3.js.map} +0 -0
- /package/dist/{chunk-BCM7C3MJ.js.map → chunk-Z4GJB24B.js.map} +0 -0
- /package/dist/{chunk-LT4J7RHI.js.map → chunk-ZPZYYSHW.js.map} +0 -0
- /package/dist/{chunk-GHHM6WN4.js.map → chunk-ZRB4M3GG.js.map} +0 -0
- /package/dist/{chunk-FFNPUSVO.js.map → chunk-ZWACUOU5.js.map} +0 -0
- /package/dist/{chunk-ZEIFJ6PX.js.map → chunk-ZZUKJ5HQ.js.map} +0 -0
- /package/dist/{computer-viewer-25AJIDYA.js.map → computer-viewer-BWVNDFTO.js.map} +0 -0
- /package/dist/{embedded-new-voice-RZZEJT6M.js.map → embedded-new-voice-GBXSZ3TO.js.map} +0 -0
- /package/dist/{embedded-voice-6OKSSPLW.js.map → embedded-voice-MGI7EK7C.js.map} +0 -0
- /package/dist/{fleet-decision-row-NN2HXDX3.js.map → fleet-decision-row-35S3GAUN.js.map} +0 -0
- /package/dist/{latest-question-2PFWQSSG.js.map → latest-question-4WDBECXB.js.map} +0 -0
- /package/dist/{model-policy-picker-menu-VVFGGAI6.js.map → model-policy-picker-menu-KP53N6UJ.js.map} +0 -0
- /package/dist/{platform-activity-row-ENQVIFTL.js.map → platform-activity-row-ISMXR7NJ.js.map} +0 -0
- /package/dist/{queue-surface-implementation-4SHOQPQQ.js.map → queue-surface-implementation-ULW7DDJA.js.map} +0 -0
- /package/dist/{sandbox-files-CCOTGXXA.js.map → sandbox-files-QYSD4XCZ.js.map} +0 -0
- /package/dist/{session-realtime-JNKDSGH7.js.map → session-realtime-JXRLPNUH.js.map} +0 -0
- /package/dist/{timeline-annotation-markers-KHNYNY2J.js.map → timeline-annotation-markers-OJYKHBEO.js.map} +0 -0
- /package/dist/{timeline-annotation-selection-AXEDJHBP.js.map → timeline-annotation-selection-6OAZLXFU.js.map} +0 -0
- /package/dist/{timeline-annotations-dialog-AV4ZBXRC.js.map → timeline-annotations-dialog-5M6DP5FX.js.map} +0 -0
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
ArtifactButton
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-6N7W3TOV.js";
|
|
5
5
|
import {
|
|
6
6
|
cn
|
|
7
7
|
} from "./chunk-TXS65BB2.js";
|
|
8
8
|
import {
|
|
9
9
|
useOpenGeniText
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-S6WJ6TUT.js";
|
|
11
11
|
|
|
12
12
|
// src/components/artifacts/artifact-surface.tsx
|
|
13
13
|
import {
|
|
@@ -87,11 +87,65 @@ function ArtifactSurface({
|
|
|
87
87
|
);
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
+
// src/components/artifacts/artifact-submissions.tsx
|
|
91
|
+
import { createContext, useContext, useState } from "react";
|
|
92
|
+
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
93
|
+
function createSubmissionQueue() {
|
|
94
|
+
let pending = 0;
|
|
95
|
+
const listeners = /* @__PURE__ */ new Set();
|
|
96
|
+
const emit = () => {
|
|
97
|
+
for (const listener of listeners) listener();
|
|
98
|
+
};
|
|
99
|
+
return {
|
|
100
|
+
getPending: () => pending,
|
|
101
|
+
subscribe: (listener) => {
|
|
102
|
+
listeners.add(listener);
|
|
103
|
+
return () => {
|
|
104
|
+
listeners.delete(listener);
|
|
105
|
+
};
|
|
106
|
+
},
|
|
107
|
+
async run(invoke) {
|
|
108
|
+
pending++;
|
|
109
|
+
emit();
|
|
110
|
+
try {
|
|
111
|
+
return await invoke();
|
|
112
|
+
} finally {
|
|
113
|
+
pending--;
|
|
114
|
+
emit();
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
var standaloneQueue = {
|
|
120
|
+
getPending: () => 0,
|
|
121
|
+
subscribe: (_listener) => () => {
|
|
122
|
+
},
|
|
123
|
+
run: (invoke) => invoke()
|
|
124
|
+
};
|
|
125
|
+
var SubmissionContext = createContext(null);
|
|
126
|
+
function ArtifactSubmissionProvider({ children }) {
|
|
127
|
+
const [queue] = useState(createSubmissionQueue);
|
|
128
|
+
return /* @__PURE__ */ jsx2(SubmissionContext.Provider, { value: queue, children });
|
|
129
|
+
}
|
|
130
|
+
function useArtifactSubmissions() {
|
|
131
|
+
return useContext(SubmissionContext) ?? standaloneQueue;
|
|
132
|
+
}
|
|
133
|
+
var SESSION_KEYS = /* @__PURE__ */ new WeakMap();
|
|
134
|
+
var nextSessionKey = 0;
|
|
135
|
+
function artifactSubmissionSessionKey(session) {
|
|
136
|
+
let key = SESSION_KEYS.get(session);
|
|
137
|
+
if (key === void 0) {
|
|
138
|
+
key = ++nextSessionKey;
|
|
139
|
+
SESSION_KEYS.set(session, key);
|
|
140
|
+
}
|
|
141
|
+
return key;
|
|
142
|
+
}
|
|
143
|
+
|
|
90
144
|
// src/components/artifacts/editable-artifact-ui.tsx
|
|
91
|
-
import { useEffect, useState } from "react";
|
|
92
|
-
import { jsx as
|
|
145
|
+
import { useEffect, useState as useState2 } from "react";
|
|
146
|
+
import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
93
147
|
function useEditableArtifactView(session) {
|
|
94
|
-
const [view, setView] =
|
|
148
|
+
const [view, setView] = useState2(() => session.getView());
|
|
95
149
|
useEffect(() => {
|
|
96
150
|
setView(session.getView());
|
|
97
151
|
return session.subscribe(setView);
|
|
@@ -142,10 +196,10 @@ function EditableArtifactMessage({
|
|
|
142
196
|
}) {
|
|
143
197
|
const t = useOpenGeniText();
|
|
144
198
|
const retryLabel = retryLabelProp === void 0 ? t("artifacts.editableArtifactUi.retry") : retryLabelProp;
|
|
145
|
-
return /* @__PURE__ */
|
|
146
|
-
/* @__PURE__ */
|
|
147
|
-
/* @__PURE__ */
|
|
148
|
-
retry ? /* @__PURE__ */
|
|
199
|
+
return /* @__PURE__ */ jsx3("div", { className: "grid h-full min-h-56 place-items-center bg-og-bg p-6 text-center", children: /* @__PURE__ */ jsxs2("div", { children: [
|
|
200
|
+
/* @__PURE__ */ jsx3("p", { className: "text-og-base font-medium text-og-fg", children: title }),
|
|
201
|
+
/* @__PURE__ */ jsx3("p", { className: "mt-1 max-w-lg text-og-sm text-og-fg-muted", children: detail }),
|
|
202
|
+
retry ? /* @__PURE__ */ jsx3(
|
|
149
203
|
"button",
|
|
150
204
|
{
|
|
151
205
|
type: "button",
|
|
@@ -160,60 +214,6 @@ function asEditableArtifactError(cause, fallback) {
|
|
|
160
214
|
return cause instanceof Error ? cause : new Error(fallback);
|
|
161
215
|
}
|
|
162
216
|
|
|
163
|
-
// src/components/artifacts/artifact-submissions.tsx
|
|
164
|
-
import { createContext, useContext, useState as useState2 } from "react";
|
|
165
|
-
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
166
|
-
function createSubmissionQueue() {
|
|
167
|
-
let pending = 0;
|
|
168
|
-
const listeners = /* @__PURE__ */ new Set();
|
|
169
|
-
const emit = () => {
|
|
170
|
-
for (const listener of listeners) listener();
|
|
171
|
-
};
|
|
172
|
-
return {
|
|
173
|
-
getPending: () => pending,
|
|
174
|
-
subscribe: (listener) => {
|
|
175
|
-
listeners.add(listener);
|
|
176
|
-
return () => {
|
|
177
|
-
listeners.delete(listener);
|
|
178
|
-
};
|
|
179
|
-
},
|
|
180
|
-
async run(invoke) {
|
|
181
|
-
pending++;
|
|
182
|
-
emit();
|
|
183
|
-
try {
|
|
184
|
-
return await invoke();
|
|
185
|
-
} finally {
|
|
186
|
-
pending--;
|
|
187
|
-
emit();
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
};
|
|
191
|
-
}
|
|
192
|
-
var standaloneQueue = {
|
|
193
|
-
getPending: () => 0,
|
|
194
|
-
subscribe: (_listener) => () => {
|
|
195
|
-
},
|
|
196
|
-
run: (invoke) => invoke()
|
|
197
|
-
};
|
|
198
|
-
var SubmissionContext = createContext(null);
|
|
199
|
-
function ArtifactSubmissionProvider({ children }) {
|
|
200
|
-
const [queue] = useState2(createSubmissionQueue);
|
|
201
|
-
return /* @__PURE__ */ jsx3(SubmissionContext.Provider, { value: queue, children });
|
|
202
|
-
}
|
|
203
|
-
function useArtifactSubmissions() {
|
|
204
|
-
return useContext(SubmissionContext) ?? standaloneQueue;
|
|
205
|
-
}
|
|
206
|
-
var SESSION_KEYS = /* @__PURE__ */ new WeakMap();
|
|
207
|
-
var nextSessionKey = 0;
|
|
208
|
-
function artifactSubmissionSessionKey(session) {
|
|
209
|
-
let key = SESSION_KEYS.get(session);
|
|
210
|
-
if (key === void 0) {
|
|
211
|
-
key = ++nextSessionKey;
|
|
212
|
-
SESSION_KEYS.set(session, key);
|
|
213
|
-
}
|
|
214
|
-
return key;
|
|
215
|
-
}
|
|
216
|
-
|
|
217
217
|
// src/components/artifacts/artifact-download.tsx
|
|
218
218
|
import { DownloadIcon, LoaderCircleIcon as LoaderCircleIcon2 } from "lucide-react";
|
|
219
219
|
import { useEffect as useEffect2, useRef, useState as useState3, useSyncExternalStore } from "react";
|
|
@@ -325,15 +325,15 @@ function downloadFileName(title, format, fallback) {
|
|
|
325
325
|
|
|
326
326
|
export {
|
|
327
327
|
ArtifactSurface,
|
|
328
|
+
ArtifactSubmissionProvider,
|
|
329
|
+
useArtifactSubmissions,
|
|
330
|
+
artifactSubmissionSessionKey,
|
|
328
331
|
useEditableArtifactView,
|
|
329
332
|
editableArtifactProjectionKey,
|
|
330
333
|
editableArtifactStatusLabel,
|
|
331
334
|
editableArtifactAccessRevoked,
|
|
332
335
|
EditableArtifactMessage,
|
|
333
336
|
asEditableArtifactError,
|
|
334
|
-
ArtifactSubmissionProvider,
|
|
335
|
-
useArtifactSubmissions,
|
|
336
|
-
artifactSubmissionSessionKey,
|
|
337
337
|
EditableArtifactDownloadButton
|
|
338
338
|
};
|
|
339
|
-
//# sourceMappingURL=chunk-
|
|
339
|
+
//# sourceMappingURL=chunk-G3FU2IF7.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/artifacts/artifact-surface.tsx","../src/components/artifacts/editable-artifact-ui.tsx","../src/components/artifacts/artifact-submissions.tsx","../src/components/artifacts/artifact-download.tsx"],"sourcesContent":["import {\n FileSpreadsheetIcon,\n FileTextIcon,\n LoaderCircleIcon,\n PresentationIcon,\n} from \"lucide-react\";\nimport type { ReactNode } from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport { useOpenGeniText, type OpenGeniText } from \"../../messages/runtime\";\n\nexport type ArtifactModality = \"spreadsheet\" | \"document\" | \"presentation\";\n\nexport type ArtifactSurfaceProps = {\n modality: ArtifactModality;\n title: string;\n /** An embedding host may already provide the artifact title and navigation. */\n showHeader?: boolean | undefined;\n subtitle?: ReactNode | undefined;\n actions?: ReactNode | undefined;\n children: ReactNode;\n footer?: ReactNode | undefined;\n busy?: boolean | undefined;\n className?: string | undefined;\n};\n\nconst MODALITY_LABEL = (t: OpenGeniText): Record<ArtifactModality, string> => ({\n spreadsheet: t(\"artifacts.artifactSurface.spreadsheet\"),\n document: t(\"artifacts.artifactSurface.document\"),\n presentation: t(\"artifacts.artifactSurface.presentation\"),\n});\n\nfunction ModalityIcon({ modality }: { modality: ArtifactModality }) {\n switch (modality) {\n case \"spreadsheet\":\n return <FileSpreadsheetIcon className=\"size-4\" />;\n case \"document\":\n return <FileTextIcon className=\"size-4\" />;\n case \"presentation\":\n return <PresentationIcon className=\"size-4\" />;\n }\n}\n\n/**\n * Modality-neutral artifact chrome. It deliberately owns no file, session, or\n * persistence state: hosts can use the same surface for a local draft, a\n * durable Opengeni artifact, or a collaborative projection.\n */\nexport function ArtifactSurface({\n modality,\n title,\n showHeader = true,\n subtitle,\n actions,\n children,\n footer,\n busy = false,\n className,\n}: ArtifactSurfaceProps) {\n const t = useOpenGeniText();\n return (\n <section\n aria-label={`${MODALITY_LABEL(t)[modality]}: ${title}`}\n aria-busy={busy || undefined}\n data-og-artifact-modality={modality}\n className={cn(\n \"og-root flex h-full min-h-0 min-w-0 flex-col overflow-hidden rounded-og-lg border border-og-border bg-og-surface-1 text-og-fg shadow-og-md\",\n className,\n )}\n >\n {showHeader ? (\n <header className=\"flex min-h-11 shrink-0 items-center gap-2 border-b border-og-border bg-og-surface-2 px-3\">\n <span\n aria-hidden\n className=\"grid size-7 shrink-0 place-items-center rounded-og-sm bg-og-surface-3 text-og-fg-muted\"\n >\n <ModalityIcon modality={modality} />\n </span>\n <div className=\"min-w-0 flex-1\">\n <h2 className=\"truncate text-og-base font-medium text-og-fg\">{title}</h2>\n {subtitle ? (\n <div className=\"truncate text-og-xs text-og-fg-muted\">{subtitle}</div>\n ) : null}\n </div>\n {busy ? (\n <LoaderCircleIcon\n aria-label={t(\"artifacts.artifactSurface.updatingArtifact\")}\n className=\"size-4 shrink-0 animate-spin text-og-fg-muted\"\n />\n ) : null}\n {actions ? <div className=\"flex shrink-0 items-center gap-1\">{actions}</div> : null}\n </header>\n ) : (\n <>\n {typeof subtitle === \"string\" || typeof subtitle === \"number\" ? (\n <span role=\"status\" className=\"sr-only\">\n {subtitle}\n </span>\n ) : null}\n {actions ? (\n <div className=\"flex shrink-0 items-center justify-end gap-1 border-b border-og-border px-3 py-1\">\n {actions}\n </div>\n ) : null}\n </>\n )}\n\n <div className=\"min-h-0 min-w-0 flex-1\">{children}</div>\n\n {footer ? (\n <footer className=\"shrink-0 border-t border-og-border bg-og-surface-2\">{footer}</footer>\n ) : null}\n </section>\n );\n}\n","import type {\n EditableArtifactSession,\n EditableArtifactSyncView,\n} from \"@opengeni/sdk/editable-artifacts\";\nimport { useEffect, useState } from \"react\";\nimport { type OpenGeniText } from \"../../messages/runtime\";\nimport { useOpenGeniText } from \"../../messages/runtime\";\n\nexport function useEditableArtifactView(\n session: EditableArtifactSession,\n): EditableArtifactSyncView {\n const [view, setView] = useState(() => session.getView());\n useEffect(() => {\n setView(session.getView());\n return session.subscribe(setView);\n }, [session]);\n return view;\n}\n\n/** Changes whenever the Worker-resident speculative projection may have changed. */\nexport function editableArtifactProjectionKey(view: EditableArtifactSyncView): string {\n return [\n view.state,\n view.cursor,\n view.headSequence,\n view.pendingTransactions,\n view.blockedPending.map((entry) => `${entry.clientTransactionId}:${entry.code}`).join(\",\"),\n ].join(\":\");\n}\n\nexport function editableArtifactStatusLabel(\n t: OpenGeniText,\n view: EditableArtifactSyncView,\n): string {\n switch (view.state) {\n case \"idle\":\n case \"connecting\":\n return t(\"artifacts.editableArtifactUi.connecting\");\n case \"syncing\":\n case \"resyncing\":\n return t(\"artifacts.editableArtifactUi.syncing\");\n case \"reconnecting\":\n return t(\"artifacts.editableArtifactUi.reconnecting\");\n case \"unsupported\":\n return t(\"artifacts.editableArtifactUi.thisArtifactVersionIsNot\");\n case \"failed\":\n if (editableArtifactAccessRevoked(view)) {\n return t(\"artifacts.editableArtifactUi.youNoLongerHaveAccess\");\n }\n return view.lastError?.message ?? t(\"artifacts.editableArtifactUi.couldNotOpenThisArtifact\");\n case \"closed\":\n return t(\"artifacts.editableArtifactUi.artifactSessionClosed\");\n case \"live\":\n return view.writable\n ? t(\"artifacts.editableArtifactUi.live\")\n : t(\"artifacts.editableArtifactUi.liveReadOnly\");\n }\n}\n\n/** Revoked read authority must hide any projection retained before invalidation. */\nexport function editableArtifactAccessRevoked(view: EditableArtifactSyncView): boolean {\n if (view.state !== \"failed\" || !view.lastError) return false;\n return (view.lastError as Error & Readonly<{ code?: unknown }>).code === \"permission_changed\";\n}\n\nexport function EditableArtifactMessage({\n title,\n detail,\n retry,\n retryLabel: retryLabelProp,\n}: {\n title: string;\n detail: string;\n retry?: (() => void) | undefined;\n retryLabel?: string | undefined;\n}) {\n const t = useOpenGeniText();\n const retryLabel =\n retryLabelProp === undefined ? t(\"artifacts.editableArtifactUi.retry\") : retryLabelProp;\n return (\n <div className=\"grid h-full min-h-56 place-items-center bg-og-bg p-6 text-center\">\n <div>\n <p className=\"text-og-base font-medium text-og-fg\">{title}</p>\n <p className=\"mt-1 max-w-lg text-og-sm text-og-fg-muted\">{detail}</p>\n {retry ? (\n <button\n type=\"button\"\n onClick={retry}\n className=\"mt-3 rounded-og-sm border border-og-primary-border bg-og-primary text-og-primary-fg px-3 py-1.5 text-og-sm font-medium hover:bg-og-primary-hover outline-hidden focus-visible:ring-2 focus-visible:ring-og-accent\"\n >\n {retryLabel}\n </button>\n ) : null}\n </div>\n </div>\n );\n}\n\nexport function asEditableArtifactError(cause: unknown, fallback: string): Error {\n return cause instanceof Error ? cause : new Error(fallback);\n}\n","import type { EditableArtifactSession } from \"@opengeni/sdk/editable-artifacts\";\nimport { createContext, useContext, useState, type ReactNode } from \"react\";\n\nfunction createSubmissionQueue() {\n let pending = 0;\n const listeners = new Set<() => void>();\n const emit = () => {\n for (const listener of listeners) listener();\n };\n return {\n getPending: () => pending,\n subscribe: (listener: () => void) => {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n async run<T>(invoke: () => Promise<T>): Promise<T> {\n // The SDK's causal queue and Worker authoring precede pendingTransactions.\n // Latch synchronously so a same-event blur/click cannot export an older head.\n pending++;\n emit();\n try {\n return await invoke();\n } finally {\n pending--;\n emit();\n }\n },\n };\n}\n\nexport type ArtifactSubmissions = Readonly<{\n getPending: () => number;\n subscribe: (listener: () => void) => () => void;\n run: <T>(invoke: () => Promise<T>) => Promise<T>;\n}>;\n\nconst standaloneQueue: ArtifactSubmissions = {\n getPending: () => 0,\n subscribe: (_listener: () => void) => () => {},\n run: <T,>(invoke: () => Promise<T>) => invoke(),\n};\nconst SubmissionContext = createContext<ArtifactSubmissions | null>(null);\n\nexport function ArtifactSubmissionProvider({ children }: { children: ReactNode }) {\n const [queue] = useState(createSubmissionQueue);\n return <SubmissionContext.Provider value={queue}>{children}</SubmissionContext.Provider>;\n}\n\n/** UI authoring submissions not yet visible as SDK pending transactions. */\nexport function useArtifactSubmissions(): ArtifactSubmissions {\n return useContext(SubmissionContext) ?? standaloneQueue;\n}\n\nconst SESSION_KEYS = new WeakMap<EditableArtifactSession, number>();\nlet nextSessionKey = 0;\n\n/** Stable per-session React key so a replaced session never inherits queued state. */\nexport function artifactSubmissionSessionKey(session: EditableArtifactSession): number {\n let key = SESSION_KEYS.get(session);\n if (key === undefined) {\n key = ++nextSessionKey;\n SESSION_KEYS.set(session, key);\n }\n return key;\n}\n","import type { EditableArtifactSession } from \"@opengeni/sdk/editable-artifacts\";\nimport { DownloadIcon, LoaderCircleIcon } from \"lucide-react\";\nimport { useEffect, useRef, useState, useSyncExternalStore } from \"react\";\n\nimport { ArtifactButton } from \"./artifact-chrome\";\nimport { useArtifactSubmissions } from \"./artifact-submissions\";\nimport { useEditableArtifactView } from \"./editable-artifact-ui\";\nimport { useOpenGeniText } from \"../../messages/runtime\";\n\n/** Host-authenticated export of the saved native head as an Office file. */\nexport type EditableArtifactDownload = (signal: AbortSignal) => Promise<Blob>;\nexport type EditableArtifactDownloadFormat = \"xlsx\" | \"docx\" | \"pptx\";\n\nconst LABELS = {\n xlsx: {\n download: \"artifacts.spreadsheetDownload.download\",\n preparing: \"artifacts.spreadsheetDownload.preparing\",\n failed: \"artifacts.spreadsheetDownload.downloadFailedTryAgain\",\n title: \"artifacts.spreadsheetDownload.downloadWorkbookAsXlsx\",\n wait: \"artifacts.spreadsheetDownload.waitForWorkbookChangesTo\",\n fallbackName: \"artifacts.spreadsheetDownload.workbook\",\n },\n docx: {\n download: \"artifacts.artifactDownload.download\",\n preparing: \"artifacts.artifactDownload.preparing\",\n failed: \"artifacts.artifactDownload.downloadFailedTryAgain\",\n title: \"artifacts.artifactDownload.downloadDocumentAsDocx\",\n wait: \"artifacts.artifactDownload.waitForDocumentChangesTo\",\n fallbackName: \"artifacts.artifactDownload.document\",\n },\n pptx: {\n download: \"artifacts.artifactDownload.download\",\n preparing: \"artifacts.artifactDownload.preparing\",\n failed: \"artifacts.artifactDownload.downloadFailedTryAgain\",\n title: \"artifacts.artifactDownload.downloadPresentationAsPptx\",\n wait: \"artifacts.artifactDownload.waitForPresentationChangesTo\",\n fallbackName: \"artifacts.artifactDownload.presentation\",\n },\n} as const;\n\n/**\n * Download action shared by every editable modality. It waits for live sync\n * with no pending or still-submitting edits, so the export is the latest head.\n */\nexport function EditableArtifactDownloadButton({\n session,\n title,\n download,\n format,\n}: {\n session: EditableArtifactSession;\n title: string;\n download: EditableArtifactDownload;\n format: EditableArtifactDownloadFormat;\n}) {\n const t = useOpenGeniText();\n const labels = LABELS[format];\n const view = useEditableArtifactView(session);\n const submissions = useArtifactSubmissions();\n const submitting = useSyncExternalStore(\n submissions.subscribe,\n submissions.getPending,\n submissions.getPending,\n );\n const active = useRef<AbortController | null>(null);\n const [busy, setBusy] = useState(false);\n const [error, setError] = useState(false);\n const ready =\n view.state === \"live\" &&\n submitting === 0 &&\n view.pendingTransactions === 0 &&\n view.blockedPending.length === 0 &&\n !view.authoringBlockedReason;\n useEffect(() => () => active.current?.abort(), [session]);\n useEffect(() => {\n if (view.state === \"failed\" || view.state === \"closed\") {\n active.current?.abort();\n active.current = null;\n setBusy(false);\n }\n }, [view.state]);\n\n const start = async () => {\n if (active.current || !ready || submissions.getPending()) return;\n // Re-read the live view: a just-committed edit may precede React's next render.\n const current = session.getView();\n if (\n current.state !== \"live\" ||\n current.pendingTransactions ||\n current.blockedPending.length ||\n current.authoringBlockedReason\n )\n return;\n const controller = new AbortController();\n active.current = controller;\n setBusy(true);\n setError(false);\n try {\n const blob = await download(controller.signal);\n if (controller.signal.aborted) return;\n const url = URL.createObjectURL(blob);\n try {\n const anchor = document.createElement(\"a\");\n anchor.href = url;\n anchor.download = downloadFileName(title, format, t(labels.fallbackName));\n anchor.rel = \"noopener\";\n anchor.click();\n } finally {\n setTimeout(() => URL.revokeObjectURL(url), 0);\n }\n } catch {\n if (!controller.signal.aborted) setError(true);\n } finally {\n if (!controller.signal.aborted) {\n active.current = null;\n setBusy(false);\n }\n }\n };\n\n return (\n <>\n {error ? (\n <span role=\"alert\" className=\"text-og-xs text-og-fg-muted\">\n {t(labels.failed)}\n </span>\n ) : null}\n <ArtifactButton\n onClick={() => void start()}\n disabled={busy || !ready}\n title={ready ? t(labels.title) : t(labels.wait)}\n >\n {busy ? (\n <LoaderCircleIcon className=\"animate-spin\" aria-hidden />\n ) : (\n <DownloadIcon aria-hidden />\n )}\n {busy ? t(labels.preparing) : t(labels.download)}\n </ArtifactButton>\n </>\n );\n}\n\n/** Safe local file name: the artifact title with exactly one matching extension. */\nexport function downloadFileName(\n title: string,\n format: EditableArtifactDownloadFormat,\n fallback: string,\n): string {\n const base =\n title\n .replace(/[\\\\/:*?\"<>|\\u0000-\\u001f]/g, \"_\")\n .replace(new RegExp(`\\\\.${format}$`, \"i\"), \"\")\n .trim() || fallback;\n return `${base}.${format}`;\n}\n"],"mappings":"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","names":["jsx","jsxs","useState","jsx","LoaderCircleIcon","useEffect","useState","Fragment","jsx","jsxs","useState","useEffect","LoaderCircleIcon"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/artifacts/artifact-surface.tsx","../src/components/artifacts/artifact-submissions.tsx","../src/components/artifacts/editable-artifact-ui.tsx","../src/components/artifacts/artifact-download.tsx"],"sourcesContent":["import {\n FileSpreadsheetIcon,\n FileTextIcon,\n LoaderCircleIcon,\n PresentationIcon,\n} from \"lucide-react\";\nimport type { ReactNode } from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport { useOpenGeniText, type OpenGeniText } from \"../../messages/runtime\";\n\nexport type ArtifactModality = \"spreadsheet\" | \"document\" | \"presentation\";\n\nexport type ArtifactSurfaceProps = {\n modality: ArtifactModality;\n title: string;\n /** An embedding host may already provide the artifact title and navigation. */\n showHeader?: boolean | undefined;\n subtitle?: ReactNode | undefined;\n actions?: ReactNode | undefined;\n children: ReactNode;\n footer?: ReactNode | undefined;\n busy?: boolean | undefined;\n className?: string | undefined;\n};\n\nconst MODALITY_LABEL = (t: OpenGeniText): Record<ArtifactModality, string> => ({\n spreadsheet: t(\"artifacts.artifactSurface.spreadsheet\"),\n document: t(\"artifacts.artifactSurface.document\"),\n presentation: t(\"artifacts.artifactSurface.presentation\"),\n});\n\nfunction ModalityIcon({ modality }: { modality: ArtifactModality }) {\n switch (modality) {\n case \"spreadsheet\":\n return <FileSpreadsheetIcon className=\"size-4\" />;\n case \"document\":\n return <FileTextIcon className=\"size-4\" />;\n case \"presentation\":\n return <PresentationIcon className=\"size-4\" />;\n }\n}\n\n/**\n * Modality-neutral artifact chrome. It deliberately owns no file, session, or\n * persistence state: hosts can use the same surface for a local draft, a\n * durable Opengeni artifact, or a collaborative projection.\n */\nexport function ArtifactSurface({\n modality,\n title,\n showHeader = true,\n subtitle,\n actions,\n children,\n footer,\n busy = false,\n className,\n}: ArtifactSurfaceProps) {\n const t = useOpenGeniText();\n return (\n <section\n aria-label={`${MODALITY_LABEL(t)[modality]}: ${title}`}\n aria-busy={busy || undefined}\n data-og-artifact-modality={modality}\n className={cn(\n \"og-root flex h-full min-h-0 min-w-0 flex-col overflow-hidden rounded-og-lg border border-og-border bg-og-surface-1 text-og-fg shadow-og-md\",\n className,\n )}\n >\n {showHeader ? (\n <header className=\"flex min-h-11 shrink-0 items-center gap-2 border-b border-og-border bg-og-surface-2 px-3\">\n <span\n aria-hidden\n className=\"grid size-7 shrink-0 place-items-center rounded-og-sm bg-og-surface-3 text-og-fg-muted\"\n >\n <ModalityIcon modality={modality} />\n </span>\n <div className=\"min-w-0 flex-1\">\n <h2 className=\"truncate text-og-base font-medium text-og-fg\">{title}</h2>\n {subtitle ? (\n <div className=\"truncate text-og-xs text-og-fg-muted\">{subtitle}</div>\n ) : null}\n </div>\n {busy ? (\n <LoaderCircleIcon\n aria-label={t(\"artifacts.artifactSurface.updatingArtifact\")}\n className=\"size-4 shrink-0 animate-spin text-og-fg-muted\"\n />\n ) : null}\n {actions ? <div className=\"flex shrink-0 items-center gap-1\">{actions}</div> : null}\n </header>\n ) : (\n <>\n {typeof subtitle === \"string\" || typeof subtitle === \"number\" ? (\n <span role=\"status\" className=\"sr-only\">\n {subtitle}\n </span>\n ) : null}\n {actions ? (\n <div className=\"flex shrink-0 items-center justify-end gap-1 border-b border-og-border px-3 py-1\">\n {actions}\n </div>\n ) : null}\n </>\n )}\n\n <div className=\"min-h-0 min-w-0 flex-1\">{children}</div>\n\n {footer ? (\n <footer className=\"shrink-0 border-t border-og-border bg-og-surface-2\">{footer}</footer>\n ) : null}\n </section>\n );\n}\n","import type { EditableArtifactSession } from \"@opengeni/sdk/editable-artifacts\";\nimport { createContext, useContext, useState, type ReactNode } from \"react\";\n\nfunction createSubmissionQueue() {\n let pending = 0;\n const listeners = new Set<() => void>();\n const emit = () => {\n for (const listener of listeners) listener();\n };\n return {\n getPending: () => pending,\n subscribe: (listener: () => void) => {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n async run<T>(invoke: () => Promise<T>): Promise<T> {\n // The SDK's causal queue and Worker authoring precede pendingTransactions.\n // Latch synchronously so a same-event blur/click cannot export an older head.\n pending++;\n emit();\n try {\n return await invoke();\n } finally {\n pending--;\n emit();\n }\n },\n };\n}\n\nexport type ArtifactSubmissions = Readonly<{\n getPending: () => number;\n subscribe: (listener: () => void) => () => void;\n run: <T>(invoke: () => Promise<T>) => Promise<T>;\n}>;\n\nconst standaloneQueue: ArtifactSubmissions = {\n getPending: () => 0,\n subscribe: (_listener: () => void) => () => {},\n run: <T,>(invoke: () => Promise<T>) => invoke(),\n};\nconst SubmissionContext = createContext<ArtifactSubmissions | null>(null);\n\nexport function ArtifactSubmissionProvider({ children }: { children: ReactNode }) {\n const [queue] = useState(createSubmissionQueue);\n return <SubmissionContext.Provider value={queue}>{children}</SubmissionContext.Provider>;\n}\n\n/** UI authoring submissions not yet visible as SDK pending transactions. */\nexport function useArtifactSubmissions(): ArtifactSubmissions {\n return useContext(SubmissionContext) ?? standaloneQueue;\n}\n\nconst SESSION_KEYS = new WeakMap<EditableArtifactSession, number>();\nlet nextSessionKey = 0;\n\n/** Stable per-session React key so a replaced session never inherits queued state. */\nexport function artifactSubmissionSessionKey(session: EditableArtifactSession): number {\n let key = SESSION_KEYS.get(session);\n if (key === undefined) {\n key = ++nextSessionKey;\n SESSION_KEYS.set(session, key);\n }\n return key;\n}\n","import type {\n EditableArtifactSession,\n EditableArtifactSyncView,\n} from \"@opengeni/sdk/editable-artifacts\";\nimport { useEffect, useState } from \"react\";\nimport { type OpenGeniText } from \"../../messages/runtime\";\nimport { useOpenGeniText } from \"../../messages/runtime\";\n\nexport function useEditableArtifactView(\n session: EditableArtifactSession,\n): EditableArtifactSyncView {\n const [view, setView] = useState(() => session.getView());\n useEffect(() => {\n setView(session.getView());\n return session.subscribe(setView);\n }, [session]);\n return view;\n}\n\n/** Changes whenever the Worker-resident speculative projection may have changed. */\nexport function editableArtifactProjectionKey(view: EditableArtifactSyncView): string {\n return [\n view.state,\n view.cursor,\n view.headSequence,\n view.pendingTransactions,\n view.blockedPending.map((entry) => `${entry.clientTransactionId}:${entry.code}`).join(\",\"),\n ].join(\":\");\n}\n\nexport function editableArtifactStatusLabel(\n t: OpenGeniText,\n view: EditableArtifactSyncView,\n): string {\n switch (view.state) {\n case \"idle\":\n case \"connecting\":\n return t(\"artifacts.editableArtifactUi.connecting\");\n case \"syncing\":\n case \"resyncing\":\n return t(\"artifacts.editableArtifactUi.syncing\");\n case \"reconnecting\":\n return t(\"artifacts.editableArtifactUi.reconnecting\");\n case \"unsupported\":\n return t(\"artifacts.editableArtifactUi.thisArtifactVersionIsNot\");\n case \"failed\":\n if (editableArtifactAccessRevoked(view)) {\n return t(\"artifacts.editableArtifactUi.youNoLongerHaveAccess\");\n }\n return view.lastError?.message ?? t(\"artifacts.editableArtifactUi.couldNotOpenThisArtifact\");\n case \"closed\":\n return t(\"artifacts.editableArtifactUi.artifactSessionClosed\");\n case \"live\":\n return view.writable\n ? t(\"artifacts.editableArtifactUi.live\")\n : t(\"artifacts.editableArtifactUi.liveReadOnly\");\n }\n}\n\n/** Revoked read authority must hide any projection retained before invalidation. */\nexport function editableArtifactAccessRevoked(view: EditableArtifactSyncView): boolean {\n if (view.state !== \"failed\" || !view.lastError) return false;\n return (view.lastError as Error & Readonly<{ code?: unknown }>).code === \"permission_changed\";\n}\n\nexport function EditableArtifactMessage({\n title,\n detail,\n retry,\n retryLabel: retryLabelProp,\n}: {\n title: string;\n detail: string;\n retry?: (() => void) | undefined;\n retryLabel?: string | undefined;\n}) {\n const t = useOpenGeniText();\n const retryLabel =\n retryLabelProp === undefined ? t(\"artifacts.editableArtifactUi.retry\") : retryLabelProp;\n return (\n <div className=\"grid h-full min-h-56 place-items-center bg-og-bg p-6 text-center\">\n <div>\n <p className=\"text-og-base font-medium text-og-fg\">{title}</p>\n <p className=\"mt-1 max-w-lg text-og-sm text-og-fg-muted\">{detail}</p>\n {retry ? (\n <button\n type=\"button\"\n onClick={retry}\n className=\"mt-3 rounded-og-sm border border-og-primary-border bg-og-primary text-og-primary-fg px-3 py-1.5 text-og-sm font-medium hover:bg-og-primary-hover outline-hidden focus-visible:ring-2 focus-visible:ring-og-accent\"\n >\n {retryLabel}\n </button>\n ) : null}\n </div>\n </div>\n );\n}\n\nexport function asEditableArtifactError(cause: unknown, fallback: string): Error {\n return cause instanceof Error ? cause : new Error(fallback);\n}\n","import type { EditableArtifactSession } from \"@opengeni/sdk/editable-artifacts\";\nimport { DownloadIcon, LoaderCircleIcon } from \"lucide-react\";\nimport { useEffect, useRef, useState, useSyncExternalStore } from \"react\";\n\nimport { ArtifactButton } from \"./artifact-chrome\";\nimport { useArtifactSubmissions } from \"./artifact-submissions\";\nimport { useEditableArtifactView } from \"./editable-artifact-ui\";\nimport { useOpenGeniText } from \"../../messages/runtime\";\n\n/** Host-authenticated export of the saved native head as an Office file. */\nexport type EditableArtifactDownload = (signal: AbortSignal) => Promise<Blob>;\nexport type EditableArtifactDownloadFormat = \"xlsx\" | \"docx\" | \"pptx\";\n\nconst LABELS = {\n xlsx: {\n download: \"artifacts.spreadsheetDownload.download\",\n preparing: \"artifacts.spreadsheetDownload.preparing\",\n failed: \"artifacts.spreadsheetDownload.downloadFailedTryAgain\",\n title: \"artifacts.spreadsheetDownload.downloadWorkbookAsXlsx\",\n wait: \"artifacts.spreadsheetDownload.waitForWorkbookChangesTo\",\n fallbackName: \"artifacts.spreadsheetDownload.workbook\",\n },\n docx: {\n download: \"artifacts.artifactDownload.download\",\n preparing: \"artifacts.artifactDownload.preparing\",\n failed: \"artifacts.artifactDownload.downloadFailedTryAgain\",\n title: \"artifacts.artifactDownload.downloadDocumentAsDocx\",\n wait: \"artifacts.artifactDownload.waitForDocumentChangesTo\",\n fallbackName: \"artifacts.artifactDownload.document\",\n },\n pptx: {\n download: \"artifacts.artifactDownload.download\",\n preparing: \"artifacts.artifactDownload.preparing\",\n failed: \"artifacts.artifactDownload.downloadFailedTryAgain\",\n title: \"artifacts.artifactDownload.downloadPresentationAsPptx\",\n wait: \"artifacts.artifactDownload.waitForPresentationChangesTo\",\n fallbackName: \"artifacts.artifactDownload.presentation\",\n },\n} as const;\n\n/**\n * Download action shared by every editable modality. It waits for live sync\n * with no pending or still-submitting edits, so the export is the latest head.\n */\nexport function EditableArtifactDownloadButton({\n session,\n title,\n download,\n format,\n}: {\n session: EditableArtifactSession;\n title: string;\n download: EditableArtifactDownload;\n format: EditableArtifactDownloadFormat;\n}) {\n const t = useOpenGeniText();\n const labels = LABELS[format];\n const view = useEditableArtifactView(session);\n const submissions = useArtifactSubmissions();\n const submitting = useSyncExternalStore(\n submissions.subscribe,\n submissions.getPending,\n submissions.getPending,\n );\n const active = useRef<AbortController | null>(null);\n const [busy, setBusy] = useState(false);\n const [error, setError] = useState(false);\n const ready =\n view.state === \"live\" &&\n submitting === 0 &&\n view.pendingTransactions === 0 &&\n view.blockedPending.length === 0 &&\n !view.authoringBlockedReason;\n useEffect(() => () => active.current?.abort(), [session]);\n useEffect(() => {\n if (view.state === \"failed\" || view.state === \"closed\") {\n active.current?.abort();\n active.current = null;\n setBusy(false);\n }\n }, [view.state]);\n\n const start = async () => {\n if (active.current || !ready || submissions.getPending()) return;\n // Re-read the live view: a just-committed edit may precede React's next render.\n const current = session.getView();\n if (\n current.state !== \"live\" ||\n current.pendingTransactions ||\n current.blockedPending.length ||\n current.authoringBlockedReason\n )\n return;\n const controller = new AbortController();\n active.current = controller;\n setBusy(true);\n setError(false);\n try {\n const blob = await download(controller.signal);\n if (controller.signal.aborted) return;\n const url = URL.createObjectURL(blob);\n try {\n const anchor = document.createElement(\"a\");\n anchor.href = url;\n anchor.download = downloadFileName(title, format, t(labels.fallbackName));\n anchor.rel = \"noopener\";\n anchor.click();\n } finally {\n setTimeout(() => URL.revokeObjectURL(url), 0);\n }\n } catch {\n if (!controller.signal.aborted) setError(true);\n } finally {\n if (!controller.signal.aborted) {\n active.current = null;\n setBusy(false);\n }\n }\n };\n\n return (\n <>\n {error ? (\n <span role=\"alert\" className=\"text-og-xs text-og-fg-muted\">\n {t(labels.failed)}\n </span>\n ) : null}\n <ArtifactButton\n onClick={() => void start()}\n disabled={busy || !ready}\n title={ready ? t(labels.title) : t(labels.wait)}\n >\n {busy ? (\n <LoaderCircleIcon className=\"animate-spin\" aria-hidden />\n ) : (\n <DownloadIcon aria-hidden />\n )}\n {busy ? t(labels.preparing) : t(labels.download)}\n </ArtifactButton>\n </>\n );\n}\n\n/** Safe local file name: the artifact title with exactly one matching extension. */\nexport function downloadFileName(\n title: string,\n format: EditableArtifactDownloadFormat,\n fallback: string,\n): string {\n const base =\n title\n .replace(/[\\\\/:*?\"<>|\\u0000-\\u001f]/g, \"_\")\n .replace(new RegExp(`\\\\.${format}$`, \"i\"), \"\")\n .trim() || fallback;\n return `${base}.${format}`;\n}\n"],"mappings":"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","names":["jsx","useState","jsx","jsxs","useState","LoaderCircleIcon","useEffect","useState","Fragment","jsx","jsxs","useState","useEffect","LoaderCircleIcon"]}
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
} from "./chunk-A3MTTRCX.js";
|
|
8
8
|
import {
|
|
9
9
|
Markdown
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-26P7B46A.js";
|
|
11
11
|
|
|
12
12
|
// src/app/components/markdown.tsx
|
|
13
13
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -44,4 +44,4 @@ function MarkdownText({
|
|
|
44
44
|
export {
|
|
45
45
|
MarkdownText
|
|
46
46
|
};
|
|
47
|
-
//# sourceMappingURL=chunk-
|
|
47
|
+
//# sourceMappingURL=chunk-GMVKCEBG.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
formatMoneyMicros
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-IKQMSROV.js";
|
|
5
5
|
|
|
6
6
|
// src/app/lib/credit-coverage.tsx
|
|
7
7
|
import { modelDisplayName } from "@opengeni/sdk/model-display";
|
|
@@ -37,4 +37,4 @@ export {
|
|
|
37
37
|
creditBalanceSplit,
|
|
38
38
|
creditBalanceSplitLabel
|
|
39
39
|
};
|
|
40
|
-
//# sourceMappingURL=chunk-
|
|
40
|
+
//# sourceMappingURL=chunk-GRNE5ANU.js.map
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "./chunk-TVQCDDSZ.js";
|
|
5
5
|
import {
|
|
6
6
|
useOpenGeniText
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-S6WJ6TUT.js";
|
|
8
8
|
|
|
9
9
|
// src/realtime/session-realtime.ts
|
|
10
10
|
import {
|
|
@@ -596,4 +596,4 @@ export {
|
|
|
596
596
|
sessionRealtimeLifecycleIsActive,
|
|
597
597
|
useRealtimeModelSelection
|
|
598
598
|
};
|
|
599
|
-
//# sourceMappingURL=chunk-
|
|
599
|
+
//# sourceMappingURL=chunk-GTR5NLVP.js.map
|
|
@@ -19,16 +19,16 @@ import {
|
|
|
19
19
|
import {
|
|
20
20
|
ComposerMenuHeader
|
|
21
21
|
} from "./chunk-O2LGEYG4.js";
|
|
22
|
-
import {
|
|
23
|
-
DropdownMenuItem
|
|
24
|
-
} from "./chunk-TREHTIBD.js";
|
|
25
22
|
import {
|
|
26
23
|
rememberedMachineFolder,
|
|
27
24
|
workspaceDefaultRigOptionLabel
|
|
28
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-KNFDWNCH.js";
|
|
29
26
|
import {
|
|
30
27
|
t
|
|
31
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-BPD4IJBG.js";
|
|
29
|
+
import {
|
|
30
|
+
DropdownMenuItem
|
|
31
|
+
} from "./chunk-TREHTIBD.js";
|
|
32
32
|
import {
|
|
33
33
|
MENU_LABEL_CLASS,
|
|
34
34
|
MENU_NOTE_CLASS,
|
|
@@ -493,4 +493,4 @@ export {
|
|
|
493
493
|
VisibilityMenuBody,
|
|
494
494
|
UsageLimitMenuBody
|
|
495
495
|
};
|
|
496
|
-
//# sourceMappingURL=chunk-
|
|
496
|
+
//# sourceMappingURL=chunk-GUIZDI5T.js.map
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
|
+
import {
|
|
3
|
+
sessionHoverFacts
|
|
4
|
+
} from "./chunk-XGE75VPK.js";
|
|
2
5
|
import {
|
|
3
6
|
modelDisplayName
|
|
4
7
|
} from "./chunk-7Y3ZFM5U.js";
|
|
@@ -9,9 +12,6 @@ import {
|
|
|
9
12
|
creatorInitials,
|
|
10
13
|
creatorLabel
|
|
11
14
|
} from "./chunk-KJJBQ3KV.js";
|
|
12
|
-
import {
|
|
13
|
-
sessionHoverFacts
|
|
14
|
-
} from "./chunk-52WK2GGK.js";
|
|
15
15
|
import {
|
|
16
16
|
cn
|
|
17
17
|
} from "./chunk-A3MTTRCX.js";
|
|
@@ -155,4 +155,4 @@ function SessionRowHoverDetails({
|
|
|
155
155
|
export {
|
|
156
156
|
SessionRowHoverDetails
|
|
157
157
|
};
|
|
158
|
-
//# sourceMappingURL=chunk-
|
|
158
|
+
//# sourceMappingURL=chunk-GXK4CUAB.js.map
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
} from "./chunk-3SMJ2BIQ.js";
|
|
8
8
|
import {
|
|
9
9
|
BillingClassMark
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-M7YEZR6X.js";
|
|
11
11
|
import {
|
|
12
12
|
useSessionModelAccount
|
|
13
13
|
} from "./chunk-BMJTNPWK.js";
|
|
@@ -129,4 +129,4 @@ function ModelAccountIndicator({
|
|
|
129
129
|
export {
|
|
130
130
|
ModelAccountIndicator
|
|
131
131
|
};
|
|
132
|
-
//# sourceMappingURL=chunk-
|
|
132
|
+
//# sourceMappingURL=chunk-HCCSAECI.js.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
3
|
-
openGeniGroupPresentation
|
|
4
|
-
} from "./chunk-PO3BH3KQ.js";
|
|
5
2
|
import {
|
|
6
3
|
capabilityGroupSelection,
|
|
7
4
|
sessionCapabilityGroupsFor
|
|
8
5
|
} from "./chunk-4NTPH5M6.js";
|
|
6
|
+
import {
|
|
7
|
+
openGeniGroupPresentation
|
|
8
|
+
} from "./chunk-M7YEZR6X.js";
|
|
9
9
|
import {
|
|
10
10
|
cn
|
|
11
11
|
} from "./chunk-A3MTTRCX.js";
|
|
@@ -15,23 +15,23 @@ import {
|
|
|
15
15
|
ComposerMenuRowsSkeleton,
|
|
16
16
|
lazyComposerPanel
|
|
17
17
|
} from "./chunk-O2LGEYG4.js";
|
|
18
|
+
import {
|
|
19
|
+
isComposerConnector
|
|
20
|
+
} from "./chunk-L6Y4ALSM.js";
|
|
18
21
|
import {
|
|
19
22
|
DropdownMenu,
|
|
20
23
|
DropdownMenuContent,
|
|
21
24
|
DropdownMenuTrigger
|
|
22
25
|
} from "./chunk-TREHTIBD.js";
|
|
23
|
-
import {
|
|
24
|
-
isComposerConnector
|
|
25
|
-
} from "./chunk-L6Y4ALSM.js";
|
|
26
|
-
import {
|
|
27
|
-
ModelPolicyPickerMenu
|
|
28
|
-
} from "./chunk-2NC7NZCE.js";
|
|
29
26
|
import {
|
|
30
27
|
Button
|
|
31
28
|
} from "./chunk-HMU5IELG.js";
|
|
29
|
+
import {
|
|
30
|
+
ModelPolicyPickerMenu
|
|
31
|
+
} from "./chunk-2K27S6LK.js";
|
|
32
32
|
import {
|
|
33
33
|
ModelPolicyPicker
|
|
34
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-ZWACUOU5.js";
|
|
35
35
|
|
|
36
36
|
// src/app/components/pickers.tsx
|
|
37
37
|
import { ChevronDownIcon, PlugIcon } from "lucide-react";
|
|
@@ -175,4 +175,4 @@ export {
|
|
|
175
175
|
sessionToolSelectionSummary,
|
|
176
176
|
SessionToolPicker
|
|
177
177
|
};
|
|
178
|
-
//# sourceMappingURL=chunk-
|
|
178
|
+
//# sourceMappingURL=chunk-HJTTDLF6.js.map
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
"use client";
|
|
2
|
+
import {
|
|
3
|
+
ListRow,
|
|
4
|
+
ListRowSkeleton,
|
|
5
|
+
RowList
|
|
6
|
+
} from "./chunk-MM7OKOTE.js";
|
|
2
7
|
import {
|
|
3
8
|
Toolbar,
|
|
4
9
|
ToolbarGroup,
|
|
5
10
|
ToolbarSearch
|
|
6
11
|
} from "./chunk-BBWKPNJB.js";
|
|
7
|
-
import {
|
|
8
|
-
ListRow,
|
|
9
|
-
ListRowSkeleton,
|
|
10
|
-
RowList
|
|
11
|
-
} from "./chunk-JQCGPTZ6.js";
|
|
12
12
|
import {
|
|
13
13
|
sessionStateLabel
|
|
14
|
-
} from "./chunk-
|
|
15
|
-
import {
|
|
16
|
-
SegmentedControl
|
|
17
|
-
} from "./chunk-325C2TCI.js";
|
|
14
|
+
} from "./chunk-E36IC3LU.js";
|
|
18
15
|
import {
|
|
19
16
|
EmptyState
|
|
20
17
|
} from "./chunk-5CIUQX6D.js";
|
|
18
|
+
import {
|
|
19
|
+
SegmentedControl
|
|
20
|
+
} from "./chunk-325C2TCI.js";
|
|
21
21
|
import {
|
|
22
22
|
LogoTile
|
|
23
23
|
} from "./chunk-FQQEZUSN.js";
|
|
@@ -27,21 +27,21 @@ import {
|
|
|
27
27
|
import {
|
|
28
28
|
useNavigate
|
|
29
29
|
} from "./chunk-VYKW6TB2.js";
|
|
30
|
-
import {
|
|
31
|
-
useAppContext
|
|
32
|
-
} from "./chunk-W6KAUGXO.js";
|
|
33
30
|
import {
|
|
34
31
|
userErrorText
|
|
35
32
|
} from "./chunk-L4OF77LE.js";
|
|
36
33
|
import {
|
|
37
|
-
|
|
38
|
-
} from "./chunk-
|
|
34
|
+
useAppContext
|
|
35
|
+
} from "./chunk-W6KAUGXO.js";
|
|
39
36
|
import {
|
|
40
37
|
Notice
|
|
41
38
|
} from "./chunk-WLEDGIVS.js";
|
|
42
39
|
import {
|
|
43
40
|
Button
|
|
44
41
|
} from "./chunk-HMU5IELG.js";
|
|
42
|
+
import {
|
|
43
|
+
sessionDisplayTitle
|
|
44
|
+
} from "./chunk-F2RMKGDQ.js";
|
|
45
45
|
|
|
46
46
|
// src/app/components/artifacts/site-conversations.tsx
|
|
47
47
|
import { useCallback, useEffect, useRef, useState } from "react";
|
|
@@ -248,4 +248,4 @@ export {
|
|
|
248
248
|
SiteConversations,
|
|
249
249
|
SiteConversationsPanel
|
|
250
250
|
};
|
|
251
|
-
//# sourceMappingURL=chunk-
|
|
251
|
+
//# sourceMappingURL=chunk-HSQRYJ4P.js.map
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
DestructiveConfirm
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-3GLAPCVI.js";
|
|
5
5
|
import {
|
|
6
|
-
|
|
7
|
-
} from "./chunk-
|
|
6
|
+
UsageMeter
|
|
7
|
+
} from "./chunk-JB4X3TQI.js";
|
|
8
8
|
import {
|
|
9
9
|
MoreMenu,
|
|
10
10
|
RowButton
|
|
@@ -13,16 +13,22 @@ import {
|
|
|
13
13
|
ListRow,
|
|
14
14
|
ListRowSkeleton,
|
|
15
15
|
RowList
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-MM7OKOTE.js";
|
|
17
17
|
import {
|
|
18
|
-
|
|
19
|
-
} from "./chunk-
|
|
18
|
+
DetailMeta
|
|
19
|
+
} from "./chunk-NIITHJEE.js";
|
|
20
20
|
import {
|
|
21
|
-
|
|
22
|
-
} from "./chunk-
|
|
21
|
+
BackLink
|
|
22
|
+
} from "./chunk-LEXPBQ56.js";
|
|
23
23
|
import {
|
|
24
24
|
formatBytes
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-IKQMSROV.js";
|
|
26
|
+
import {
|
|
27
|
+
EmptyState
|
|
28
|
+
} from "./chunk-5CIUQX6D.js";
|
|
29
|
+
import {
|
|
30
|
+
LogoTile
|
|
31
|
+
} from "./chunk-FQQEZUSN.js";
|
|
26
32
|
import {
|
|
27
33
|
Switch
|
|
28
34
|
} from "./chunk-IZMUUUYD.js";
|
|
@@ -30,15 +36,6 @@ import {
|
|
|
30
36
|
SettingRow,
|
|
31
37
|
SettingRowGroup
|
|
32
38
|
} from "./chunk-XSOPQZGH.js";
|
|
33
|
-
import {
|
|
34
|
-
DropdownMenuItem
|
|
35
|
-
} from "./chunk-TREHTIBD.js";
|
|
36
|
-
import {
|
|
37
|
-
EmptyState
|
|
38
|
-
} from "./chunk-5CIUQX6D.js";
|
|
39
|
-
import {
|
|
40
|
-
LogoTile
|
|
41
|
-
} from "./chunk-FQQEZUSN.js";
|
|
42
39
|
import {
|
|
43
40
|
toast
|
|
44
41
|
} from "./chunk-YG6NARQY.js";
|
|
@@ -48,6 +45,9 @@ import {
|
|
|
48
45
|
import {
|
|
49
46
|
RelativeTime
|
|
50
47
|
} from "./chunk-XG57V2BN.js";
|
|
48
|
+
import {
|
|
49
|
+
DropdownMenuItem
|
|
50
|
+
} from "./chunk-TREHTIBD.js";
|
|
51
51
|
import {
|
|
52
52
|
Notice
|
|
53
53
|
} from "./chunk-WLEDGIVS.js";
|
|
@@ -518,4 +518,4 @@ export {
|
|
|
518
518
|
SiteDataPanel,
|
|
519
519
|
siteSqlSummary
|
|
520
520
|
};
|
|
521
|
-
//# sourceMappingURL=chunk-
|
|
521
|
+
//# sourceMappingURL=chunk-HTKVYEVB.js.map
|
|
@@ -4,30 +4,30 @@ import {
|
|
|
4
4
|
presentationPermissions
|
|
5
5
|
} from "./chunk-Y6TTMPZC.js";
|
|
6
6
|
import {
|
|
7
|
-
|
|
8
|
-
} from "./chunk-
|
|
7
|
+
OnePasswordCatalogLink
|
|
8
|
+
} from "./chunk-V3RHG7CF.js";
|
|
9
9
|
import {
|
|
10
10
|
ConnectorToolPermissions,
|
|
11
11
|
hasConnectorToolPermissionTarget
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-C535KSTY.js";
|
|
13
13
|
import {
|
|
14
|
-
|
|
15
|
-
} from "./chunk-
|
|
14
|
+
OwnershipSelector
|
|
15
|
+
} from "./chunk-FIPSOCVC.js";
|
|
16
16
|
import {
|
|
17
17
|
McpAuthDiscoveryNotice
|
|
18
18
|
} from "./chunk-VHDCIO4V.js";
|
|
19
|
-
import {
|
|
20
|
-
OnePasswordCatalogLink
|
|
21
|
-
} from "./chunk-V3RHG7CF.js";
|
|
22
19
|
import {
|
|
23
20
|
CapabilityDialogContent
|
|
24
21
|
} from "./chunk-IYEI5OZL.js";
|
|
25
22
|
import {
|
|
26
|
-
|
|
27
|
-
} from "./chunk-
|
|
23
|
+
ExcelAddinSetupSteps
|
|
24
|
+
} from "./chunk-5N6XZ7LG.js";
|
|
28
25
|
import {
|
|
29
26
|
focusCapabilitySuccessor
|
|
30
27
|
} from "./chunk-MKG5VTIJ.js";
|
|
28
|
+
import {
|
|
29
|
+
CapabilityLogo
|
|
30
|
+
} from "./chunk-LEDS7L3I.js";
|
|
31
31
|
import {
|
|
32
32
|
GENERIC_API_KEY_FIELD,
|
|
33
33
|
capabilityCategoryLabel,
|
|
@@ -975,4 +975,4 @@ export {
|
|
|
975
975
|
CredentialForm,
|
|
976
976
|
ConnectionStatus
|
|
977
977
|
};
|
|
978
|
-
//# sourceMappingURL=chunk-
|
|
978
|
+
//# sourceMappingURL=chunk-HXZIX7MR.js.map
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
} from "./chunk-SJGAHTY5.js";
|
|
21
21
|
import {
|
|
22
22
|
useOpenGeniText
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-S6WJ6TUT.js";
|
|
24
24
|
|
|
25
25
|
// src/hooks/use-composer.ts
|
|
26
26
|
import {
|
|
@@ -2241,4 +2241,4 @@ export {
|
|
|
2241
2241
|
shouldSubmitOnKey,
|
|
2242
2242
|
shouldSteerOnKey
|
|
2243
2243
|
};
|
|
2244
|
-
//# sourceMappingURL=chunk-
|
|
2244
|
+
//# sourceMappingURL=chunk-I57HZMMA.js.map
|