@opengeni/react 6.8.0 → 6.8.1-canary.41842879332001
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 +8 -8
- package/dist/app/components/Composer.js +18 -18
- package/dist/app/components/agent/agent-capability-picker.js +6 -6
- package/dist/app/components/artifacts/artifact-library.js +6 -6
- package/dist/app/components/artifacts/artifact-viewer.js +18 -18
- package/dist/app/components/artifacts/chat-interactive-block.js +11 -11
- package/dist/app/components/artifacts/file-reach-dialog.js +6 -6
- package/dist/app/components/artifacts/inline-chat-image.js +19 -19
- package/dist/app/components/artifacts/retained-file-preview.js +20 -20
- package/dist/app/components/artifacts/retained-text-preview.js +3 -3
- package/dist/app/components/artifacts/site-audience.js +3 -3
- package/dist/app/components/artifacts/site-conversations.js +9 -9
- package/dist/app/components/artifacts/site-data.js +10 -10
- package/dist/app/components/artifacts/site-publishing-page.js +25 -25
- package/dist/app/components/artifacts/site-publishing.js +22 -22
- package/dist/app/components/artifacts/site-settings.js +24 -24
- package/dist/app/components/artifacts/site-version-menu.js +3 -3
- package/dist/app/components/billing-class-mark.js +3 -3
- package/dist/app/components/bots/bot-launch-strip.js +20 -20
- package/dist/app/components/bots/bot-template-dialog.js +26 -26
- package/dist/app/components/bots/bot-template-shortcuts.js +20 -20
- package/dist/app/components/bots/bot-templates-page.js +30 -30
- package/dist/app/components/capabilities/capability-detail-sheet.js +6 -6
- package/dist/app/components/capabilities/capability-logo-source.js +13 -13
- package/dist/app/components/capabilities/connector-tool-permissions.js +4 -4
- package/dist/app/components/capabilities/native-connect-setup.js +13 -13
- package/dist/app/components/capabilities/own-logins-shared-heads-up.js +3 -3
- package/dist/app/components/capabilities/prepared-mcp-setup-card.js +15 -15
- package/dist/app/components/capabilities/session-capability-card.js +47 -47
- package/dist/app/components/capabilities/session-chrome-card.js +20 -20
- package/dist/app/components/capabilities/session-custom-mcp-card.js +16 -16
- package/dist/app/components/capabilities/session-github-card.js +16 -16
- package/dist/app/components/capabilities/session-machine-card.js +19 -19
- package/dist/app/components/capabilities/session-personal-github-card.js +14 -14
- package/dist/app/components/capabilities/session-plugin-card.js +8 -8
- package/dist/app/components/command-menu/chat-status.js +15 -15
- package/dist/app/components/command-menu/chat-switcher.js +32 -32
- package/dist/app/components/command-menu/command-menu.js +36 -36
- package/dist/app/components/command-menu/shortcut-sheet.js +8 -8
- package/dist/app/components/composer-capabilities-menu-body.js +4 -4
- package/dist/app/components/composer-mobile-plus-panel.js +8 -8
- package/dist/app/components/composer-mobile-plus.js +1 -1
- package/dist/app/components/credit-required-gate.js +1 -1
- package/dist/app/components/credit-required-prompt.js +3 -3
- package/dist/app/components/desktop/app-shots.js +6 -6
- package/dist/app/components/desktop/computer-use.js +2 -2
- package/dist/app/components/desktop/this-computer.js +5 -5
- package/dist/app/components/feedback.js +3 -3
- package/dist/app/components/github-app-connect-launcher.js +1 -1
- package/dist/app/components/machines/connect-machine-dialog.js +11 -11
- package/dist/app/components/markdown.js +6 -6
- package/dist/app/components/models/models-ui.js +5 -5
- package/dist/app/components/my-things.js +4 -4
- package/dist/app/components/own-where-it-works.js +3 -3
- package/dist/app/components/personal-resource-attachment-surface.js +4 -4
- package/dist/app/components/pickers.js +5 -5
- package/dist/app/components/rail/channel-create-dialog.js +3 -3
- package/dist/app/components/rail/project-glyph.js +20 -20
- package/dist/app/components/rail/project-profile.js +27 -27
- package/dist/app/components/rail/rail-context.js +1 -1
- package/dist/app/components/rail/rail-sections.js +55 -55
- package/dist/app/components/rail/session-header.js +47 -47
- package/dist/app/components/rail/session-list.js +53 -53
- package/dist/app/components/rail/session-row-content.js +4 -4
- package/dist/app/components/rail/session-row-hover-details.js +14 -14
- package/dist/app/components/rail/session-shell.js +73 -73
- package/dist/app/components/rail/site-session-group-heading.js +8 -8
- package/dist/app/components/session/agent-configuration-panel.js +12 -12
- package/dist/app/components/session/banners.js +8 -8
- package/dist/app/components/session/console-new-conversation.js +39 -39
- package/dist/app/components/session/descendant-requests.js +36 -36
- package/dist/app/components/session/editable-artifacts-workspace.js +16 -16
- package/dist/app/components/session/failed-session-banner.js +6 -6
- package/dist/app/components/session/failure-recovery-boundary.js +3 -3
- package/dist/app/components/session/human-input-delegation-record.js +2 -2
- package/dist/app/components/session/human-input.js +33 -33
- package/dist/app/components/session/inspector.js +43 -43
- package/dist/app/components/session/message-actions.js +3 -3
- package/dist/app/components/session/message-resource-attachments.js +10 -10
- package/dist/app/components/session/model-recovery-notice.js +3 -3
- package/dist/app/components/session/new-session-settings-menu.js +6 -6
- package/dist/app/components/session/new-session-setup-strip.js +21 -21
- package/dist/app/components/session/sandbox-recovery-actions.js +3 -3
- package/dist/app/components/session/sandbox-switcher.js +7 -7
- package/dist/app/components/session/sandbox-workspace.js +48 -48
- package/dist/app/components/session/search-markdown-highlight.js +7 -7
- package/dist/app/components/session/search-results-view.js +8 -8
- package/dist/app/components/session/session-admin-access.js +4 -4
- package/dist/app/components/session/session-admission-notice.js +4 -4
- package/dist/app/components/session/session-avatar-picker.js +21 -21
- package/dist/app/components/session/session-avatar.js +19 -19
- package/dist/app/components/session/session-machine-access-notice.js +4 -4
- package/dist/app/components/session/session-profile-dialog.js +25 -25
- package/dist/app/components/session/session-profile-editor.js +26 -26
- package/dist/app/components/session/session-retention.js +3 -3
- package/dist/app/components/session/session-search-dialog.js +8 -8
- package/dist/app/components/session/session-tenancy-control.js +2 -2
- package/dist/app/components/session/session-usage-limit-section.js +4 -4
- package/dist/app/components/session/share-chat-dialog.js +5 -5
- package/dist/app/components/session/subagents.js +8 -8
- package/dist/app/components/session/subscription-account-indicator.js +6 -6
- package/dist/app/components/settings/row-select.js +4 -4
- package/dist/app/components/transcription-settings.js +6 -6
- package/dist/app/components/ui/destructive-confirm.js +5 -5
- package/dist/app/components/usage/usage-entry.js +3 -3
- package/dist/app/components/window-bar.js +9 -9
- package/dist/app/components/workspace-composer-plus.js +16 -16
- package/dist/app/components/workspace-reach.js +4 -4
- package/dist/app/embed/session-app.js +156 -156
- package/dist/app/lib/actions/actions-provider.js +8 -8
- package/dist/app/lib/agent-capabilities.js +3 -3
- package/dist/app/lib/codex-usage-query.js +2 -2
- package/dist/app/lib/composer-connectors.js +14 -14
- package/dist/app/lib/console-site.js +2 -2
- package/dist/app/lib/console-text.js +2 -2
- package/dist/app/lib/events.js +12 -12
- package/dist/app/lib/failed-session-copy.js +3 -3
- package/dist/app/lib/model-access-onboarding.js +3 -3
- package/dist/app/lib/move-chat-to-machine.js +3 -3
- package/dist/app/lib/session-branch-cache.js +8 -8
- package/dist/app/lib/session-create.js +4 -4
- package/dist/app/lib/session-group-pagination.js +8 -8
- package/dist/app/lib/session-hover-facts.js +13 -13
- package/dist/app/lib/session-model.js +2 -2
- package/dist/app/lib/session-pins.js +1 -1
- package/dist/app/lib/session-rail.js +5 -5
- package/dist/app/lib/session-rename.js +3 -3
- package/dist/app/lib/sessions-group.d.ts +5 -3
- package/dist/app/lib/sessions-group.js +7 -7
- package/dist/app/lib/site-tool-consent-dialog.js +7 -7
- package/dist/app/lib/site-tool-consent.js +1 -1
- package/dist/app/lib/turn-failure-analytics.js +4 -4
- package/dist/app/lib/use-follow-up-repositories.js +3 -3
- package/dist/app/lib/use-workspace-machines.js +4 -4
- package/dist/app/lib/use-workspace-model-catalog.js +3 -3
- package/dist/app/lib/use-workspace-rigs.js +2 -2
- package/dist/app/lib/workspace-navigation-preference.js +4 -4
- package/dist/app/lib/workspace-scope-context.js +3 -3
- package/dist/app/routes/artifacts.js +48 -48
- package/dist/app/routes/retained-artifact.js +32 -32
- package/dist/app/routes/session.js +94 -94
- package/dist/app/routes/sessions-index-hydration.js +5 -5
- package/dist/app/routes/sessions-index.js +76 -76
- package/dist/app/routes/site-view.js +55 -55
- package/dist/artifacts-document.js +4 -4
- package/dist/artifacts-presentation.js +4 -4
- package/dist/artifacts-spreadsheet.js +4 -4
- package/dist/artifacts.js +10 -10
- package/dist/automations.js +10 -10
- package/dist/{browser-viewer-ZHQDVHZ2.js → browser-viewer-H7PKY67P.js} +4 -4
- package/dist/{chat-interactive-block-VSDD6X3M.js → chat-interactive-block-47TCT4DN.js} +5 -5
- package/dist/{chunk-7Z76QP64.js → chunk-2QH3Q6Z2.js} +35 -5
- package/dist/chunk-2QH3Q6Z2.js.map +1 -0
- package/dist/{chunk-5MHMCE2G.js → chunk-2X2B6D5G.js} +3 -3
- package/dist/{chunk-OCXEY7HE.js → chunk-3BUI5DT7.js} +2 -2
- package/dist/{chunk-OSJ366KR.js → chunk-3FWP3TD3.js} +29 -29
- package/dist/{chunk-PWUSSSSL.js → chunk-3G5IA36N.js} +2 -2
- package/dist/{chunk-RGR57NYY.js → chunk-3NK4JAHL.js} +2 -2
- package/dist/{chunk-XUOYNJPB.js → chunk-3O7UZRWM.js} +24 -24
- package/dist/{chunk-JV3UI7BH.js → chunk-3OR6HMA4.js} +3 -3
- package/dist/{chunk-MV2CLIO6.js → chunk-3PC45I5N.js} +6 -6
- package/dist/{chunk-SJYTQLN3.js → chunk-3PI2BYK5.js} +3 -3
- package/dist/{chunk-DCEQCGVN.js → chunk-3PNA2P2Z.js} +2 -2
- package/dist/{chunk-ESXAECZ3.js → chunk-3XBZKF3K.js} +2 -2
- package/dist/{chunk-SBXSKRFA.js → chunk-45OGYO3S.js} +3 -3
- package/dist/{chunk-M3FDGRB4.js → chunk-4A7TKVNX.js} +3 -3
- package/dist/{chunk-RHXYO4H2.js → chunk-4BXRGXTD.js} +2 -2
- package/dist/{chunk-CV4VVLPZ.js → chunk-4HQAJA3T.js} +2 -2
- package/dist/{chunk-VCJQQYRE.js → chunk-4X2A3KPB.js} +4 -4
- package/dist/{chunk-OCXTTKVA.js → chunk-555K37A7.js} +2 -2
- package/dist/{chunk-EBIVTDEG.js → chunk-57L5ZXDS.js} +2 -2
- package/dist/{chunk-3L465FBR.js → chunk-5IADORIV.js} +6 -6
- package/dist/{chunk-SK5S2PCK.js → chunk-5IZQT4TE.js} +14 -14
- package/dist/chunk-5IZQT4TE.js.map +1 -0
- package/dist/{chunk-ZW5YTIH3.js → chunk-5PB46DAA.js} +1 -1
- package/dist/{chunk-ZW5YTIH3.js.map → chunk-5PB46DAA.js.map} +1 -1
- package/dist/{chunk-PVB4YVDP.js → chunk-5Y2O2432.js} +2 -2
- package/dist/{chunk-OOOSGPJL.js → chunk-6572EFE4.js} +1 -1
- package/dist/{chunk-YMI27QPF.js → chunk-6BG5HCUP.js} +2 -2
- package/dist/{chunk-QRECBCJM.js → chunk-6EXFJWII.js} +2 -2
- package/dist/{chunk-74CBR5YE.js → chunk-6PNRUGOK.js} +2 -2
- package/dist/{chunk-PUUEI4W3.js → chunk-6RJEY6TC.js} +5 -5
- package/dist/{chunk-DLVIRJGK.js → chunk-727GL2YY.js} +2 -2
- package/dist/{chunk-J2BTILRR.js → chunk-7FGYLFW6.js} +2 -2
- package/dist/{chunk-MKDFYE2E.js → chunk-7IMWTFEG.js} +2 -2
- package/dist/{chunk-FER6EVIY.js → chunk-7POKH54R.js} +2 -2
- package/dist/{chunk-H6BX6WOW.js → chunk-7T26IH6W.js} +3 -3
- package/dist/{chunk-R33SBMB7.js → chunk-7XQRVZZQ.js} +3 -3
- package/dist/{chunk-NFCS5WYC.js → chunk-A3SPPXMC.js} +3 -3
- package/dist/{chunk-DQPIEQGP.js → chunk-A7CWPDEH.js} +2 -2
- package/dist/{chunk-3PM3M2Q6.js → chunk-AGOYVKTI.js} +2 -2
- package/dist/{chunk-OBGOLHCP.js → chunk-AIQKZUPB.js} +3 -3
- package/dist/{chunk-GSCGKJNK.js → chunk-AMYDHG3S.js} +2 -2
- package/dist/{chunk-U4LTPFD2.js → chunk-APJPB6TX.js} +2 -2
- package/dist/{chunk-SP44O3OU.js → chunk-APLGT5EI.js} +2 -2
- package/dist/{chunk-M3HGBO2Y.js → chunk-ATNKMGLO.js} +1 -1
- package/dist/{chunk-4O2XWOLZ.js → chunk-AVX4CZQ3.js} +3 -3
- package/dist/{chunk-CXAN2FHF.js → chunk-B46MK44K.js} +6 -6
- package/dist/{chunk-RMCLFSMX.js → chunk-BBKUPEGG.js} +2 -2
- package/dist/{chunk-J2WY42FA.js → chunk-BES6OQE3.js} +2 -2
- package/dist/{chunk-GU7T2S5N.js → chunk-BM2N26SH.js} +2 -2
- package/dist/{chunk-HEGV4QMS.js → chunk-C3NS74PZ.js} +2 -2
- package/dist/{chunk-752WXSDN.js → chunk-C56ABB5V.js} +2 -2
- package/dist/{chunk-77SYIH6O.js → chunk-C6MATJQ5.js} +2 -2
- package/dist/{chunk-KUE5BOQE.js → chunk-CRX47CO6.js} +4 -4
- package/dist/{chunk-QPQ7R77C.js → chunk-CUIV2XPO.js} +3 -1
- package/dist/chunk-CUIV2XPO.js.map +1 -0
- package/dist/{chunk-GTHCHCWW.js → chunk-D33KWZQJ.js} +3 -3
- package/dist/{chunk-AH3DGOTK.js → chunk-D7E3BSCX.js} +2 -2
- package/dist/{chunk-OJWDNNW3.js → chunk-DFR3TMTZ.js} +5 -5
- package/dist/{chunk-WYGTAQMX.js → chunk-DICC75CU.js} +2 -2
- package/dist/{chunk-736RUNIA.js → chunk-DJ2LMKKX.js} +4 -4
- package/dist/{chunk-4F3AEJI6.js → chunk-DJI4D7PM.js} +4 -4
- package/dist/{chunk-LVELUUK6.js → chunk-DSZUQL4W.js} +2 -2
- package/dist/{chunk-MT2R57SF.js → chunk-DVF246BE.js} +2 -2
- package/dist/{chunk-OI6VI6SU.js → chunk-DVOWBHWN.js} +8 -8
- package/dist/{chunk-PZKHST7A.js → chunk-E2KPRSA4.js} +2 -2
- package/dist/{chunk-EKJHOWTZ.js → chunk-E3LMLWEB.js} +4 -4
- package/dist/{chunk-QURYQFDN.js → chunk-EDC7X7PW.js} +2 -2
- package/dist/{chunk-HYEIA25Y.js → chunk-EDSMULHU.js} +2 -2
- package/dist/{chunk-U6552Q3T.js → chunk-EQQOZ6DD.js} +2 -2
- package/dist/{chunk-IFSXVU2S.js → chunk-ERBDQ2GY.js} +2 -2
- package/dist/{chunk-IZXYFWA4.js → chunk-EWI73URG.js} +13 -13
- package/dist/{chunk-N3FM4BNA.js → chunk-EZ6LFN33.js} +2 -2
- package/dist/{chunk-4K64EKM7.js → chunk-F7YL6DPR.js} +4 -4
- package/dist/{chunk-ICAMYP5M.js → chunk-FIGFXMUP.js} +2 -2
- package/dist/{chunk-54U6ZBEX.js → chunk-FJRJK67G.js} +3 -3
- package/dist/{chunk-E5KOWRDU.js → chunk-FLHB2NZT.js} +2 -2
- package/dist/{chunk-OWET7EY2.js → chunk-FRSZSL2S.js} +19 -13
- package/dist/{chunk-OWET7EY2.js.map → chunk-FRSZSL2S.js.map} +1 -1
- package/dist/{chunk-D3PTVN2I.js → chunk-FUGGM76A.js} +2 -2
- package/dist/{chunk-QQIZMVAJ.js → chunk-FWLLGNGP.js} +51 -49
- package/dist/chunk-FWLLGNGP.js.map +1 -0
- package/dist/{chunk-TDTD66BK.js → chunk-FXPZAZYT.js} +2 -2
- package/dist/{chunk-KO3OHHY2.js → chunk-GAGAM4MT.js} +2 -2
- package/dist/{chunk-TK5FWVZR.js → chunk-GESGH3HY.js} +3 -3
- package/dist/{chunk-2VJOSU4H.js → chunk-GI4PWKXI.js} +2 -2
- package/dist/{chunk-KFNZZ2N6.js → chunk-GJTEBAZ7.js} +2 -2
- package/dist/{chunk-LTJFV2JI.js → chunk-GNCGEW7F.js} +2 -2
- package/dist/{chunk-34NV52R3.js → chunk-GOMUNPB6.js} +4 -4
- package/dist/{chunk-7YTR3UFO.js → chunk-GPWE5UD7.js} +8 -5
- package/dist/chunk-GPWE5UD7.js.map +1 -0
- package/dist/{chunk-LIJNVIT3.js → chunk-GUMUILEI.js} +3 -3
- package/dist/{chunk-7NLF35YL.js → chunk-GVGNHBFT.js} +4 -4
- package/dist/{chunk-K3D7IQQP.js → chunk-GW4YI3FB.js} +6 -6
- package/dist/{chunk-D5TIVCXG.js → chunk-GXKCV7X7.js} +2 -2
- package/dist/{chunk-2J77TWGH.js → chunk-H467EQA6.js} +3 -3
- package/dist/{chunk-3OK7Y6ES.js → chunk-HE77VDDR.js} +2 -2
- package/dist/{chunk-UO35OEOX.js → chunk-HT65RGCX.js} +3 -3
- package/dist/{chunk-G6ICCGJ3.js → chunk-HVQSFTE7.js} +2 -2
- package/dist/{chunk-G5UQBTXY.js → chunk-HXJPDC76.js} +2 -2
- package/dist/{chunk-GIWFLWXG.js → chunk-I6LQW24C.js} +4 -4
- package/dist/{chunk-467WDSOK.js → chunk-I7A6S5YL.js} +2 -2
- package/dist/{chunk-AAS7OWV6.js → chunk-IADS4ZYD.js} +3 -3
- package/dist/{chunk-Y3XZEKDQ.js → chunk-IJWMWCGR.js} +2 -2
- package/dist/{chunk-SGH7I7OY.js → chunk-IWFO6KOU.js} +2 -2
- package/dist/{chunk-GMHIOYB7.js → chunk-IYC6QGV2.js} +4 -4
- package/dist/{chunk-2OXSB2OL.js → chunk-J2TZIFRC.js} +3 -2
- package/dist/chunk-J2TZIFRC.js.map +1 -0
- package/dist/{chunk-3NNAC43A.js → chunk-J5AODKJO.js} +2 -2
- package/dist/{chunk-DIP7YALH.js → chunk-JKI3LMLH.js} +2 -2
- package/dist/{chunk-IJR6VOLU.js → chunk-JSYRWOCE.js} +2 -2
- package/dist/{chunk-CEMSIU4Z.js → chunk-JTQTWO4D.js} +5 -5
- package/dist/{chunk-JHZRAYI4.js → chunk-JWSRFXRN.js} +2 -2
- package/dist/chunk-JWSRFXRN.js.map +1 -0
- package/dist/{chunk-BASI553K.js → chunk-KBTKAAHM.js} +4 -4
- package/dist/{chunk-OYOFPNLC.js → chunk-KD7VEMWY.js} +4 -4
- package/dist/{chunk-3DRLCX5V.js → chunk-KPGFGRSA.js} +2 -2
- package/dist/{chunk-PLYVGZIN.js → chunk-KWFDEJFI.js} +1 -1
- package/dist/{chunk-FNXCFIPW.js → chunk-KYLEH4OF.js} +2 -2
- package/dist/{chunk-WXF2RTS4.js → chunk-L7FJTFJN.js} +2 -2
- package/dist/{chunk-KI46GKMD.js → chunk-L7VVQOSY.js} +7 -7
- package/dist/{chunk-M5IQVMLR.js → chunk-LAZ2QZTJ.js} +11 -4
- package/dist/chunk-LAZ2QZTJ.js.map +1 -0
- package/dist/chunk-LKLQVANM.js +2 -0
- package/dist/{chunk-YNTLWCF4.js → chunk-LLYEAZ4E.js} +3 -3
- package/dist/{chunk-4Z5X7PLC.js → chunk-LWM7JUW6.js} +3 -3
- package/dist/{chunk-CHU3RDV4.js → chunk-LXKV4ND3.js} +3 -3
- package/dist/{chunk-AB5IW227.js → chunk-LYLICEQO.js} +3 -3
- package/dist/{chunk-PSM3CU7N.js → chunk-M3OZOCIK.js} +46 -39
- package/dist/chunk-M3OZOCIK.js.map +1 -0
- package/dist/{chunk-OTW25A6I.js → chunk-M5GRI5K4.js} +3 -3
- package/dist/{chunk-X2QJXDE4.js → chunk-MF65PKKF.js} +8 -8
- package/dist/{chunk-EDDKPIIV.js → chunk-MJ4XIOPM.js} +2 -2
- package/dist/{chunk-FLWQJDJ5.js → chunk-MMPJJQG3.js} +6 -6
- package/dist/{chunk-T67LTMSW.js → chunk-MOU54FGD.js} +10 -10
- package/dist/{chunk-LQKVNREV.js → chunk-NAWHQ4IL.js} +3 -3
- package/dist/{chunk-ZBHGNE2J.js → chunk-NBHBB2VV.js} +3 -3
- package/dist/{chunk-PF2WU2IL.js → chunk-ND4IQJUM.js} +120 -17
- package/dist/chunk-ND4IQJUM.js.map +1 -0
- package/dist/{chunk-U5UGM5XD.js → chunk-NMOZDAEZ.js} +5 -5
- package/dist/{chunk-D74Z2N4K.js → chunk-NZA4R3BE.js} +2 -2
- package/dist/{chunk-WRMUXZ7C.js → chunk-OB2CX7PJ.js} +3 -3
- package/dist/{chunk-YJSCLGAW.js → chunk-OB4I4OIT.js} +3 -3
- package/dist/{chunk-DWJ6J3YW.js → chunk-OKQW2FPL.js} +4 -4
- package/dist/{chunk-2GCHGWNE.js → chunk-ORLX6A3C.js} +3 -3
- package/dist/{chunk-EBTUPRRQ.js → chunk-P5N4EYFW.js} +4 -4
- package/dist/{chunk-JKL5S7UQ.js → chunk-PL4JE3NI.js} +6 -6
- package/dist/{chunk-OP2GD6QW.js → chunk-PNUHKDY2.js} +2 -2
- package/dist/{chunk-MZY3VKKM.js → chunk-PWJE7D6V.js} +2 -2
- package/dist/{chunk-RISUROBM.js → chunk-PYE27I6J.js} +4 -4
- package/dist/{chunk-SPD4ULVB.js → chunk-PYMROAWS.js} +2 -1
- package/dist/chunk-PYMROAWS.js.map +1 -0
- package/dist/{chunk-Q5K2J5GG.js → chunk-Q74FQK3A.js} +13 -3
- package/dist/chunk-Q74FQK3A.js.map +1 -0
- package/dist/{chunk-R5QAL43H.js → chunk-QIJHK6P4.js} +2 -2
- package/dist/{chunk-AJBDAVX3.js → chunk-QK3A23NP.js} +7 -7
- package/dist/{chunk-CYDXCILL.js → chunk-QLWDNAOV.js} +7 -7
- package/dist/{chunk-BQYRZIZ7.js → chunk-QS6DQBVJ.js} +2 -2
- package/dist/{chunk-3PZ3LRPV.js → chunk-QSUVFPG3.js} +3 -3
- package/dist/{chunk-PYB4BFEC.js → chunk-QUC5MLTN.js} +3 -3
- package/dist/{chunk-WDASYY4S.js → chunk-QVT5AWPI.js} +6 -6
- package/dist/{chunk-K4DQS2ML.js → chunk-QZC6WCBR.js} +4 -4
- package/dist/{chunk-HWVPLFIW.js → chunk-RAHNICPP.js} +2 -2
- package/dist/{chunk-H6MJFMHZ.js → chunk-RME6RGIW.js} +3 -3
- package/dist/{chunk-XMBOLFFS.js → chunk-RQIB2F53.js} +2 -2
- package/dist/{chunk-OXQ2SXVC.js → chunk-RUA72NQY.js} +2 -2
- package/dist/{chunk-UMX6DZME.js → chunk-SCJHWN4X.js} +2 -2
- package/dist/{chunk-HTMQGS63.js → chunk-SIXBDT5F.js} +8 -8
- package/dist/{chunk-ZAX4XQLN.js → chunk-SPK3T4JK.js} +2 -2
- package/dist/{chunk-WTSQUCHB.js → chunk-SSN2YSST.js} +3 -3
- package/dist/{chunk-5MIBQ4P5.js → chunk-SYJCDX5V.js} +2 -2
- package/dist/{chunk-NQ2CPQJF.js → chunk-SYL7LCRA.js} +26 -3
- package/dist/chunk-SYL7LCRA.js.map +1 -0
- package/dist/{chunk-ZR5EKJT6.js → chunk-T6276OXI.js} +2 -2
- package/dist/{chunk-DEHLWZSI.js → chunk-T7OARG4N.js} +4 -4
- package/dist/{chunk-77BHKC43.js → chunk-TF5L3BEV.js} +1 -1
- package/dist/{chunk-GOCODNQS.js → chunk-TF6Z7BOP.js} +2 -2
- package/dist/{chunk-WIFDNUKD.js → chunk-TJDXWZMO.js} +3 -3
- package/dist/{chunk-SFIXTOOJ.js → chunk-TL5ATBHZ.js} +3 -3
- package/dist/{chunk-XZCCEKPW.js → chunk-TMOHIOMT.js} +6 -6
- package/dist/{chunk-AVXDIRRW.js → chunk-UI5X63YC.js} +2 -2
- package/dist/{chunk-6QK65ZWM.js → chunk-UIY7BDZC.js} +3 -3
- package/dist/{chunk-VATYK3JQ.js → chunk-UMBFMEO7.js} +3 -3
- package/dist/{chunk-UU5FBVRX.js → chunk-UU5G7OA4.js} +2 -2
- package/dist/{chunk-EGKARC53.js → chunk-UZUCYCF4.js} +2 -2
- package/dist/{chunk-LPKJ77EK.js → chunk-V2A7G7S7.js} +2 -2
- package/dist/{chunk-CH4UQ4NO.js → chunk-V5G4TKRC.js} +5 -5
- package/dist/{chunk-UBRQ3PQD.js → chunk-VKAVW34W.js} +2 -2
- package/dist/{chunk-JV5ULONH.js → chunk-VVLEVNTQ.js} +36 -36
- package/dist/{chunk-44JWVYJB.js → chunk-VW7X7TWZ.js} +2 -2
- package/dist/{chunk-3CDJSKDW.js → chunk-VWA2CHSL.js} +3 -3
- package/dist/{chunk-IN3VQFKS.js → chunk-W43HZPM7.js} +2 -2
- package/dist/{chunk-SXGJL7UT.js → chunk-WHGD7Q2L.js} +14 -14
- package/dist/{chunk-XOIDUM2H.js → chunk-WNXKYEVN.js} +1 -1
- package/dist/{chunk-TKQL7EDB.js → chunk-WSA7UBX4.js} +2 -2
- package/dist/{chunk-AJDGP2N4.js → chunk-WZ5TQJ3T.js} +19 -19
- package/dist/{chunk-FBA2NXYH.js → chunk-X3TGNSOG.js} +3 -3
- package/dist/{chunk-R4JA5JFI.js → chunk-X4WXYI3N.js} +3 -3
- package/dist/{chunk-Q5EZNBPI.js → chunk-XIQ3AIAJ.js} +3 -3
- package/dist/{chunk-S27VZ5DO.js → chunk-XWYT4LEL.js} +6 -6
- package/dist/{chunk-477DTTMH.js → chunk-Y3PU75OC.js} +3 -3
- package/dist/{chunk-4JXPLTWV.js → chunk-Y5ZWX5YS.js} +2 -2
- package/dist/{chunk-4BWMAGJJ.js → chunk-YA5PABND.js} +3 -3
- package/dist/{chunk-VXORMNU4.js → chunk-YBHAAULA.js} +67 -2
- package/dist/chunk-YBHAAULA.js.map +1 -0
- package/dist/{chunk-OGU73VUN.js → chunk-YBPRR2QS.js} +2 -2
- package/dist/{chunk-TNSJFZ6Q.js → chunk-YDYR7XQE.js} +4 -4
- package/dist/{chunk-GTRAH4FG.js → chunk-YG6V2LQH.js} +2 -2
- package/dist/{chunk-XVLEBB4Y.js → chunk-YUXA7ALE.js} +2 -2
- package/dist/{chunk-SN2WENRP.js → chunk-YWHQDXPB.js} +3 -3
- package/dist/{chunk-BFFNINCC.js → chunk-YWRR5R7B.js} +3 -3
- package/dist/{chunk-FSDQQQIA.js → chunk-YYRK7A4N.js} +3 -3
- package/dist/{chunk-MRECRNVU.js → chunk-Z26CDLUV.js} +5 -5
- package/dist/{chunk-OYCK4JRS.js → chunk-Z27EXLMQ.js} +2 -2
- package/dist/{chunk-UTRNLNCW.js → chunk-Z7GDH7W2.js} +3 -3
- package/dist/{chunk-PRT4J2DL.js → chunk-ZGVLSAWL.js} +2 -2
- package/dist/{chunk-OK7BQMCI.js → chunk-ZM6Q5NQN.js} +9 -9
- package/dist/components/message-timeline.d.ts +10 -2
- package/dist/composer.js +8 -8
- package/dist/{computer-viewer-5LKRCEVQ.js → computer-viewer-SROXREYD.js} +5 -5
- package/dist/connect.js +12 -12
- package/dist/desktop-dictation.js +8 -8
- package/dist/desktop.js +2 -2
- package/dist/editor.js +2 -2
- package/dist/{embedded-new-voice-GHJRY3YL.js → embedded-new-voice-EIQY2VBF.js} +5 -5
- package/dist/{embedded-voice-ASQXBSTX.js → embedded-voice-LMWNH7F7.js} +5 -5
- package/dist/{fleet-decision-row-U7LDVBEM.js → fleet-decision-row-X2G56ZRA.js} +2 -2
- package/dist/hooks/use-recordings.d.ts +4 -2
- package/dist/in-chat-connect-model.js +5 -5
- package/dist/index.d.ts +2 -2
- package/dist/index.js +66 -60
- package/dist/interaction.js +5 -5
- package/dist/{latest-question-RNVF262Q.js → latest-question-KA7AQYVI.js} +2 -2
- package/dist/machines.js +3 -3
- package/dist/meetings/recorder-context.d.ts +6 -1
- package/dist/meetings/recorder-panel.d.ts +2 -5
- package/dist/meetings-recorder.js +1 -1
- package/dist/meetings.js +22 -21
- package/dist/meetings.js.map +1 -1
- package/dist/messages/en.d.ts +2 -0
- package/dist/messages.js +1 -1
- package/dist/{model-policy-picker-menu-E6XKMFTA.js → model-policy-picker-menu-SHWPT5VA.js} +4 -4
- package/dist/{payment-page-card-DJDKV2LW.js → payment-page-card-NNVUISN4.js} +4 -4
- package/dist/{platform-activity-row-MSDCSMET.js → platform-activity-row-7UDWSAHK.js} +2 -2
- package/dist/{queue-surface-implementation-GUAIG6TK.js → queue-surface-implementation-BUXSO24N.js} +5 -5
- package/dist/realtime.js +4 -4
- package/dist/{recorder-host-2MYDJPQW.js → recorder-host-POX54CFT.js} +5 -5
- package/dist/recordings.js +4 -4
- package/dist/{sandbox-files-W5W2LW4K.js → sandbox-files-33QD7DW2.js} +6 -6
- package/dist/session-app.js +156 -156
- package/dist/{session-connect-cards-HPH7JOZP.js → session-connect-cards-CXGNVA2A.js} +9 -9
- package/dist/session-list-model.js +2 -2
- package/dist/{session-realtime-SDTKFFIR.js → session-realtime-CVDSEULB.js} +3 -3
- package/dist/session-realtime.js +2 -2
- package/dist/session-ui.js +33 -33
- package/dist/session.d.ts +3 -2
- package/dist/session.js +16 -10
- package/dist/sites.js +2 -2
- package/dist/terminal.js +2 -2
- package/dist/this-computer.js +3 -3
- package/dist/timeline/index.d.ts +3 -2
- package/dist/timeline/projection.d.ts +52 -0
- package/dist/timeline/turn-summary-model.d.ts +4 -3
- package/dist/timeline/types.d.ts +8 -2
- package/dist/timeline/use-timeline-pauses.d.ts +12 -0
- package/dist/timeline/work-presentation.d.ts +4 -3
- package/dist/{timeline-annotation-markers-FNILLWNU.js → timeline-annotation-markers-5J5TM5IP.js} +2 -2
- package/dist/{timeline-annotation-selection-MBCIDO2Q.js → timeline-annotation-selection-WLY7FB7F.js} +2 -2
- package/dist/{timeline-annotations-dialog-JPNKLOTE.js → timeline-annotations-dialog-67VRFKJU.js} +3 -3
- package/dist/timeline-model.js +2 -2
- package/dist/ui/access-list.js +5 -5
- package/dist/ui/cadence-picker.js +4 -4
- package/dist/ui/choice-cards.js +3 -3
- package/dist/ui/confirm-dialog.js +2 -2
- package/dist/ui/copy-field.js +3 -3
- package/dist/ui/detail-page.js +2 -2
- package/dist/ui/detail-sheet.js +2 -2
- package/dist/ui/disclosure.js +3 -3
- package/dist/ui/email-chips-input.js +3 -3
- package/dist/ui/field.js +2 -2
- package/dist/ui/flush-form-page.js +3 -3
- package/dist/ui/form-dialog.js +2 -2
- package/dist/ui/list-row.js +3 -3
- package/dist/ui/relative-time.js +2 -2
- package/dist/ui/revision-history.js +4 -4
- package/dist/ui/role-select.js +5 -5
- package/dist/ui/select-menu.js +3 -3
- package/dist/ui/usage-meter.js +3 -3
- package/dist/usage.js +2 -2
- package/dist/workbench.js +4 -4
- package/package.json +6 -5
- package/src/app/components/rail/session-row-content.tsx +27 -0
- package/src/app/lib/session-branch-cache.tsx +1 -0
- package/src/app/lib/session-pins.tsx +1 -0
- package/src/app/lib/session-row-paused.test.tsx +183 -0
- package/src/app/lib/sessions-group-channels.test.ts +4 -4
- package/src/app/lib/sessions-group.tsx +62 -4
- package/src/app/routes/session.tsx +2 -0
- package/src/components/message-timeline.tsx +14 -2
- package/src/components/session-conversation.tsx +2 -1
- package/src/components/timeline-annotations.tsx +4 -1
- package/src/components/timeline-settlement.ts +1 -1
- package/src/hooks/use-recordings.ts +5 -0
- package/src/index.ts +5 -0
- package/src/meetings/recorder-context.tsx +28 -5
- package/src/meetings/recorder-panel.tsx +13 -5
- package/src/meetings/recorder-workspace.test.tsx +57 -8
- package/src/messages/en.ts +2 -0
- package/src/session.ts +8 -1
- package/src/timeline/index.ts +4 -1
- package/src/timeline/projection.ts +228 -16
- package/src/timeline/turn-summary-model.ts +4 -3
- package/src/timeline/turn-summary.tsx +15 -2
- package/src/timeline/types.ts +8 -2
- package/src/timeline/use-timeline-pauses.ts +105 -0
- package/src/timeline/work-presentation.ts +13 -4
- package/dist/chunk-2OXSB2OL.js.map +0 -1
- package/dist/chunk-7YTR3UFO.js.map +0 -1
- package/dist/chunk-7Z76QP64.js.map +0 -1
- package/dist/chunk-JHZRAYI4.js.map +0 -1
- package/dist/chunk-M5IQVMLR.js.map +0 -1
- package/dist/chunk-NQ2CPQJF.js.map +0 -1
- package/dist/chunk-O2UPPN5M.js +0 -2
- package/dist/chunk-PF2WU2IL.js.map +0 -1
- package/dist/chunk-PSM3CU7N.js.map +0 -1
- package/dist/chunk-Q5K2J5GG.js.map +0 -1
- package/dist/chunk-QPQ7R77C.js.map +0 -1
- package/dist/chunk-QQIZMVAJ.js.map +0 -1
- package/dist/chunk-SK5S2PCK.js.map +0 -1
- package/dist/chunk-SPD4ULVB.js.map +0 -1
- package/dist/chunk-VXORMNU4.js.map +0 -1
- /package/dist/{browser-viewer-ZHQDVHZ2.js.map → browser-viewer-H7PKY67P.js.map} +0 -0
- /package/dist/{chat-interactive-block-VSDD6X3M.js.map → chat-interactive-block-47TCT4DN.js.map} +0 -0
- /package/dist/{chunk-5MHMCE2G.js.map → chunk-2X2B6D5G.js.map} +0 -0
- /package/dist/{chunk-OCXEY7HE.js.map → chunk-3BUI5DT7.js.map} +0 -0
- /package/dist/{chunk-OSJ366KR.js.map → chunk-3FWP3TD3.js.map} +0 -0
- /package/dist/{chunk-PWUSSSSL.js.map → chunk-3G5IA36N.js.map} +0 -0
- /package/dist/{chunk-RGR57NYY.js.map → chunk-3NK4JAHL.js.map} +0 -0
- /package/dist/{chunk-XUOYNJPB.js.map → chunk-3O7UZRWM.js.map} +0 -0
- /package/dist/{chunk-JV3UI7BH.js.map → chunk-3OR6HMA4.js.map} +0 -0
- /package/dist/{chunk-MV2CLIO6.js.map → chunk-3PC45I5N.js.map} +0 -0
- /package/dist/{chunk-SJYTQLN3.js.map → chunk-3PI2BYK5.js.map} +0 -0
- /package/dist/{chunk-DCEQCGVN.js.map → chunk-3PNA2P2Z.js.map} +0 -0
- /package/dist/{chunk-ESXAECZ3.js.map → chunk-3XBZKF3K.js.map} +0 -0
- /package/dist/{chunk-SBXSKRFA.js.map → chunk-45OGYO3S.js.map} +0 -0
- /package/dist/{chunk-M3FDGRB4.js.map → chunk-4A7TKVNX.js.map} +0 -0
- /package/dist/{chunk-RHXYO4H2.js.map → chunk-4BXRGXTD.js.map} +0 -0
- /package/dist/{chunk-CV4VVLPZ.js.map → chunk-4HQAJA3T.js.map} +0 -0
- /package/dist/{chunk-VCJQQYRE.js.map → chunk-4X2A3KPB.js.map} +0 -0
- /package/dist/{chunk-OCXTTKVA.js.map → chunk-555K37A7.js.map} +0 -0
- /package/dist/{chunk-EBIVTDEG.js.map → chunk-57L5ZXDS.js.map} +0 -0
- /package/dist/{chunk-3L465FBR.js.map → chunk-5IADORIV.js.map} +0 -0
- /package/dist/{chunk-PVB4YVDP.js.map → chunk-5Y2O2432.js.map} +0 -0
- /package/dist/{chunk-OOOSGPJL.js.map → chunk-6572EFE4.js.map} +0 -0
- /package/dist/{chunk-YMI27QPF.js.map → chunk-6BG5HCUP.js.map} +0 -0
- /package/dist/{chunk-QRECBCJM.js.map → chunk-6EXFJWII.js.map} +0 -0
- /package/dist/{chunk-74CBR5YE.js.map → chunk-6PNRUGOK.js.map} +0 -0
- /package/dist/{chunk-PUUEI4W3.js.map → chunk-6RJEY6TC.js.map} +0 -0
- /package/dist/{chunk-DLVIRJGK.js.map → chunk-727GL2YY.js.map} +0 -0
- /package/dist/{chunk-J2BTILRR.js.map → chunk-7FGYLFW6.js.map} +0 -0
- /package/dist/{chunk-MKDFYE2E.js.map → chunk-7IMWTFEG.js.map} +0 -0
- /package/dist/{chunk-FER6EVIY.js.map → chunk-7POKH54R.js.map} +0 -0
- /package/dist/{chunk-H6BX6WOW.js.map → chunk-7T26IH6W.js.map} +0 -0
- /package/dist/{chunk-R33SBMB7.js.map → chunk-7XQRVZZQ.js.map} +0 -0
- /package/dist/{chunk-NFCS5WYC.js.map → chunk-A3SPPXMC.js.map} +0 -0
- /package/dist/{chunk-DQPIEQGP.js.map → chunk-A7CWPDEH.js.map} +0 -0
- /package/dist/{chunk-3PM3M2Q6.js.map → chunk-AGOYVKTI.js.map} +0 -0
- /package/dist/{chunk-OBGOLHCP.js.map → chunk-AIQKZUPB.js.map} +0 -0
- /package/dist/{chunk-GSCGKJNK.js.map → chunk-AMYDHG3S.js.map} +0 -0
- /package/dist/{chunk-U4LTPFD2.js.map → chunk-APJPB6TX.js.map} +0 -0
- /package/dist/{chunk-SP44O3OU.js.map → chunk-APLGT5EI.js.map} +0 -0
- /package/dist/{chunk-M3HGBO2Y.js.map → chunk-ATNKMGLO.js.map} +0 -0
- /package/dist/{chunk-4O2XWOLZ.js.map → chunk-AVX4CZQ3.js.map} +0 -0
- /package/dist/{chunk-CXAN2FHF.js.map → chunk-B46MK44K.js.map} +0 -0
- /package/dist/{chunk-RMCLFSMX.js.map → chunk-BBKUPEGG.js.map} +0 -0
- /package/dist/{chunk-J2WY42FA.js.map → chunk-BES6OQE3.js.map} +0 -0
- /package/dist/{chunk-GU7T2S5N.js.map → chunk-BM2N26SH.js.map} +0 -0
- /package/dist/{chunk-HEGV4QMS.js.map → chunk-C3NS74PZ.js.map} +0 -0
- /package/dist/{chunk-752WXSDN.js.map → chunk-C56ABB5V.js.map} +0 -0
- /package/dist/{chunk-77SYIH6O.js.map → chunk-C6MATJQ5.js.map} +0 -0
- /package/dist/{chunk-KUE5BOQE.js.map → chunk-CRX47CO6.js.map} +0 -0
- /package/dist/{chunk-GTHCHCWW.js.map → chunk-D33KWZQJ.js.map} +0 -0
- /package/dist/{chunk-AH3DGOTK.js.map → chunk-D7E3BSCX.js.map} +0 -0
- /package/dist/{chunk-OJWDNNW3.js.map → chunk-DFR3TMTZ.js.map} +0 -0
- /package/dist/{chunk-WYGTAQMX.js.map → chunk-DICC75CU.js.map} +0 -0
- /package/dist/{chunk-736RUNIA.js.map → chunk-DJ2LMKKX.js.map} +0 -0
- /package/dist/{chunk-4F3AEJI6.js.map → chunk-DJI4D7PM.js.map} +0 -0
- /package/dist/{chunk-LVELUUK6.js.map → chunk-DSZUQL4W.js.map} +0 -0
- /package/dist/{chunk-MT2R57SF.js.map → chunk-DVF246BE.js.map} +0 -0
- /package/dist/{chunk-OI6VI6SU.js.map → chunk-DVOWBHWN.js.map} +0 -0
- /package/dist/{chunk-PZKHST7A.js.map → chunk-E2KPRSA4.js.map} +0 -0
- /package/dist/{chunk-EKJHOWTZ.js.map → chunk-E3LMLWEB.js.map} +0 -0
- /package/dist/{chunk-QURYQFDN.js.map → chunk-EDC7X7PW.js.map} +0 -0
- /package/dist/{chunk-HYEIA25Y.js.map → chunk-EDSMULHU.js.map} +0 -0
- /package/dist/{chunk-U6552Q3T.js.map → chunk-EQQOZ6DD.js.map} +0 -0
- /package/dist/{chunk-IFSXVU2S.js.map → chunk-ERBDQ2GY.js.map} +0 -0
- /package/dist/{chunk-IZXYFWA4.js.map → chunk-EWI73URG.js.map} +0 -0
- /package/dist/{chunk-N3FM4BNA.js.map → chunk-EZ6LFN33.js.map} +0 -0
- /package/dist/{chunk-4K64EKM7.js.map → chunk-F7YL6DPR.js.map} +0 -0
- /package/dist/{chunk-ICAMYP5M.js.map → chunk-FIGFXMUP.js.map} +0 -0
- /package/dist/{chunk-54U6ZBEX.js.map → chunk-FJRJK67G.js.map} +0 -0
- /package/dist/{chunk-E5KOWRDU.js.map → chunk-FLHB2NZT.js.map} +0 -0
- /package/dist/{chunk-D3PTVN2I.js.map → chunk-FUGGM76A.js.map} +0 -0
- /package/dist/{chunk-TDTD66BK.js.map → chunk-FXPZAZYT.js.map} +0 -0
- /package/dist/{chunk-KO3OHHY2.js.map → chunk-GAGAM4MT.js.map} +0 -0
- /package/dist/{chunk-TK5FWVZR.js.map → chunk-GESGH3HY.js.map} +0 -0
- /package/dist/{chunk-2VJOSU4H.js.map → chunk-GI4PWKXI.js.map} +0 -0
- /package/dist/{chunk-KFNZZ2N6.js.map → chunk-GJTEBAZ7.js.map} +0 -0
- /package/dist/{chunk-LTJFV2JI.js.map → chunk-GNCGEW7F.js.map} +0 -0
- /package/dist/{chunk-34NV52R3.js.map → chunk-GOMUNPB6.js.map} +0 -0
- /package/dist/{chunk-LIJNVIT3.js.map → chunk-GUMUILEI.js.map} +0 -0
- /package/dist/{chunk-7NLF35YL.js.map → chunk-GVGNHBFT.js.map} +0 -0
- /package/dist/{chunk-K3D7IQQP.js.map → chunk-GW4YI3FB.js.map} +0 -0
- /package/dist/{chunk-D5TIVCXG.js.map → chunk-GXKCV7X7.js.map} +0 -0
- /package/dist/{chunk-2J77TWGH.js.map → chunk-H467EQA6.js.map} +0 -0
- /package/dist/{chunk-3OK7Y6ES.js.map → chunk-HE77VDDR.js.map} +0 -0
- /package/dist/{chunk-UO35OEOX.js.map → chunk-HT65RGCX.js.map} +0 -0
- /package/dist/{chunk-G6ICCGJ3.js.map → chunk-HVQSFTE7.js.map} +0 -0
- /package/dist/{chunk-G5UQBTXY.js.map → chunk-HXJPDC76.js.map} +0 -0
- /package/dist/{chunk-GIWFLWXG.js.map → chunk-I6LQW24C.js.map} +0 -0
- /package/dist/{chunk-467WDSOK.js.map → chunk-I7A6S5YL.js.map} +0 -0
- /package/dist/{chunk-AAS7OWV6.js.map → chunk-IADS4ZYD.js.map} +0 -0
- /package/dist/{chunk-Y3XZEKDQ.js.map → chunk-IJWMWCGR.js.map} +0 -0
- /package/dist/{chunk-SGH7I7OY.js.map → chunk-IWFO6KOU.js.map} +0 -0
- /package/dist/{chunk-GMHIOYB7.js.map → chunk-IYC6QGV2.js.map} +0 -0
- /package/dist/{chunk-3NNAC43A.js.map → chunk-J5AODKJO.js.map} +0 -0
- /package/dist/{chunk-DIP7YALH.js.map → chunk-JKI3LMLH.js.map} +0 -0
- /package/dist/{chunk-IJR6VOLU.js.map → chunk-JSYRWOCE.js.map} +0 -0
- /package/dist/{chunk-CEMSIU4Z.js.map → chunk-JTQTWO4D.js.map} +0 -0
- /package/dist/{chunk-BASI553K.js.map → chunk-KBTKAAHM.js.map} +0 -0
- /package/dist/{chunk-OYOFPNLC.js.map → chunk-KD7VEMWY.js.map} +0 -0
- /package/dist/{chunk-3DRLCX5V.js.map → chunk-KPGFGRSA.js.map} +0 -0
- /package/dist/{chunk-PLYVGZIN.js.map → chunk-KWFDEJFI.js.map} +0 -0
- /package/dist/{chunk-FNXCFIPW.js.map → chunk-KYLEH4OF.js.map} +0 -0
- /package/dist/{chunk-WXF2RTS4.js.map → chunk-L7FJTFJN.js.map} +0 -0
- /package/dist/{chunk-KI46GKMD.js.map → chunk-L7VVQOSY.js.map} +0 -0
- /package/dist/{chunk-O2UPPN5M.js.map → chunk-LKLQVANM.js.map} +0 -0
- /package/dist/{chunk-YNTLWCF4.js.map → chunk-LLYEAZ4E.js.map} +0 -0
- /package/dist/{chunk-4Z5X7PLC.js.map → chunk-LWM7JUW6.js.map} +0 -0
- /package/dist/{chunk-CHU3RDV4.js.map → chunk-LXKV4ND3.js.map} +0 -0
- /package/dist/{chunk-AB5IW227.js.map → chunk-LYLICEQO.js.map} +0 -0
- /package/dist/{chunk-OTW25A6I.js.map → chunk-M5GRI5K4.js.map} +0 -0
- /package/dist/{chunk-X2QJXDE4.js.map → chunk-MF65PKKF.js.map} +0 -0
- /package/dist/{chunk-EDDKPIIV.js.map → chunk-MJ4XIOPM.js.map} +0 -0
- /package/dist/{chunk-FLWQJDJ5.js.map → chunk-MMPJJQG3.js.map} +0 -0
- /package/dist/{chunk-T67LTMSW.js.map → chunk-MOU54FGD.js.map} +0 -0
- /package/dist/{chunk-LQKVNREV.js.map → chunk-NAWHQ4IL.js.map} +0 -0
- /package/dist/{chunk-ZBHGNE2J.js.map → chunk-NBHBB2VV.js.map} +0 -0
- /package/dist/{chunk-U5UGM5XD.js.map → chunk-NMOZDAEZ.js.map} +0 -0
- /package/dist/{chunk-D74Z2N4K.js.map → chunk-NZA4R3BE.js.map} +0 -0
- /package/dist/{chunk-WRMUXZ7C.js.map → chunk-OB2CX7PJ.js.map} +0 -0
- /package/dist/{chunk-YJSCLGAW.js.map → chunk-OB4I4OIT.js.map} +0 -0
- /package/dist/{chunk-DWJ6J3YW.js.map → chunk-OKQW2FPL.js.map} +0 -0
- /package/dist/{chunk-2GCHGWNE.js.map → chunk-ORLX6A3C.js.map} +0 -0
- /package/dist/{chunk-EBTUPRRQ.js.map → chunk-P5N4EYFW.js.map} +0 -0
- /package/dist/{chunk-JKL5S7UQ.js.map → chunk-PL4JE3NI.js.map} +0 -0
- /package/dist/{chunk-OP2GD6QW.js.map → chunk-PNUHKDY2.js.map} +0 -0
- /package/dist/{chunk-MZY3VKKM.js.map → chunk-PWJE7D6V.js.map} +0 -0
- /package/dist/{chunk-RISUROBM.js.map → chunk-PYE27I6J.js.map} +0 -0
- /package/dist/{chunk-R5QAL43H.js.map → chunk-QIJHK6P4.js.map} +0 -0
- /package/dist/{chunk-AJBDAVX3.js.map → chunk-QK3A23NP.js.map} +0 -0
- /package/dist/{chunk-CYDXCILL.js.map → chunk-QLWDNAOV.js.map} +0 -0
- /package/dist/{chunk-BQYRZIZ7.js.map → chunk-QS6DQBVJ.js.map} +0 -0
- /package/dist/{chunk-3PZ3LRPV.js.map → chunk-QSUVFPG3.js.map} +0 -0
- /package/dist/{chunk-PYB4BFEC.js.map → chunk-QUC5MLTN.js.map} +0 -0
- /package/dist/{chunk-WDASYY4S.js.map → chunk-QVT5AWPI.js.map} +0 -0
- /package/dist/{chunk-K4DQS2ML.js.map → chunk-QZC6WCBR.js.map} +0 -0
- /package/dist/{chunk-HWVPLFIW.js.map → chunk-RAHNICPP.js.map} +0 -0
- /package/dist/{chunk-H6MJFMHZ.js.map → chunk-RME6RGIW.js.map} +0 -0
- /package/dist/{chunk-XMBOLFFS.js.map → chunk-RQIB2F53.js.map} +0 -0
- /package/dist/{chunk-OXQ2SXVC.js.map → chunk-RUA72NQY.js.map} +0 -0
- /package/dist/{chunk-UMX6DZME.js.map → chunk-SCJHWN4X.js.map} +0 -0
- /package/dist/{chunk-HTMQGS63.js.map → chunk-SIXBDT5F.js.map} +0 -0
- /package/dist/{chunk-ZAX4XQLN.js.map → chunk-SPK3T4JK.js.map} +0 -0
- /package/dist/{chunk-WTSQUCHB.js.map → chunk-SSN2YSST.js.map} +0 -0
- /package/dist/{chunk-5MIBQ4P5.js.map → chunk-SYJCDX5V.js.map} +0 -0
- /package/dist/{chunk-ZR5EKJT6.js.map → chunk-T6276OXI.js.map} +0 -0
- /package/dist/{chunk-DEHLWZSI.js.map → chunk-T7OARG4N.js.map} +0 -0
- /package/dist/{chunk-77BHKC43.js.map → chunk-TF5L3BEV.js.map} +0 -0
- /package/dist/{chunk-GOCODNQS.js.map → chunk-TF6Z7BOP.js.map} +0 -0
- /package/dist/{chunk-WIFDNUKD.js.map → chunk-TJDXWZMO.js.map} +0 -0
- /package/dist/{chunk-SFIXTOOJ.js.map → chunk-TL5ATBHZ.js.map} +0 -0
- /package/dist/{chunk-XZCCEKPW.js.map → chunk-TMOHIOMT.js.map} +0 -0
- /package/dist/{chunk-AVXDIRRW.js.map → chunk-UI5X63YC.js.map} +0 -0
- /package/dist/{chunk-6QK65ZWM.js.map → chunk-UIY7BDZC.js.map} +0 -0
- /package/dist/{chunk-VATYK3JQ.js.map → chunk-UMBFMEO7.js.map} +0 -0
- /package/dist/{chunk-UU5FBVRX.js.map → chunk-UU5G7OA4.js.map} +0 -0
- /package/dist/{chunk-EGKARC53.js.map → chunk-UZUCYCF4.js.map} +0 -0
- /package/dist/{chunk-LPKJ77EK.js.map → chunk-V2A7G7S7.js.map} +0 -0
- /package/dist/{chunk-CH4UQ4NO.js.map → chunk-V5G4TKRC.js.map} +0 -0
- /package/dist/{chunk-UBRQ3PQD.js.map → chunk-VKAVW34W.js.map} +0 -0
- /package/dist/{chunk-JV5ULONH.js.map → chunk-VVLEVNTQ.js.map} +0 -0
- /package/dist/{chunk-44JWVYJB.js.map → chunk-VW7X7TWZ.js.map} +0 -0
- /package/dist/{chunk-3CDJSKDW.js.map → chunk-VWA2CHSL.js.map} +0 -0
- /package/dist/{chunk-IN3VQFKS.js.map → chunk-W43HZPM7.js.map} +0 -0
- /package/dist/{chunk-SXGJL7UT.js.map → chunk-WHGD7Q2L.js.map} +0 -0
- /package/dist/{chunk-XOIDUM2H.js.map → chunk-WNXKYEVN.js.map} +0 -0
- /package/dist/{chunk-TKQL7EDB.js.map → chunk-WSA7UBX4.js.map} +0 -0
- /package/dist/{chunk-AJDGP2N4.js.map → chunk-WZ5TQJ3T.js.map} +0 -0
- /package/dist/{chunk-FBA2NXYH.js.map → chunk-X3TGNSOG.js.map} +0 -0
- /package/dist/{chunk-R4JA5JFI.js.map → chunk-X4WXYI3N.js.map} +0 -0
- /package/dist/{chunk-Q5EZNBPI.js.map → chunk-XIQ3AIAJ.js.map} +0 -0
- /package/dist/{chunk-S27VZ5DO.js.map → chunk-XWYT4LEL.js.map} +0 -0
- /package/dist/{chunk-477DTTMH.js.map → chunk-Y3PU75OC.js.map} +0 -0
- /package/dist/{chunk-4JXPLTWV.js.map → chunk-Y5ZWX5YS.js.map} +0 -0
- /package/dist/{chunk-4BWMAGJJ.js.map → chunk-YA5PABND.js.map} +0 -0
- /package/dist/{chunk-OGU73VUN.js.map → chunk-YBPRR2QS.js.map} +0 -0
- /package/dist/{chunk-TNSJFZ6Q.js.map → chunk-YDYR7XQE.js.map} +0 -0
- /package/dist/{chunk-GTRAH4FG.js.map → chunk-YG6V2LQH.js.map} +0 -0
- /package/dist/{chunk-XVLEBB4Y.js.map → chunk-YUXA7ALE.js.map} +0 -0
- /package/dist/{chunk-SN2WENRP.js.map → chunk-YWHQDXPB.js.map} +0 -0
- /package/dist/{chunk-BFFNINCC.js.map → chunk-YWRR5R7B.js.map} +0 -0
- /package/dist/{chunk-FSDQQQIA.js.map → chunk-YYRK7A4N.js.map} +0 -0
- /package/dist/{chunk-MRECRNVU.js.map → chunk-Z26CDLUV.js.map} +0 -0
- /package/dist/{chunk-OYCK4JRS.js.map → chunk-Z27EXLMQ.js.map} +0 -0
- /package/dist/{chunk-UTRNLNCW.js.map → chunk-Z7GDH7W2.js.map} +0 -0
- /package/dist/{chunk-PRT4J2DL.js.map → chunk-ZGVLSAWL.js.map} +0 -0
- /package/dist/{chunk-OK7BQMCI.js.map → chunk-ZM6Q5NQN.js.map} +0 -0
- /package/dist/{computer-viewer-5LKRCEVQ.js.map → computer-viewer-SROXREYD.js.map} +0 -0
- /package/dist/{embedded-new-voice-GHJRY3YL.js.map → embedded-new-voice-EIQY2VBF.js.map} +0 -0
- /package/dist/{embedded-voice-ASQXBSTX.js.map → embedded-voice-LMWNH7F7.js.map} +0 -0
- /package/dist/{fleet-decision-row-U7LDVBEM.js.map → fleet-decision-row-X2G56ZRA.js.map} +0 -0
- /package/dist/{latest-question-RNVF262Q.js.map → latest-question-KA7AQYVI.js.map} +0 -0
- /package/dist/{model-policy-picker-menu-E6XKMFTA.js.map → model-policy-picker-menu-SHWPT5VA.js.map} +0 -0
- /package/dist/{payment-page-card-DJDKV2LW.js.map → payment-page-card-NNVUISN4.js.map} +0 -0
- /package/dist/{platform-activity-row-MSDCSMET.js.map → platform-activity-row-7UDWSAHK.js.map} +0 -0
- /package/dist/{queue-surface-implementation-GUAIG6TK.js.map → queue-surface-implementation-BUXSO24N.js.map} +0 -0
- /package/dist/{recorder-host-2MYDJPQW.js.map → recorder-host-POX54CFT.js.map} +0 -0
- /package/dist/{sandbox-files-W5W2LW4K.js.map → sandbox-files-33QD7DW2.js.map} +0 -0
- /package/dist/{session-connect-cards-HPH7JOZP.js.map → session-connect-cards-CXGNVA2A.js.map} +0 -0
- /package/dist/{session-realtime-SDTKFFIR.js.map → session-realtime-CVDSEULB.js.map} +0 -0
- /package/dist/{timeline-annotation-markers-FNILLWNU.js.map → timeline-annotation-markers-5J5TM5IP.js.map} +0 -0
- /package/dist/{timeline-annotation-selection-MBCIDO2Q.js.map → timeline-annotation-selection-WLY7FB7F.js.map} +0 -0
- /package/dist/{timeline-annotations-dialog-JPNKLOTE.js.map → timeline-annotations-dialog-67VRFKJU.js.map} +0 -0
|
@@ -73,6 +73,7 @@ export type RailAggregateStatusKind =
|
|
|
73
73
|
| "active"
|
|
74
74
|
| "queued"
|
|
75
75
|
| "waiting"
|
|
76
|
+
| "paused"
|
|
76
77
|
| "unread"
|
|
77
78
|
| "active_work"
|
|
78
79
|
| "neutral";
|
|
@@ -103,6 +104,8 @@ export type RailStatusCounts = {
|
|
|
103
104
|
queued: number;
|
|
104
105
|
/** Idle sessions parked on their own wake-up (input or timer), not executing. */
|
|
105
106
|
waiting: number;
|
|
107
|
+
/** Paused sessions whose work is parked for Resume. */
|
|
108
|
+
paused: number;
|
|
106
109
|
unread: number;
|
|
107
110
|
activeWork: number;
|
|
108
111
|
};
|
|
@@ -122,6 +125,7 @@ export function sessionProjectTotals(
|
|
|
122
125
|
active: 0,
|
|
123
126
|
queued: 0,
|
|
124
127
|
waiting: 0,
|
|
128
|
+
paused: 0,
|
|
125
129
|
unread: 0,
|
|
126
130
|
activeWork: 0,
|
|
127
131
|
});
|
|
@@ -137,6 +141,7 @@ export function sessionProjectTotals(
|
|
|
137
141
|
...group,
|
|
138
142
|
active: group.active - waiting,
|
|
139
143
|
waiting,
|
|
144
|
+
paused: 0,
|
|
140
145
|
sendFailed: 0,
|
|
141
146
|
});
|
|
142
147
|
}
|
|
@@ -173,11 +178,32 @@ function ownRailStatusCounts(
|
|
|
173
178
|
? 1
|
|
174
179
|
: 0,
|
|
175
180
|
waiting: sessionInputWait(session) ? 1 : 0,
|
|
181
|
+
paused: hasPausedWork(session) ? 1 : 0,
|
|
176
182
|
unread: session.unread ? 1 : 0,
|
|
177
183
|
activeWork: session.activelyWorking ? 1 : 0,
|
|
178
184
|
};
|
|
179
185
|
}
|
|
180
186
|
|
|
187
|
+
/**
|
|
188
|
+
* Work a pause holds for Resume: a turn still open, queued or running. A
|
|
189
|
+
* paused chat with nothing in progress shows no marker, nor does one that
|
|
190
|
+
* needs the person or is ending (Cancel also pauses while the turn stops).
|
|
191
|
+
* Matches the server's `treeStats.pausedWorkDescendants`.
|
|
192
|
+
*/
|
|
193
|
+
function hasPausedWork(session: Session): boolean {
|
|
194
|
+
return (
|
|
195
|
+
!hasActiveEffectiveControl(session) &&
|
|
196
|
+
session.status !== "requires_action" &&
|
|
197
|
+
session.status !== "cancelled" &&
|
|
198
|
+
session.status !== "failed" &&
|
|
199
|
+
(Boolean(session.activeTurnId) ||
|
|
200
|
+
session.status === "running" ||
|
|
201
|
+
session.status === "recovering" ||
|
|
202
|
+
session.status === "queued" ||
|
|
203
|
+
session.status === "waiting_capacity")
|
|
204
|
+
);
|
|
205
|
+
}
|
|
206
|
+
|
|
181
207
|
function addRailStatusCounts(target: RailStatusCounts, source: RailStatusCounts): void {
|
|
182
208
|
target.total += source.total;
|
|
183
209
|
target.sendFailed += source.sendFailed;
|
|
@@ -187,6 +213,7 @@ function addRailStatusCounts(target: RailStatusCounts, source: RailStatusCounts)
|
|
|
187
213
|
target.active += source.active;
|
|
188
214
|
target.queued += source.queued;
|
|
189
215
|
target.waiting += source.waiting;
|
|
216
|
+
target.paused += source.paused;
|
|
190
217
|
target.unread += source.unread;
|
|
191
218
|
target.activeWork += source.activeWork;
|
|
192
219
|
}
|
|
@@ -211,6 +238,7 @@ function railStatusCounts(
|
|
|
211
238
|
active: summary.active - waiting,
|
|
212
239
|
queued: summary.queued,
|
|
213
240
|
waiting,
|
|
241
|
+
paused: 0,
|
|
214
242
|
unread: summary.unread,
|
|
215
243
|
activeWork: summary.activeWork,
|
|
216
244
|
};
|
|
@@ -225,6 +253,7 @@ function railStatusCounts(
|
|
|
225
253
|
"active",
|
|
226
254
|
"queued",
|
|
227
255
|
"waiting",
|
|
256
|
+
"paused",
|
|
228
257
|
"unread",
|
|
229
258
|
"activeWork",
|
|
230
259
|
] as const)
|
|
@@ -244,6 +273,7 @@ function railStatusCounts(
|
|
|
244
273
|
counts.active += stats.runningDescendants;
|
|
245
274
|
counts.queued += stats.queuedDescendants;
|
|
246
275
|
counts.waiting += stats.waitingDescendants ?? 0;
|
|
276
|
+
counts.paused += stats.pausedWorkDescendants ?? 0;
|
|
247
277
|
counts.unread += stats.unreadDescendants ?? 0;
|
|
248
278
|
counts.activeWork += stats.activelyWorkingDescendants ?? 0;
|
|
249
279
|
|
|
@@ -298,6 +328,7 @@ export function summarizeRailNodes(
|
|
|
298
328
|
active: 0,
|
|
299
329
|
queued: 0,
|
|
300
330
|
waiting: 0,
|
|
331
|
+
paused: 0,
|
|
301
332
|
unread: 0,
|
|
302
333
|
activeWork: 0,
|
|
303
334
|
};
|
|
@@ -318,8 +349,8 @@ export function summarizeRailNodes(
|
|
|
318
349
|
* covers stays in its label ("1 unread · 2 working"), and an expanded row's
|
|
319
350
|
* workers keep their own markers. The chat's own running or queued turn keeps
|
|
320
351
|
* its spinner: progress it posts mid-turn can leave it unread, and the answer
|
|
321
|
-
* arrives when that turn ends
|
|
322
|
-
* unsent message still come first. Section headers and Site rows summarize
|
|
352
|
+
* arrives when that turn ends; its own paused turn likewise stays paused.
|
|
353
|
+
* Anything that needs you, a failure and an unsent message still come first. Section headers and Site rows summarize
|
|
323
354
|
* many chats and keep the plain order.
|
|
324
355
|
*/
|
|
325
356
|
export function summarizeRailRow(
|
|
@@ -330,10 +361,16 @@ export function summarizeRailRow(
|
|
|
330
361
|
const counts = railStatusCounts(node, localDeliveryAttention);
|
|
331
362
|
const summary = summarizeRailStatusCounts(counts, now);
|
|
332
363
|
if (node.siteGroup || !node.session.unread) return summary;
|
|
333
|
-
if (
|
|
364
|
+
if (
|
|
365
|
+
summary.kind !== "active" &&
|
|
366
|
+
summary.kind !== "queued" &&
|
|
367
|
+
summary.kind !== "waiting" &&
|
|
368
|
+
summary.kind !== "paused"
|
|
369
|
+
)
|
|
334
370
|
return summary;
|
|
335
371
|
const own = ownRailStatusCounts(node.session, localDeliveryAttention);
|
|
336
|
-
if (own.active > 0 || own.queued > 0
|
|
372
|
+
if (own.active > 0 || own.queued > 0 || (summary.kind === "paused" && own.paused > 0))
|
|
373
|
+
return summary;
|
|
337
374
|
return {
|
|
338
375
|
kind: "unread",
|
|
339
376
|
count: counts.unread,
|
|
@@ -402,6 +439,14 @@ export function summarizeRailStatusCounts(
|
|
|
402
439
|
label: `${counts.waiting} waiting to resume`,
|
|
403
440
|
};
|
|
404
441
|
}
|
|
442
|
+
if (counts.paused > 0) {
|
|
443
|
+
return {
|
|
444
|
+
kind: "paused",
|
|
445
|
+
count: counts.paused,
|
|
446
|
+
total: counts.total,
|
|
447
|
+
label: `${counts.paused} paused`,
|
|
448
|
+
};
|
|
449
|
+
}
|
|
405
450
|
if (counts.unread > 0) {
|
|
406
451
|
return {
|
|
407
452
|
kind: "unread",
|
|
@@ -1120,6 +1165,7 @@ type RemovedCounts = {
|
|
|
1120
1165
|
waiting: number;
|
|
1121
1166
|
attention: number;
|
|
1122
1167
|
paused: number;
|
|
1168
|
+
pausedWork: number;
|
|
1123
1169
|
failed: number;
|
|
1124
1170
|
unreadFailed: number;
|
|
1125
1171
|
unread: number;
|
|
@@ -1134,6 +1180,7 @@ function emptyRemovedCounts(): RemovedCounts {
|
|
|
1134
1180
|
waiting: 0,
|
|
1135
1181
|
attention: 0,
|
|
1136
1182
|
paused: 0,
|
|
1183
|
+
pausedWork: 0,
|
|
1137
1184
|
failed: 0,
|
|
1138
1185
|
unreadFailed: 0,
|
|
1139
1186
|
unread: 0,
|
|
@@ -1148,6 +1195,7 @@ function addRemovedCounts(target: RemovedCounts, source: RemovedCounts): void {
|
|
|
1148
1195
|
target.waiting += source.waiting;
|
|
1149
1196
|
target.attention += source.attention;
|
|
1150
1197
|
target.paused += source.paused;
|
|
1198
|
+
target.pausedWork += source.pausedWork;
|
|
1151
1199
|
target.failed += source.failed;
|
|
1152
1200
|
target.unreadFailed += source.unreadFailed;
|
|
1153
1201
|
target.unread += source.unread;
|
|
@@ -1164,6 +1212,7 @@ function subtreeCounts(node: SessionTreeNode): RemovedCounts {
|
|
|
1164
1212
|
waiting: sessionInputWait(node.session) ? 1 : 0,
|
|
1165
1213
|
attention: awaitsPerson(node.session) ? 1 : 0,
|
|
1166
1214
|
paused: node.session.effectiveControl?.state === "paused" ? 1 : 0,
|
|
1215
|
+
pausedWork: hasPausedWork(node.session) ? 1 : 0,
|
|
1167
1216
|
failed: status === "failed" ? 1 : 0,
|
|
1168
1217
|
unreadFailed: status === "failed" && node.session.unread ? 1 : 0,
|
|
1169
1218
|
unread: node.session.unread ? 1 : 0,
|
|
@@ -1177,6 +1226,7 @@ function subtreeCounts(node: SessionTreeNode): RemovedCounts {
|
|
|
1177
1226
|
counts.waiting += stats.waitingDescendants ?? 0;
|
|
1178
1227
|
counts.attention += stats.attentionDescendants;
|
|
1179
1228
|
counts.paused += stats.pausedDescendants;
|
|
1229
|
+
counts.pausedWork += stats.pausedWorkDescendants ?? 0;
|
|
1180
1230
|
counts.failed += stats.failedDescendants;
|
|
1181
1231
|
counts.unreadFailed += stats.unreadFailedDescendants ?? stats.failedDescendants;
|
|
1182
1232
|
counts.unread += stats.unreadDescendants ?? 0;
|
|
@@ -1219,6 +1269,14 @@ function prunePinnedSubtreesWithCounts(
|
|
|
1219
1269
|
: {}),
|
|
1220
1270
|
attentionDescendants: Math.max(0, stats.attentionDescendants - removed.attention),
|
|
1221
1271
|
pausedDescendants: Math.max(0, stats.pausedDescendants - removed.paused),
|
|
1272
|
+
...(stats.pausedWorkDescendants !== undefined
|
|
1273
|
+
? {
|
|
1274
|
+
pausedWorkDescendants: Math.max(
|
|
1275
|
+
0,
|
|
1276
|
+
stats.pausedWorkDescendants - removed.pausedWork,
|
|
1277
|
+
),
|
|
1278
|
+
}
|
|
1279
|
+
: {}),
|
|
1222
1280
|
failedDescendants: Math.max(0, stats.failedDescendants - removed.failed),
|
|
1223
1281
|
...(stats.unreadFailedDescendants !== undefined
|
|
1224
1282
|
? {
|
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
createSessionRetainedScreenshotLoader,
|
|
5
5
|
createWorkspaceRetainedArtifactLoader,
|
|
6
6
|
createWorkspaceRetainedVideoLoader,
|
|
7
|
+
timelineLivePause,
|
|
7
8
|
} from "../../timeline";
|
|
8
9
|
import { isModelUnavailableSubmissionError, type CreditRefusalKind } from "../../lib/format";
|
|
9
10
|
import { inertProps } from "../../lib/inert";
|
|
@@ -4253,6 +4254,7 @@ function SessionChatPane(props: {
|
|
|
4253
4254
|
focusSequence={momentSequence}
|
|
4254
4255
|
events={props.events}
|
|
4255
4256
|
status={props.session.status}
|
|
4257
|
+
pause={timelineLivePause(admissionControl)}
|
|
4256
4258
|
computeLabel={computeLabel}
|
|
4257
4259
|
renderMessageText={renderMessageText}
|
|
4258
4260
|
renderMessageActions={renderMessageActions}
|
|
@@ -25,6 +25,7 @@ import {
|
|
|
25
25
|
type TimelineSearchTarget,
|
|
26
26
|
} from "./timeline-search";
|
|
27
27
|
import { GenieLoadingOptionsContext, type GenieLoadingOptions } from "../timeline/genie-loading";
|
|
28
|
+
import { useTimelinePauses } from "../timeline/use-timeline-pauses";
|
|
28
29
|
import { ChildSessionLink } from "./child-session-link";
|
|
29
30
|
import { useStartupDetails } from "../timeline/startup-preference";
|
|
30
31
|
import {
|
|
@@ -133,6 +134,7 @@ import {
|
|
|
133
134
|
defaultToolRegistry,
|
|
134
135
|
groupTimeline,
|
|
135
136
|
LightboxProvider,
|
|
137
|
+
type TimelineLivePause,
|
|
136
138
|
type ActivityItem,
|
|
137
139
|
type AgentMessageItem,
|
|
138
140
|
type AuthNeededItem,
|
|
@@ -235,6 +237,14 @@ export type MessageTimelineProps = {
|
|
|
235
237
|
items?: TimelineItem[] | undefined;
|
|
236
238
|
/** Current session status (reserved; tip "Working…" chrome removed for now). */
|
|
237
239
|
status?: SessionStatus | null | undefined;
|
|
240
|
+
/**
|
|
241
|
+
* The session's live Pause, from its effective control
|
|
242
|
+
* (`timelineLivePause(session.effectiveControl)`). A turn still open under a
|
|
243
|
+
* pause reads "Paused" with its clock stopped, and paused time is not
|
|
244
|
+
* counted as work. Omit to rely on the session's events alone, which do not
|
|
245
|
+
* show a pause of an ancestor or the workspace that interrupted nothing.
|
|
246
|
+
*/
|
|
247
|
+
pause?: TimelineLivePause | null | undefined;
|
|
238
248
|
/** Host-owned controls beside Copy and the timestamp on settled message rows. */
|
|
239
249
|
renderMessageActions?: ((item: AgentMessageItem | UserMessageItem) => ReactNode) | undefined;
|
|
240
250
|
/**
|
|
@@ -651,6 +661,7 @@ export function MessageTimeline({
|
|
|
651
661
|
events,
|
|
652
662
|
items,
|
|
653
663
|
status: _status,
|
|
664
|
+
pause,
|
|
654
665
|
renderMessageActions,
|
|
655
666
|
renderMessageSender,
|
|
656
667
|
renderMessageText,
|
|
@@ -820,9 +831,10 @@ export function MessageTimeline({
|
|
|
820
831
|
const olderPageBudgetRef = useRef(0);
|
|
821
832
|
const [olderDemand, setOlderDemand] = useState(0);
|
|
822
833
|
const readableTurns = turnSummary?.rolling === true;
|
|
834
|
+
const pauses = useTimelinePauses(events, pause, readableTurns);
|
|
823
835
|
const projectedGroups = useMemo(
|
|
824
|
-
() => groupTimeline(t, resolvedItems, { readableTurns }),
|
|
825
|
-
[resolvedItems, readableTurns, t],
|
|
836
|
+
() => groupTimeline(t, resolvedItems, { readableTurns, pauses }),
|
|
837
|
+
[resolvedItems, readableTurns, pauses, t],
|
|
826
838
|
);
|
|
827
839
|
// A new timeline revision (including session/turn replacement) owns layout.
|
|
828
840
|
// Never leave an old decorative transform running on its retained rows.
|
|
@@ -61,7 +61,7 @@ import {
|
|
|
61
61
|
} from "./conversation-capability-connect";
|
|
62
62
|
import type { SessionMcpCapabilityCardProps } from "./session-mcp-capability-card";
|
|
63
63
|
import type { SessionIntegrationCapabilityCardProps } from "./session-integration-capability-card";
|
|
64
|
-
import type
|
|
64
|
+
import { timelineLivePause, type AuthNeededItem } from "../timeline";
|
|
65
65
|
import { ProviderRecoveryNotice } from "./provider-recovery-notice";
|
|
66
66
|
import { currentProviderRecovery } from "../lib/provider-recovery";
|
|
67
67
|
import {
|
|
@@ -718,6 +718,7 @@ function ConversationView({
|
|
|
718
718
|
emptyState={timelineProps?.emptyState}
|
|
719
719
|
renderMessageSender={timelineProps?.renderMessageSender}
|
|
720
720
|
status={status}
|
|
721
|
+
pause={timelineLivePause(voiceControl)}
|
|
721
722
|
hasOlder={feed.hasOlder}
|
|
722
723
|
loadingOlder={feed.loadingOlder}
|
|
723
724
|
onLoadOlder={feed.loadOlder}
|
|
@@ -74,8 +74,11 @@ export function TimelineAnnotationCards({
|
|
|
74
74
|
data-og-annotation-cards=""
|
|
75
75
|
className={cn(
|
|
76
76
|
"grid gap-2",
|
|
77
|
+
// Inside the timeline, let the wheel chain to the timeline once this
|
|
78
|
+
// stack is at its edge. Containing overscroll here made the whole
|
|
79
|
+
// message a dead zone for scrolling, even when the stack fit.
|
|
77
80
|
annotations.length >= ANNOTATION_CARD_STACK_SCROLL_AT &&
|
|
78
|
-
"max-h-[min(28rem,55vh)] overflow-x-hidden overflow-y-auto
|
|
81
|
+
"max-h-[min(28rem,55vh)] overflow-x-hidden overflow-y-auto pr-1",
|
|
79
82
|
className,
|
|
80
83
|
)}
|
|
81
84
|
>
|
|
@@ -14,7 +14,7 @@ export function captureTimelineSettlement(
|
|
|
14
14
|
if (timelineHasReader(scroller)) return null;
|
|
15
15
|
const live = Array.from(
|
|
16
16
|
scroller.querySelectorAll(
|
|
17
|
-
'[data-og-exchange-status="working"], [data-og-exchange-status="waiting"]',
|
|
17
|
+
'[data-og-exchange-status="working"], [data-og-exchange-status="waiting"], [data-og-exchange-status="paused"]',
|
|
18
18
|
),
|
|
19
19
|
);
|
|
20
20
|
// At the live tip the newest retained answer owns the transition. An older
|
|
@@ -9,6 +9,7 @@ import type {
|
|
|
9
9
|
RecordingPerson,
|
|
10
10
|
RecordingVoiceprintConsent,
|
|
11
11
|
RecordingSpeaker,
|
|
12
|
+
RecordingCalendarEventRef,
|
|
12
13
|
RecordingTranscriptionRequest,
|
|
13
14
|
RecordingTranscriptPage,
|
|
14
15
|
RecordingTranscriptSegment,
|
|
@@ -172,6 +173,8 @@ export type UseRecorderOptions = RecordingsClientOverride & {
|
|
|
172
173
|
/** Your own id for what this recording belongs to, to find it again with `useRecordings`. */
|
|
173
174
|
externalRef?: string;
|
|
174
175
|
metadata?: Record<string, unknown>;
|
|
176
|
+
/** The owner's calendar event the meeting is of, such as one they joined; it names the meeting. */
|
|
177
|
+
calendarEvent?: RecordingCalendarEventRef;
|
|
175
178
|
transcription?: RecordingTranscriptionRequest;
|
|
176
179
|
/**
|
|
177
180
|
* The person recording's name, as your app knows it: their microphone's
|
|
@@ -241,6 +244,7 @@ export type UseRecorderResult = RecorderSnapshot & {
|
|
|
241
244
|
| "transcription"
|
|
242
245
|
| "externalRef"
|
|
243
246
|
| "metadata"
|
|
247
|
+
| "calendarEvent"
|
|
244
248
|
| "ownerName"
|
|
245
249
|
>,
|
|
246
250
|
) => Promise<void>;
|
|
@@ -473,6 +477,7 @@ export function useRecorder(options: UseRecorderOptions = {}): UseRecorderResult
|
|
|
473
477
|
...(merged.visibility ? { visibility: merged.visibility } : {}),
|
|
474
478
|
...(merged.externalRef ? { externalRef: merged.externalRef } : {}),
|
|
475
479
|
...(merged.metadata ? { metadata: merged.metadata as never } : {}),
|
|
480
|
+
...(merged.calendarEvent ? { calendarEvent: merged.calendarEvent } : {}),
|
|
476
481
|
...(merged.transcription ? { transcription: merged.transcription } : {}),
|
|
477
482
|
...(merged.ownerName?.trim() ? { ownerName: merged.ownerName } : {}),
|
|
478
483
|
...(merged.microphone !== undefined ? { microphone: merged.microphone } : {}),
|
package/src/index.ts
CHANGED
|
@@ -481,10 +481,15 @@ export {
|
|
|
481
481
|
extractSessionRef,
|
|
482
482
|
groupTimeline,
|
|
483
483
|
sessionStatusFromEvents,
|
|
484
|
+
timelineLivePause,
|
|
485
|
+
timelinePauseSpans,
|
|
484
486
|
toolDisplayName,
|
|
487
|
+
useTimelinePauses,
|
|
485
488
|
} from "./timeline";
|
|
486
489
|
export type {
|
|
487
490
|
GroupTimelineOptions,
|
|
491
|
+
TimelineLivePause,
|
|
492
|
+
TimelinePauseSpan,
|
|
488
493
|
ActivityItem,
|
|
489
494
|
AgentMessageItem,
|
|
490
495
|
AuthNeededItem,
|
|
@@ -42,9 +42,14 @@ export type MeetingRecorder = UseRecorderResult;
|
|
|
42
42
|
* A recording someone asked for outside the recorder, such as from a desktop
|
|
43
43
|
* call notification. An empty title leaves the name to Opengeni; `app` marks
|
|
44
44
|
* a title the app guessed (the call app's name), which a calendar event or
|
|
45
|
-
* the conversation replaces.
|
|
45
|
+
* the conversation replaces. `calendarEvent` is the owner's calendar event
|
|
46
|
+
* the meeting is of, such as one joined from a reminder; it names the meeting.
|
|
46
47
|
*/
|
|
47
|
-
export type MeetingStartRequest = {
|
|
48
|
+
export type MeetingStartRequest = {
|
|
49
|
+
title: string;
|
|
50
|
+
titleSource?: "person" | "app";
|
|
51
|
+
calendarEvent?: { provider: "google" | "microsoft"; id: string };
|
|
52
|
+
};
|
|
48
53
|
|
|
49
54
|
export type MeetingRecorderStore = {
|
|
50
55
|
get: () => MeetingRecorder | null;
|
|
@@ -280,10 +285,28 @@ function useDesktopMeetingRequests(
|
|
|
280
285
|
// Nobody signed in: a start kept for later would record, for whoever
|
|
281
286
|
// signs in next, a call that may be long over.
|
|
282
287
|
if (latest.current.signedOut) return;
|
|
283
|
-
//
|
|
284
|
-
//
|
|
288
|
+
// The call app's name is only a guess at the meeting's; the calendar
|
|
289
|
+
// event a reminder joined names it.
|
|
290
|
+
const start: MeetingStartRequest = {
|
|
291
|
+
title: request.title,
|
|
292
|
+
titleSource: "app",
|
|
293
|
+
...(request.calendarEvent ? { calendarEvent: request.calendarEvent } : {}),
|
|
294
|
+
};
|
|
295
|
+
// Already recording shows that recording rather than start a second
|
|
296
|
+
// one, unless the person chose to switch to recording the next meeting:
|
|
297
|
+
// this one stops and is kept, then the next starts.
|
|
285
298
|
if (canStartRecording(recorder?.state)) {
|
|
286
|
-
store.requestStart(
|
|
299
|
+
store.requestStart(start);
|
|
300
|
+
} else if (
|
|
301
|
+
request.replace === true &&
|
|
302
|
+
recorder &&
|
|
303
|
+
(recorder.state === "recording" || recorder.state === "paused")
|
|
304
|
+
) {
|
|
305
|
+
// A stop that fails leaves that recording showing its error, and starts nothing.
|
|
306
|
+
void recorder.stop().then(
|
|
307
|
+
() => store.requestStart(start),
|
|
308
|
+
() => undefined,
|
|
309
|
+
);
|
|
287
310
|
}
|
|
288
311
|
latest.current.onOpenMeetings?.();
|
|
289
312
|
return;
|
|
@@ -48,7 +48,7 @@ import { Notice } from "../ui/notice";
|
|
|
48
48
|
import { cn } from "../app/lib/utils";
|
|
49
49
|
|
|
50
50
|
import { formatClock, ownerLiveLaneName } from "../recordings";
|
|
51
|
-
import type { MeetingRecorder } from "./recorder-context";
|
|
51
|
+
import type { MeetingRecorder, MeetingStartRequest } from "./recorder-context";
|
|
52
52
|
import { canStartRecording } from "./recorder-state";
|
|
53
53
|
import { LiveTranscript, liveStatus, type LiveTranscriptLine } from "./live-transcript";
|
|
54
54
|
import { DETECT_LANGUAGE, meetingLanguageOptions } from "./meeting-languages";
|
|
@@ -618,7 +618,7 @@ function RecorderPanelContent({
|
|
|
618
618
|
*/
|
|
619
619
|
autoStart?: {
|
|
620
620
|
pending: boolean;
|
|
621
|
-
take: () =>
|
|
621
|
+
take: () => MeetingStartRequest | null;
|
|
622
622
|
} | null;
|
|
623
623
|
/** The host's own id for what new recordings belong to, such as a project. */
|
|
624
624
|
externalRef?: string | null | undefined;
|
|
@@ -645,8 +645,15 @@ function RecorderPanelContent({
|
|
|
645
645
|
const state = recorder?.state ?? "idle";
|
|
646
646
|
const live = state === "recording" || state === "paused" || state === "stopping";
|
|
647
647
|
|
|
648
|
-
/**
|
|
649
|
-
|
|
648
|
+
/**
|
|
649
|
+
* `guess` is the app's name for the meeting, used only when nobody typed
|
|
650
|
+
* one; `calendarEvent` the calendar event it is of, which names it.
|
|
651
|
+
*/
|
|
652
|
+
const start = async (
|
|
653
|
+
titleText: string = title,
|
|
654
|
+
guess?: string,
|
|
655
|
+
calendarEvent?: MeetingStartRequest["calendarEvent"],
|
|
656
|
+
) => {
|
|
650
657
|
if (!recorder) return;
|
|
651
658
|
setErrorDismissed(false);
|
|
652
659
|
const name = titleText.trim();
|
|
@@ -658,6 +665,7 @@ function RecorderPanelContent({
|
|
|
658
665
|
systemAudio: tabAudio,
|
|
659
666
|
...(liveOn ? { liveTranscript: true } : {}),
|
|
660
667
|
...(externalRef ? { externalRef } : {}),
|
|
668
|
+
...(calendarEvent ? { calendarEvent } : {}),
|
|
661
669
|
// Names their microphone in the transcript when Opengeni has no name for them.
|
|
662
670
|
...(viewerName?.trim() ? { ownerName: viewerName } : {}),
|
|
663
671
|
// Sent even when it's the workspace's, so this meeting keeps it.
|
|
@@ -679,7 +687,7 @@ function RecorderPanelContent({
|
|
|
679
687
|
if (!request) return;
|
|
680
688
|
// The call app's name is a guess: a title already typed wins over it.
|
|
681
689
|
if (request.titleSource === "app") {
|
|
682
|
-
void startRef.current(undefined, request.title);
|
|
690
|
+
void startRef.current(undefined, request.title, request.calendarEvent);
|
|
683
691
|
return;
|
|
684
692
|
}
|
|
685
693
|
// A start without a title (the Start recording key) keeps one already typed, as the button does.
|
|
@@ -6,7 +6,11 @@ import { GlobalRegistrator } from "@happy-dom/global-registrator";
|
|
|
6
6
|
import { act, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react";
|
|
7
7
|
import { createRoot } from "react-dom/client";
|
|
8
8
|
|
|
9
|
-
import type {
|
|
9
|
+
import type {
|
|
10
|
+
MeetingRecorder,
|
|
11
|
+
MeetingRecorderStore,
|
|
12
|
+
MeetingStartRequest,
|
|
13
|
+
} from "./recorder-context";
|
|
10
14
|
|
|
11
15
|
beforeAll(() => {
|
|
12
16
|
GlobalRegistrator.register();
|
|
@@ -83,7 +87,17 @@ async function until(check: () => boolean) {
|
|
|
83
87
|
|
|
84
88
|
type Desktop = {
|
|
85
89
|
listener:
|
|
86
|
-
| ((
|
|
90
|
+
| ((
|
|
91
|
+
request:
|
|
92
|
+
| {
|
|
93
|
+
kind: "record";
|
|
94
|
+
title?: string;
|
|
95
|
+
calendarEvent?: { provider: "google" | "microsoft"; id: string };
|
|
96
|
+
replace?: boolean;
|
|
97
|
+
}
|
|
98
|
+
| { kind: "stop" }
|
|
99
|
+
| { kind: "open" },
|
|
100
|
+
) => void)
|
|
87
101
|
| null;
|
|
88
102
|
};
|
|
89
103
|
|
|
@@ -118,7 +132,7 @@ function mountProvider() {
|
|
|
118
132
|
};
|
|
119
133
|
const opened: string[] = [];
|
|
120
134
|
const meetingsOpened: string[] = [];
|
|
121
|
-
let pendingStart: () =>
|
|
135
|
+
let pendingStart: () => MeetingStartRequest | null = () => null;
|
|
122
136
|
let open: ((recordingId: string, workspaceId: string) => boolean) | null = null;
|
|
123
137
|
function Probe() {
|
|
124
138
|
const current = useMeetingRecorder();
|
|
@@ -129,23 +143,24 @@ function mountProvider() {
|
|
|
129
143
|
}
|
|
130
144
|
function PendingStart() {
|
|
131
145
|
const { take } = usePendingMeetingStart();
|
|
132
|
-
pendingStart =
|
|
146
|
+
pendingStart = take;
|
|
133
147
|
return null;
|
|
134
148
|
}
|
|
135
149
|
const container = document.createElement("div");
|
|
136
150
|
document.body.append(container);
|
|
137
151
|
const root = createRoot(container);
|
|
138
|
-
|
|
152
|
+
const view = {
|
|
139
153
|
seen,
|
|
140
154
|
opened,
|
|
141
155
|
meetingsOpened,
|
|
142
156
|
// Taking the pending start clears provider state, so it runs inside act.
|
|
143
|
-
takePendingStart: () =>
|
|
144
|
-
|
|
157
|
+
takePendingStart: () => view.takePendingRequest() !== null,
|
|
158
|
+
takePendingRequest: () => {
|
|
159
|
+
let taken: MeetingStartRequest | null = null;
|
|
145
160
|
act(() => {
|
|
146
161
|
taken = pendingStart();
|
|
147
162
|
});
|
|
148
|
-
return taken;
|
|
163
|
+
return taken as MeetingStartRequest | null;
|
|
149
164
|
},
|
|
150
165
|
open: (recordingId: string, workspaceId: string) => open!(recordingId, workspaceId),
|
|
151
166
|
render: (workspaceId: string | null, options: { scope?: string | null } = {}) =>
|
|
@@ -170,6 +185,7 @@ function mountProvider() {
|
|
|
170
185
|
container.remove();
|
|
171
186
|
},
|
|
172
187
|
};
|
|
188
|
+
return view;
|
|
173
189
|
}
|
|
174
190
|
|
|
175
191
|
describe("A recording and the workspace it was made in", () => {
|
|
@@ -423,4 +439,37 @@ describe("A recording and the person who made it", () => {
|
|
|
423
439
|
removeDesktop();
|
|
424
440
|
}
|
|
425
441
|
});
|
|
442
|
+
test("a reminder's Join and record this one stops the recording, then starts the next meeting's", async () => {
|
|
443
|
+
events.length = 0;
|
|
444
|
+
const desktop = installDesktop();
|
|
445
|
+
const view = mountProvider();
|
|
446
|
+
try {
|
|
447
|
+
await view.render("workspace-a");
|
|
448
|
+
await until(() => view.seen.recorder !== null);
|
|
449
|
+
await settle();
|
|
450
|
+
await act(async () => setStates.get("workspace-a")!("recording"));
|
|
451
|
+
const calendarEvent = { provider: "google" as const, id: "event-2" };
|
|
452
|
+
// Without replace, a reminder's Join shows the recording going on.
|
|
453
|
+
await act(async () =>
|
|
454
|
+
desktop.listener!({ kind: "record", title: "Planning", calendarEvent }),
|
|
455
|
+
);
|
|
456
|
+
expect(view.takePendingRequest()).toBeNull();
|
|
457
|
+
expect(view.seen.recorder?.state).toBe("recording");
|
|
458
|
+
// With it, the recording stops and is kept, then the next one starts for its event.
|
|
459
|
+
await act(async () =>
|
|
460
|
+
desktop.listener!({ kind: "record", title: "Planning", calendarEvent, replace: true }),
|
|
461
|
+
);
|
|
462
|
+
await settle();
|
|
463
|
+
expect(view.seen.recorder?.state).toBe("stopped");
|
|
464
|
+
expect(view.takePendingRequest()).toEqual({
|
|
465
|
+
title: "Planning",
|
|
466
|
+
titleSource: "app",
|
|
467
|
+
calendarEvent,
|
|
468
|
+
});
|
|
469
|
+
expect(view.meetingsOpened).toEqual(["workspace-a", "workspace-a"]);
|
|
470
|
+
} finally {
|
|
471
|
+
await view.unmount();
|
|
472
|
+
removeDesktop();
|
|
473
|
+
}
|
|
474
|
+
});
|
|
426
475
|
});
|
package/src/messages/en.ts
CHANGED
|
@@ -3740,6 +3740,7 @@ export const englishMessages = {
|
|
|
3740
3740
|
"native.timeline.messages.onAMachine": "On a machine",
|
|
3741
3741
|
"native.timeline.messages.output": "Output",
|
|
3742
3742
|
"native.timeline.messages.pauseGoal": "Pause goal",
|
|
3743
|
+
"native.timeline.messages.paused": "Paused",
|
|
3743
3744
|
"native.timeline.messages.pin": "Pin",
|
|
3744
3745
|
"native.timeline.messages.pinned": "Pinned",
|
|
3745
3746
|
"native.timeline.messages.proposedKnowledge": "Proposed knowledge",
|
|
@@ -6081,6 +6082,7 @@ export const englishMessages = {
|
|
|
6081
6082
|
"timeline.turnSummary.contextCompactedExpandForDetails": "Context compacted; expand for details",
|
|
6082
6083
|
"timeline.turnSummary.copyTurn": "Copy turn",
|
|
6083
6084
|
"timeline.turnSummary.interrupted": "· interrupted",
|
|
6085
|
+
"timeline.turnSummary.paused": "Paused",
|
|
6084
6086
|
"timeline.turnSummary.preparation": "Preparation",
|
|
6085
6087
|
"timeline.turnSummary.steps": "Steps",
|
|
6086
6088
|
"timeline.turnSummary.waiting": "Waiting",
|
package/src/session.ts
CHANGED
|
@@ -141,9 +141,16 @@ export {
|
|
|
141
141
|
extractSessionRef,
|
|
142
142
|
groupTimeline,
|
|
143
143
|
sessionStatusFromEvents,
|
|
144
|
+
timelineLivePause,
|
|
145
|
+
timelinePauseSpans,
|
|
144
146
|
toolDisplayName,
|
|
145
147
|
} from "./timeline/projection";
|
|
146
|
-
export type {
|
|
148
|
+
export type {
|
|
149
|
+
GroupTimelineOptions,
|
|
150
|
+
TimelineLivePause,
|
|
151
|
+
TimelinePauseSpan,
|
|
152
|
+
} from "./timeline/projection";
|
|
153
|
+
export { useTimelinePauses } from "./timeline/use-timeline-pauses";
|
|
147
154
|
export type {
|
|
148
155
|
ActivityItem,
|
|
149
156
|
AgentMessageItem,
|
package/src/timeline/index.ts
CHANGED
|
@@ -24,10 +24,13 @@ export {
|
|
|
24
24
|
groupTimeline,
|
|
25
25
|
sessionStatusFromEvents,
|
|
26
26
|
mcpToolLeaf,
|
|
27
|
+
timelineLivePause,
|
|
28
|
+
timelinePauseSpans,
|
|
27
29
|
toolDisplayName,
|
|
28
30
|
toolMatchesLeaf,
|
|
29
31
|
} from "./projection";
|
|
30
|
-
export type { GroupTimelineOptions } from "./projection";
|
|
32
|
+
export type { GroupTimelineOptions, TimelineLivePause, TimelinePauseSpan } from "./projection";
|
|
33
|
+
export { useTimelinePauses } from "./use-timeline-pauses";
|
|
31
34
|
|
|
32
35
|
// item types
|
|
33
36
|
export type {
|