@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,17 +1,16 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
|
-
OPEN_SESSION_SEARCH_EVENT
|
|
4
|
-
|
|
5
|
-
} from "./chunk-NFCYIZHX.js";
|
|
3
|
+
OPEN_SESSION_SEARCH_EVENT
|
|
4
|
+
} from "./chunk-TXIIBNCA.js";
|
|
6
5
|
import {
|
|
7
6
|
workspaceManagementLocation
|
|
8
7
|
} from "./chunk-3RWVKGQM.js";
|
|
9
|
-
import {
|
|
10
|
-
useUiEventTarget
|
|
11
|
-
} from "./chunk-WGPLDFEC.js";
|
|
12
8
|
import {
|
|
13
9
|
requestCreateComposerFocus
|
|
14
10
|
} from "./chunk-HQA6FUM5.js";
|
|
11
|
+
import {
|
|
12
|
+
useUiEventTarget
|
|
13
|
+
} from "./chunk-WGPLDFEC.js";
|
|
15
14
|
import {
|
|
16
15
|
desktopBridge,
|
|
17
16
|
desktopCapability
|
|
@@ -36,6 +35,15 @@ import {
|
|
|
36
35
|
lazy,
|
|
37
36
|
Suspense
|
|
38
37
|
} from "react";
|
|
38
|
+
|
|
39
|
+
// src/app/lib/actions/events.ts
|
|
40
|
+
var OPEN_COMMAND_MENU_EVENT = "opengeni:open-command-menu";
|
|
41
|
+
var RENAME_CURRENT_CHAT_EVENT = "opengeni:rename-current-chat";
|
|
42
|
+
function requestCommandMenu(target) {
|
|
43
|
+
target.dispatchEvent(new Event(OPEN_COMMAND_MENU_EVENT));
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// src/app/components/rail/rail-context.tsx
|
|
39
47
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
40
48
|
var SessionSearchDialog = lazy(() => import("./app/components/session/session-search-dialog.js"));
|
|
41
49
|
var RAIL_COLLAPSED_KEY = "opengeni.rail.collapsed";
|
|
@@ -91,6 +99,7 @@ function RailProvider({
|
|
|
91
99
|
const appContext = useAppContext();
|
|
92
100
|
const [searchOpen, setSearchOpen] = useState(false);
|
|
93
101
|
const [searchMounted, setSearchMounted] = useState(false);
|
|
102
|
+
const [searchSeed, setSearchSeed] = useState(null);
|
|
94
103
|
const searchReturnFocus = useRef(null);
|
|
95
104
|
const searchOpenRef = useRef(searchOpen);
|
|
96
105
|
searchOpenRef.current = searchOpen;
|
|
@@ -111,6 +120,13 @@ function RailProvider({
|
|
|
111
120
|
}
|
|
112
121
|
if (!searchOpenRef.current) drawerTriggerRef.current?.focus({ preventScroll: true });
|
|
113
122
|
}, []);
|
|
123
|
+
const drawerOpenRef = useRef(drawerOpen);
|
|
124
|
+
drawerOpenRef.current = drawerOpen;
|
|
125
|
+
const handOffDrawer = useCallback(() => {
|
|
126
|
+
if (!drawerOpenRef.current) return;
|
|
127
|
+
suppressDrawerRestore.current = true;
|
|
128
|
+
setDrawerOpenState(false);
|
|
129
|
+
}, []);
|
|
114
130
|
const changeSearchOpen = useCallback((next) => {
|
|
115
131
|
searchOpenRef.current = next;
|
|
116
132
|
setSearchOpen(next);
|
|
@@ -122,14 +138,17 @@ function RailProvider({
|
|
|
122
138
|
if (!searchOpenRef.current) {
|
|
123
139
|
searchReturnFocus.current = isMobile ? drawerTriggerRef.current : detail.returnFocus instanceof HTMLElement ? detail.returnFocus : document.activeElement instanceof HTMLElement ? document.activeElement : null;
|
|
124
140
|
}
|
|
125
|
-
if (
|
|
141
|
+
if (typeof detail.query === "string" && detail.query) {
|
|
142
|
+
const query = detail.query;
|
|
143
|
+
setSearchSeed((current) => ({ query, nonce: (current?.nonce ?? 0) + 1 }));
|
|
144
|
+
}
|
|
126
145
|
setSearchMounted(true);
|
|
127
146
|
changeSearchOpen(true);
|
|
128
|
-
|
|
147
|
+
handOffDrawer();
|
|
129
148
|
};
|
|
130
149
|
windowEvents.addEventListener(OPEN_SESSION_SEARCH_EVENT, open);
|
|
131
150
|
return () => windowEvents.removeEventListener(OPEN_SESSION_SEARCH_EVENT, open);
|
|
132
|
-
}, [workspaceId, isMobile,
|
|
151
|
+
}, [workspaceId, isMobile, changeSearchOpen, handOffDrawer, windowEvents]);
|
|
133
152
|
useEffect(() => {
|
|
134
153
|
searchReturnFocus.current = null;
|
|
135
154
|
changeSearchOpen(false);
|
|
@@ -236,7 +255,7 @@ function RailProvider({
|
|
|
236
255
|
if (!bridge) return;
|
|
237
256
|
return bridge.commands.onCommand((command) => {
|
|
238
257
|
if (command === "newSession") startNewSession();
|
|
239
|
-
else if (command === "searchSessions")
|
|
258
|
+
else if (command === "searchSessions") requestCommandMenu(windowEvents);
|
|
240
259
|
else if (command === "toggleSidebar") toggleCollapsed();
|
|
241
260
|
else if (command === "openInbox") {
|
|
242
261
|
setDrawerOpen(false);
|
|
@@ -259,6 +278,7 @@ function RailProvider({
|
|
|
259
278
|
setDrawerOpen,
|
|
260
279
|
drawerTriggerRef,
|
|
261
280
|
restoreDrawerFocus,
|
|
281
|
+
handOffDrawer,
|
|
262
282
|
openWorkspace,
|
|
263
283
|
openOrg,
|
|
264
284
|
openSession,
|
|
@@ -273,6 +293,7 @@ function RailProvider({
|
|
|
273
293
|
drawerOpen,
|
|
274
294
|
setDrawerOpen,
|
|
275
295
|
restoreDrawerFocus,
|
|
296
|
+
handOffDrawer,
|
|
276
297
|
setCollapsed,
|
|
277
298
|
toggleCollapsed,
|
|
278
299
|
openWorkspace,
|
|
@@ -289,7 +310,8 @@ function RailProvider({
|
|
|
289
310
|
workspaceId,
|
|
290
311
|
open: searchOpen,
|
|
291
312
|
onOpenChange: changeSearchOpen,
|
|
292
|
-
returnFocus: searchReturnFocus
|
|
313
|
+
returnFocus: searchReturnFocus,
|
|
314
|
+
seed: searchSeed
|
|
293
315
|
},
|
|
294
316
|
`${appContext.accessContext.subjectId}:${workspaceId}`
|
|
295
317
|
) }) : null
|
|
@@ -297,6 +319,9 @@ function RailProvider({
|
|
|
297
319
|
}
|
|
298
320
|
|
|
299
321
|
export {
|
|
322
|
+
OPEN_COMMAND_MENU_EVENT,
|
|
323
|
+
RENAME_CURRENT_CHAT_EVENT,
|
|
324
|
+
requestCommandMenu,
|
|
300
325
|
RAIL_DRAWER_BREAKPOINT,
|
|
301
326
|
RAIL_MIN_WIDTH,
|
|
302
327
|
RAIL_MAX_WIDTH,
|
|
@@ -304,4 +329,4 @@ export {
|
|
|
304
329
|
useRail,
|
|
305
330
|
RailProvider
|
|
306
331
|
};
|
|
307
|
-
//# sourceMappingURL=chunk-
|
|
332
|
+
//# sourceMappingURL=chunk-SF3M27AN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/app/components/rail/rail-context.tsx","../src/app/lib/actions/events.ts"],"sourcesContent":["// Shared state for the left rail: collapsed (icon-only) persistence, the mobile\n// overlay-drawer toggle, and the workspace-scoped navigation helpers every rail\n// section reuses (open a workspace, start a new session, switch org/workspace).\nimport { useNavigate, useRouter } from \"../../lib/navigation\";\nimport {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n lazy,\n Suspense,\n type ReactNode,\n type RefObject,\n} from \"react\";\n\nimport { useAppContext } from \"../../app-context\";\nimport { requestCreateComposerFocus } from \"../../lib/create-composer-focus\";\nimport { requestCommandMenu } from \"../../lib/actions/events\";\nimport { desktopBridge, desktopCapability } from \"../../lib/desktop\";\nimport { OPEN_SESSION_SEARCH_EVENT } from \"../../lib/session-search-route\";\nimport { workspaceManagementLocation } from \"../../lib/workspace-management-location\";\nimport { useUiEventTarget } from \"../../lib/ui-events\";\n\nconst SessionSearchDialog = lazy(() => import(\"../session/session-search-dialog\"));\n\nconst RAIL_COLLAPSED_KEY = \"opengeni.rail.collapsed\";\nconst RAIL_WIDTH_KEY = \"opengeni.rail.width\";\n/** Below this viewport width the rail is an overlay drawer, not a fixed column. */\nexport const RAIL_DRAWER_BREAKPOINT = 1024;\n/**\n * A desktop app window is never a phone: it keeps the rail as a column down to\n * its minimum width, where the person can still collapse it.\n */\nconst DESKTOP_RAIL_DRAWER_BREAKPOINT = 640;\nconst railDrawerBreakpoint = desktopBridge\n ? DESKTOP_RAIL_DRAWER_BREAKPOINT\n : RAIL_DRAWER_BREAKPOINT;\n/** Resize bounds for the expanded desktop rail (px). */\nexport const RAIL_MIN_WIDTH = 220;\nexport const RAIL_MAX_WIDTH = 480;\n/**\n * A desktop app window is wider than most browser windows next to other tabs\n * and the sidebar is its main way around, so it starts wide enough for real\n * session titles beside each row's status and time.\n */\nexport const RAIL_DEFAULT_WIDTH = desktopBridge ? 288 : 244;\n\nfunction clampRailWidth(width: number): number {\n if (!Number.isFinite(width)) {\n return RAIL_DEFAULT_WIDTH;\n }\n return Math.min(RAIL_MAX_WIDTH, Math.max(RAIL_MIN_WIDTH, Math.round(width)));\n}\n\nexport type RailContextValue = {\n workspaceId: string;\n /** Icon-only rail (desktop). Ignored while the mobile drawer is in play. */\n collapsed: boolean;\n setCollapsed: (collapsed: boolean) => void;\n toggleCollapsed: () => void;\n /** User-chosen expanded-rail width (px), clamped to [RAIL_MIN, RAIL_MAX]. */\n width: number;\n /** Set the expanded-rail width; persisted to localStorage (clamped). */\n setWidth: (width: number) => void;\n /** Whether the viewport is narrow enough to use the overlay drawer. */\n isMobile: boolean;\n /** Mobile overlay-drawer open state. */\n drawerOpen: boolean;\n setDrawerOpen: (open: boolean) => void;\n /** Persistent opener outside the mobile drawer, also used after search. */\n drawerTriggerRef: RefObject<HTMLButtonElement | null>;\n /** Retiring drawers must not take focus from an open search dialog. */\n restoreDrawerFocus: () => void;\n /**\n * Close the phone drawer for a dialog that takes over from it (search, the\n * command menu). That dialog returns focus itself, so the retiring drawer\n * must not reclaim it when its exit animation ends.\n */\n handOffDrawer: () => void;\n /** Navigate to a workspace's sessions index (used by the switchers). */\n openWorkspace: (workspaceId: string) => void;\n /** Switch organization: navigate to the first workspace in the target org. */\n openOrg: (accountId: string) => void;\n /** Open a specific session in the current workspace. */\n openSession: (sessionId: string) => void;\n /** Start a new session (the sessions index composer). */\n startNewSession: () => void;\n};\n\nconst RailContext = createContext<RailContextValue | null>(null);\n\nexport function useRail(): RailContextValue {\n const value = useContext(RailContext);\n if (!value) {\n throw new Error(\"Rail context is not ready\");\n }\n return value;\n}\n\nfunction readStoredCollapsed(): boolean {\n if (typeof window === \"undefined\") {\n return false;\n }\n try {\n return window.localStorage.getItem(RAIL_COLLAPSED_KEY) === \"true\";\n } catch {\n return false;\n }\n}\n\nfunction readStoredWidth(): number {\n if (typeof window === \"undefined\") {\n return RAIL_DEFAULT_WIDTH;\n }\n try {\n const raw = window.localStorage.getItem(RAIL_WIDTH_KEY);\n return raw ? clampRailWidth(Number.parseInt(raw, 10)) : RAIL_DEFAULT_WIDTH;\n } catch {\n return RAIL_DEFAULT_WIDTH;\n }\n}\n\nexport function RailProvider({\n workspaceId,\n children,\n}: {\n workspaceId: string;\n children: ReactNode;\n}) {\n const windowEvents = useUiEventTarget(\"window\");\n const navigate = useNavigate();\n const router = useRouter();\n const appContext = useAppContext();\n const [searchOpen, setSearchOpen] = useState(false);\n const [searchMounted, setSearchMounted] = useState(false);\n // What to search for when the dialog opens from the ⌘K menu (\"Search messages for …\").\n const [searchSeed, setSearchSeed] = useState<{ query: string; nonce: number } | null>(null);\n const searchReturnFocus = useRef<HTMLElement | null>(null);\n const searchOpenRef = useRef(searchOpen);\n searchOpenRef.current = searchOpen;\n const drawerTriggerRef = useRef<HTMLButtonElement | null>(null);\n const suppressDrawerRestore = useRef(false);\n const [drawerOpen, setDrawerOpenState] = useState(false);\n const setDrawerOpen = useCallback((next: boolean) => {\n if (next) suppressDrawerRestore.current = false;\n setDrawerOpenState(next);\n }, []);\n const [isMobile, setIsMobile] = useState<boolean>(() =>\n typeof window !== \"undefined\" ? window.innerWidth < railDrawerBreakpoint : false,\n );\n const restoreDrawerFocus = useCallback(() => {\n // Search owns this close even if a result navigates before the drawer's\n // exit animation finishes. Do not let that retiring scope reclaim focus.\n if (suppressDrawerRestore.current) {\n suppressDrawerRestore.current = false;\n return;\n }\n if (!searchOpenRef.current) drawerTriggerRef.current?.focus({ preventScroll: true });\n }, []);\n const drawerOpenRef = useRef(drawerOpen);\n drawerOpenRef.current = drawerOpen;\n const handOffDrawer = useCallback(() => {\n if (!drawerOpenRef.current) return;\n suppressDrawerRestore.current = true;\n setDrawerOpenState(false);\n }, []);\n const changeSearchOpen = useCallback((next: boolean) => {\n searchOpenRef.current = next;\n setSearchOpen(next);\n }, []);\n useEffect(() => {\n const open = (event: Event) => {\n const detail = (\n event as CustomEvent<{\n workspaceId?: string | undefined;\n returnFocus?: HTMLElement | undefined;\n query?: string | undefined;\n }>\n ).detail;\n if (detail?.workspaceId !== workspaceId) return;\n if (!searchOpenRef.current) {\n searchReturnFocus.current = isMobile\n ? drawerTriggerRef.current\n : detail.returnFocus instanceof HTMLElement\n ? detail.returnFocus\n : document.activeElement instanceof HTMLElement\n ? document.activeElement\n : null;\n }\n if (typeof detail.query === \"string\" && detail.query) {\n const query = detail.query;\n setSearchSeed((current) => ({ query, nonce: (current?.nonce ?? 0) + 1 }));\n }\n setSearchMounted(true);\n changeSearchOpen(true);\n handOffDrawer();\n };\n windowEvents.addEventListener(OPEN_SESSION_SEARCH_EVENT, open);\n return () => windowEvents.removeEventListener(OPEN_SESSION_SEARCH_EVENT, open);\n }, [workspaceId, isMobile, changeSearchOpen, handOffDrawer, windowEvents]);\n useEffect(() => {\n searchReturnFocus.current = null;\n changeSearchOpen(false);\n }, [workspaceId, appContext.accessContext.subjectId, changeSearchOpen]);\n const [collapsed, setCollapsedState] = useState<boolean>(() => readStoredCollapsed());\n const [width, setWidthState] = useState<number>(() => readStoredWidth());\n\n useEffect(() => {\n if (typeof window === \"undefined\") {\n return;\n }\n const query = window.matchMedia(`(max-width: ${railDrawerBreakpoint - 1}px)`);\n const apply = () => setIsMobile(query.matches);\n apply();\n query.addEventListener(\"change\", apply);\n return () => query.removeEventListener(\"change\", apply);\n }, []);\n\n const setCollapsed = useCallback((next: boolean) => {\n setCollapsedState(next);\n try {\n window.localStorage.setItem(RAIL_COLLAPSED_KEY, String(next));\n } catch {\n // localStorage may be unavailable (private mode); keep the in-memory value.\n }\n }, []);\n\n const toggleCollapsed = useCallback(() => setCollapsed(!collapsed), [collapsed, setCollapsed]);\n\n const setWidth = useCallback((next: number) => {\n const clamped = clampRailWidth(next);\n setWidthState(clamped);\n try {\n window.localStorage.setItem(RAIL_WIDTH_KEY, String(clamped));\n } catch {\n // localStorage may be unavailable (private mode); keep the in-memory value.\n }\n }, []);\n\n const openWorkspace = useCallback(\n (nextWorkspaceId: string) => {\n appContext.resetSessionView();\n setDrawerOpen(false);\n // In settings, switching workspace keeps the same settings page.\n const current = router.state.location;\n const settings = workspaceManagementLocation(\n current.pathname,\n workspaceId,\n (current.search as { section?: unknown }).section,\n );\n if (settings?.kind === \"settings\") {\n void navigate({\n to: \"/workspaces/$workspaceId/settings\",\n params: { workspaceId: nextWorkspaceId },\n search: settings.section ? { section: settings.section } : {},\n });\n return;\n }\n if (settings?.kind === \"page\") {\n void navigate({ to: settings.target, params: { workspaceId: nextWorkspaceId } });\n return;\n }\n if (settings?.kind === \"organization\") {\n void navigate({\n to: \"/workspaces/$workspaceId/organization\",\n params: { workspaceId: nextWorkspaceId },\n search: settings.section ? { section: settings.section } : {},\n });\n return;\n }\n void navigate({\n to: \"/workspaces/$workspaceId/sessions\",\n params: { workspaceId: nextWorkspaceId },\n });\n },\n [appContext, navigate, router, workspaceId, setDrawerOpen],\n );\n\n const openOrg = useCallback(\n (accountId: string) => {\n const target = appContext.workspaces.find((workspace) => workspace.accountId === accountId);\n if (!target) {\n return;\n }\n appContext.resetSessionView();\n setDrawerOpen(false);\n void navigate({\n to: \"/workspaces/$workspaceId/sessions\",\n params: { workspaceId: target.id },\n });\n },\n [appContext, navigate, setDrawerOpen],\n );\n\n const openSession = useCallback(\n (sessionId: string) => {\n setDrawerOpen(false);\n void navigate({\n to: \"/workspaces/$workspaceId/sessions/$sessionId\",\n params: { workspaceId, sessionId },\n });\n },\n [navigate, workspaceId, setDrawerOpen],\n );\n\n const startNewSession = useCallback(() => {\n appContext.resetSessionView();\n setDrawerOpen(false);\n void navigate({ to: \"/workspaces/$workspaceId/sessions\", params: { workspaceId } }).then(() => {\n // Same-route: create composer stays mounted, so autoFocus will not re-run.\n requestCreateComposerFocus(windowEvents);\n });\n }, [appContext, navigate, workspaceId, setDrawerOpen, windowEvents]);\n\n // The desktop app's menu bar and shortcuts: New Session, Search Sessions,\n // Toggle Sidebar and Inbox act on this workspace.\n useEffect(() => {\n const bridge = desktopCapability(\"commands\");\n if (!bridge) return;\n return bridge.commands.onCommand((command) => {\n if (command === \"newSession\") startNewSession();\n else if (command === \"searchSessions\") requestCommandMenu(windowEvents);\n else if (command === \"toggleSidebar\") toggleCollapsed();\n else if (command === \"openInbox\") {\n setDrawerOpen(false);\n void navigate({ to: \"/workspaces/$workspaceId/inbox\", params: { workspaceId } });\n }\n });\n }, [navigate, setDrawerOpen, startNewSession, toggleCollapsed, windowEvents, workspaceId]);\n\n const value = useMemo<RailContextValue>(\n () => ({\n workspaceId,\n // The drawer always renders expanded content; collapse only applies to the\n // fixed desktop column.\n collapsed: isMobile ? false : collapsed,\n setCollapsed,\n toggleCollapsed,\n width,\n setWidth,\n isMobile,\n drawerOpen,\n setDrawerOpen,\n drawerTriggerRef,\n restoreDrawerFocus,\n handOffDrawer,\n openWorkspace,\n openOrg,\n openSession,\n startNewSession,\n }),\n [\n workspaceId,\n collapsed,\n width,\n setWidth,\n isMobile,\n drawerOpen,\n setDrawerOpen,\n restoreDrawerFocus,\n handOffDrawer,\n setCollapsed,\n toggleCollapsed,\n openWorkspace,\n openOrg,\n openSession,\n startNewSession,\n ],\n );\n\n return (\n <RailContext.Provider value={value}>\n {children}\n {searchMounted ? (\n <Suspense fallback={null}>\n <SessionSearchDialog\n key={`${appContext.accessContext.subjectId}:${workspaceId}`}\n workspaceId={workspaceId}\n open={searchOpen}\n onOpenChange={changeSearchOpen}\n returnFocus={searchReturnFocus}\n seed={searchSeed}\n />\n </Suspense>\n ) : null}\n </RailContext.Provider>\n );\n}\n","/** Page events that reach the action system from outside React's tree. */\n\n/** Opens the ⌘K menu (older desktop menu commands, buttons). Sent on the window target. */\nexport const OPEN_COMMAND_MENU_EVENT = \"opengeni:open-command-menu\";\n/** Asks the chat header to start renaming the chat on screen. Sent on the document target. */\nexport const RENAME_CURRENT_CHAT_EVENT = \"opengeni:rename-current-chat\";\n\nexport function requestCommandMenu(target: EventTarget): void {\n target.dispatchEvent(new Event(OPEN_COMMAND_MENU_EVENT));\n}\n"],"mappings":"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","names":[]}
|
|
@@ -8,31 +8,22 @@ import {
|
|
|
8
8
|
deviceVerificationUri,
|
|
9
9
|
installCommandFor
|
|
10
10
|
} from "./chunk-KV6GUPL2.js";
|
|
11
|
+
import {
|
|
12
|
+
Disclosure
|
|
13
|
+
} from "./chunk-S66SBBFQ.js";
|
|
11
14
|
import {
|
|
12
15
|
ChoiceCard,
|
|
13
16
|
ChoiceCards
|
|
14
|
-
} from "./chunk-
|
|
15
|
-
import {
|
|
16
|
-
Disclosure
|
|
17
|
-
} from "./chunk-QZRDCFHI.js";
|
|
17
|
+
} from "./chunk-YVBHGMKC.js";
|
|
18
18
|
import {
|
|
19
19
|
isMachineComputeSelectable
|
|
20
20
|
} from "./chunk-3O3ZUGMX.js";
|
|
21
|
-
import {
|
|
22
|
-
StatusBadge
|
|
23
|
-
} from "./chunk-EPCPGUIF.js";
|
|
24
|
-
import {
|
|
25
|
-
SegmentedControl
|
|
26
|
-
} from "./chunk-SWWYYGQO.js";
|
|
27
|
-
import {
|
|
28
|
-
LogoTile
|
|
29
|
-
} from "./chunk-FQQEZUSN.js";
|
|
30
21
|
import {
|
|
31
22
|
Switch
|
|
32
23
|
} from "./chunk-IZMUUUYD.js";
|
|
33
24
|
import {
|
|
34
|
-
|
|
35
|
-
} from "./chunk-
|
|
25
|
+
SegmentedControl
|
|
26
|
+
} from "./chunk-325C2TCI.js";
|
|
36
27
|
import {
|
|
37
28
|
Dialog,
|
|
38
29
|
DialogContent,
|
|
@@ -42,17 +33,26 @@ import {
|
|
|
42
33
|
DialogTitle
|
|
43
34
|
} from "./chunk-HZUL2CUH.js";
|
|
44
35
|
import {
|
|
45
|
-
|
|
46
|
-
} from "./chunk-
|
|
36
|
+
LogoTile
|
|
37
|
+
} from "./chunk-FQQEZUSN.js";
|
|
47
38
|
import {
|
|
48
|
-
|
|
49
|
-
} from "./chunk-
|
|
39
|
+
StatusBadge
|
|
40
|
+
} from "./chunk-EPCPGUIF.js";
|
|
41
|
+
import {
|
|
42
|
+
t
|
|
43
|
+
} from "./chunk-MAOCN7J6.js";
|
|
50
44
|
import {
|
|
51
45
|
useAppContext
|
|
52
46
|
} from "./chunk-W6KAUGXO.js";
|
|
47
|
+
import {
|
|
48
|
+
Notice
|
|
49
|
+
} from "./chunk-WLEDGIVS.js";
|
|
53
50
|
import {
|
|
54
51
|
Button
|
|
55
52
|
} from "./chunk-HMU5IELG.js";
|
|
53
|
+
import {
|
|
54
|
+
userErrorText
|
|
55
|
+
} from "./chunk-L4OF77LE.js";
|
|
56
56
|
import {
|
|
57
57
|
machineDisplayName,
|
|
58
58
|
machineScopeLabel
|
|
@@ -560,4 +560,4 @@ export {
|
|
|
560
560
|
formatConnectExpiry,
|
|
561
561
|
ConnectMachineDialog
|
|
562
562
|
};
|
|
563
|
-
//# sourceMappingURL=chunk-
|
|
563
|
+
//# sourceMappingURL=chunk-SGPJ3YS2.js.map
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
3
|
-
useMessageContextPills
|
|
4
|
-
} from "./chunk-IZUAIHR4.js";
|
|
5
2
|
import {
|
|
6
3
|
Tooltip,
|
|
7
4
|
TooltipContent,
|
|
8
5
|
TooltipProvider,
|
|
9
6
|
TooltipTrigger
|
|
10
7
|
} from "./chunk-OLTGED2Q.js";
|
|
8
|
+
import {
|
|
9
|
+
useMessageContextPills
|
|
10
|
+
} from "./chunk-IZUAIHR4.js";
|
|
11
11
|
import {
|
|
12
12
|
cn
|
|
13
13
|
} from "./chunk-TXS65BB2.js";
|
|
@@ -64,4 +64,4 @@ function MessageContextPills() {
|
|
|
64
64
|
export {
|
|
65
65
|
MessageContextPills
|
|
66
66
|
};
|
|
67
|
-
//# sourceMappingURL=chunk-
|
|
67
|
+
//# sourceMappingURL=chunk-SM5QX6UK.js.map
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
formatMoneyMicros
|
|
4
|
+
} from "./chunk-5TLEWXAB.js";
|
|
5
|
+
|
|
6
|
+
// src/app/lib/credit-coverage.tsx
|
|
7
|
+
import { modelDisplayName } from "@opengeni/sdk/model-display";
|
|
8
|
+
function modelListSummary(labels, { limit = 2 } = {}) {
|
|
9
|
+
if (labels.length === 0) return "";
|
|
10
|
+
if (labels.length <= limit + 1) {
|
|
11
|
+
if (labels.length === 1) return labels[0];
|
|
12
|
+
return `${labels.slice(0, -1).join(", ")} and ${labels.at(-1)}`;
|
|
13
|
+
}
|
|
14
|
+
return `${labels.slice(0, limit).join(", ")} and ${labels.length - limit} more`;
|
|
15
|
+
}
|
|
16
|
+
function coveredModelsSummary(eligibleModelIds) {
|
|
17
|
+
return modelListSummary(eligibleModelIds.map((id) => modelDisplayName(id)));
|
|
18
|
+
}
|
|
19
|
+
function creditBalanceSplit(balance) {
|
|
20
|
+
const scopedMicros = (balance.promotionalCredits ?? []).reduce(
|
|
21
|
+
(total, grant) => total + Math.max(0, grant.remainingMicros),
|
|
22
|
+
0
|
|
23
|
+
);
|
|
24
|
+
if (scopedMicros <= 0) return null;
|
|
25
|
+
const general = balance.generalBalanceMicros ?? balance.balanceMicros - scopedMicros;
|
|
26
|
+
return { generalMicros: Math.max(0, general), scopedMicros };
|
|
27
|
+
}
|
|
28
|
+
function creditBalanceSplitLabel(balance) {
|
|
29
|
+
const split = creditBalanceSplit(balance);
|
|
30
|
+
if (!split) return null;
|
|
31
|
+
return `${formatMoneyMicros(split.generalMicros, balance.currency)} for any model \xB7 ${formatMoneyMicros(split.scopedMicros, balance.currency)} for selected models`;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export {
|
|
35
|
+
modelListSummary,
|
|
36
|
+
coveredModelsSummary,
|
|
37
|
+
creditBalanceSplit,
|
|
38
|
+
creditBalanceSplitLabel
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=chunk-SWCLN6JE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/app/lib/credit-coverage.tsx"],"sourcesContent":["import { modelDisplayName } from \"@opengeni/sdk/model-display\";\nimport { formatMoneyMicros } from \"./format\";\nimport type { BillingSummary } from \"../types\";\n\n/**\n * Short, readable list of models: \"GPT-6 Sol, GPT-6 Luna and 3 more\". Labels\n * come from the caller (catalog rows) or the shared display-name table.\n */\nexport function modelListSummary(\n labels: readonly string[],\n { limit = 2 }: { limit?: number } = {},\n): string {\n if (labels.length === 0) return \"\";\n if (labels.length <= limit + 1) {\n if (labels.length === 1) return labels[0]!;\n return `${labels.slice(0, -1).join(\", \")} and ${labels.at(-1)!}`;\n }\n return `${labels.slice(0, limit).join(\", \")} and ${labels.length - limit} more`;\n}\n\n/** The models a scoped credit grant pays for, by display name. */\nexport function coveredModelsSummary(eligibleModelIds: readonly string[]): string {\n return modelListSummary(eligibleModelIds.map((id) => modelDisplayName(id)));\n}\n\n/**\n * Splits a balance into credit any credits-billed model can spend and credit\n * only some models can spend. The total alone overstates what an uncovered\n * model can use, so compact rows show both parts. Null without scoped credit.\n */\nexport function creditBalanceSplit(\n balance: BillingSummary[\"balance\"],\n): { generalMicros: number; scopedMicros: number } | null {\n const scopedMicros = (balance.promotionalCredits ?? []).reduce(\n (total, grant) => total + Math.max(0, grant.remainingMicros),\n 0,\n );\n if (scopedMicros <= 0) return null;\n const general = balance.generalBalanceMicros ?? balance.balanceMicros - scopedMicros;\n return { generalMicros: Math.max(0, general), scopedMicros };\n}\n\n/** \"$0.00 for any model · $100.00 for selected models\", or null without scoped credit. */\nexport function creditBalanceSplitLabel(balance: BillingSummary[\"balance\"]): string | null {\n const split = creditBalanceSplit(balance);\n if (!split) return null;\n return `${formatMoneyMicros(split.generalMicros, balance.currency)} for any model · ${formatMoneyMicros(split.scopedMicros, balance.currency)} for selected models`;\n}\n"],"mappings":";;;;;;AAAA,SAAS,wBAAwB;AAQ1B,SAAS,iBACd,QACA,EAAE,QAAQ,EAAE,IAAwB,CAAC,GAC7B;AACR,MAAI,OAAO,WAAW,EAAG,QAAO;AAChC,MAAI,OAAO,UAAU,QAAQ,GAAG;AAC9B,QAAI,OAAO,WAAW,EAAG,QAAO,OAAO,CAAC;AACxC,WAAO,GAAG,OAAO,MAAM,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,QAAQ,OAAO,GAAG,EAAE,CAAE;AAAA,EAChE;AACA,SAAO,GAAG,OAAO,MAAM,GAAG,KAAK,EAAE,KAAK,IAAI,CAAC,QAAQ,OAAO,SAAS,KAAK;AAC1E;AAGO,SAAS,qBAAqB,kBAA6C;AAChF,SAAO,iBAAiB,iBAAiB,IAAI,CAAC,OAAO,iBAAiB,EAAE,CAAC,CAAC;AAC5E;AAOO,SAAS,mBACd,SACwD;AACxD,QAAM,gBAAgB,QAAQ,sBAAsB,CAAC,GAAG;AAAA,IACtD,CAAC,OAAO,UAAU,QAAQ,KAAK,IAAI,GAAG,MAAM,eAAe;AAAA,IAC3D;AAAA,EACF;AACA,MAAI,gBAAgB,EAAG,QAAO;AAC9B,QAAM,UAAU,QAAQ,wBAAwB,QAAQ,gBAAgB;AACxE,SAAO,EAAE,eAAe,KAAK,IAAI,GAAG,OAAO,GAAG,aAAa;AAC7D;AAGO,SAAS,wBAAwB,SAAmD;AACzF,QAAM,QAAQ,mBAAmB,OAAO;AACxC,MAAI,CAAC,MAAO,QAAO;AACnB,SAAO,GAAG,kBAAkB,MAAM,eAAe,QAAQ,QAAQ,CAAC,uBAAoB,kBAAkB,MAAM,cAAc,QAAQ,QAAQ,CAAC;AAC/I;","names":[]}
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
isCreditExhaustion,
|
|
9
9
|
presentFailure,
|
|
10
10
|
tryParseJson
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-MK54JLE4.js";
|
|
12
12
|
|
|
13
13
|
// src/timeline/projection.ts
|
|
14
14
|
import {
|
|
@@ -567,6 +567,8 @@ function timelineAnnotationToolOutputText(output) {
|
|
|
567
567
|
}
|
|
568
568
|
function buildTimeline(t, events, options = {}) {
|
|
569
569
|
const items = [];
|
|
570
|
+
const toolCallsById = /* @__PURE__ */ new Map();
|
|
571
|
+
const callsById = /* @__PURE__ */ new Map();
|
|
570
572
|
const allowanceNotices = /* @__PURE__ */ new Set();
|
|
571
573
|
const learningRefusalNotices = /* @__PURE__ */ new Set();
|
|
572
574
|
const allowanceNotice = (event, turnId) => {
|
|
@@ -1059,7 +1061,7 @@ function buildTimeline(t, events, options = {}) {
|
|
|
1059
1061
|
if (toolMatchesLeaf(name, WORKER_SPAWN_TOOL) || toolMatchesLeaf(name, WORKER_MESSAGE_TOOL)) {
|
|
1060
1062
|
const spawn = toolMatchesLeaf(name, WORKER_SPAWN_TOOL);
|
|
1061
1063
|
const title = spawn ? workerTitle(args) : null;
|
|
1062
|
-
|
|
1064
|
+
const item2 = {
|
|
1063
1065
|
kind: "worker",
|
|
1064
1066
|
id: event.id,
|
|
1065
1067
|
turnId,
|
|
@@ -1071,16 +1073,16 @@ function buildTimeline(t, events, options = {}) {
|
|
|
1071
1073
|
failure: null,
|
|
1072
1074
|
status: "running",
|
|
1073
1075
|
occurredAt: event.occurredAt
|
|
1074
|
-
}
|
|
1076
|
+
};
|
|
1077
|
+
items.push(item2);
|
|
1078
|
+
if (callId) callsById.set(callId, item2);
|
|
1075
1079
|
break;
|
|
1076
1080
|
}
|
|
1077
1081
|
if (LANDMARK_ONLY_TOOL_LEAVES.has(mcpToolLeaf(name))) {
|
|
1078
1082
|
break;
|
|
1079
1083
|
}
|
|
1080
1084
|
if (callId) {
|
|
1081
|
-
const existing =
|
|
1082
|
-
(item) => item.kind === "tool-call" && item.callId === callId
|
|
1083
|
-
);
|
|
1085
|
+
const existing = toolCallsById.get(callId);
|
|
1084
1086
|
if (existing) {
|
|
1085
1087
|
if (display) existing.display = display;
|
|
1086
1088
|
if (args != null) {
|
|
@@ -1093,7 +1095,7 @@ function buildTimeline(t, events, options = {}) {
|
|
|
1093
1095
|
break;
|
|
1094
1096
|
}
|
|
1095
1097
|
}
|
|
1096
|
-
|
|
1098
|
+
const item = {
|
|
1097
1099
|
kind: "tool-call",
|
|
1098
1100
|
id: event.id,
|
|
1099
1101
|
turnId,
|
|
@@ -1108,12 +1110,17 @@ function buildTimeline(t, events, options = {}) {
|
|
|
1108
1110
|
raw: payload.raw,
|
|
1109
1111
|
status: providerNativeToolStatus(payload.raw),
|
|
1110
1112
|
occurredAt: event.occurredAt
|
|
1111
|
-
}
|
|
1113
|
+
};
|
|
1114
|
+
items.push(item);
|
|
1115
|
+
if (callId) {
|
|
1116
|
+
toolCallsById.set(callId, item);
|
|
1117
|
+
callsById.set(callId, item);
|
|
1118
|
+
}
|
|
1112
1119
|
break;
|
|
1113
1120
|
}
|
|
1114
1121
|
case "agent.toolCall.output": {
|
|
1115
1122
|
const callId = typeof payload.id === "string" ? payload.id : null;
|
|
1116
|
-
const target = findOpenCall(items, callId);
|
|
1123
|
+
const target = findOpenCall(items, callId, callsById);
|
|
1117
1124
|
if (!target) {
|
|
1118
1125
|
break;
|
|
1119
1126
|
}
|
|
@@ -3082,19 +3089,17 @@ function toolCallTruncation(payload) {
|
|
|
3082
3089
|
}
|
|
3083
3090
|
};
|
|
3084
3091
|
}
|
|
3085
|
-
function findOpenCall(items, callId) {
|
|
3086
|
-
const reversed = [...items].reverse();
|
|
3087
|
-
const isCall = (item) => item.kind === "tool-call" || item.kind === "worker";
|
|
3092
|
+
function findOpenCall(items, callId, callsById) {
|
|
3088
3093
|
if (callId) {
|
|
3089
|
-
|
|
3090
|
-
|
|
3091
|
-
|
|
3094
|
+
return callsById.get(callId);
|
|
3095
|
+
}
|
|
3096
|
+
for (let index = items.length - 1; index >= 0; index -= 1) {
|
|
3097
|
+
const item = items[index];
|
|
3098
|
+
if ((item.kind === "tool-call" || item.kind === "worker") && item.status === "running") {
|
|
3099
|
+
return item;
|
|
3092
3100
|
}
|
|
3093
|
-
return void 0;
|
|
3094
3101
|
}
|
|
3095
|
-
return
|
|
3096
|
-
(item) => isCall(item) && item.status === "running"
|
|
3097
|
-
);
|
|
3102
|
+
return void 0;
|
|
3098
3103
|
}
|
|
3099
3104
|
function findOpenSandbox(items, name) {
|
|
3100
3105
|
return [...items].reverse().find(
|
|
@@ -3405,14 +3410,14 @@ function looksLikeId(value) {
|
|
|
3405
3410
|
}
|
|
3406
3411
|
|
|
3407
3412
|
export {
|
|
3408
|
-
learningRefusalTitle,
|
|
3409
|
-
learningRefusalBody,
|
|
3410
|
-
learningRefusalPlace,
|
|
3411
|
-
learningRefusalPlaceLabel,
|
|
3412
3413
|
compactionSkipTitle,
|
|
3413
3414
|
compactionSkipSubtitle,
|
|
3414
3415
|
compactionFailureDetails,
|
|
3415
3416
|
presentTurnFailureText,
|
|
3417
|
+
learningRefusalTitle,
|
|
3418
|
+
learningRefusalBody,
|
|
3419
|
+
learningRefusalPlace,
|
|
3420
|
+
learningRefusalPlaceLabel,
|
|
3416
3421
|
isToolOutputPreviewEvent,
|
|
3417
3422
|
useToolOutputReads,
|
|
3418
3423
|
isTimelineUserQuestion,
|
|
@@ -3424,4 +3429,4 @@ export {
|
|
|
3424
3429
|
isTurnExecutionEvidence,
|
|
3425
3430
|
extractSessionRef
|
|
3426
3431
|
};
|
|
3427
|
-
//# sourceMappingURL=chunk-
|
|
3432
|
+
//# sourceMappingURL=chunk-T4F5TW2X.js.map
|