@opengeni/react 4.2.1-canary.39642758903001 → 4.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/app-state.js +27 -27
- package/dist/app/components/Composer.js +27 -26
- package/dist/app/components/agent/agent-capability-picker.js +5 -5
- package/dist/app/components/artifacts/artifact-library.js +19 -19
- package/dist/app/components/artifacts/chat-interactive-block.js +16 -16
- package/dist/app/components/artifacts/inline-chat-image.js +31 -30
- package/dist/app/components/artifacts/retained-file-preview.js +35 -34
- package/dist/app/components/artifacts/retained-text-preview.js +5 -5
- package/dist/app/components/artifacts/site-audience.js +5 -5
- package/dist/app/components/artifacts/site-conversations.js +24 -22
- package/dist/app/components/artifacts/site-data.js +20 -20
- package/dist/app/components/artifacts/site-publishing.js +39 -39
- package/dist/app/components/artifacts/site-settings.js +48 -48
- package/dist/app/components/billing-class-mark.js +5 -5
- package/dist/app/components/capabilities/capability-detail-sheet.js +9 -9
- package/dist/app/components/capabilities/capability-logo-source.js +13 -12
- package/dist/app/components/capabilities/connection-account-picker.js +2 -2
- package/dist/app/components/capabilities/connector-tool-permissions.js +5 -5
- package/dist/app/components/capabilities/native-connect-setup.js +14 -13
- package/dist/app/components/capabilities/native-connect-setup.js.map +1 -1
- package/dist/app/components/capabilities/perform-capability-action.js +3 -3
- package/dist/app/components/capabilities/prepared-mcp-setup-card.js +15 -14
- package/dist/app/components/capabilities/session-capability-card.js +78 -77
- package/dist/app/components/capabilities/session-capability-card.js.map +1 -1
- package/dist/app/components/capabilities/session-custom-mcp-card.js +20 -19
- package/dist/app/components/capabilities/session-github-card.js +25 -24
- package/dist/app/components/capabilities/session-machine-card.js +38 -38
- 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-switcher.d.ts +12 -0
- package/dist/app/components/command-menu/chat-switcher.js +142 -0
- package/dist/app/components/command-menu/chat-switcher.js.map +1 -0
- package/dist/app/components/command-menu/command-menu.d.ts +15 -0
- package/dist/app/components/command-menu/command-menu.js +812 -0
- package/dist/app/components/command-menu/command-menu.js.map +1 -0
- package/dist/app/components/command-menu/keycaps.d.ts +21 -0
- package/dist/app/components/command-menu/keycaps.js +12 -0
- package/dist/app/components/command-menu/shortcut-sheet.d.ts +12 -0
- package/dist/app/components/command-menu/shortcut-sheet.js +150 -0
- package/dist/app/components/command-menu/shortcut-sheet.js.map +1 -0
- package/dist/app/components/composer-capabilities-menu-body.js +3 -3
- package/dist/app/components/composer-mobile-plus-panel.js +21 -21
- package/dist/app/components/composer-mobile-plus.js +3 -3
- package/dist/app/components/credit-required-gate.js +1 -1
- package/dist/app/components/credit-required-prompt.js +16 -16
- package/dist/app/components/credits/coupon-redeem.js +2 -2
- package/dist/app/components/credits/credit-refusal-notice.d.ts +18 -0
- package/dist/app/components/credits/credit-refusal-notice.js +17 -0
- package/dist/app/components/cross-slot-deep-link-recovery.js +1 -1
- 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 +5 -5
- package/dist/app/components/follow-up-repository-menu-body.js +7 -7
- package/dist/app/components/follow-up-repository-picker.js +3 -3
- package/dist/app/components/github-app-connect-launcher.js +1 -1
- package/dist/app/components/knowledge/agent-learning-settings.js +6 -6
- package/dist/app/components/machines/connect-machine-dialog.js +18 -18
- package/dist/app/components/manual-repository-editor.js +2 -2
- package/dist/app/components/markdown.js +10 -9
- package/dist/app/components/message-context-pills.js +2 -2
- package/dist/app/components/models/models-ui.js +10 -10
- package/dist/app/components/pickers.js +10 -10
- package/dist/app/components/rail/rail-context.d.ts +6 -0
- package/dist/app/components/rail/rail-context.js +3 -3
- package/dist/app/components/rail/rail-sections.js +61 -55
- package/dist/app/components/rail/session-browse-order-controls.js +2 -2
- package/dist/app/components/rail/session-header.js +50 -36
- package/dist/app/components/rail/session-list.js +59 -52
- package/dist/app/components/rail/session-row-hover-details.js +25 -23
- package/dist/app/components/rail/session-shell.js +96 -91
- package/dist/app/components/repository-picker.js +7 -7
- package/dist/app/components/secrets/session-secrets-panel.js +4 -4
- package/dist/app/components/session/agent-configuration-panel.js +34 -34
- package/dist/app/components/session/banners.js +12 -11
- package/dist/app/components/session/codex-account-indicator.js +12 -12
- package/dist/app/components/session/composer-menu-radio.js +2 -2
- package/dist/app/components/session/conversation-find.js +1 -1
- package/dist/app/components/session/editable-artifacts-workspace.js +45 -45
- package/dist/app/components/session/failed-session-banner.js +12 -12
- package/dist/app/components/session/human-input.js +48 -47
- package/dist/app/components/session/inspector.js +80 -79
- package/dist/app/components/session/inspector.js.map +1 -1
- package/dist/app/components/session/message-actions.js +5 -5
- package/dist/app/components/session/message-resource-attachments.js +21 -20
- 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 +13 -13
- package/dist/app/components/session/sandbox-switcher.js +16 -16
- package/dist/app/components/session/sandbox-workspace.js +68 -67
- package/dist/app/components/session/search-markdown-highlight.js +11 -10
- package/dist/app/components/session/search-results-view.js +12 -11
- package/dist/app/components/session/session-admin-access.js +11 -11
- package/dist/app/components/session/session-retention.js +4 -4
- package/dist/app/components/session/session-search-dialog.d.ts +5 -0
- package/dist/app/components/session/session-search-dialog.js +22 -12
- package/dist/app/components/session/session-search-dialog.js.map +1 -1
- package/dist/app/components/session/session-skill-reviews.js +3 -3
- package/dist/app/components/session/session-tenancy-control.js +25 -25
- package/dist/app/components/session/session-usage-limit-section.js +9 -9
- package/dist/app/components/session/session-wait-status.js +11 -9
- package/dist/app/components/session/session-wait-status.js.map +1 -1
- package/dist/app/components/session/subagents.js +17 -15
- package/dist/app/components/session/subscription-account-menu.js +2 -2
- package/dist/app/components/session-connectors-menu-body.js +6 -6
- 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 +8 -8
- package/dist/app/components/usage/usage-entry.js +6 -6
- package/dist/app/components/workspace-composer-plus.js +22 -21
- package/dist/app/embed/session-app.js +264 -258
- package/dist/app/lib/actions/actions-provider.d.ts +30 -0
- package/dist/app/lib/actions/actions-provider.js +32 -0
- package/dist/app/lib/actions/chat-directory.d.ts +30 -0
- package/dist/app/lib/actions/chat-operations.d.ts +11 -0
- package/dist/app/lib/actions/chat-switcher.d.ts +31 -0
- package/dist/app/lib/actions/chords.d.ts +40 -0
- package/dist/app/lib/actions/events.d.ts +6 -0
- package/dist/app/lib/actions/rank.d.ts +17 -0
- package/dist/app/lib/actions/registry.d.ts +71 -0
- package/dist/app/lib/codex-usage-query.js +3 -3
- package/dist/app/lib/composer-connectors.js +14 -13
- package/dist/app/lib/console-text.js +2 -2
- package/dist/app/lib/credit-coverage.d.ts +21 -0
- package/dist/app/lib/credit-coverage.js +15 -0
- package/dist/app/lib/deployment-free-model.js +2 -2
- package/dist/app/lib/events.js +19 -18
- package/dist/app/lib/failed-session-copy.js +5 -5
- package/dist/app/lib/free-credit-gap.d.ts +9 -0
- package/dist/app/lib/free-credit-gap.js +4 -2
- package/dist/app/lib/integration-connect-analytics.d.ts +1 -1
- package/dist/app/lib/integration-connect-analytics.js +1 -1
- package/dist/app/lib/integration-connect-redirect.js +1 -1
- package/dist/app/lib/model-access-onboarding.js +4 -4
- package/dist/app/lib/model-policy.js +1 -1
- package/dist/app/lib/models-route.d.ts +6 -2
- package/dist/app/lib/models-route.js +6 -3
- package/dist/app/lib/models-route.js.map +1 -1
- package/dist/app/lib/move-chat-to-machine.js +3 -3
- package/dist/app/lib/session-branch-cache.js +15 -13
- package/dist/app/lib/session-create.js +2 -2
- package/dist/app/lib/session-group-pagination.js +15 -13
- package/dist/app/lib/session-hover-facts.js +16 -14
- package/dist/app/lib/session-model.js +3 -3
- package/dist/app/lib/session-rail.js +11 -9
- package/dist/app/lib/session-rename.js +3 -3
- package/dist/app/lib/session-search-route.d.ts +1 -1
- package/dist/app/lib/session-search-route.js +1 -1
- package/dist/app/lib/session-ui-features.d.ts +11 -3
- package/dist/app/lib/session-ui-features.js +1 -1
- package/dist/app/lib/sessions-group.js +15 -13
- package/dist/app/lib/turn-failure-analytics.js +7 -7
- package/dist/app/lib/unavailable-session-model.js +2 -2
- 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 +8 -8
- package/dist/app/lib/use-workspace-model-catalog.js +6 -6
- 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 +124 -122
- package/dist/app/routes/artifacts.js.map +1 -1
- package/dist/app/routes/retained-artifact.js +69 -68
- package/dist/app/routes/retained-artifact.js.map +1 -1
- package/dist/app/routes/session-unavailable.js +3 -3
- package/dist/app/routes/session.js +168 -166
- package/dist/app/routes/sessions-index-hydration.js +3 -3
- package/dist/app/routes/sessions-index.js +122 -116
- 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-ZRFZX3VN.js → browser-viewer-HPUMK7UP.js} +7 -7
- package/dist/{chat-interactive-block-HUMYWVCK.js → chat-interactive-block-22PPECCT.js} +6 -6
- package/dist/{chunk-GVIQ7H62.js → chunk-2LUBBDZV.js} +5 -5
- package/dist/{chunk-SWWYYGQO.js → chunk-325C2TCI.js} +5 -2
- package/dist/chunk-325C2TCI.js.map +1 -0
- package/dist/{chunk-XMMVIY7B.js → chunk-3CCJWHQY.js} +2 -2
- package/dist/{chunk-XS2FZ6DX.js → chunk-3F5ZPIWI.js} +2 -2
- package/dist/{chunk-72US6QNB.js → chunk-3J2YZRY5.js} +2 -2
- package/dist/{chunk-D4YQF4E3.js → chunk-3SMJ2BIQ.js} +2 -2
- package/dist/{chunk-TBJINQXA.js → chunk-3WCYK36X.js} +17 -17
- package/dist/{chunk-WPCF34V6.js → chunk-3WG3CRL7.js} +14 -14
- package/dist/{chunk-JI5BYQKO.js → chunk-3X46PNBX.js} +14 -14
- package/dist/{chunk-UO36FC3S.js → chunk-46I7MMAL.js} +6 -2
- package/dist/chunk-46I7MMAL.js.map +1 -0
- package/dist/{chunk-PBK44WJC.js → chunk-4GJ37O6G.js} +2 -2
- package/dist/chunk-4IWBQUQU.js +152 -0
- package/dist/chunk-4IWBQUQU.js.map +1 -0
- package/dist/{chunk-LEXPBQ56.js → chunk-4SKJX3C4.js} +6 -6
- package/dist/{chunk-ZA6YD2LW.js → chunk-57SYK776.js} +2 -2
- package/dist/{chunk-22LBKJDE.js → chunk-5DIAN5GQ.js} +12 -12
- package/dist/{chunk-LJ3TDK2L.js → chunk-5FA455GR.js} +4 -4
- package/dist/{chunk-N2BEUKXT.js → chunk-5FBZDEHE.js} +228 -228
- package/dist/chunk-5FBZDEHE.js.map +1 -0
- package/dist/{chunk-YPR5INHV.js → chunk-5X3E2Z3D.js} +4 -4
- package/dist/{chunk-OXNWZTEU.js → chunk-5ZJCL6X4.js} +5 -5
- package/dist/{chunk-62OAZ4LO.js → chunk-6C5GQQMC.js} +12 -12
- package/dist/{chunk-VGITH57T.js → chunk-6ERTXDZM.js} +4 -4
- package/dist/{chunk-ZQ7XQZCF.js → chunk-6FX73Y4I.js} +8 -8
- package/dist/{chunk-QZO2KK2F.js → chunk-6P44NG6Y.js} +2 -2
- package/dist/{chunk-N2DDJLTM.js → chunk-6T7Y33JA.js} +3 -3
- package/dist/{chunk-RBAGC2MJ.js → chunk-75VE5QUS.js} +22 -22
- package/dist/{chunk-MRXOGI3O.js → chunk-77CUDSHG.js} +9 -9
- package/dist/{chunk-F2GXK2Z6.js → chunk-7G446JFO.js} +431 -348
- package/dist/chunk-7G446JFO.js.map +1 -0
- package/dist/{chunk-GZ65XQR5.js → chunk-7T7FHSGS.js} +3 -3
- package/dist/{chunk-YGAH34CD.js → chunk-A3S26JSP.js} +8 -8
- package/dist/{chunk-GYPAO6RS.js → chunk-A664GSDM.js} +8 -8
- package/dist/{chunk-JSZSNMDR.js → chunk-ASUYLXKO.js} +2 -2
- package/dist/{chunk-RTK7SUPL.js → chunk-AUUJLVA3.js} +7 -7
- package/dist/{chunk-OOTBYSCA.js → chunk-BBWKPNJB.js} +5 -5
- package/dist/{chunk-BGZIMIUU.js → chunk-BCUYWOQU.js} +2 -2
- package/dist/{chunk-EKN4N4LS.js → chunk-BDFMNJZJ.js} +2 -2
- package/dist/{chunk-YZKGOWCC.js → chunk-BIDXQAGO.js} +2 -2
- package/dist/{chunk-Q2UUANHF.js → chunk-BIKAJ4DY.js} +5 -5
- package/dist/{chunk-5IQBF2X3.js → chunk-BJPJ2OUX.js} +3 -3
- package/dist/{chunk-EY2EMHZW.js → chunk-BPM2OTYK.js} +8 -8
- package/dist/{chunk-MT4TBRQB.js → chunk-BSWS2RUZ.js} +2 -2
- package/dist/{chunk-T7YD3VGK.js → chunk-C52MNKXU.js} +12 -12
- package/dist/{chunk-THNW33K7.js → chunk-CEUDV4OA.js} +18 -18
- package/dist/{chunk-GRLPRM56.js → chunk-CFEFYPNR.js} +8 -2
- package/dist/chunk-CFEFYPNR.js.map +1 -0
- package/dist/{chunk-LHGIS6SZ.js → chunk-CVK74BH7.js} +2 -2
- package/dist/{chunk-DFO2UCYG.js → chunk-CW5I65ZX.js} +11 -11
- package/dist/chunk-DKNTQDVL.js +86 -0
- package/dist/chunk-DKNTQDVL.js.map +1 -0
- package/dist/{chunk-SKRLKQEG.js → chunk-DOSC2HRQ.js} +79 -79
- package/dist/{chunk-KVB6XDLP.js → chunk-DPJ2CWVN.js} +2 -2
- package/dist/{chunk-4J6V4DH7.js → chunk-DXMRO2MU.js} +3 -3
- package/dist/{chunk-42I4O4WQ.js → chunk-EE55IDDR.js} +26 -26
- package/dist/{chunk-2RA6XABP.js → chunk-EEERTLFF.js} +12 -12
- package/dist/{chunk-PTOTKUKO.js → chunk-EEO744XR.js} +8 -8
- package/dist/{chunk-LD3HVI2J.js → chunk-EMFGBAQL.js} +6 -6
- package/dist/{chunk-FQGUK4ST.js → chunk-ENPJKVMN.js} +38 -38
- package/dist/{chunk-HDHK3SXK.js → chunk-EU6RLHMP.js} +4 -4
- package/dist/{chunk-G7VLL3PG.js → chunk-F2YABPRJ.js} +13 -4
- package/dist/chunk-F2YABPRJ.js.map +1 -0
- package/dist/{chunk-MRUWRQBX.js → chunk-FET6XHGS.js} +2 -2
- package/dist/{chunk-M6KUY3YH.js → chunk-FIICQA55.js} +2 -2
- package/dist/{chunk-NLWLCYCT.js → chunk-FTZXCPE3.js} +19 -19
- package/dist/{chunk-FN2KA3MJ.js → chunk-FUS76DO4.js} +3 -3
- package/dist/{chunk-AM4IIPWI.js → chunk-G7N5NPRJ.js} +2 -2
- package/dist/{chunk-CCQ7YKOD.js → chunk-GBYZ6653.js} +2 -2
- package/dist/{chunk-SOOWLNC5.js → chunk-GJUPLSC5.js} +330 -109
- package/dist/chunk-GJUPLSC5.js.map +1 -0
- package/dist/{chunk-YKKVIJVX.js → chunk-GQDSC6QZ.js} +5 -5
- package/dist/chunk-GQGNRL2L.js +53 -0
- package/dist/chunk-GQGNRL2L.js.map +1 -0
- package/dist/{chunk-5X6JP75Q.js → chunk-GRSODLVO.js} +4 -4
- package/dist/{chunk-73YP3R5X.js → chunk-GSESCQFY.js} +4 -4
- package/dist/{chunk-KWB5U3ZT.js → chunk-GWRW4N3T.js} +199 -137
- package/dist/chunk-GWRW4N3T.js.map +1 -0
- package/dist/{chunk-RTR7RNG4.js → chunk-GYRU4PNM.js} +9 -7
- package/dist/{chunk-RTR7RNG4.js.map → chunk-GYRU4PNM.js.map} +1 -1
- package/dist/{chunk-MZLEBFUZ.js → chunk-GZD6VBIK.js} +3 -3
- package/dist/{chunk-IZR2QRFF.js → chunk-H3HH5AHS.js} +4 -4
- package/dist/{chunk-DN3TKURW.js → chunk-H3LIIAGE.js} +4 -54
- package/dist/chunk-H3LIIAGE.js.map +1 -0
- package/dist/{chunk-NPLEQMNM.js → chunk-H5GWAG4I.js} +7 -5
- package/dist/{chunk-NPLEQMNM.js.map → chunk-H5GWAG4I.js.map} +1 -1
- package/dist/{chunk-OJPUVUB6.js → chunk-HAOZCLLA.js} +3 -3
- package/dist/{chunk-ZBHDGAYL.js → chunk-HEFE4OZJ.js} +2 -2
- package/dist/{chunk-WTG34JVA.js → chunk-HI75UTI6.js} +2 -2
- package/dist/{chunk-OMBIG3NC.js → chunk-HM633ROV.js} +14 -14
- package/dist/{chunk-WDFZWSKD.js → chunk-HRIP4M6H.js} +3 -3
- package/dist/{chunk-A2BCW6CQ.js → chunk-HU2DRFFI.js} +3 -3
- package/dist/{chunk-PO35PBAB.js → chunk-HVH7FFJH.js} +2 -2
- package/dist/{chunk-EG7KNUF7.js → chunk-HYTXTKST.js} +18 -18
- package/dist/{chunk-TFHG75A4.js → chunk-I4XMDFUJ.js} +7 -7
- package/dist/{chunk-IZHVZZQA.js → chunk-ICAUYWSL.js} +9 -9
- package/dist/{chunk-ZSERYHHT.js → chunk-IDMXEPHL.js} +150 -150
- package/dist/chunk-IDMXEPHL.js.map +1 -0
- package/dist/{chunk-DCLPWYP3.js → chunk-IEVPJ3G6.js} +2 -2
- package/dist/{chunk-EVWZHDSF.js → chunk-IKH3VTA4.js} +2 -2
- package/dist/{chunk-L5UCO2UV.js → chunk-ILBSBZGC.js} +13 -4
- package/dist/chunk-ILBSBZGC.js.map +1 -0
- package/dist/{chunk-IO6K6UYJ.js → chunk-IQ64BNAG.js} +4 -2
- package/dist/chunk-IQ64BNAG.js.map +1 -0
- package/dist/{chunk-TYHLEFD2.js → chunk-IZJNMRIR.js} +9 -9
- package/dist/{chunk-D2SR3TEB.js → chunk-J243WGUA.js} +2 -2
- package/dist/{chunk-QGSGIYE3.js → chunk-J2C6LB6W.js} +4 -4
- package/dist/{chunk-MT6TRTXF.js → chunk-J5MEDX7C.js} +9 -9
- package/dist/{chunk-6QHUKBJP.js → chunk-J7SKOO44.js} +2 -2
- package/dist/{chunk-W2QK7PYS.js → chunk-JAAST75A.js} +11 -11
- package/dist/{chunk-NQCMS4AJ.js → chunk-JQCGPTZ6.js} +9 -9
- package/dist/chunk-JRJUSKDY.js +832 -0
- package/dist/chunk-JRJUSKDY.js.map +1 -0
- package/dist/{chunk-CMUXJHGH.js → chunk-JRSCWQMC.js} +9 -9
- package/dist/{chunk-Q4OHNGGB.js → chunk-JRXHSVD5.js} +4 -4
- package/dist/{chunk-SD2K5ZN5.js → chunk-JXYLDT6X.js} +4 -4
- package/dist/{chunk-S3M5WCZW.js → chunk-KA4LV7G6.js} +35 -50
- package/dist/chunk-KA4LV7G6.js.map +1 -0
- package/dist/{chunk-IXX6ZOL2.js → chunk-KGTMHEAP.js} +7 -7
- package/dist/{chunk-22OBGVEJ.js → chunk-KOXVGPW4.js} +3 -3
- package/dist/{chunk-NOZ5CGZE.js → chunk-L5GPPMUB.js} +2 -2
- package/dist/{chunk-KIHYJM5F.js → chunk-LXJT4WAW.js} +58 -58
- package/dist/{chunk-KIHYJM5F.js.map → chunk-LXJT4WAW.js.map} +1 -1
- package/dist/{chunk-4FOOHMTU.js → chunk-LY6727IF.js} +1 -1
- package/dist/{chunk-PT7MTXRE.js → chunk-MAOCN7J6.js} +2 -2
- package/dist/{chunk-4K2JSJNX.js → chunk-MB5LZVDO.js} +2 -2
- package/dist/chunk-MF464AKA.js +139 -0
- package/dist/chunk-MF464AKA.js.map +1 -0
- package/dist/{chunk-UYSZKDQY.js → chunk-MK54JLE4.js} +1 -1
- package/dist/chunk-MK54JLE4.js.map +1 -0
- package/dist/{chunk-5LES64PP.js → chunk-MKOQAVOE.js} +21 -21
- package/dist/{chunk-BMV2SNYX.js → chunk-MUPWNSEJ.js} +18 -18
- package/dist/{chunk-Y5TRG22C.js → chunk-NRXIECWC.js} +2 -2
- package/dist/{chunk-GOE7G5JX.js → chunk-NWSAF6P5.js} +2 -2
- package/dist/chunk-OB3YGXHQ.js +158 -0
- package/dist/chunk-OB3YGXHQ.js.map +1 -0
- package/dist/{chunk-DUM363VS.js → chunk-OFZQJNF6.js} +5 -5
- package/dist/{chunk-CKN5QPEL.js → chunk-OMF7POEY.js} +2 -2
- package/dist/{chunk-MVXKO2BD.js → chunk-OXD6ET34.js} +1 -1
- package/dist/{chunk-47JUEVME.js → chunk-PALX6HWV.js} +21 -21
- package/dist/{chunk-B6OGSG7I.js → chunk-PE3BLBDT.js} +3 -3
- package/dist/{chunk-RVISSNVE.js → chunk-PMZKJOG6.js} +15 -15
- package/dist/{chunk-CESAMXWX.js → chunk-PQUTMG3S.js} +2 -2
- package/dist/{chunk-7VFCOKPG.js → chunk-PWBGODZU.js} +3 -3
- package/dist/{chunk-MOPAXD2H.js → chunk-QCADUTYX.js} +2 -2
- package/dist/{chunk-CT5FBO7E.js → chunk-RPOUJI25.js} +1 -1
- package/dist/{chunk-VE3FKXJ7.js → chunk-RUSXEE7X.js} +35 -32
- package/dist/chunk-RUSXEE7X.js.map +1 -0
- package/dist/{chunk-WKHYOS72.js → chunk-RW4GFE56.js} +3 -3
- package/dist/{chunk-FH4GO7HO.js → chunk-RYLVVDR7.js} +1 -1
- package/dist/{chunk-QZRDCFHI.js → chunk-S66SBBFQ.js} +5 -5
- package/dist/{chunk-CQJFIPAH.js → chunk-S7TNV2I7.js} +14 -14
- package/dist/{chunk-ZBQSIGGR.js → chunk-SC773IMJ.js} +13 -13
- package/dist/{chunk-RZV7SXED.js → chunk-SF3M27AN.js} +37 -12
- package/dist/chunk-SF3M27AN.js.map +1 -0
- package/dist/{chunk-FBJ2HK7A.js → chunk-SGPJ3YS2.js} +20 -20
- package/dist/{chunk-A2EWJQXX.js → chunk-SM5QX6UK.js} +4 -4
- package/dist/chunk-SWCLN6JE.js +40 -0
- package/dist/chunk-SWCLN6JE.js.map +1 -0
- package/dist/{chunk-OS3EQOIS.js → chunk-T4F5TW2X.js} +29 -24
- package/dist/chunk-T4F5TW2X.js.map +1 -0
- package/dist/{chunk-RKZWCTXV.js → chunk-TAEKDMEF.js} +2 -2
- package/dist/{chunk-6AVCAUGL.js → chunk-TASEV25T.js} +3 -3
- package/dist/{chunk-3XOISKZC.js → chunk-TLGDPMUX.js} +6 -6
- package/dist/{chunk-MOF3XSUM.js → chunk-TREHTIBD.js} +3 -2
- package/dist/chunk-TREHTIBD.js.map +1 -0
- package/dist/{chunk-HUQHJSPV.js → chunk-TTPXGD5S.js} +68 -33
- package/dist/chunk-TTPXGD5S.js.map +1 -0
- package/dist/{chunk-NFCYIZHX.js → chunk-TXIIBNCA.js} +7 -3
- package/dist/{chunk-NFCYIZHX.js.map → chunk-TXIIBNCA.js.map} +1 -1
- package/dist/{chunk-5IUW34PG.js → chunk-TY3QYPJ6.js} +7 -7
- package/dist/{chunk-VQFR4EU4.js → chunk-U3JK5VJV.js} +2 -2
- package/dist/{chunk-2AWMJO54.js → chunk-U42P3RMZ.js} +5 -5
- package/dist/{chunk-2RIUMV7S.js → chunk-UBIJBLUK.js} +234 -234
- package/dist/chunk-UBIJBLUK.js.map +1 -0
- package/dist/{chunk-GUU75DES.js → chunk-UEJTOPLW.js} +8 -8
- package/dist/{chunk-QWCTYLMD.js → chunk-URDONAEJ.js} +240 -204
- package/dist/chunk-URDONAEJ.js.map +1 -0
- package/dist/{chunk-OZOEWLGR.js → chunk-UT6JAORE.js} +4 -4
- package/dist/{chunk-5TELOQA6.js → chunk-UTHPUINA.js} +3 -3
- package/dist/{chunk-SOV7DTTU.js → chunk-V6HZ2HJZ.js} +67 -67
- package/dist/{chunk-SOV7DTTU.js.map → chunk-V6HZ2HJZ.js.map} +1 -1
- package/dist/{chunk-26RQ6JBR.js → chunk-VBVCNH6D.js} +5 -5
- package/dist/{chunk-P646DND6.js → chunk-VCMQPCME.js} +2 -2
- package/dist/{chunk-LV7FMIMM.js → chunk-VGUHAHHV.js} +2 -2
- package/dist/{chunk-GYVXARCY.js → chunk-VIBPFVU4.js} +41 -41
- package/dist/{chunk-KHPOKZ6Z.js → chunk-VMAC66JX.js} +6 -6
- package/dist/{chunk-SHKRS6I5.js → chunk-VRPNETPK.js} +3 -3
- package/dist/{chunk-6U4J6RVS.js → chunk-WCHW4XN7.js} +14 -14
- package/dist/{chunk-CJH6QUQJ.js → chunk-WD3UXNJV.js} +3 -3
- package/dist/{chunk-H5EVWF6L.js → chunk-WR67FJMX.js} +4 -4
- package/dist/{chunk-XLIJ36RG.js → chunk-WRMQ7EX4.js} +5 -5
- package/dist/{chunk-VVFWOBAM.js → chunk-WTJUKYB2.js} +15 -16
- package/dist/chunk-WTJUKYB2.js.map +1 -0
- package/dist/{chunk-7KLCFJ5G.js → chunk-X4PPGXQG.js} +2 -2
- package/dist/{chunk-ZE2JTVCQ.js → chunk-X5BMQXFD.js} +11 -11
- package/dist/{chunk-OYJY4Y4A.js → chunk-XFNLU7EW.js} +14 -7
- package/dist/chunk-XFNLU7EW.js.map +1 -0
- package/dist/{chunk-UECU6LZI.js → chunk-XXRBOSWV.js} +3 -3
- package/dist/{chunk-SPKAIDWX.js → chunk-XZEFCPBL.js} +2 -2
- package/dist/{chunk-EZ5NYRHK.js → chunk-YL6N7QLA.js} +5 -5
- package/dist/{chunk-Q2ZJOECN.js → chunk-YMVTIV5L.js} +19 -19
- package/dist/chunk-YMVTIV5L.js.map +1 -0
- package/dist/{chunk-VAIESMPY.js → chunk-YVBHGMKC.js} +4 -4
- package/dist/{chunk-AR62NQXE.js → chunk-Z2S5VQG7.js} +2 -2
- package/dist/{chunk-2MXUB3ZO.js → chunk-Z5OGTWMZ.js} +15 -2
- package/dist/chunk-Z5OGTWMZ.js.map +1 -0
- package/dist/{chunk-7UQJEADK.js → chunk-ZL2O4BYP.js} +2 -2
- package/dist/{chunk-FOOITLHR.js → chunk-ZZHBT5WQ.js} +2 -2
- package/dist/{chunk-X6VJQJYY.js → chunk-ZZWHKC6A.js} +3 -3
- package/dist/components/timeline-annotation-shared.d.ts +1 -9
- package/dist/composer-messages.js +2 -2
- package/dist/composer.js +15 -15
- package/dist/{computer-viewer-D4NHQB5D.js → computer-viewer-S6TE6TN7.js} +8 -8
- package/dist/connect.js +12 -11
- package/dist/desktop.js +2 -2
- package/dist/editor.js +2 -2
- package/dist/{embedded-new-voice-X4ZW6SY4.js → embedded-new-voice-ZDZPGX25.js} +8 -8
- package/dist/{embedded-voice-4OD6Z3HU.js → embedded-voice-FKCUXSJO.js} +8 -8
- package/dist/{fleet-decision-row-5UCJXTDP.js → fleet-decision-row-VCGWYJAV.js} +2 -2
- package/dist/hooks/page-wake.d.ts +21 -0
- package/dist/hooks/use-session-events.d.ts +1 -0
- package/dist/index.js +206 -205
- package/dist/interaction.js +9 -9
- package/dist/{latest-question-VGVNUGAU.js → latest-question-SINEV4U6.js} +3 -3
- package/dist/lib/format.d.ts +3 -2
- package/dist/machines.js +6 -6
- package/dist/messages/en.d.ts +12 -3
- package/dist/messages.js +1 -1
- package/dist/model-picker-model.js +2 -2
- package/dist/{model-policy-picker-menu-XOPYY6YA.js → model-policy-picker-menu-66JPM3G5.js} +6 -6
- package/dist/model-policy-picker-menu-66JPM3G5.js.map +1 -0
- package/dist/model-policy.js +1 -1
- package/dist/native-previews.js +3 -3
- package/dist/{platform-activity-row-56XOVTRA.js → platform-activity-row-LU5WABI2.js} +2 -2
- package/dist/{queue-surface-implementation-OZDOBJ6W.js → queue-surface-implementation-Y4OUVS7N.js} +8 -7
- package/dist/{queue-surface-implementation-OZDOBJ6W.js.map → queue-surface-implementation-Y4OUVS7N.js.map} +1 -1
- package/dist/realtime.js +7 -7
- package/dist/{sandbox-files-LJCR437H.js → sandbox-files-NBIVKVCZ.js} +11 -11
- package/dist/sandbox-files-NBIVKVCZ.js.map +1 -0
- package/dist/session-app.js +266 -260
- package/dist/session-list-model.js +3 -3
- package/dist/{session-realtime-UISLBZ4A.js → session-realtime-3PALSNMJ.js} +3 -3
- package/dist/session-realtime-3PALSNMJ.js.map +1 -0
- package/dist/session-realtime.js +2 -2
- package/dist/session-ui.js +62 -61
- package/dist/session.d.ts +1 -1
- package/dist/session.js +17 -17
- package/dist/sites.js +2 -2
- package/dist/terminal.js +2 -2
- package/dist/this-computer.js +3 -3
- package/dist/timeline/annotation-model.d.ts +48 -0
- package/dist/{timeline-annotation-markers-ACT7XRMW.js → timeline-annotation-markers-6526H2NM.js} +11 -9
- package/dist/{timeline-annotation-markers-ACT7XRMW.js.map → timeline-annotation-markers-6526H2NM.js.map} +1 -1
- package/dist/{timeline-annotation-selection-2IA7T5VR.js → timeline-annotation-selection-KV5SM6TA.js} +16 -62
- package/dist/timeline-annotation-selection-KV5SM6TA.js.map +1 -0
- package/dist/{timeline-annotations-dialog-W5B2HMYY.js → timeline-annotations-dialog-7CDHWC7Y.js} +12 -10
- package/dist/{timeline-annotations-dialog-W5B2HMYY.js.map → timeline-annotations-dialog-7CDHWC7Y.js.map} +1 -1
- package/dist/timeline-model.d.ts +3 -0
- package/dist/timeline-model.js +40 -14
- package/dist/ui/access-list.js +24 -24
- package/dist/ui/choice-cards.js +2 -2
- package/dist/ui/composer-menu-action.js +2 -2
- package/dist/ui/context-menu.d.ts +3 -1
- package/dist/ui/context-menu.js +3 -1
- package/dist/ui/detail-page.js +3 -3
- package/dist/ui/detail-sheet.js +3 -3
- package/dist/ui/diff-view.js +3 -3
- package/dist/ui/disclosure.js +5 -5
- package/dist/ui/dropdown-menu.js +1 -1
- package/dist/ui/flush-form-page.js +5 -5
- package/dist/ui/form-dialog.js +4 -4
- package/dist/ui/list-row.js +5 -5
- package/dist/ui/load-failure.js +3 -3
- package/dist/ui/page-actions.js +3 -3
- package/dist/ui/revision-history.js +11 -11
- package/dist/ui/role-select.js +8 -8
- package/dist/ui/segmented-control.js +1 -1
- package/dist/ui/settings-nav.js +3 -3
- package/dist/ui/toolbar.js +3 -3
- package/dist/usage.js +2 -2
- package/dist/workbench.js +11 -11
- package/package.json +4 -4
- package/src/app/app-state.tsx +2 -1
- package/src/app/components/command-menu/chat-switcher.tsx +135 -0
- package/src/app/components/command-menu/command-menu.tsx +840 -0
- package/src/app/components/command-menu/keycaps.tsx +56 -0
- package/src/app/components/command-menu/shortcut-sheet.tsx +155 -0
- package/src/app/components/credits/credit-refusal-notice.test.tsx +132 -0
- package/src/app/components/credits/credit-refusal-notice.tsx +92 -0
- package/src/app/components/rail/rail-context.tsx +28 -5
- package/src/app/components/rail/rail-sections.tsx +3 -5
- package/src/app/components/rail/session-header-mute.test.tsx +23 -1
- package/src/app/components/rail/session-header.test.tsx +21 -2
- package/src/app/components/rail/session-header.tsx +31 -1
- package/src/app/components/rail/session-list.tsx +89 -16
- package/src/app/components/rail/session-shell.tsx +0 -14
- package/src/app/components/session/session-search-dialog.tsx +12 -1
- package/src/app/embed/session-app.tsx +6 -3
- package/src/app/lib/actions/actions-provider.tsx +486 -0
- package/src/app/lib/actions/actions.test.ts +249 -0
- package/src/app/lib/actions/chat-directory.ts +231 -0
- package/src/app/lib/actions/chat-operations.ts +145 -0
- package/src/app/lib/actions/chat-switcher.ts +62 -0
- package/src/app/lib/actions/chords.ts +185 -0
- package/src/app/lib/actions/events.ts +10 -0
- package/src/app/lib/actions/rank.ts +119 -0
- package/src/app/lib/actions/registry.ts +333 -0
- package/src/app/lib/credit-coverage.test.ts +83 -0
- package/src/app/lib/credit-coverage.tsx +48 -0
- package/src/app/lib/free-credit-gap.test.ts +32 -1
- package/src/app/lib/free-credit-gap.tsx +32 -2
- package/src/app/lib/integration-connect-analytics.test.ts +1 -0
- package/src/app/lib/integration-connect-analytics.tsx +4 -0
- package/src/app/lib/models-route.test.ts +18 -0
- package/src/app/lib/models-route.tsx +26 -4
- package/src/app/lib/session-search-route.tsx +6 -1
- package/src/app/lib/session-ui-features.tsx +28 -9
- package/src/app/routes/session.tsx +74 -16
- package/src/app/routes/sessions-index.tsx +83 -4
- package/src/components/timeline-annotation-selection.tsx +9 -64
- package/src/components/timeline-annotation-shared.ts +9 -57
- package/src/hooks/page-wake.ts +80 -0
- package/src/hooks/use-session-events.ts +309 -81
- package/src/lib/format.ts +3 -2
- package/src/messages/en.ts +13 -3
- package/src/model-picker-model.ts +3 -0
- package/src/model-policy.ts +9 -1
- package/src/session.ts +1 -0
- package/src/timeline/annotation-model.ts +217 -0
- package/src/timeline/projection.ts +27 -21
- package/src/timeline-model.ts +14 -0
- package/src/ui/context-menu.tsx +16 -0
- package/src/ui/dropdown-menu.tsx +4 -1
- package/src/ui/segmented-control.tsx +3 -0
- package/styles/compiled.css +92 -0
- package/dist/app/lib/keyboard-shortcuts.d.ts +0 -51
- package/dist/app/lib/keyboard-shortcuts.js +0 -16
- package/dist/chunk-2MXUB3ZO.js.map +0 -1
- package/dist/chunk-2RIUMV7S.js.map +0 -1
- package/dist/chunk-53IXIUYP.js +0 -39
- package/dist/chunk-53IXIUYP.js.map +0 -1
- package/dist/chunk-DN3TKURW.js.map +0 -1
- package/dist/chunk-F2GXK2Z6.js.map +0 -1
- package/dist/chunk-G7VLL3PG.js.map +0 -1
- package/dist/chunk-GRLPRM56.js.map +0 -1
- package/dist/chunk-HUQHJSPV.js.map +0 -1
- package/dist/chunk-IO6K6UYJ.js.map +0 -1
- package/dist/chunk-KWB5U3ZT.js.map +0 -1
- package/dist/chunk-L5UCO2UV.js.map +0 -1
- package/dist/chunk-MOF3XSUM.js.map +0 -1
- package/dist/chunk-N2BEUKXT.js.map +0 -1
- package/dist/chunk-OS3EQOIS.js.map +0 -1
- package/dist/chunk-OYJY4Y4A.js.map +0 -1
- package/dist/chunk-Q2ZJOECN.js.map +0 -1
- package/dist/chunk-QWCTYLMD.js.map +0 -1
- package/dist/chunk-RZV7SXED.js.map +0 -1
- package/dist/chunk-S3M5WCZW.js.map +0 -1
- package/dist/chunk-SOOWLNC5.js.map +0 -1
- package/dist/chunk-SWWYYGQO.js.map +0 -1
- package/dist/chunk-UO36FC3S.js.map +0 -1
- package/dist/chunk-UYSZKDQY.js.map +0 -1
- package/dist/chunk-VE3FKXJ7.js.map +0 -1
- package/dist/chunk-VVFWOBAM.js.map +0 -1
- package/dist/chunk-ZSERYHHT.js.map +0 -1
- package/dist/timeline-annotation-selection-2IA7T5VR.js.map +0 -1
- package/src/app/lib/keyboard-shortcuts.test.ts +0 -47
- package/src/app/lib/keyboard-shortcuts.tsx +0 -58
- /package/dist/app/{lib/keyboard-shortcuts.js.map → components/command-menu/keycaps.js.map} +0 -0
- /package/dist/{browser-viewer-ZRFZX3VN.js.map → app/components/credits/credit-refusal-notice.js.map} +0 -0
- /package/dist/{chat-interactive-block-HUMYWVCK.js.map → app/lib/actions/actions-provider.js.map} +0 -0
- /package/dist/{computer-viewer-D4NHQB5D.js.map → app/lib/credit-coverage.js.map} +0 -0
- /package/dist/{embedded-new-voice-X4ZW6SY4.js.map → browser-viewer-HPUMK7UP.js.map} +0 -0
- /package/dist/{embedded-voice-4OD6Z3HU.js.map → chat-interactive-block-22PPECCT.js.map} +0 -0
- /package/dist/{chunk-GVIQ7H62.js.map → chunk-2LUBBDZV.js.map} +0 -0
- /package/dist/{chunk-XMMVIY7B.js.map → chunk-3CCJWHQY.js.map} +0 -0
- /package/dist/{chunk-XS2FZ6DX.js.map → chunk-3F5ZPIWI.js.map} +0 -0
- /package/dist/{chunk-72US6QNB.js.map → chunk-3J2YZRY5.js.map} +0 -0
- /package/dist/{chunk-D4YQF4E3.js.map → chunk-3SMJ2BIQ.js.map} +0 -0
- /package/dist/{chunk-TBJINQXA.js.map → chunk-3WCYK36X.js.map} +0 -0
- /package/dist/{chunk-WPCF34V6.js.map → chunk-3WG3CRL7.js.map} +0 -0
- /package/dist/{chunk-JI5BYQKO.js.map → chunk-3X46PNBX.js.map} +0 -0
- /package/dist/{chunk-PBK44WJC.js.map → chunk-4GJ37O6G.js.map} +0 -0
- /package/dist/{chunk-LEXPBQ56.js.map → chunk-4SKJX3C4.js.map} +0 -0
- /package/dist/{chunk-ZA6YD2LW.js.map → chunk-57SYK776.js.map} +0 -0
- /package/dist/{chunk-22LBKJDE.js.map → chunk-5DIAN5GQ.js.map} +0 -0
- /package/dist/{chunk-LJ3TDK2L.js.map → chunk-5FA455GR.js.map} +0 -0
- /package/dist/{chunk-YPR5INHV.js.map → chunk-5X3E2Z3D.js.map} +0 -0
- /package/dist/{chunk-OXNWZTEU.js.map → chunk-5ZJCL6X4.js.map} +0 -0
- /package/dist/{chunk-62OAZ4LO.js.map → chunk-6C5GQQMC.js.map} +0 -0
- /package/dist/{chunk-VGITH57T.js.map → chunk-6ERTXDZM.js.map} +0 -0
- /package/dist/{chunk-ZQ7XQZCF.js.map → chunk-6FX73Y4I.js.map} +0 -0
- /package/dist/{chunk-QZO2KK2F.js.map → chunk-6P44NG6Y.js.map} +0 -0
- /package/dist/{chunk-N2DDJLTM.js.map → chunk-6T7Y33JA.js.map} +0 -0
- /package/dist/{chunk-RBAGC2MJ.js.map → chunk-75VE5QUS.js.map} +0 -0
- /package/dist/{chunk-MRXOGI3O.js.map → chunk-77CUDSHG.js.map} +0 -0
- /package/dist/{chunk-GZ65XQR5.js.map → chunk-7T7FHSGS.js.map} +0 -0
- /package/dist/{chunk-YGAH34CD.js.map → chunk-A3S26JSP.js.map} +0 -0
- /package/dist/{chunk-GYPAO6RS.js.map → chunk-A664GSDM.js.map} +0 -0
- /package/dist/{chunk-JSZSNMDR.js.map → chunk-ASUYLXKO.js.map} +0 -0
- /package/dist/{chunk-RTK7SUPL.js.map → chunk-AUUJLVA3.js.map} +0 -0
- /package/dist/{chunk-OOTBYSCA.js.map → chunk-BBWKPNJB.js.map} +0 -0
- /package/dist/{chunk-BGZIMIUU.js.map → chunk-BCUYWOQU.js.map} +0 -0
- /package/dist/{chunk-EKN4N4LS.js.map → chunk-BDFMNJZJ.js.map} +0 -0
- /package/dist/{chunk-YZKGOWCC.js.map → chunk-BIDXQAGO.js.map} +0 -0
- /package/dist/{chunk-Q2UUANHF.js.map → chunk-BIKAJ4DY.js.map} +0 -0
- /package/dist/{chunk-5IQBF2X3.js.map → chunk-BJPJ2OUX.js.map} +0 -0
- /package/dist/{chunk-EY2EMHZW.js.map → chunk-BPM2OTYK.js.map} +0 -0
- /package/dist/{chunk-MT4TBRQB.js.map → chunk-BSWS2RUZ.js.map} +0 -0
- /package/dist/{chunk-T7YD3VGK.js.map → chunk-C52MNKXU.js.map} +0 -0
- /package/dist/{chunk-THNW33K7.js.map → chunk-CEUDV4OA.js.map} +0 -0
- /package/dist/{chunk-LHGIS6SZ.js.map → chunk-CVK74BH7.js.map} +0 -0
- /package/dist/{chunk-DFO2UCYG.js.map → chunk-CW5I65ZX.js.map} +0 -0
- /package/dist/{chunk-SKRLKQEG.js.map → chunk-DOSC2HRQ.js.map} +0 -0
- /package/dist/{chunk-KVB6XDLP.js.map → chunk-DPJ2CWVN.js.map} +0 -0
- /package/dist/{chunk-4J6V4DH7.js.map → chunk-DXMRO2MU.js.map} +0 -0
- /package/dist/{chunk-42I4O4WQ.js.map → chunk-EE55IDDR.js.map} +0 -0
- /package/dist/{chunk-2RA6XABP.js.map → chunk-EEERTLFF.js.map} +0 -0
- /package/dist/{chunk-PTOTKUKO.js.map → chunk-EEO744XR.js.map} +0 -0
- /package/dist/{chunk-LD3HVI2J.js.map → chunk-EMFGBAQL.js.map} +0 -0
- /package/dist/{chunk-FQGUK4ST.js.map → chunk-ENPJKVMN.js.map} +0 -0
- /package/dist/{chunk-HDHK3SXK.js.map → chunk-EU6RLHMP.js.map} +0 -0
- /package/dist/{chunk-MRUWRQBX.js.map → chunk-FET6XHGS.js.map} +0 -0
- /package/dist/{chunk-M6KUY3YH.js.map → chunk-FIICQA55.js.map} +0 -0
- /package/dist/{chunk-NLWLCYCT.js.map → chunk-FTZXCPE3.js.map} +0 -0
- /package/dist/{chunk-FN2KA3MJ.js.map → chunk-FUS76DO4.js.map} +0 -0
- /package/dist/{chunk-AM4IIPWI.js.map → chunk-G7N5NPRJ.js.map} +0 -0
- /package/dist/{chunk-CCQ7YKOD.js.map → chunk-GBYZ6653.js.map} +0 -0
- /package/dist/{chunk-YKKVIJVX.js.map → chunk-GQDSC6QZ.js.map} +0 -0
- /package/dist/{chunk-5X6JP75Q.js.map → chunk-GRSODLVO.js.map} +0 -0
- /package/dist/{chunk-73YP3R5X.js.map → chunk-GSESCQFY.js.map} +0 -0
- /package/dist/{chunk-MZLEBFUZ.js.map → chunk-GZD6VBIK.js.map} +0 -0
- /package/dist/{chunk-IZR2QRFF.js.map → chunk-H3HH5AHS.js.map} +0 -0
- /package/dist/{chunk-OJPUVUB6.js.map → chunk-HAOZCLLA.js.map} +0 -0
- /package/dist/{chunk-ZBHDGAYL.js.map → chunk-HEFE4OZJ.js.map} +0 -0
- /package/dist/{chunk-WTG34JVA.js.map → chunk-HI75UTI6.js.map} +0 -0
- /package/dist/{chunk-OMBIG3NC.js.map → chunk-HM633ROV.js.map} +0 -0
- /package/dist/{chunk-WDFZWSKD.js.map → chunk-HRIP4M6H.js.map} +0 -0
- /package/dist/{chunk-A2BCW6CQ.js.map → chunk-HU2DRFFI.js.map} +0 -0
- /package/dist/{chunk-PO35PBAB.js.map → chunk-HVH7FFJH.js.map} +0 -0
- /package/dist/{chunk-EG7KNUF7.js.map → chunk-HYTXTKST.js.map} +0 -0
- /package/dist/{chunk-TFHG75A4.js.map → chunk-I4XMDFUJ.js.map} +0 -0
- /package/dist/{chunk-IZHVZZQA.js.map → chunk-ICAUYWSL.js.map} +0 -0
- /package/dist/{chunk-DCLPWYP3.js.map → chunk-IEVPJ3G6.js.map} +0 -0
- /package/dist/{chunk-EVWZHDSF.js.map → chunk-IKH3VTA4.js.map} +0 -0
- /package/dist/{chunk-TYHLEFD2.js.map → chunk-IZJNMRIR.js.map} +0 -0
- /package/dist/{chunk-D2SR3TEB.js.map → chunk-J243WGUA.js.map} +0 -0
- /package/dist/{chunk-QGSGIYE3.js.map → chunk-J2C6LB6W.js.map} +0 -0
- /package/dist/{chunk-MT6TRTXF.js.map → chunk-J5MEDX7C.js.map} +0 -0
- /package/dist/{chunk-6QHUKBJP.js.map → chunk-J7SKOO44.js.map} +0 -0
- /package/dist/{chunk-W2QK7PYS.js.map → chunk-JAAST75A.js.map} +0 -0
- /package/dist/{chunk-NQCMS4AJ.js.map → chunk-JQCGPTZ6.js.map} +0 -0
- /package/dist/{chunk-CMUXJHGH.js.map → chunk-JRSCWQMC.js.map} +0 -0
- /package/dist/{chunk-Q4OHNGGB.js.map → chunk-JRXHSVD5.js.map} +0 -0
- /package/dist/{chunk-SD2K5ZN5.js.map → chunk-JXYLDT6X.js.map} +0 -0
- /package/dist/{chunk-IXX6ZOL2.js.map → chunk-KGTMHEAP.js.map} +0 -0
- /package/dist/{chunk-22OBGVEJ.js.map → chunk-KOXVGPW4.js.map} +0 -0
- /package/dist/{chunk-NOZ5CGZE.js.map → chunk-L5GPPMUB.js.map} +0 -0
- /package/dist/{chunk-4FOOHMTU.js.map → chunk-LY6727IF.js.map} +0 -0
- /package/dist/{chunk-PT7MTXRE.js.map → chunk-MAOCN7J6.js.map} +0 -0
- /package/dist/{chunk-4K2JSJNX.js.map → chunk-MB5LZVDO.js.map} +0 -0
- /package/dist/{chunk-5LES64PP.js.map → chunk-MKOQAVOE.js.map} +0 -0
- /package/dist/{chunk-BMV2SNYX.js.map → chunk-MUPWNSEJ.js.map} +0 -0
- /package/dist/{chunk-Y5TRG22C.js.map → chunk-NRXIECWC.js.map} +0 -0
- /package/dist/{chunk-GOE7G5JX.js.map → chunk-NWSAF6P5.js.map} +0 -0
- /package/dist/{chunk-DUM363VS.js.map → chunk-OFZQJNF6.js.map} +0 -0
- /package/dist/{chunk-CKN5QPEL.js.map → chunk-OMF7POEY.js.map} +0 -0
- /package/dist/{chunk-MVXKO2BD.js.map → chunk-OXD6ET34.js.map} +0 -0
- /package/dist/{chunk-47JUEVME.js.map → chunk-PALX6HWV.js.map} +0 -0
- /package/dist/{chunk-B6OGSG7I.js.map → chunk-PE3BLBDT.js.map} +0 -0
- /package/dist/{chunk-RVISSNVE.js.map → chunk-PMZKJOG6.js.map} +0 -0
- /package/dist/{chunk-CESAMXWX.js.map → chunk-PQUTMG3S.js.map} +0 -0
- /package/dist/{chunk-7VFCOKPG.js.map → chunk-PWBGODZU.js.map} +0 -0
- /package/dist/{chunk-MOPAXD2H.js.map → chunk-QCADUTYX.js.map} +0 -0
- /package/dist/{chunk-CT5FBO7E.js.map → chunk-RPOUJI25.js.map} +0 -0
- /package/dist/{chunk-WKHYOS72.js.map → chunk-RW4GFE56.js.map} +0 -0
- /package/dist/{chunk-FH4GO7HO.js.map → chunk-RYLVVDR7.js.map} +0 -0
- /package/dist/{chunk-QZRDCFHI.js.map → chunk-S66SBBFQ.js.map} +0 -0
- /package/dist/{chunk-CQJFIPAH.js.map → chunk-S7TNV2I7.js.map} +0 -0
- /package/dist/{chunk-ZBQSIGGR.js.map → chunk-SC773IMJ.js.map} +0 -0
- /package/dist/{chunk-FBJ2HK7A.js.map → chunk-SGPJ3YS2.js.map} +0 -0
- /package/dist/{chunk-A2EWJQXX.js.map → chunk-SM5QX6UK.js.map} +0 -0
- /package/dist/{chunk-RKZWCTXV.js.map → chunk-TAEKDMEF.js.map} +0 -0
- /package/dist/{chunk-6AVCAUGL.js.map → chunk-TASEV25T.js.map} +0 -0
- /package/dist/{chunk-3XOISKZC.js.map → chunk-TLGDPMUX.js.map} +0 -0
- /package/dist/{chunk-5IUW34PG.js.map → chunk-TY3QYPJ6.js.map} +0 -0
- /package/dist/{chunk-VQFR4EU4.js.map → chunk-U3JK5VJV.js.map} +0 -0
- /package/dist/{chunk-2AWMJO54.js.map → chunk-U42P3RMZ.js.map} +0 -0
- /package/dist/{chunk-GUU75DES.js.map → chunk-UEJTOPLW.js.map} +0 -0
- /package/dist/{chunk-OZOEWLGR.js.map → chunk-UT6JAORE.js.map} +0 -0
- /package/dist/{chunk-5TELOQA6.js.map → chunk-UTHPUINA.js.map} +0 -0
- /package/dist/{chunk-26RQ6JBR.js.map → chunk-VBVCNH6D.js.map} +0 -0
- /package/dist/{chunk-P646DND6.js.map → chunk-VCMQPCME.js.map} +0 -0
- /package/dist/{chunk-LV7FMIMM.js.map → chunk-VGUHAHHV.js.map} +0 -0
- /package/dist/{chunk-GYVXARCY.js.map → chunk-VIBPFVU4.js.map} +0 -0
- /package/dist/{chunk-KHPOKZ6Z.js.map → chunk-VMAC66JX.js.map} +0 -0
- /package/dist/{chunk-SHKRS6I5.js.map → chunk-VRPNETPK.js.map} +0 -0
- /package/dist/{chunk-6U4J6RVS.js.map → chunk-WCHW4XN7.js.map} +0 -0
- /package/dist/{chunk-CJH6QUQJ.js.map → chunk-WD3UXNJV.js.map} +0 -0
- /package/dist/{chunk-H5EVWF6L.js.map → chunk-WR67FJMX.js.map} +0 -0
- /package/dist/{chunk-XLIJ36RG.js.map → chunk-WRMQ7EX4.js.map} +0 -0
- /package/dist/{chunk-7KLCFJ5G.js.map → chunk-X4PPGXQG.js.map} +0 -0
- /package/dist/{chunk-ZE2JTVCQ.js.map → chunk-X5BMQXFD.js.map} +0 -0
- /package/dist/{chunk-UECU6LZI.js.map → chunk-XXRBOSWV.js.map} +0 -0
- /package/dist/{chunk-SPKAIDWX.js.map → chunk-XZEFCPBL.js.map} +0 -0
- /package/dist/{chunk-EZ5NYRHK.js.map → chunk-YL6N7QLA.js.map} +0 -0
- /package/dist/{chunk-VAIESMPY.js.map → chunk-YVBHGMKC.js.map} +0 -0
- /package/dist/{chunk-AR62NQXE.js.map → chunk-Z2S5VQG7.js.map} +0 -0
- /package/dist/{chunk-7UQJEADK.js.map → chunk-ZL2O4BYP.js.map} +0 -0
- /package/dist/{chunk-FOOITLHR.js.map → chunk-ZZHBT5WQ.js.map} +0 -0
- /package/dist/{chunk-X6VJQJYY.js.map → chunk-ZZWHKC6A.js.map} +0 -0
- /package/dist/{model-policy-picker-menu-XOPYY6YA.js.map → computer-viewer-S6TE6TN7.js.map} +0 -0
- /package/dist/{sandbox-files-LJCR437H.js.map → embedded-new-voice-ZDZPGX25.js.map} +0 -0
- /package/dist/{session-realtime-UISLBZ4A.js.map → embedded-voice-FKCUXSJO.js.map} +0 -0
- /package/dist/{fleet-decision-row-5UCJXTDP.js.map → fleet-decision-row-VCGWYJAV.js.map} +0 -0
- /package/dist/{latest-question-VGVNUGAU.js.map → latest-question-SINEV4U6.js.map} +0 -0
- /package/dist/{platform-activity-row-56XOVTRA.js.map → platform-activity-row-LU5WABI2.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/app/components/session/session-search-dialog.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState, type RefObject } from \"react\";\nimport { useNavigate } from \"../../lib/navigation\";\nimport { SearchIcon } from \"lucide-react\";\nimport { OpenGeniApiError } from \"@opengeni/sdk/browser\";\nimport { useAppContext } from \"../../app-context\";\nimport { Dialog, DialogContent, DialogDescription, DialogTitle } from \"../../../ui/dialog\";\nimport { Input } from \"../../../ui/input\";\nimport { Button } from \"../../../ui/button\";\nimport {\n useCommittedSearchQuery,\n useConversationSearch,\n type ConversationSearchMatch,\n} from \"../../lib/use-conversation-search\";\nimport { useSessionSearchResource } from \"../../lib/use-session-search-resource\";\nimport { cn } from \"../../lib/utils\";\nimport { selectedFormattedMessage } from \"./search-markdown-highlight\";\nimport {\n SearchPreviewView,\n SearchResultsView,\n type SearchPreviewMessage,\n type SearchResultSummary,\n} from \"./search-results-view\";\n\nexport default function SessionSearchDialog(props: {\n workspaceId: string;\n open: boolean;\n onOpenChange: (open: boolean) => void;\n returnFocus?: RefObject<HTMLElement | null> | undefined;\n}) {\n const { onOpenChange } = props;\n const { client, accessContext } = useAppContext();\n const navigate = useNavigate();\n const [query, setQuery] = useState(\"\");\n const [archiveStatus, setArchiveStatus] = useState<\"active\" | \"archived\" | \"all\">(\"all\");\n const [selectedId, setSelectedId] = useState<string | null>(null);\n const [mobilePreview, setMobilePreview] = useState(false);\n const [titleCursor, setTitleCursor] = useState<string | undefined>();\n const [previewIndex, setPreviewIndex] = useState(0);\n const openRef = useRef(props.open);\n openRef.current = props.open;\n const restoreFocusOnClose = useRef(true);\n useEffect(() => {\n if (props.open) restoreFocusOnClose.current = true;\n }, [props.open]);\n const resultScroll = useRef(0);\n const previewScroll = useRef(0);\n const scope = JSON.stringify([accessContext.subjectId, props.workspaceId, archiveStatus]);\n const committedQuery = useCommittedSearchQuery(query, scope, props.open);\n const identity = JSON.stringify([\n accessContext.subjectId,\n props.workspaceId,\n committedQuery,\n archiveStatus,\n ]);\n const search = useConversationSearch({\n client,\n authority: accessContext.subjectId,\n workspaceId: props.workspaceId,\n query: committedQuery,\n debounceMs: 0,\n enabled: props.open,\n archiveStatus,\n });\n const loadTitles = useCallback(\n (signal: AbortSignal) =>\n client.listSessionPage(props.workspaceId, {\n search: committedQuery,\n signal,\n archiveStatus,\n limit: 20,\n ...(titleCursor ? { cursor: titleCursor } : {}),\n }),\n [client, props.workspaceId, committedQuery, archiveStatus, titleCursor],\n );\n const titles = useSessionSearchResource(\n `${identity}:${titleCursor ?? \"\"}`,\n loadTitles,\n props.open && !!committedQuery.trim(),\n 0,\n );\n const [deniedIdentity, setDeniedIdentity] = useState<string | null>(null);\n const [recoveringAccess, setRecoveringAccess] = useState(false);\n const accessDenied = search.accessDenied || titles.accessDenied || deniedIdentity === identity;\n const results = useMemo(() => {\n if (accessDenied || !committedQuery.trim()) return [];\n const grouped = new Map<string, SearchResultSummary>();\n for (const session of [...(titles.value?.pinned ?? []), ...(titles.value?.sessions ?? [])]) {\n grouped.set(session.id, {\n sessionId: session.id,\n title: session.title || \"Untitled session\",\n subtitle: new Date(session.updatedAt).toLocaleDateString(),\n snippet: session.initialMessage ?? \"\",\n matchingMessages: 0,\n titleMatch: true,\n });\n }\n const seen = new Set<string>();\n for (const match of search.page?.matches ?? []) {\n const current = grouped.get(match.sessionId);\n const firstForMessage = !seen.has(match.eventId);\n seen.add(match.eventId);\n grouped.set(match.sessionId, {\n sessionId: match.sessionId,\n title: match.sessionTitle || \"Untitled session\",\n subtitle: current?.subtitle ?? \"Message match\",\n snippet: current?.matchingMessages ? current.snippet : match.snippet.text,\n matchingMessages: (current?.matchingMessages ?? 0) + (firstForMessage ? 1 : 0),\n titleMatch: current?.titleMatch ?? false,\n });\n }\n return [...grouped.values()];\n }, [titles.value, search.page, accessDenied, committedQuery]);\n // Keep the selected session while closed/revalidating so its cursor and preview\n // survive the dialog → conversation → dialog round trip.\n const retainedSelection = useRef<{\n identity: string;\n selected: SearchResultSummary;\n } | null>(null);\n if (accessDenied || !committedQuery.trim()) retainedSelection.current = null;\n const selected =\n results.find((result) => result.sessionId === selectedId) ??\n (retainedSelection.current?.identity === identity &&\n retainedSelection.current.selected.sessionId === selectedId\n ? retainedSelection.current.selected\n : null) ??\n results[0] ??\n null;\n if (selected) retainedSelection.current = { identity, selected };\n const previewSelection =\n selected ??\n (retainedSelection.current?.identity === identity ? retainedSelection.current.selected : null);\n const selectedSearch = useConversationSearch({\n client,\n authority: accessContext.subjectId,\n workspaceId: props.workspaceId,\n sessionId: previewSelection?.sessionId,\n query: committedQuery,\n debounceMs: 0,\n enabled: props.open && !!previewSelection,\n });\n useEffect(() => {\n setTitleCursor(undefined);\n setSelectedId(null);\n setMobilePreview(false);\n setPreviewIndex(0);\n resultScroll.current = 0;\n previewScroll.current = 0;\n }, [identity]);\n useEffect(() => {\n if (search.accessDenied || titles.accessDenied) {\n retainedSelection.current = null;\n setSelectedId(null);\n setDeniedIdentity(identity);\n }\n }, [search.accessDenied, titles.accessDenied, identity]);\n useEffect(() => {\n // An authority failure invalidates every source. Do not reveal another\n // source's retained value while Retry is still rechecking live access.\n if (recoveringAccess && !search.loading && !titles.loading && !search.error && !titles.error) {\n setDeniedIdentity(null);\n setRecoveringAccess(false);\n }\n }, [recoveringAccess, search.loading, titles.loading, search.error, titles.error]);\n function select(id: string) {\n if (id !== selectedId) {\n setPreviewIndex(0);\n previewScroll.current = 0;\n }\n setSelectedId(id);\n setMobilePreview(true);\n }\n const onOpen = useCallback(\n (match?: ConversationSearchMatch) => {\n if (!previewSelection || accessDenied) return;\n // Result navigation owns the next focus target. Dismissal returns to\n // the opener; opening a conversation must not steal focus back later.\n restoreFocusOnClose.current = false;\n onOpenChange(false);\n void navigate({\n to: \"/workspaces/$workspaceId/sessions/$sessionId\",\n params: {\n workspaceId: props.workspaceId,\n sessionId: previewSelection.sessionId,\n },\n search: match\n ? {\n find: committedQuery,\n matchSequence: match.sequence,\n matchOffset: match.messageMatchOffset,\n searchOrigin: \"session-search\",\n }\n : { find: committedQuery, searchOrigin: \"session-search\" },\n });\n },\n [navigate, props.workspaceId, onOpenChange, previewSelection, committedQuery, accessDenied],\n );\n return (\n <Dialog open={props.open} onOpenChange={props.onOpenChange}>\n <DialogContent\n className=\"flex h-[min(760px,85dvh)] flex-col gap-0 overflow-hidden p-0 sm:max-w-5xl sm:p-0\"\n aria-describedby=\"session-search-description\"\n onCloseAutoFocus={(event) => {\n // This controlled dialog is mounted separately from its rail opener,\n // so Radix has no DialogTrigger ref to restore. A reopened dialog or\n // a result navigation owns focus independently of this retiring scope.\n event.preventDefault();\n if (openRef.current || !restoreFocusOnClose.current) return;\n const target = props.returnFocus?.current;\n if (target?.isConnected) target.focus({ preventScroll: true });\n }}\n >\n <div className=\"shrink-0 border-b border-border px-4 pb-3 pt-4 pr-12\">\n <DialogTitle className=\"mb-3 text-base\">Search sessions</DialogTitle>\n <div className=\"relative\">\n <SearchIcon\n className=\"pointer-events-none absolute left-3 top-2.5 size-4 text-fg-subtle\"\n aria-hidden=\"true\"\n />\n <Input\n autoFocus\n type=\"search\"\n aria-label=\"Search session titles and messages\"\n placeholder=\"Search titles and messages…\"\n value={query}\n maxLength={200}\n onChange={(event) => setQuery(event.target.value)}\n className=\"pl-9\"\n suppressAutofill\n />\n </div>\n {query !== committedQuery ? (\n <p className=\"mt-2 text-xs text-fg-muted\" role=\"status\">\n Showing results for “{committedQuery}”\n </p>\n ) : null}\n <div className=\"mt-3 flex flex-wrap items-center gap-3\">\n <DialogDescription id=\"session-search-description\" className=\"flex-1 text-xs\">\n Literal text in user and completed assistant messages.\n </DialogDescription>\n <label className=\"flex items-center gap-2 text-xs text-fg-muted\">\n Sessions\n <select\n aria-label=\"Search session status\"\n value={archiveStatus}\n onChange={(event) => {\n setArchiveStatus(event.target.value as typeof archiveStatus);\n setTitleCursor(undefined);\n setSelectedId(null);\n }}\n className=\"rounded-md border border-border bg-bg px-2 py-1 text-fg outline-hidden focus-visible:ring-2 focus-visible:ring-ring\"\n >\n <option value=\"all\">All</option>\n <option value=\"active\">Active</option>\n <option value=\"archived\">Archived</option>\n </select>\n </label>\n </div>\n </div>\n <div className=\"grid min-h-0 min-w-0 flex-1 grid-cols-[minmax(0,1fr)] md:grid-cols-[minmax(250px,0.8fr)_minmax(0,1.2fr)]\">\n <div\n className={cn(\n \"flex min-h-0 flex-col md:border-r md:border-border\",\n mobilePreview && selected ? \"hidden md:flex\" : \"flex\",\n )}\n >\n <SearchResultsView\n query={committedQuery}\n results={results}\n selectedId={selected?.sessionId ?? null}\n onSelect={select}\n loading={search.loading || titles.loading}\n error={\n accessDenied\n ? \"Search access is unavailable. Try again.\"\n : (search.error ?? titles.error)\n }\n onRetry={() => {\n if (search.error || accessDenied) search.retry();\n if (titles.error || accessDenied) titles.retry();\n if (accessDenied) setRecoveringAccess(true);\n }}\n hasMore={!!search.page?.hasMore}\n onMore={() => {\n resultScroll.current = 0;\n search.next();\n }}\n scrollPosition={resultScroll}\n active={props.open}\n />\n <div className=\"mt-auto flex shrink-0 flex-wrap gap-2 border-t border-border px-3 py-2\">\n {search.pageIndex > 0 ? (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={search.previous}\n disabled={search.loading}\n >\n Previous message results\n </Button>\n ) : null}\n {titles.value?.nextCursor ? (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setTitleCursor(titles.value?.nextCursor ?? undefined)}\n >\n More title results\n </Button>\n ) : null}\n {search.loading ? (\n <span className=\"text-xs text-fg-muted\" role=\"status\">\n Searching saved history\n {search.scanned ? ` · ${search.scanned} messages visited` : \"…\"}\n </span>\n ) : search.page?.hasMore ? (\n <span className=\"text-xs text-fg-muted\">More history available</span>\n ) : null}\n </div>\n </div>\n <div\n className={cn(\n \"min-h-0 min-w-0 md:flex md:flex-col\",\n mobilePreview && selected ? \"flex flex-col\" : \"hidden\",\n )}\n >\n {previewSelection ? (\n <SessionSearchPreview\n client={client}\n authority={accessContext.subjectId}\n workspaceId={props.workspaceId}\n sessionId={previewSelection.sessionId}\n title={previewSelection.title}\n query={committedQuery}\n onAccessDenied={() => setDeniedIdentity(identity)}\n enabled={props.open}\n onOpen={onOpen}\n onBack={() => setMobilePreview(false)}\n search={selectedSearch}\n index={previewIndex}\n setIndex={setPreviewIndex}\n scrollPosition={previewScroll}\n />\n ) : (\n <div className=\"flex flex-1 items-center justify-center p-8 text-sm text-fg-subtle\">\n Select a result to read it in context.\n </div>\n )}\n </div>\n </div>\n </DialogContent>\n </Dialog>\n );\n}\n\ntype SessionSearchPreviewProps = {\n client: ReturnType<typeof useAppContext>[\"client\"];\n authority: string;\n workspaceId: string;\n sessionId: string;\n title: string;\n query: string;\n enabled: boolean;\n onOpen: (match?: ConversationSearchMatch) => void;\n onBack: () => void;\n search: ReturnType<typeof useConversationSearch>;\n index: number;\n setIndex: (index: number) => void;\n scrollPosition: RefObject<number>;\n onAccessDenied?: (() => void) | undefined;\n};\n\nexport function SessionSearchPreview(props: SessionSearchPreviewProps) {\n const { search, setIndex, onAccessDenied } = props;\n const matches = search.page?.matches ?? [];\n // -1 means land on the last occurrence when a previous batch arrives.\n const index = props.index < 0 ? Math.max(0, matches.length - 1) : props.index;\n const match = matches[Math.min(index, Math.max(0, matches.length - 1))];\n const loadContext = useCallback(\n async (signal: AbortSignal): Promise<SearchPreviewMessage[]> => {\n if (!match) return [];\n const options = {\n signal,\n mode: \"forensic\" as const,\n // Bound transfer even for legacy events whose retained payload is enormous.\n payloadMode: \"summary\" as const,\n includeTypes: [\"user.message\", \"agent.message.completed\"] as Array<\n \"user.message\" | \"agent.message.completed\"\n >,\n limit: 2,\n };\n const [before, after, selectedPreview] = await Promise.all([\n props.client.listEvents(props.workspaceId, props.sessionId, {\n ...options,\n before: match.sequence,\n direction: \"before\",\n }),\n props.client.listEvents(props.workspaceId, props.sessionId, {\n ...options,\n after: match.sequence,\n direction: \"after\",\n }),\n props.client\n .getSessionMessagePreview(\n props.workspaceId,\n props.sessionId,\n { eventId: match.eventId, sequence: match.sequence },\n { signal },\n )\n .catch((error: unknown) => {\n // A stale result can disappear after the search read. Keep its\n // authoritative excerpt; do not swallow access or transport errors.\n if (error instanceof OpenGeniApiError && error.status === 404)\n return { status: \"unavailable\" as const };\n throw error;\n }),\n ]);\n const selectedText = selectedFormattedMessage(selectedPreview, match, props.query);\n const context = async (events: typeof before): Promise<SearchPreviewMessage[]> => {\n const messages = await Promise.all(\n events.map(async (event): Promise<SearchPreviewMessage | null> => {\n if (event.type !== \"user.message\" && event.type !== \"agent.message.completed\")\n return null;\n const payload = event.payload as Record<string, unknown>;\n if (\n match.messageId &&\n event.type === \"agent.message.completed\" &&\n payload.messageId === match.messageId &&\n event.turnId === match.turnId\n )\n return null;\n // Summary projections do not carry the payload codec version. Even\n // short context text may be an undecoded lossless storage marker.\n const preview = await props.client\n .getSessionMessagePreview(\n props.workspaceId,\n props.sessionId,\n { eventId: event.id, sequence: event.sequence },\n { signal },\n )\n .catch((error: unknown) => {\n if (error instanceof OpenGeniApiError && error.status === 404)\n return { status: \"unavailable\" as const };\n throw error;\n });\n if (preview.status !== \"available\") return null;\n let text = preview.text;\n if (text.length > 1800) {\n const end = /[\\uD800-\\uDBFF]/.test(text[1799]!) ? 1799 : 1800;\n text = `${text.slice(0, end)}…`;\n }\n return {\n key: event.id,\n role: event.type === \"user.message\" ? \"user\" : \"assistant\",\n text,\n selected: false,\n formatted: preview.text.length <= 1800,\n };\n }),\n );\n return messages.filter((message): message is SearchPreviewMessage => message !== null);\n };\n const [preceding, following] = await Promise.all([context(before), context(after)]);\n return [\n ...preceding,\n {\n key: match.eventId,\n role: match.role,\n text: selectedText ?? match.snippet.text,\n selected: true,\n formatted: selectedText !== null,\n snippet: match.snippet.text,\n offset: match.messageMatchOffset,\n },\n ...following,\n ];\n },\n [props.client, props.workspaceId, props.sessionId, props.query, match],\n );\n const preview = useSessionSearchResource(\n `${props.authority}:${props.workspaceId}:${props.sessionId}:${props.query}:${match?.eventId}:${match?.messageMatchOffset}`,\n loadContext,\n props.enabled && !!match,\n 100,\n );\n useEffect(() => {\n if (preview.accessDenied || search.accessDenied) onAccessDenied?.();\n }, [preview.accessDenied, search.accessDenied, onAccessDenied]);\n if (preview.accessDenied || search.accessDenied)\n return <div role=\"alert\">Search access is unavailable.</div>;\n const titleOnly = !!search.page && !search.page.hasMore && !matches.length;\n return (\n <SearchPreviewView\n active={props.enabled}\n title={props.title}\n query={props.query}\n messages={preview.value ?? []}\n loading={search.loading || preview.loading}\n error={search.error ?? preview.error}\n onRetry={() => {\n if (search.error) search.retry();\n if (preview.error) preview.retry();\n }}\n onOpen={() => props.onOpen(match)}\n onBack={props.onBack}\n titleOnly={titleOnly}\n scrollPosition={props.scrollPosition}\n counter={\n matches.length\n ? `Match ${(search.page?.matchedOccurrenceCount ?? matches.length) - matches.length + index + 1} of ${search.page?.matchedOccurrenceCount ?? matches.length}${search.page?.hasMore ? \"+\" : \"\"}`\n : search.loading\n ? \"Searching saved history…\"\n : search.error\n ? \"Search unavailable\"\n : \"No matching messages\"\n }\n previousDisabled={index === 0 && search.pageIndex === 0}\n nextDisabled={!search.page?.hasMore && index >= matches.length - 1}\n onPrevious={() => {\n props.scrollPosition.current = 0;\n if (index > 0) setIndex(index - 1);\n else {\n setIndex(-1);\n search.previous();\n }\n }}\n onNext={() => {\n props.scrollPosition.current = 0;\n if (index < matches.length - 1) setIndex(index + 1);\n else {\n setIndex(0);\n search.next();\n }\n }}\n />\n );\n}\n"],"mappings":"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","names":["preview"]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/app/components/session/session-search-dialog.tsx"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState, type RefObject } from \"react\";\nimport { useNavigate } from \"../../lib/navigation\";\nimport { SearchIcon } from \"lucide-react\";\nimport { OpenGeniApiError } from \"@opengeni/sdk/browser\";\nimport { useAppContext } from \"../../app-context\";\nimport { Dialog, DialogContent, DialogDescription, DialogTitle } from \"../../../ui/dialog\";\nimport { Input } from \"../../../ui/input\";\nimport { Button } from \"../../../ui/button\";\nimport {\n useCommittedSearchQuery,\n useConversationSearch,\n type ConversationSearchMatch,\n} from \"../../lib/use-conversation-search\";\nimport { useSessionSearchResource } from \"../../lib/use-session-search-resource\";\nimport { cn } from \"../../lib/utils\";\nimport { selectedFormattedMessage } from \"./search-markdown-highlight\";\nimport {\n SearchPreviewView,\n SearchResultsView,\n type SearchPreviewMessage,\n type SearchResultSummary,\n} from \"./search-results-view\";\n\nexport default function SessionSearchDialog(props: {\n workspaceId: string;\n open: boolean;\n onOpenChange: (open: boolean) => void;\n returnFocus?: RefObject<HTMLElement | null> | undefined;\n /** Start with this query (the ⌘K menu's \"Search messages for …\"). */\n seed?: { query: string; nonce: number } | null | undefined;\n}) {\n const { onOpenChange } = props;\n const { client, accessContext } = useAppContext();\n const navigate = useNavigate();\n const [query, setQuery] = useState(props.seed?.query ?? \"\");\n const seedNonce = props.seed?.nonce;\n const seedQuery = props.seed?.query;\n const appliedSeed = useRef(seedNonce);\n useEffect(() => {\n if (seedNonce === undefined || appliedSeed.current === seedNonce || seedQuery === undefined)\n return;\n appliedSeed.current = seedNonce;\n setQuery(seedQuery);\n }, [seedNonce, seedQuery]);\n const [archiveStatus, setArchiveStatus] = useState<\"active\" | \"archived\" | \"all\">(\"all\");\n const [selectedId, setSelectedId] = useState<string | null>(null);\n const [mobilePreview, setMobilePreview] = useState(false);\n const [titleCursor, setTitleCursor] = useState<string | undefined>();\n const [previewIndex, setPreviewIndex] = useState(0);\n const openRef = useRef(props.open);\n openRef.current = props.open;\n const restoreFocusOnClose = useRef(true);\n useEffect(() => {\n if (props.open) restoreFocusOnClose.current = true;\n }, [props.open]);\n const resultScroll = useRef(0);\n const previewScroll = useRef(0);\n const scope = JSON.stringify([accessContext.subjectId, props.workspaceId, archiveStatus]);\n const committedQuery = useCommittedSearchQuery(query, scope, props.open);\n const identity = JSON.stringify([\n accessContext.subjectId,\n props.workspaceId,\n committedQuery,\n archiveStatus,\n ]);\n const search = useConversationSearch({\n client,\n authority: accessContext.subjectId,\n workspaceId: props.workspaceId,\n query: committedQuery,\n debounceMs: 0,\n enabled: props.open,\n archiveStatus,\n });\n const loadTitles = useCallback(\n (signal: AbortSignal) =>\n client.listSessionPage(props.workspaceId, {\n search: committedQuery,\n signal,\n archiveStatus,\n limit: 20,\n ...(titleCursor ? { cursor: titleCursor } : {}),\n }),\n [client, props.workspaceId, committedQuery, archiveStatus, titleCursor],\n );\n const titles = useSessionSearchResource(\n `${identity}:${titleCursor ?? \"\"}`,\n loadTitles,\n props.open && !!committedQuery.trim(),\n 0,\n );\n const [deniedIdentity, setDeniedIdentity] = useState<string | null>(null);\n const [recoveringAccess, setRecoveringAccess] = useState(false);\n const accessDenied = search.accessDenied || titles.accessDenied || deniedIdentity === identity;\n const results = useMemo(() => {\n if (accessDenied || !committedQuery.trim()) return [];\n const grouped = new Map<string, SearchResultSummary>();\n for (const session of [...(titles.value?.pinned ?? []), ...(titles.value?.sessions ?? [])]) {\n grouped.set(session.id, {\n sessionId: session.id,\n title: session.title || \"Untitled session\",\n subtitle: new Date(session.updatedAt).toLocaleDateString(),\n snippet: session.initialMessage ?? \"\",\n matchingMessages: 0,\n titleMatch: true,\n });\n }\n const seen = new Set<string>();\n for (const match of search.page?.matches ?? []) {\n const current = grouped.get(match.sessionId);\n const firstForMessage = !seen.has(match.eventId);\n seen.add(match.eventId);\n grouped.set(match.sessionId, {\n sessionId: match.sessionId,\n title: match.sessionTitle || \"Untitled session\",\n subtitle: current?.subtitle ?? \"Message match\",\n snippet: current?.matchingMessages ? current.snippet : match.snippet.text,\n matchingMessages: (current?.matchingMessages ?? 0) + (firstForMessage ? 1 : 0),\n titleMatch: current?.titleMatch ?? false,\n });\n }\n return [...grouped.values()];\n }, [titles.value, search.page, accessDenied, committedQuery]);\n // Keep the selected session while closed/revalidating so its cursor and preview\n // survive the dialog → conversation → dialog round trip.\n const retainedSelection = useRef<{\n identity: string;\n selected: SearchResultSummary;\n } | null>(null);\n if (accessDenied || !committedQuery.trim()) retainedSelection.current = null;\n const selected =\n results.find((result) => result.sessionId === selectedId) ??\n (retainedSelection.current?.identity === identity &&\n retainedSelection.current.selected.sessionId === selectedId\n ? retainedSelection.current.selected\n : null) ??\n results[0] ??\n null;\n if (selected) retainedSelection.current = { identity, selected };\n const previewSelection =\n selected ??\n (retainedSelection.current?.identity === identity ? retainedSelection.current.selected : null);\n const selectedSearch = useConversationSearch({\n client,\n authority: accessContext.subjectId,\n workspaceId: props.workspaceId,\n sessionId: previewSelection?.sessionId,\n query: committedQuery,\n debounceMs: 0,\n enabled: props.open && !!previewSelection,\n });\n useEffect(() => {\n setTitleCursor(undefined);\n setSelectedId(null);\n setMobilePreview(false);\n setPreviewIndex(0);\n resultScroll.current = 0;\n previewScroll.current = 0;\n }, [identity]);\n useEffect(() => {\n if (search.accessDenied || titles.accessDenied) {\n retainedSelection.current = null;\n setSelectedId(null);\n setDeniedIdentity(identity);\n }\n }, [search.accessDenied, titles.accessDenied, identity]);\n useEffect(() => {\n // An authority failure invalidates every source. Do not reveal another\n // source's retained value while Retry is still rechecking live access.\n if (recoveringAccess && !search.loading && !titles.loading && !search.error && !titles.error) {\n setDeniedIdentity(null);\n setRecoveringAccess(false);\n }\n }, [recoveringAccess, search.loading, titles.loading, search.error, titles.error]);\n function select(id: string) {\n if (id !== selectedId) {\n setPreviewIndex(0);\n previewScroll.current = 0;\n }\n setSelectedId(id);\n setMobilePreview(true);\n }\n const onOpen = useCallback(\n (match?: ConversationSearchMatch) => {\n if (!previewSelection || accessDenied) return;\n // Result navigation owns the next focus target. Dismissal returns to\n // the opener; opening a conversation must not steal focus back later.\n restoreFocusOnClose.current = false;\n onOpenChange(false);\n void navigate({\n to: \"/workspaces/$workspaceId/sessions/$sessionId\",\n params: {\n workspaceId: props.workspaceId,\n sessionId: previewSelection.sessionId,\n },\n search: match\n ? {\n find: committedQuery,\n matchSequence: match.sequence,\n matchOffset: match.messageMatchOffset,\n searchOrigin: \"session-search\",\n }\n : { find: committedQuery, searchOrigin: \"session-search\" },\n });\n },\n [navigate, props.workspaceId, onOpenChange, previewSelection, committedQuery, accessDenied],\n );\n return (\n <Dialog open={props.open} onOpenChange={props.onOpenChange}>\n <DialogContent\n className=\"flex h-[min(760px,85dvh)] flex-col gap-0 overflow-hidden p-0 sm:max-w-5xl sm:p-0\"\n aria-describedby=\"session-search-description\"\n onCloseAutoFocus={(event) => {\n // This controlled dialog is mounted separately from its rail opener,\n // so Radix has no DialogTrigger ref to restore. A reopened dialog or\n // a result navigation owns focus independently of this retiring scope.\n event.preventDefault();\n if (openRef.current || !restoreFocusOnClose.current) return;\n const target = props.returnFocus?.current;\n if (target?.isConnected) target.focus({ preventScroll: true });\n }}\n >\n <div className=\"shrink-0 border-b border-border px-4 pb-3 pt-4 pr-12\">\n <DialogTitle className=\"mb-3 text-base\">Search sessions</DialogTitle>\n <div className=\"relative\">\n <SearchIcon\n className=\"pointer-events-none absolute left-3 top-2.5 size-4 text-fg-subtle\"\n aria-hidden=\"true\"\n />\n <Input\n autoFocus\n type=\"search\"\n aria-label=\"Search session titles and messages\"\n placeholder=\"Search titles and messages…\"\n value={query}\n maxLength={200}\n onChange={(event) => setQuery(event.target.value)}\n className=\"pl-9\"\n suppressAutofill\n />\n </div>\n {query !== committedQuery ? (\n <p className=\"mt-2 text-xs text-fg-muted\" role=\"status\">\n Showing results for “{committedQuery}”\n </p>\n ) : null}\n <div className=\"mt-3 flex flex-wrap items-center gap-3\">\n <DialogDescription id=\"session-search-description\" className=\"flex-1 text-xs\">\n Literal text in user and completed assistant messages.\n </DialogDescription>\n <label className=\"flex items-center gap-2 text-xs text-fg-muted\">\n Sessions\n <select\n aria-label=\"Search session status\"\n value={archiveStatus}\n onChange={(event) => {\n setArchiveStatus(event.target.value as typeof archiveStatus);\n setTitleCursor(undefined);\n setSelectedId(null);\n }}\n className=\"rounded-md border border-border bg-bg px-2 py-1 text-fg outline-hidden focus-visible:ring-2 focus-visible:ring-ring\"\n >\n <option value=\"all\">All</option>\n <option value=\"active\">Active</option>\n <option value=\"archived\">Archived</option>\n </select>\n </label>\n </div>\n </div>\n <div className=\"grid min-h-0 min-w-0 flex-1 grid-cols-[minmax(0,1fr)] md:grid-cols-[minmax(250px,0.8fr)_minmax(0,1.2fr)]\">\n <div\n className={cn(\n \"flex min-h-0 flex-col md:border-r md:border-border\",\n mobilePreview && selected ? \"hidden md:flex\" : \"flex\",\n )}\n >\n <SearchResultsView\n query={committedQuery}\n results={results}\n selectedId={selected?.sessionId ?? null}\n onSelect={select}\n loading={search.loading || titles.loading}\n error={\n accessDenied\n ? \"Search access is unavailable. Try again.\"\n : (search.error ?? titles.error)\n }\n onRetry={() => {\n if (search.error || accessDenied) search.retry();\n if (titles.error || accessDenied) titles.retry();\n if (accessDenied) setRecoveringAccess(true);\n }}\n hasMore={!!search.page?.hasMore}\n onMore={() => {\n resultScroll.current = 0;\n search.next();\n }}\n scrollPosition={resultScroll}\n active={props.open}\n />\n <div className=\"mt-auto flex shrink-0 flex-wrap gap-2 border-t border-border px-3 py-2\">\n {search.pageIndex > 0 ? (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={search.previous}\n disabled={search.loading}\n >\n Previous message results\n </Button>\n ) : null}\n {titles.value?.nextCursor ? (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => setTitleCursor(titles.value?.nextCursor ?? undefined)}\n >\n More title results\n </Button>\n ) : null}\n {search.loading ? (\n <span className=\"text-xs text-fg-muted\" role=\"status\">\n Searching saved history\n {search.scanned ? ` · ${search.scanned} messages visited` : \"…\"}\n </span>\n ) : search.page?.hasMore ? (\n <span className=\"text-xs text-fg-muted\">More history available</span>\n ) : null}\n </div>\n </div>\n <div\n className={cn(\n \"min-h-0 min-w-0 md:flex md:flex-col\",\n mobilePreview && selected ? \"flex flex-col\" : \"hidden\",\n )}\n >\n {previewSelection ? (\n <SessionSearchPreview\n client={client}\n authority={accessContext.subjectId}\n workspaceId={props.workspaceId}\n sessionId={previewSelection.sessionId}\n title={previewSelection.title}\n query={committedQuery}\n onAccessDenied={() => setDeniedIdentity(identity)}\n enabled={props.open}\n onOpen={onOpen}\n onBack={() => setMobilePreview(false)}\n search={selectedSearch}\n index={previewIndex}\n setIndex={setPreviewIndex}\n scrollPosition={previewScroll}\n />\n ) : (\n <div className=\"flex flex-1 items-center justify-center p-8 text-sm text-fg-subtle\">\n Select a result to read it in context.\n </div>\n )}\n </div>\n </div>\n </DialogContent>\n </Dialog>\n );\n}\n\ntype SessionSearchPreviewProps = {\n client: ReturnType<typeof useAppContext>[\"client\"];\n authority: string;\n workspaceId: string;\n sessionId: string;\n title: string;\n query: string;\n enabled: boolean;\n onOpen: (match?: ConversationSearchMatch) => void;\n onBack: () => void;\n search: ReturnType<typeof useConversationSearch>;\n index: number;\n setIndex: (index: number) => void;\n scrollPosition: RefObject<number>;\n onAccessDenied?: (() => void) | undefined;\n};\n\nexport function SessionSearchPreview(props: SessionSearchPreviewProps) {\n const { search, setIndex, onAccessDenied } = props;\n const matches = search.page?.matches ?? [];\n // -1 means land on the last occurrence when a previous batch arrives.\n const index = props.index < 0 ? Math.max(0, matches.length - 1) : props.index;\n const match = matches[Math.min(index, Math.max(0, matches.length - 1))];\n const loadContext = useCallback(\n async (signal: AbortSignal): Promise<SearchPreviewMessage[]> => {\n if (!match) return [];\n const options = {\n signal,\n mode: \"forensic\" as const,\n // Bound transfer even for legacy events whose retained payload is enormous.\n payloadMode: \"summary\" as const,\n includeTypes: [\"user.message\", \"agent.message.completed\"] as Array<\n \"user.message\" | \"agent.message.completed\"\n >,\n limit: 2,\n };\n const [before, after, selectedPreview] = await Promise.all([\n props.client.listEvents(props.workspaceId, props.sessionId, {\n ...options,\n before: match.sequence,\n direction: \"before\",\n }),\n props.client.listEvents(props.workspaceId, props.sessionId, {\n ...options,\n after: match.sequence,\n direction: \"after\",\n }),\n props.client\n .getSessionMessagePreview(\n props.workspaceId,\n props.sessionId,\n { eventId: match.eventId, sequence: match.sequence },\n { signal },\n )\n .catch((error: unknown) => {\n // A stale result can disappear after the search read. Keep its\n // authoritative excerpt; do not swallow access or transport errors.\n if (error instanceof OpenGeniApiError && error.status === 404)\n return { status: \"unavailable\" as const };\n throw error;\n }),\n ]);\n const selectedText = selectedFormattedMessage(selectedPreview, match, props.query);\n const context = async (events: typeof before): Promise<SearchPreviewMessage[]> => {\n const messages = await Promise.all(\n events.map(async (event): Promise<SearchPreviewMessage | null> => {\n if (event.type !== \"user.message\" && event.type !== \"agent.message.completed\")\n return null;\n const payload = event.payload as Record<string, unknown>;\n if (\n match.messageId &&\n event.type === \"agent.message.completed\" &&\n payload.messageId === match.messageId &&\n event.turnId === match.turnId\n )\n return null;\n // Summary projections do not carry the payload codec version. Even\n // short context text may be an undecoded lossless storage marker.\n const preview = await props.client\n .getSessionMessagePreview(\n props.workspaceId,\n props.sessionId,\n { eventId: event.id, sequence: event.sequence },\n { signal },\n )\n .catch((error: unknown) => {\n if (error instanceof OpenGeniApiError && error.status === 404)\n return { status: \"unavailable\" as const };\n throw error;\n });\n if (preview.status !== \"available\") return null;\n let text = preview.text;\n if (text.length > 1800) {\n const end = /[\\uD800-\\uDBFF]/.test(text[1799]!) ? 1799 : 1800;\n text = `${text.slice(0, end)}…`;\n }\n return {\n key: event.id,\n role: event.type === \"user.message\" ? \"user\" : \"assistant\",\n text,\n selected: false,\n formatted: preview.text.length <= 1800,\n };\n }),\n );\n return messages.filter((message): message is SearchPreviewMessage => message !== null);\n };\n const [preceding, following] = await Promise.all([context(before), context(after)]);\n return [\n ...preceding,\n {\n key: match.eventId,\n role: match.role,\n text: selectedText ?? match.snippet.text,\n selected: true,\n formatted: selectedText !== null,\n snippet: match.snippet.text,\n offset: match.messageMatchOffset,\n },\n ...following,\n ];\n },\n [props.client, props.workspaceId, props.sessionId, props.query, match],\n );\n const preview = useSessionSearchResource(\n `${props.authority}:${props.workspaceId}:${props.sessionId}:${props.query}:${match?.eventId}:${match?.messageMatchOffset}`,\n loadContext,\n props.enabled && !!match,\n 100,\n );\n useEffect(() => {\n if (preview.accessDenied || search.accessDenied) onAccessDenied?.();\n }, [preview.accessDenied, search.accessDenied, onAccessDenied]);\n if (preview.accessDenied || search.accessDenied)\n return <div role=\"alert\">Search access is unavailable.</div>;\n const titleOnly = !!search.page && !search.page.hasMore && !matches.length;\n return (\n <SearchPreviewView\n active={props.enabled}\n title={props.title}\n query={props.query}\n messages={preview.value ?? []}\n loading={search.loading || preview.loading}\n error={search.error ?? preview.error}\n onRetry={() => {\n if (search.error) search.retry();\n if (preview.error) preview.retry();\n }}\n onOpen={() => props.onOpen(match)}\n onBack={props.onBack}\n titleOnly={titleOnly}\n scrollPosition={props.scrollPosition}\n counter={\n matches.length\n ? `Match ${(search.page?.matchedOccurrenceCount ?? matches.length) - matches.length + index + 1} of ${search.page?.matchedOccurrenceCount ?? matches.length}${search.page?.hasMore ? \"+\" : \"\"}`\n : search.loading\n ? \"Searching saved history…\"\n : search.error\n ? \"Search unavailable\"\n : \"No matching messages\"\n }\n previousDisabled={index === 0 && search.pageIndex === 0}\n nextDisabled={!search.page?.hasMore && index >= matches.length - 1}\n onPrevious={() => {\n props.scrollPosition.current = 0;\n if (index > 0) setIndex(index - 1);\n else {\n setIndex(-1);\n search.previous();\n }\n }}\n onNext={() => {\n props.scrollPosition.current = 0;\n if (index < matches.length - 1) setIndex(index + 1);\n else {\n setIndex(0);\n search.next();\n }\n }}\n />\n );\n}\n"],"mappings":"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","names":["preview"]}
|
|
@@ -7,12 +7,12 @@ import {
|
|
|
7
7
|
hasWorkspacePermission
|
|
8
8
|
} from "../../../chunk-OWQBERKV.js";
|
|
9
9
|
import "../../../chunk-74JEZLLQ.js";
|
|
10
|
-
import {
|
|
11
|
-
userErrorText
|
|
12
|
-
} from "../../../chunk-L4OF77LE.js";
|
|
13
10
|
import {
|
|
14
11
|
Button
|
|
15
12
|
} from "../../../chunk-HMU5IELG.js";
|
|
13
|
+
import {
|
|
14
|
+
userErrorText
|
|
15
|
+
} from "../../../chunk-L4OF77LE.js";
|
|
16
16
|
import "../../../chunk-7TEUNQ6T.js";
|
|
17
17
|
import "../../../chunk-TXS65BB2.js";
|
|
18
18
|
|
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
3
|
-
sessionTenancyOperationController
|
|
4
|
-
} from "../../../chunk-HQ6SKOZ2.js";
|
|
5
2
|
import {
|
|
6
3
|
classifySessionTenancyFailure,
|
|
7
4
|
isCurrentSessionTenancyTarget,
|
|
@@ -13,14 +10,17 @@ import {
|
|
|
13
10
|
sessionVisibilityWorkStopsWork,
|
|
14
11
|
sessionVisibilityWorkSummary
|
|
15
12
|
} from "../../../chunk-ENGJ3OT6.js";
|
|
13
|
+
import {
|
|
14
|
+
sessionTenancyOperationController
|
|
15
|
+
} from "../../../chunk-HQ6SKOZ2.js";
|
|
16
16
|
import {
|
|
17
17
|
SessionUnavailableRoute
|
|
18
|
-
} from "../../../chunk-
|
|
18
|
+
} from "../../../chunk-JRXHSVD5.js";
|
|
19
|
+
import "../../../chunk-YUVGBL7S.js";
|
|
19
20
|
import "../../../chunk-FBMU3VK5.js";
|
|
20
21
|
import {
|
|
21
22
|
workspaceSessionsPath
|
|
22
23
|
} from "../../../chunk-WRLWLGEF.js";
|
|
23
|
-
import "../../../chunk-YUVGBL7S.js";
|
|
24
24
|
import "../../../chunk-7LP3W5H5.js";
|
|
25
25
|
import {
|
|
26
26
|
ProblemPanel
|
|
@@ -29,19 +29,26 @@ import {
|
|
|
29
29
|
isApiErrorStatus
|
|
30
30
|
} from "../../../chunk-L5HJ4UYB.js";
|
|
31
31
|
import "../../../chunk-A3MTTRCX.js";
|
|
32
|
-
import {
|
|
33
|
-
Notice
|
|
34
|
-
} from "../../../chunk-WLEDGIVS.js";
|
|
35
32
|
import {
|
|
36
33
|
ConfirmDialog
|
|
37
34
|
} from "../../../chunk-Q27G7PF6.js";
|
|
38
35
|
import "../../../chunk-HZUL2CUH.js";
|
|
36
|
+
import {
|
|
37
|
+
DropdownMenu,
|
|
38
|
+
DropdownMenuContent,
|
|
39
|
+
DropdownMenuItem,
|
|
40
|
+
DropdownMenuSeparator,
|
|
41
|
+
DropdownMenuTrigger
|
|
42
|
+
} from "../../../chunk-TREHTIBD.js";
|
|
43
|
+
import {
|
|
44
|
+
Tooltip,
|
|
45
|
+
TooltipContent,
|
|
46
|
+
TooltipProvider,
|
|
47
|
+
TooltipTrigger
|
|
48
|
+
} from "../../../chunk-OLTGED2Q.js";
|
|
39
49
|
import {
|
|
40
50
|
runCurrentTransitionInvocation
|
|
41
51
|
} from "../../../chunk-ANALJOJL.js";
|
|
42
|
-
import {
|
|
43
|
-
isPersonalWorkspace
|
|
44
|
-
} from "../../../chunk-74JEZLLQ.js";
|
|
45
52
|
import {
|
|
46
53
|
toast
|
|
47
54
|
} from "../../../chunk-YG6NARQY.js";
|
|
@@ -49,27 +56,20 @@ import {
|
|
|
49
56
|
useNavigate
|
|
50
57
|
} from "../../../chunk-MYNUBDU7.js";
|
|
51
58
|
import "../../../chunk-IZUAIHR4.js";
|
|
52
|
-
import
|
|
59
|
+
import {
|
|
60
|
+
isPersonalWorkspace
|
|
61
|
+
} from "../../../chunk-74JEZLLQ.js";
|
|
53
62
|
import {
|
|
54
63
|
useAppContext
|
|
55
64
|
} from "../../../chunk-W6KAUGXO.js";
|
|
65
|
+
import "../../../chunk-5OTQA7CM.js";
|
|
56
66
|
import {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
TooltipProvider,
|
|
60
|
-
TooltipTrigger
|
|
61
|
-
} from "../../../chunk-OLTGED2Q.js";
|
|
67
|
+
Notice
|
|
68
|
+
} from "../../../chunk-WLEDGIVS.js";
|
|
62
69
|
import {
|
|
63
70
|
Button
|
|
64
71
|
} from "../../../chunk-HMU5IELG.js";
|
|
65
|
-
import
|
|
66
|
-
DropdownMenu,
|
|
67
|
-
DropdownMenuContent,
|
|
68
|
-
DropdownMenuItem,
|
|
69
|
-
DropdownMenuSeparator,
|
|
70
|
-
DropdownMenuTrigger
|
|
71
|
-
} from "../../../chunk-MOF3XSUM.js";
|
|
72
|
-
import "../../../chunk-5OTQA7CM.js";
|
|
72
|
+
import "../../../chunk-L4OF77LE.js";
|
|
73
73
|
import "../../../chunk-J3BHDXQQ.js";
|
|
74
74
|
import "../../../chunk-TXS65BB2.js";
|
|
75
75
|
|
|
@@ -3,33 +3,33 @@ import {
|
|
|
3
3
|
SESSION_USAGE_LIMIT_UNKNOWN_RETRY_MS,
|
|
4
4
|
SessionUsageLimitSection,
|
|
5
5
|
sessionHref
|
|
6
|
-
} from "../../../chunk-
|
|
6
|
+
} from "../../../chunk-3WG3CRL7.js";
|
|
7
7
|
import "../../../chunk-RBRX5ZS3.js";
|
|
8
8
|
import "../../../chunk-JM4XEJPM.js";
|
|
9
9
|
import "../../../chunk-A3MTTRCX.js";
|
|
10
|
-
import "../../../chunk-SWWYYGQO.js";
|
|
11
10
|
import "../../../chunk-GQPRDEHX.js";
|
|
12
11
|
import "../../../chunk-WHMKC7OQ.js";
|
|
12
|
+
import "../../../chunk-325C2TCI.js";
|
|
13
13
|
import "../../../chunk-XSOPQZGH.js";
|
|
14
|
+
import "../../../chunk-XNTW77T6.js";
|
|
14
15
|
import "../../../chunk-X6WZOHBI.js";
|
|
16
|
+
import "../../../chunk-YG6NARQY.js";
|
|
15
17
|
import "../../../chunk-OWQBERKV.js";
|
|
16
18
|
import "../../../chunk-74JEZLLQ.js";
|
|
17
|
-
import "../../../chunk-YG6NARQY.js";
|
|
18
|
-
import "../../../chunk-L4OF77LE.js";
|
|
19
19
|
import "../../../chunk-W6KAUGXO.js";
|
|
20
|
-
import "../../../chunk-XNTW77T6.js";
|
|
21
|
-
import "../../../chunk-HY7EYWIG.js";
|
|
22
20
|
import "../../../chunk-KS57MLGE.js";
|
|
23
21
|
import "../../../chunk-HMU5IELG.js";
|
|
24
|
-
import "../../../chunk-
|
|
25
|
-
import "../../../chunk-
|
|
22
|
+
import "../../../chunk-HY7EYWIG.js";
|
|
23
|
+
import "../../../chunk-L4OF77LE.js";
|
|
26
24
|
import "../../../chunk-7TEUNQ6T.js";
|
|
25
|
+
import "../../../chunk-IEVPJ3G6.js";
|
|
27
26
|
import "../../../chunk-J3BHDXQQ.js";
|
|
27
|
+
import "../../../chunk-4U7SHFQ2.js";
|
|
28
28
|
import "../../../chunk-NAWXARTY.js";
|
|
29
29
|
import "../../../chunk-CM7LVUKC.js";
|
|
30
30
|
import "../../../chunk-TVQCDDSZ.js";
|
|
31
31
|
import "../../../chunk-TXS65BB2.js";
|
|
32
|
-
import "../../../chunk-
|
|
32
|
+
import "../../../chunk-F2YABPRJ.js";
|
|
33
33
|
export {
|
|
34
34
|
SESSION_USAGE_LIMIT_UNKNOWN_RETRY_MS,
|
|
35
35
|
SessionUsageLimitSection,
|
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import "../../../chunk-
|
|
2
|
+
import "../../../chunk-FIICQA55.js";
|
|
3
3
|
import {
|
|
4
4
|
sessionInputWait
|
|
5
|
-
} from "../../../chunk-
|
|
6
|
-
import "../../../chunk-
|
|
7
|
-
import "../../../chunk-
|
|
8
|
-
import "../../../chunk-
|
|
5
|
+
} from "../../../chunk-J2C6LB6W.js";
|
|
6
|
+
import "../../../chunk-CFEFYPNR.js";
|
|
7
|
+
import "../../../chunk-LY6727IF.js";
|
|
8
|
+
import "../../../chunk-IDMXEPHL.js";
|
|
9
|
+
import "../../../chunk-LJUMYUBO.js";
|
|
10
|
+
import "../../../chunk-UBIJBLUK.js";
|
|
9
11
|
import "../../../chunk-HEVQKE27.js";
|
|
10
12
|
import "../../../chunk-ANHUMDJX.js";
|
|
11
|
-
import "../../../chunk-IZV5FTJC.js";
|
|
12
|
-
import "../../../chunk-STUCI6QA.js";
|
|
13
13
|
import "../../../chunk-DNJ23AWQ.js";
|
|
14
|
+
import "../../../chunk-OB3YGXHQ.js";
|
|
14
15
|
import "../../../chunk-DHXKEJBH.js";
|
|
15
|
-
import "../../../chunk-
|
|
16
|
-
import "../../../chunk-
|
|
16
|
+
import "../../../chunk-IZV5FTJC.js";
|
|
17
|
+
import "../../../chunk-STUCI6QA.js";
|
|
18
|
+
import "../../../chunk-MK54JLE4.js";
|
|
17
19
|
import "../../../chunk-4NHJ6EXL.js";
|
|
18
20
|
|
|
19
21
|
// src/app/components/session/session-wait-status.tsx
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/app/components/session/session-wait-status.tsx"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport { Clock3Icon } from \"lucide-react\";\nimport type { Session } from \"@opengeni/sdk\";\nimport { sessionInputWait } from \"../../lib/session-rail\";\n/** The agent's deliberate wait retains its own reason and deadline. */\nexport function SessionWaitStatus({\n session,\n}: {\n session: Pick<Session, \"status\" | \"effectiveControl\" | \"inputWait\">;\n}) {\n const waiting = sessionInputWait(session);\n const deadlineAt = waiting?.deadlineAt;\n const [now, setNow] = useState(Date.now);\n useEffect(() => {\n if (!deadlineAt) return;\n setNow(Date.now());\n const timer = setInterval(() => setNow(Date.now()), 15_000);\n return () => clearInterval(timer);\n }, [deadlineAt]);\n if (!waiting) return null;\n const deadline = new Date(waiting.deadlineAt);\n const time = deadline.toLocaleString(undefined, {\n ...(deadline.toDateString() === new Date(now).toDateString()\n ? {}\n : { month: \"short\", day: \"numeric\" }),\n hour: \"2-digit\",\n minute: \"2-digit\",\n });\n const reason = waiting.reason.trim();\n // Older agents used this field for verbose internal notes. Preserve those in\n // disclosure instead of promoting them into the current status headline.\n const compact = reason.length <= 180 && !/[\\n]|[0-9a-f]{8}-[0-9a-f-]{27,}/i.test(reason);\n return (\n <div className=\"shrink-0 px-4 py-2 sm:px-6\" data-session-wait-status=\"\">\n <div className=\"mx-auto flex w-full max-w-3xl items-start gap-2 text-sm text-fg-muted\">\n <Clock3Icon aria-hidden className=\"mt-0.5 size-4 shrink-0\" />\n <div className=\"min-w-0\">\n <div role=\"status\">\n <p className=\"font-medium text-fg\">\n {compact && reason ? reason : \"Waiting for work in progress\"}\n </p>\n <p className=\"mt-0.5 text-xs\">\n {deadline.getTime() <= now\n ? \"Recheck due · waiting to resume\"\n : `Checks again at ${time} · resumes sooner if an update arrives`}\n </p>\n </div>\n {!compact && (\n <details className=\"mt-1 text-xs\">\n <summary className=\"cursor-pointer\">Wait details</summary>\n <p className=\"mt-1 max-h-32 overflow-y-auto whitespace-pre-wrap break-words\">\n {reason}\n </p>\n </details>\n )}\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../../src/app/components/session/session-wait-status.tsx"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport { Clock3Icon } from \"lucide-react\";\nimport type { Session } from \"@opengeni/sdk\";\nimport { sessionInputWait } from \"../../lib/session-rail\";\n/** The agent's deliberate wait retains its own reason and deadline. */\nexport function SessionWaitStatus({\n session,\n}: {\n session: Pick<Session, \"status\" | \"effectiveControl\" | \"inputWait\">;\n}) {\n const waiting = sessionInputWait(session);\n const deadlineAt = waiting?.deadlineAt;\n const [now, setNow] = useState(Date.now);\n useEffect(() => {\n if (!deadlineAt) return;\n setNow(Date.now());\n const timer = setInterval(() => setNow(Date.now()), 15_000);\n return () => clearInterval(timer);\n }, [deadlineAt]);\n if (!waiting) return null;\n const deadline = new Date(waiting.deadlineAt);\n const time = deadline.toLocaleString(undefined, {\n ...(deadline.toDateString() === new Date(now).toDateString()\n ? {}\n : { month: \"short\", day: \"numeric\" }),\n hour: \"2-digit\",\n minute: \"2-digit\",\n });\n const reason = waiting.reason.trim();\n // Older agents used this field for verbose internal notes. Preserve those in\n // disclosure instead of promoting them into the current status headline.\n const compact = reason.length <= 180 && !/[\\n]|[0-9a-f]{8}-[0-9a-f-]{27,}/i.test(reason);\n return (\n <div className=\"shrink-0 px-4 py-2 sm:px-6\" data-session-wait-status=\"\">\n <div className=\"mx-auto flex w-full max-w-3xl items-start gap-2 text-sm text-fg-muted\">\n <Clock3Icon aria-hidden className=\"mt-0.5 size-4 shrink-0\" />\n <div className=\"min-w-0\">\n <div role=\"status\">\n <p className=\"font-medium text-fg\">\n {compact && reason ? reason : \"Waiting for work in progress\"}\n </p>\n <p className=\"mt-0.5 text-xs\">\n {deadline.getTime() <= now\n ? \"Recheck due · waiting to resume\"\n : `Checks again at ${time} · resumes sooner if an update arrives`}\n </p>\n </div>\n {!compact && (\n <details className=\"mt-1 text-xs\">\n <summary className=\"cursor-pointer\">Wait details</summary>\n <p className=\"mt-1 max-h-32 overflow-y-auto whitespace-pre-wrap break-words\">\n {reason}\n </p>\n </details>\n )}\n </div>\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,WAAW,gBAAgB;AACpC,SAAS,kBAAkB;AAkCnB,cAEE,YAFF;AA9BD,SAAS,kBAAkB;AAAA,EAChC;AACF,GAEG;AACD,QAAM,UAAU,iBAAiB,OAAO;AACxC,QAAM,aAAa,SAAS;AAC5B,QAAM,CAAC,KAAK,MAAM,IAAI,SAAS,KAAK,GAAG;AACvC,YAAU,MAAM;AACd,QAAI,CAAC,WAAY;AACjB,WAAO,KAAK,IAAI,CAAC;AACjB,UAAM,QAAQ,YAAY,MAAM,OAAO,KAAK,IAAI,CAAC,GAAG,IAAM;AAC1D,WAAO,MAAM,cAAc,KAAK;AAAA,EAClC,GAAG,CAAC,UAAU,CAAC;AACf,MAAI,CAAC,QAAS,QAAO;AACrB,QAAM,WAAW,IAAI,KAAK,QAAQ,UAAU;AAC5C,QAAM,OAAO,SAAS,eAAe,QAAW;AAAA,IAC9C,GAAI,SAAS,aAAa,MAAM,IAAI,KAAK,GAAG,EAAE,aAAa,IACvD,CAAC,IACD,EAAE,OAAO,SAAS,KAAK,UAAU;AAAA,IACrC,MAAM;AAAA,IACN,QAAQ;AAAA,EACV,CAAC;AACD,QAAM,SAAS,QAAQ,OAAO,KAAK;AAGnC,QAAM,UAAU,OAAO,UAAU,OAAO,CAAC,mCAAmC,KAAK,MAAM;AACvF,SACE,oBAAC,SAAI,WAAU,8BAA6B,4BAAyB,IACnE,+BAAC,SAAI,WAAU,yEACb;AAAA,wBAAC,cAAW,eAAW,MAAC,WAAU,0BAAyB;AAAA,IAC3D,qBAAC,SAAI,WAAU,WACb;AAAA,2BAAC,SAAI,MAAK,UACR;AAAA,4BAAC,OAAE,WAAU,uBACV,qBAAW,SAAS,SAAS,gCAChC;AAAA,QACA,oBAAC,OAAE,WAAU,kBACV,mBAAS,QAAQ,KAAK,MACnB,uCACA,mBAAmB,IAAI,6CAC7B;AAAA,SACF;AAAA,MACC,CAAC,WACA,qBAAC,aAAQ,WAAU,gBACjB;AAAA,4BAAC,aAAQ,WAAU,kBAAiB,0BAAY;AAAA,QAChD,oBAAC,OAAE,WAAU,iEACV,kBACH;AAAA,SACF;AAAA,OAEJ;AAAA,KACF,GACF;AAEJ;","names":[]}
|
|
@@ -5,34 +5,36 @@ import {
|
|
|
5
5
|
SubagentsLabel,
|
|
6
6
|
sessionStatusTone,
|
|
7
7
|
subagentAttentionHint
|
|
8
|
-
} from "../../../chunk-
|
|
9
|
-
import "../../../chunk-
|
|
10
|
-
import "../../../chunk-
|
|
8
|
+
} from "../../../chunk-JAAST75A.js";
|
|
9
|
+
import "../../../chunk-FIICQA55.js";
|
|
10
|
+
import "../../../chunk-ZL2O4BYP.js";
|
|
11
11
|
import "../../../chunk-5TLEWXAB.js";
|
|
12
12
|
import "../../../chunk-A3MTTRCX.js";
|
|
13
|
+
import "../../../chunk-TREHTIBD.js";
|
|
13
14
|
import "../../../chunk-X6WZOHBI.js";
|
|
14
|
-
import "../../../chunk-
|
|
15
|
+
import "../../../chunk-MAOCN7J6.js";
|
|
15
16
|
import "../../../chunk-MYNUBDU7.js";
|
|
16
17
|
import "../../../chunk-IZUAIHR4.js";
|
|
17
|
-
import "../../../chunk-MOF3XSUM.js";
|
|
18
18
|
import "../../../chunk-5OTQA7CM.js";
|
|
19
|
+
import "../../../chunk-J2C6LB6W.js";
|
|
19
20
|
import "../../../chunk-A3KMTJZS.js";
|
|
20
|
-
import "../../../chunk-
|
|
21
|
-
import "../../../chunk-
|
|
22
|
-
import "../../../chunk-
|
|
23
|
-
import "../../../chunk-
|
|
21
|
+
import "../../../chunk-J3BHDXQQ.js";
|
|
22
|
+
import "../../../chunk-CFEFYPNR.js";
|
|
23
|
+
import "../../../chunk-LY6727IF.js";
|
|
24
|
+
import "../../../chunk-IDMXEPHL.js";
|
|
25
|
+
import "../../../chunk-LJUMYUBO.js";
|
|
26
|
+
import "../../../chunk-UBIJBLUK.js";
|
|
24
27
|
import "../../../chunk-HEVQKE27.js";
|
|
25
28
|
import "../../../chunk-ANHUMDJX.js";
|
|
26
|
-
import "../../../chunk-IZV5FTJC.js";
|
|
27
|
-
import "../../../chunk-STUCI6QA.js";
|
|
28
29
|
import "../../../chunk-DNJ23AWQ.js";
|
|
30
|
+
import "../../../chunk-OB3YGXHQ.js";
|
|
29
31
|
import "../../../chunk-DHXKEJBH.js";
|
|
30
|
-
import "../../../chunk-
|
|
31
|
-
import "../../../chunk-
|
|
32
|
-
import "../../../chunk-
|
|
32
|
+
import "../../../chunk-IZV5FTJC.js";
|
|
33
|
+
import "../../../chunk-STUCI6QA.js";
|
|
34
|
+
import "../../../chunk-MK54JLE4.js";
|
|
33
35
|
import "../../../chunk-4NHJ6EXL.js";
|
|
34
36
|
import "../../../chunk-TXS65BB2.js";
|
|
35
|
-
import "../../../chunk-
|
|
37
|
+
import "../../../chunk-F2YABPRJ.js";
|
|
36
38
|
export {
|
|
37
39
|
SessionAncestryBreadcrumb,
|
|
38
40
|
SubagentTree,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
SubscriptionAccountMenu
|
|
4
|
-
} from "../../../chunk-
|
|
4
|
+
} from "../../../chunk-3SMJ2BIQ.js";
|
|
5
5
|
import "../../../chunk-A3MTTRCX.js";
|
|
6
|
-
import "../../../chunk-
|
|
6
|
+
import "../../../chunk-TREHTIBD.js";
|
|
7
7
|
import "../../../chunk-5OTQA7CM.js";
|
|
8
8
|
import "../../../chunk-J3BHDXQQ.js";
|
|
9
9
|
import "../../../chunk-TXS65BB2.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
ConnectionAccountPicker
|
|
4
|
-
} from "../../chunk-
|
|
4
|
+
} from "../../chunk-HVH7FFJH.js";
|
|
5
5
|
import {
|
|
6
6
|
CapabilityLogo
|
|
7
7
|
} from "../../chunk-LEDS7L3I.js";
|
|
@@ -9,26 +9,26 @@ import "../../chunk-22NENBA3.js";
|
|
|
9
9
|
import {
|
|
10
10
|
cn
|
|
11
11
|
} from "../../chunk-A3MTTRCX.js";
|
|
12
|
-
import {
|
|
13
|
-
ConnectorAction
|
|
14
|
-
} from "../../chunk-QZO2KK2F.js";
|
|
15
12
|
import {
|
|
16
13
|
ComposerMenuHeader,
|
|
17
14
|
ComposerMenuRowsSkeleton,
|
|
18
15
|
ComposerMenuSwitch,
|
|
19
16
|
ComposerMenuSwitchIndicator
|
|
20
17
|
} from "../../chunk-O2LGEYG4.js";
|
|
18
|
+
import {
|
|
19
|
+
ConnectorAction
|
|
20
|
+
} from "../../chunk-6P44NG6Y.js";
|
|
21
|
+
import "../../chunk-TREHTIBD.js";
|
|
21
22
|
import {
|
|
22
23
|
isComposerConnector
|
|
23
24
|
} from "../../chunk-L6Y4ALSM.js";
|
|
24
|
-
import "../../chunk-L4OF77LE.js";
|
|
25
|
-
import "../../chunk-MOF3XSUM.js";
|
|
26
25
|
import {
|
|
27
26
|
MENU_BACK_BUTTON_CLASS,
|
|
28
27
|
MENU_CHECK_CLASS,
|
|
29
28
|
MENU_LABEL_CLASS,
|
|
30
29
|
MENU_NOTE_CLASS
|
|
31
30
|
} from "../../chunk-5OTQA7CM.js";
|
|
31
|
+
import "../../chunk-L4OF77LE.js";
|
|
32
32
|
import "../../chunk-J3BHDXQQ.js";
|
|
33
33
|
import "../../chunk-TXS65BB2.js";
|
|
34
34
|
|
|
@@ -5,8 +5,8 @@ import {
|
|
|
5
5
|
import "../../../chunk-TFK4KFKA.js";
|
|
6
6
|
import "../../../chunk-XSOPQZGH.js";
|
|
7
7
|
import "../../../chunk-XNTW77T6.js";
|
|
8
|
-
import "../../../chunk-KS57MLGE.js";
|
|
9
8
|
import "../../../chunk-5OTQA7CM.js";
|
|
9
|
+
import "../../../chunk-KS57MLGE.js";
|
|
10
10
|
import "../../../chunk-J3BHDXQQ.js";
|
|
11
11
|
import "../../../chunk-TXS65BB2.js";
|
|
12
12
|
export {
|
|
@@ -10,11 +10,11 @@ import "../../chunk-TFK4KFKA.js";
|
|
|
10
10
|
import "../../chunk-A3MTTRCX.js";
|
|
11
11
|
import "../../chunk-IZMUUUYD.js";
|
|
12
12
|
import "../../chunk-XSOPQZGH.js";
|
|
13
|
+
import "../../chunk-XNTW77T6.js";
|
|
13
14
|
import "../../chunk-YG6NARQY.js";
|
|
14
15
|
import "../../chunk-W6KAUGXO.js";
|
|
15
|
-
import "../../chunk-XNTW77T6.js";
|
|
16
|
-
import "../../chunk-KS57MLGE.js";
|
|
17
16
|
import "../../chunk-5OTQA7CM.js";
|
|
17
|
+
import "../../chunk-KS57MLGE.js";
|
|
18
18
|
import "../../chunk-J3BHDXQQ.js";
|
|
19
19
|
import "../../chunk-TXS65BB2.js";
|
|
20
20
|
export {
|
|
@@ -5,20 +5,20 @@ import {
|
|
|
5
5
|
UndoToast,
|
|
6
6
|
confirmTextMatches,
|
|
7
7
|
showUndoToast
|
|
8
|
-
} from "../../../chunk-
|
|
8
|
+
} from "../../../chunk-A664GSDM.js";
|
|
9
9
|
import "../../../chunk-A3MTTRCX.js";
|
|
10
10
|
import "../../../chunk-WHMKC7OQ.js";
|
|
11
|
-
import "../../../chunk-MRXOGI3O.js";
|
|
12
|
-
import "../../../chunk-WLEDGIVS.js";
|
|
13
|
-
import "../../../chunk-WHWUWN2X.js";
|
|
14
|
-
import "../../../chunk-ZMBJPN4T.js";
|
|
15
11
|
import "../../../chunk-Q27G7PF6.js";
|
|
16
12
|
import "../../../chunk-HZUL2CUH.js";
|
|
17
|
-
import "../../../chunk-YG6NARQY.js";
|
|
18
|
-
import "../../../chunk-L4OF77LE.js";
|
|
19
13
|
import "../../../chunk-XNTW77T6.js";
|
|
20
|
-
import "../../../chunk-
|
|
14
|
+
import "../../../chunk-YG6NARQY.js";
|
|
15
|
+
import "../../../chunk-77CUDSHG.js";
|
|
16
|
+
import "../../../chunk-WHWUWN2X.js";
|
|
17
|
+
import "../../../chunk-WLEDGIVS.js";
|
|
18
|
+
import "../../../chunk-ZMBJPN4T.js";
|
|
21
19
|
import "../../../chunk-HMU5IELG.js";
|
|
20
|
+
import "../../../chunk-HY7EYWIG.js";
|
|
21
|
+
import "../../../chunk-L4OF77LE.js";
|
|
22
22
|
import "../../../chunk-J3BHDXQQ.js";
|
|
23
23
|
import "../../../chunk-TXS65BB2.js";
|
|
24
24
|
export {
|
|
@@ -2,22 +2,22 @@
|
|
|
2
2
|
import {
|
|
3
3
|
AccountUsageMenuItem,
|
|
4
4
|
ComposerUsageNotice
|
|
5
|
-
} from "../../../chunk-
|
|
5
|
+
} from "../../../chunk-UEJTOPLW.js";
|
|
6
6
|
import "../../../chunk-OF22GYK5.js";
|
|
7
|
-
import "../../../chunk-
|
|
7
|
+
import "../../../chunk-TREHTIBD.js";
|
|
8
8
|
import "../../../chunk-MYNUBDU7.js";
|
|
9
9
|
import "../../../chunk-IZUAIHR4.js";
|
|
10
|
+
import "../../../chunk-74JEZLLQ.js";
|
|
10
11
|
import "../../../chunk-W6KAUGXO.js";
|
|
11
|
-
import "../../../chunk-MOF3XSUM.js";
|
|
12
12
|
import "../../../chunk-5OTQA7CM.js";
|
|
13
|
-
import "../../../chunk-
|
|
14
|
-
import "../../../chunk-4U7SHFQ2.js";
|
|
13
|
+
import "../../../chunk-IEVPJ3G6.js";
|
|
15
14
|
import "../../../chunk-J3BHDXQQ.js";
|
|
15
|
+
import "../../../chunk-4U7SHFQ2.js";
|
|
16
16
|
import "../../../chunk-NAWXARTY.js";
|
|
17
17
|
import "../../../chunk-CM7LVUKC.js";
|
|
18
18
|
import "../../../chunk-TVQCDDSZ.js";
|
|
19
19
|
import "../../../chunk-TXS65BB2.js";
|
|
20
|
-
import "../../../chunk-
|
|
20
|
+
import "../../../chunk-F2YABPRJ.js";
|
|
21
21
|
export {
|
|
22
22
|
AccountUsageMenuItem,
|
|
23
23
|
ComposerUsageNotice
|
|
@@ -1,45 +1,46 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
3
|
WorkspaceComposerPlus
|
|
4
|
-
} from "../../chunk-
|
|
4
|
+
} from "../../chunk-X5BMQXFD.js";
|
|
5
|
+
import "../../chunk-U42P3RMZ.js";
|
|
5
6
|
import "../../chunk-HUKUDAIP.js";
|
|
6
|
-
import "../../chunk-
|
|
7
|
-
import "../../chunk-
|
|
7
|
+
import "../../chunk-GBYZ6653.js";
|
|
8
|
+
import "../../chunk-3F5ZPIWI.js";
|
|
8
9
|
import "../../chunk-22NENBA3.js";
|
|
9
|
-
import "../../chunk-2AWMJO54.js";
|
|
10
10
|
import "../../chunk-O2LGEYG4.js";
|
|
11
11
|
import "../../chunk-HZUL2CUH.js";
|
|
12
|
-
import "../../chunk-
|
|
13
|
-
import "../../chunk-74JEZLLQ.js";
|
|
12
|
+
import "../../chunk-TREHTIBD.js";
|
|
14
13
|
import "../../chunk-YG6NARQY.js";
|
|
15
14
|
import "../../chunk-MYNUBDU7.js";
|
|
16
15
|
import "../../chunk-IZUAIHR4.js";
|
|
17
|
-
import "../../chunk-
|
|
16
|
+
import "../../chunk-OWQBERKV.js";
|
|
17
|
+
import "../../chunk-74JEZLLQ.js";
|
|
18
18
|
import "../../chunk-W6KAUGXO.js";
|
|
19
|
-
import "../../chunk-HMU5IELG.js";
|
|
20
|
-
import "../../chunk-MOF3XSUM.js";
|
|
21
19
|
import "../../chunk-5OTQA7CM.js";
|
|
22
|
-
import "../../chunk-
|
|
20
|
+
import "../../chunk-HMU5IELG.js";
|
|
21
|
+
import "../../chunk-L4OF77LE.js";
|
|
22
|
+
import "../../chunk-GSESCQFY.js";
|
|
23
23
|
import "../../chunk-M357MHH3.js";
|
|
24
|
-
import "../../chunk-
|
|
24
|
+
import "../../chunk-7TEUNQ6T.js";
|
|
25
|
+
import "../../chunk-HAOZCLLA.js";
|
|
25
26
|
import "../../chunk-CUUJROYT.js";
|
|
26
|
-
import "../../chunk-
|
|
27
|
-
import "../../chunk-
|
|
27
|
+
import "../../chunk-57SYK776.js";
|
|
28
|
+
import "../../chunk-HYTXTKST.js";
|
|
28
29
|
import "../../chunk-OYQQJL3J.js";
|
|
29
|
-
import "../../chunk-
|
|
30
|
+
import "../../chunk-H3LIIAGE.js";
|
|
30
31
|
import "../../chunk-VHB3E6PT.js";
|
|
31
32
|
import "../../chunk-RZLBICR5.js";
|
|
32
|
-
import "../../chunk-
|
|
33
|
-
import "../../chunk-UNJPZGNK.js";
|
|
34
|
-
import "../../chunk-PEHTX3V7.js";
|
|
35
|
-
import "../../chunk-7TEUNQ6T.js";
|
|
36
|
-
import "../../chunk-Y5TRG22C.js";
|
|
33
|
+
import "../../chunk-NRXIECWC.js";
|
|
37
34
|
import "../../chunk-J3BHDXQQ.js";
|
|
38
35
|
import "../../chunk-XEA5BCMA.js";
|
|
39
|
-
import "../../chunk-
|
|
36
|
+
import "../../chunk-PEHTX3V7.js";
|
|
37
|
+
import "../../chunk-UNJPZGNK.js";
|
|
38
|
+
import "../../chunk-DNJ23AWQ.js";
|
|
39
|
+
import "../../chunk-OB3YGXHQ.js";
|
|
40
|
+
import "../../chunk-MK54JLE4.js";
|
|
40
41
|
import "../../chunk-4NHJ6EXL.js";
|
|
41
42
|
import "../../chunk-TXS65BB2.js";
|
|
42
|
-
import "../../chunk-
|
|
43
|
+
import "../../chunk-F2YABPRJ.js";
|
|
43
44
|
export {
|
|
44
45
|
WorkspaceComposerPlus
|
|
45
46
|
};
|