@opengeni/react 4.4.1 → 4.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/app-state.js +25 -25
- package/dist/app/components/Composer.js +27 -27
- package/dist/app/components/agent/agent-capability-picker.js +4 -4
- package/dist/app/components/artifacts/artifact-browse-controls.js +3 -3
- package/dist/app/components/artifacts/artifact-library.js +19 -19
- package/dist/app/components/artifacts/artifact-page-chrome.js +2 -2
- package/dist/app/components/artifacts/chat-interactive-block.js +15 -15
- package/dist/app/components/artifacts/inline-chat-image.js +30 -29
- package/dist/app/components/artifacts/retained-file-preview.js +34 -33
- package/dist/app/components/artifacts/retained-text-preview.js +5 -5
- package/dist/app/components/artifacts/site-audience.js +4 -4
- package/dist/app/components/artifacts/site-conversations.js +20 -19
- package/dist/app/components/artifacts/site-data.js +18 -18
- package/dist/app/components/artifacts/site-publishing.js +39 -39
- package/dist/app/components/artifacts/site-settings.js +46 -46
- package/dist/app/components/billing-class-mark.js +5 -5
- package/dist/app/components/capabilities/capability-detail-sheet.js +8 -8
- package/dist/app/components/capabilities/capability-logo-source.js +11 -11
- package/dist/app/components/capabilities/connector-tool-permissions.js +4 -4
- package/dist/app/components/capabilities/native-connect-setup.js +14 -14
- package/dist/app/components/capabilities/perform-capability-action.js +1 -1
- package/dist/app/components/capabilities/prepared-mcp-setup-card.js +15 -15
- package/dist/app/components/capabilities/session-capability-card.js +77 -75
- package/dist/app/components/capabilities/session-capability-card.js.map +1 -1
- package/dist/app/components/capabilities/session-chrome-card.js +35 -33
- package/dist/app/components/capabilities/session-custom-mcp-card.js +19 -19
- package/dist/app/components/capabilities/session-github-card.js +22 -22
- package/dist/app/components/capabilities/session-machine-card.js +34 -32
- package/dist/app/components/capabilities/use-capabilities-catalog.js +3 -3
- package/dist/app/components/capabilities/use-connection-accounts.js +1 -1
- package/dist/app/components/command-menu/chat-status.js +15 -14
- package/dist/app/components/command-menu/chat-switcher.js +16 -15
- package/dist/app/components/command-menu/chat-switcher.js.map +1 -1
- package/dist/app/components/command-menu/command-menu.js +32 -110
- package/dist/app/components/command-menu/command-menu.js.map +1 -1
- package/dist/app/components/command-menu/shortcut-sheet.js +15 -15
- package/dist/app/components/composer-capabilities-menu-body.js +3 -3
- package/dist/app/components/composer-mobile-plus-panel.js +17 -17
- package/dist/app/components/composer-mobile-plus.js +1 -1
- package/dist/app/components/credit-required-gate.js +1 -1
- package/dist/app/components/credit-required-prompt.js +9 -9
- package/dist/app/components/credits/coupon-redeem.js +2 -2
- package/dist/app/components/credits/credit-refusal-notice.js +2 -2
- package/dist/app/components/desktop/app-shots.js +6 -6
- package/dist/app/components/desktop/this-computer.js +4 -4
- package/dist/app/components/feedback.js +4 -4
- package/dist/app/components/follow-up-repository-menu-body.js +4 -4
- package/dist/app/components/follow-up-repository-picker.js +1 -1
- package/dist/app/components/github-app-connect-launcher.js +2 -2
- package/dist/app/components/in-app-help-link.js +2 -2
- package/dist/app/components/knowledge/agent-learning-settings.js +3 -3
- package/dist/app/components/machines/connect-machine-dialog.js +18 -18
- package/dist/app/components/markdown.js +8 -8
- package/dist/app/components/message-context-pills.js +2 -2
- package/dist/app/components/models/models-ui.js +8 -8
- package/dist/app/components/new-session-starters.js +2 -2
- package/dist/app/components/pickers.js +8 -8
- package/dist/app/components/rail/rail-context.js +3 -3
- package/dist/app/components/rail/rail-sections.js +65 -62
- package/dist/app/components/rail/session-header.js +48 -47
- package/dist/app/components/rail/session-list.js +64 -61
- package/dist/app/components/rail/session-row-content.d.ts +6 -2
- package/dist/app/components/rail/session-row-content.js +1 -1
- package/dist/app/components/rail/session-row-hover-details.js +20 -19
- package/dist/app/components/rail/session-shell.js +104 -101
- package/dist/app/components/rail/site-session-group-heading.d.ts +7 -1
- package/dist/app/components/rail/site-session-group-heading.js +20 -3
- package/dist/app/components/repository-picker.js +4 -4
- package/dist/app/components/secrets/session-secrets-panel.js +3 -3
- package/dist/app/components/session/agent-configuration-panel.js +33 -33
- package/dist/app/components/session/artifact-link-boundary.js +2 -2
- package/dist/app/components/session/artifact-session-page.js +5 -5
- package/dist/app/components/session/banners.js +10 -10
- package/dist/app/components/session/codex-account-indicator.js +11 -11
- package/dist/app/components/session/editable-artifacts-workspace.js +44 -44
- package/dist/app/components/session/failed-session-banner.js +10 -10
- package/dist/app/components/session/human-input.js +57 -53
- package/dist/app/components/session/inspector.js +94 -90
- package/dist/app/components/session/inspector.js.map +1 -1
- package/dist/app/components/session/message-actions.js +4 -4
- package/dist/app/components/session/message-resource-attachments.js +20 -19
- package/dist/app/components/session/message-resource-attachments.js.map +1 -1
- package/dist/app/components/session/model-account-indicator.js +11 -11
- package/dist/app/components/session/model-context-inspector.js +2 -2
- package/dist/app/components/session/model-recovery-notice.js +3 -3
- package/dist/app/components/session/new-session-settings-menu.js +9 -9
- package/dist/app/components/session/sandbox-switcher.js +16 -16
- package/dist/app/components/session/sandbox-workspace.js +81 -77
- package/dist/app/components/session/search-markdown-highlight.js +9 -9
- package/dist/app/components/session/search-results-view.js +10 -10
- package/dist/app/components/session/session-admin-access.js +8 -8
- package/dist/app/components/session/session-admission-notice.js +6 -6
- package/dist/app/components/session/session-machine-access-notice.js +6 -6
- package/dist/app/components/session/session-retention.js +4 -4
- package/dist/app/components/session/session-search-dialog.js +11 -11
- package/dist/app/components/session/session-skill-reviews.js +1 -1
- package/dist/app/components/session/session-tenancy-control.d.ts +2 -0
- package/dist/app/components/session/session-tenancy-control.js +40 -25
- package/dist/app/components/session/session-tenancy-control.js.map +1 -1
- package/dist/app/components/session/session-usage-limit-section.js +11 -11
- package/dist/app/components/session/session-wait-status.js +9 -8
- package/dist/app/components/session/session-wait-status.js.map +1 -1
- package/dist/app/components/session/site-origin-link.d.ts +1 -0
- package/dist/app/components/session/site-origin-link.js +2 -2
- package/dist/app/components/session/subagents.js +16 -15
- package/dist/app/components/session-connectors-menu-body.js +5 -5
- package/dist/app/components/settings/row-select.js +3 -3
- package/dist/app/components/transcription-settings.js +4 -4
- package/dist/app/components/ui/destructive-confirm.js +6 -6
- package/dist/app/components/usage/usage-entry.js +8 -8
- package/dist/app/components/workspace-composer-plus.js +21 -21
- package/dist/app/embed/memory-navigation.js +2 -2
- package/dist/app/embed/session-app.js +256 -250
- package/dist/app/lib/actions/actions-provider.js +15 -15
- package/dist/app/lib/actions/held-modifier.d.ts +11 -0
- package/dist/app/lib/app-surfaces.js +2 -2
- package/dist/app/lib/codex-usage-query.js +6 -6
- package/dist/app/lib/composer-connectors.js +12 -12
- package/dist/app/lib/console-site.d.ts +6 -0
- package/dist/app/lib/console-site.js +14 -0
- package/dist/app/lib/console-text.js +2 -2
- package/dist/app/lib/events.js +17 -16
- package/dist/app/lib/failed-session-copy.js +3 -3
- package/dist/app/lib/model-access-onboarding.js +3 -3
- package/dist/app/lib/move-chat-to-machine.js +3 -3
- package/dist/app/lib/navigation.d.ts +5 -0
- package/dist/app/lib/navigation.js +1 -1
- package/dist/app/lib/routes.d.ts +17 -0
- package/dist/app/lib/routes.js +9 -3
- package/dist/app/lib/session-branch-cache.js +13 -12
- package/dist/app/lib/session-deep-link.js +2 -2
- package/dist/app/lib/session-failure-toasts.d.ts +8 -0
- package/dist/app/lib/session-group-pagination.js +13 -12
- package/dist/app/lib/session-hover-facts.js +14 -13
- package/dist/app/lib/session-model.js +3 -3
- package/dist/app/lib/session-rail.js +9 -8
- package/dist/app/lib/session-rename.js +3 -3
- package/dist/app/lib/session-ui-features.d.ts +6 -1
- package/dist/app/lib/session-ui-features.js +1 -1
- package/dist/app/lib/sessions-group.d.ts +43 -3
- package/dist/app/lib/sessions-group.js +21 -14
- package/dist/app/lib/shared-query.js +3 -3
- package/dist/app/lib/site-opened.d.ts +6 -0
- package/dist/app/lib/site-opened.js +10 -0
- package/dist/app/lib/turn-failure-analytics.js +4 -4
- package/dist/app/lib/use-duplicate-site.js +3 -3
- package/dist/app/lib/use-follow-up-repositories.js +4 -4
- package/dist/app/lib/use-session-list-hint-refresh.d.ts +20 -2
- package/dist/app/lib/use-session-list-hint-refresh.js +5 -1
- package/dist/app/lib/use-workspace-machines.js +6 -6
- package/dist/app/lib/use-workspace-model-catalog.js +7 -7
- package/dist/app/lib/use-workspace-rigs.js +8 -8
- package/dist/app/lib/workspace-navigation-preference.js +5 -5
- package/dist/app/lib/workspace-scope-context.js +4 -4
- package/dist/app/routes/artifacts.js +132 -149
- package/dist/app/routes/artifacts.js.map +1 -1
- package/dist/app/routes/retained-artifact.js +63 -62
- package/dist/app/routes/retained-artifact.js.map +1 -1
- package/dist/app/routes/session-unavailable.js +7 -5
- package/dist/app/routes/session.js +170 -166
- package/dist/app/routes/sessions-index.js +110 -108
- package/dist/app/routes/site-view.d.ts +11 -0
- package/dist/app/routes/site-view.js +597 -0
- package/dist/app/routes/site-view.js.map +1 -0
- package/dist/artifacts-document.js +4 -4
- package/dist/artifacts-presentation.js +4 -4
- package/dist/artifacts-spreadsheet.js +4 -4
- package/dist/artifacts.js +39 -39
- package/dist/{browser-viewer-RYYQSRTC.js → browser-viewer-QMCNV4RI.js} +9 -7
- package/dist/{chat-interactive-block-ABCRKXJ4.js → chat-interactive-block-PMIAUXSO.js} +6 -6
- package/dist/{chunk-TGVVEGZG.js → chunk-22FFOHPT.js} +9 -9
- package/dist/chunk-22GTC4MZ.js +15 -0
- package/dist/chunk-22GTC4MZ.js.map +1 -0
- package/dist/{chunk-Z5WMLJKI.js → chunk-22JFMNMF.js} +92 -4
- package/dist/chunk-22JFMNMF.js.map +1 -0
- package/dist/{chunk-UHFWF6ZU.js → chunk-2FPS5H2D.js} +2 -2
- package/dist/{chunk-NAWXARTY.js → chunk-2KO2G3RI.js} +72 -6
- package/dist/chunk-2KO2G3RI.js.map +1 -0
- package/dist/{chunk-5POTDNQT.js → chunk-2NC7NZCE.js} +6 -6
- package/dist/{chunk-ZKYYZH6L.js → chunk-2QBYDGWO.js} +9 -9
- package/dist/{chunk-TWXIFWBD.js → chunk-34EU25RL.js} +2 -2
- package/dist/{chunk-R63QEVPK.js → chunk-35BC2FU2.js} +16 -16
- package/dist/{chunk-PTGRFAMH.js → chunk-3ABPIUCK.js} +2 -2
- package/dist/{chunk-S4SC5SSV.js → chunk-3GU7AWG7.js} +18 -18
- package/dist/{chunk-722UO6YQ.js → chunk-3PEXVG4D.js} +2 -2
- package/dist/{chunk-63VGE4OH.js → chunk-3RMKPHBL.js} +3 -3
- package/dist/{chunk-6JKZILLF.js → chunk-3RQUWFZT.js} +67 -67
- package/dist/{chunk-6JKZILLF.js.map → chunk-3RQUWFZT.js.map} +1 -1
- package/dist/{chunk-RQDFYQHA.js → chunk-3STBLX4O.js} +9 -9
- package/dist/{chunk-S4EZ3JUB.js → chunk-3X5FKDYQ.js} +23 -23
- package/dist/{chunk-KTRKZRID.js → chunk-4GLLWX33.js} +11 -11
- package/dist/{chunk-ROQOVH4N.js → chunk-4HEXNAFI.js} +20 -20
- package/dist/chunk-4HEXNAFI.js.map +1 -0
- package/dist/{chunk-SD2K5ZN5.js → chunk-4LPA25NQ.js} +4 -4
- package/dist/{chunk-KWKGBGAF.js → chunk-4RMN4E2Y.js} +9 -9
- package/dist/{chunk-X7ASQHR6.js → chunk-4SAGYEVB.js} +2 -2
- package/dist/{chunk-HTT3FB7T.js → chunk-4VK2R5QC.js} +3 -3
- package/dist/{chunk-DDK4WFJ3.js → chunk-4XQC7VLT.js} +9 -9
- package/dist/{chunk-IVOA3DXA.js → chunk-4YXAQMTD.js} +12 -12
- package/dist/{chunk-HOJGAJAB.js → chunk-52WK2GGK.js} +8 -8
- package/dist/{chunk-NYZQ7LO7.js → chunk-552UYIQ7.js} +20 -20
- package/dist/{chunk-LEXPBQ56.js → chunk-5DSKMG2I.js} +4 -4
- package/dist/{chunk-WNG757ID.js → chunk-5FA455GR.js} +4 -4
- package/dist/{chunk-HWDGJFM4.js → chunk-5FEN3KYH.js} +11 -11
- package/dist/{chunk-OSVHU2WU.js → chunk-5JHRMUAZ.js} +12 -12
- package/dist/{chunk-PM3OSANE.js → chunk-5MJHH72T.js} +14 -3
- package/dist/chunk-5MJHH72T.js.map +1 -0
- package/dist/{chunk-RKB2Z457.js → chunk-5VGJXWQ2.js} +2 -2
- package/dist/{chunk-GFUUFM2O.js → chunk-5W6ZDKRR.js} +6 -6
- package/dist/{chunk-6PQNLL4E.js → chunk-5W7KJ5NQ.js} +37 -37
- package/dist/{chunk-Q35YZVDZ.js → chunk-5Y2FPLZE.js} +9 -9
- package/dist/{chunk-6W3LF3DB.js → chunk-5YFY4SFC.js} +2 -12
- package/dist/chunk-5YFY4SFC.js.map +1 -0
- package/dist/{chunk-F3NERYBQ.js → chunk-62VER7O4.js} +6 -6
- package/dist/{chunk-FBMU3VK5.js → chunk-6DCEDIF6.js} +2 -2
- package/dist/{chunk-LE2EDBXU.js → chunk-73WI7FL2.js} +18 -18
- package/dist/chunk-756MKA2J.js +45 -0
- package/dist/chunk-756MKA2J.js.map +1 -0
- package/dist/{chunk-ZRJCGBVV.js → chunk-7FJMRJDG.js} +2 -2
- package/dist/{chunk-7KGKDWWR.js → chunk-7HFLYNWN.js} +2 -2
- package/dist/{chunk-72J6C2AJ.js → chunk-7KIENXRE.js} +2 -2
- package/dist/{chunk-CBY5CXBD.js → chunk-7NPCEBZE.js} +5 -5
- package/dist/{chunk-46VBQG2D.js → chunk-7P4AQMGA.js} +13 -13
- package/dist/{chunk-X7L4H4VG.js → chunk-7TCT7KPQ.js} +742 -644
- package/dist/chunk-7TCT7KPQ.js.map +1 -0
- package/dist/{chunk-CVG4FILQ.js → chunk-7XO7YKPC.js} +280 -1035
- package/dist/chunk-7XO7YKPC.js.map +1 -0
- package/dist/{chunk-S7PVL7XH.js → chunk-A4BD4ZVB.js} +4 -4
- package/dist/{chunk-EF5SYXAY.js → chunk-ACL2V2KE.js} +30 -22
- package/dist/chunk-ACL2V2KE.js.map +1 -0
- package/dist/{chunk-73SOCVLS.js → chunk-AIEXYO2X.js} +3 -3
- package/dist/{chunk-U7TC2XJQ.js → chunk-AJPW3SV4.js} +3 -3
- package/dist/{chunk-HRJQAFKR.js → chunk-AX6YJA5U.js} +2 -2
- package/dist/{chunk-P5WABK2H.js → chunk-BCM7C3MJ.js} +9 -9
- package/dist/{chunk-DT7BORXG.js → chunk-BMJTNPWK.js} +2 -2
- package/dist/{chunk-HIHO2QE7.js → chunk-BT2MVGHT.js} +2 -2
- package/dist/{chunk-3XOISKZC.js → chunk-BXQYAAVE.js} +4 -4
- package/dist/{chunk-IBTXYLBW.js → chunk-CCFWY4GF.js} +2 -2
- package/dist/{chunk-ZOC3OP6F.js → chunk-CCR33J7L.js} +2 -2
- package/dist/{chunk-GTQ3SNEI.js → chunk-CD3MO3IC.js} +2 -2
- package/dist/{chunk-WSMYOLHG.js → chunk-CDEXRJB6.js} +5 -5
- package/dist/{chunk-3GLAPCVI.js → chunk-CFFNT2OY.js} +8 -8
- package/dist/{chunk-HO5Y2OOX.js → chunk-CMLJSF2F.js} +10 -10
- package/dist/{chunk-RA3FNMWF.js → chunk-CP7ZQHBW.js} +10 -10
- package/dist/{chunk-IOKSNX74.js → chunk-D5OWJZQR.js} +2 -2
- package/dist/{chunk-SQGXMHJO.js → chunk-DGLRZMXL.js} +3 -3
- package/dist/{chunk-GNEHAPKV.js → chunk-DJFTH2DI.js} +3 -3
- package/dist/{chunk-HQG4SLTE.js → chunk-DYJGYGPB.js} +2 -2
- package/dist/{chunk-4EAF3HSD.js → chunk-EJ7WARW7.js} +2 -2
- package/dist/{chunk-3AA6RNGE.js → chunk-ENS6E4RZ.js} +2 -2
- package/dist/{chunk-OOEO4MKY.js → chunk-EPWD4KRA.js} +2 -2
- package/dist/{chunk-PN66T6JA.js → chunk-EQE3MNQN.js} +5 -5
- package/dist/{chunk-TSBE4KOQ.js → chunk-EWL6NDOO.js} +3 -3
- package/dist/{chunk-OO2T63BY.js → chunk-EYS4ZOF5.js} +2 -2
- package/dist/{chunk-7CZTKBTI.js → chunk-FDAV72IX.js} +5 -5
- package/dist/{chunk-AG7VGUIW.js → chunk-FFNPUSVO.js} +7 -7
- package/dist/{chunk-P5T36BA3.js → chunk-FRP64DEK.js} +2 -2
- package/dist/{chunk-KBF3SE7G.js → chunk-FSP334UU.js} +2 -2
- package/dist/{chunk-BSX2R4CW.js → chunk-FTX5CNHA.js} +4 -4
- package/dist/{chunk-O756O2I7.js → chunk-FWOBNL2A.js} +1 -1
- package/dist/{chunk-6NIB2KGJ.js → chunk-FWYEZ3LE.js} +33 -33
- package/dist/{chunk-DLOYMWUQ.js → chunk-G4HQUBO4.js} +7 -7
- package/dist/{chunk-CSHBR2IZ.js → chunk-GDLDBR6B.js} +2 -2
- package/dist/chunk-GGV4NSG3.js +792 -0
- package/dist/chunk-GGV4NSG3.js.map +1 -0
- package/dist/{chunk-U36PO27Q.js → chunk-GHHM6WN4.js} +3 -3
- package/dist/{chunk-OANSIX34.js → chunk-GRSODLVO.js} +4 -4
- package/dist/{chunk-4R3JCVID.js → chunk-GT7JFQ4E.js} +410 -153
- package/dist/chunk-GT7JFQ4E.js.map +1 -0
- package/dist/{chunk-EU6XSQFM.js → chunk-GXW2I2M2.js} +2 -2
- package/dist/{chunk-5JEIDFPD.js → chunk-GZS37O3G.js} +1 -1
- package/dist/{chunk-XFNLU7EW.js → chunk-H5M33DAL.js} +15 -6
- package/dist/chunk-H5M33DAL.js.map +1 -0
- package/dist/{chunk-HNYJEAES.js → chunk-HQWVDQXW.js} +7 -7
- package/dist/{chunk-YXOKAG66.js → chunk-HU6JTNWF.js} +2 -2
- package/dist/{chunk-QRVNI5V6.js → chunk-I6KIQKU6.js} +3 -3
- package/dist/{chunk-APU42QDI.js → chunk-IBA5FMRE.js} +115 -111
- package/dist/chunk-IBA5FMRE.js.map +1 -0
- package/dist/{chunk-BNUPYHHZ.js → chunk-IDXTASGN.js} +4 -4
- package/dist/{chunk-KF3MF6FP.js → chunk-IECRGM6K.js} +3 -2
- package/dist/chunk-IECRGM6K.js.map +1 -0
- package/dist/chunk-IJYL5BZM.js +38 -0
- package/dist/chunk-IJYL5BZM.js.map +1 -0
- package/dist/{chunk-L6RXRRN3.js → chunk-ILDOW2IQ.js} +3 -3
- package/dist/{chunk-VUHPA3XQ.js → chunk-ITX2TB4K.js} +6 -6
- package/dist/{chunk-BXRIQZAH.js → chunk-J22HD2PB.js} +5 -5
- package/dist/{chunk-U47YDYLQ.js → chunk-J5MEDX7C.js} +8 -8
- package/dist/{chunk-F6LBGYS6.js → chunk-J7FBBLHF.js} +35 -35
- package/dist/{chunk-5JZYPZ72.js → chunk-JFK7NTEA.js} +4 -4
- package/dist/chunk-JFK7NTEA.js.map +1 -0
- package/dist/{chunk-QZRDCFHI.js → chunk-JM4HQPAI.js} +5 -5
- package/dist/{chunk-PIVGX42P.js → chunk-JNY5MT3I.js} +2 -2
- package/dist/{chunk-XWWXIZFP.js → chunk-JO6R5EXF.js} +7 -7
- package/dist/{chunk-NWZW2WHN.js → chunk-JQCGPTZ6.js} +9 -9
- package/dist/chunk-JRSNCSZN.js +37 -0
- package/dist/chunk-JRSNCSZN.js.map +1 -0
- package/dist/{chunk-OR37STQZ.js → chunk-KEXYBG7Q.js} +3 -3
- package/dist/{chunk-AZVANYMB.js → chunk-KUNFUSZ7.js} +2 -2
- package/dist/{chunk-DXZNDKQD.js → chunk-LEEJBZ5B.js} +2 -2
- package/dist/{chunk-STUCI6QA.js → chunk-LEKBNKLD.js} +1 -1
- package/dist/{chunk-STUCI6QA.js.map → chunk-LEKBNKLD.js.map} +1 -1
- package/dist/{chunk-AOLE4IRZ.js → chunk-LF5CBAOS.js} +5 -5
- package/dist/{chunk-BJIZ7PL7.js → chunk-LHLK7FUA.js} +145 -29
- package/dist/chunk-LHLK7FUA.js.map +1 -0
- package/dist/{chunk-RIMKJBCD.js → chunk-LMPTC4CX.js} +2 -2
- package/dist/{chunk-3KVWXKD6.js → chunk-LQ47YL6E.js} +2 -2
- package/dist/{chunk-RSNYGEVZ.js → chunk-LT4J7RHI.js} +13 -13
- package/dist/{chunk-U3HSFCON.js → chunk-MCTTONOW.js} +28 -28
- package/dist/{chunk-7DU35P5J.js → chunk-MIECLOQC.js} +9 -9
- package/dist/{chunk-FM4OUCC2.js → chunk-MOKYT3X3.js} +3 -3
- package/dist/{chunk-GZ64CASI.js → chunk-MVZYNZXE.js} +5 -4
- package/dist/chunk-MVZYNZXE.js.map +1 -0
- package/dist/{chunk-L7YURQI2.js → chunk-MXLKI7BI.js} +3 -3
- package/dist/{chunk-XRRSFQEV.js → chunk-NAZZLAWX.js} +2 -2
- package/dist/{chunk-UWJ5P5CU.js → chunk-NEK4WB5P.js} +3 -3
- package/dist/{chunk-6L7U46Y2.js → chunk-NKNVIO66.js} +2 -2
- package/dist/{chunk-JKUICTLM.js → chunk-NLAFNMPK.js} +2 -2
- package/dist/{chunk-4LKNIGHB.js → chunk-O2SBHS2N.js} +2 -2
- package/dist/{chunk-DWPOQ3S5.js → chunk-OTMWHZBY.js} +2 -2
- package/dist/{chunk-JTN3T4QN.js → chunk-PCFK7HKD.js} +14 -14
- package/dist/{chunk-VVCDB2T7.js → chunk-PCJLH45G.js} +3 -3
- package/dist/{chunk-PZ24CYDO.js → chunk-PFAUGEV5.js} +2 -2
- package/dist/{chunk-HGMWMK5K.js → chunk-PO3BH3KQ.js} +2 -2
- package/dist/{chunk-B74GSYR6.js → chunk-PUTS4DYW.js} +2 -2
- package/dist/{chunk-JSIDLTTG.js → chunk-PZ2V2XIK.js} +2 -2
- package/dist/{chunk-TMEQPODK.js → chunk-PZ37VDB5.js} +2 -2
- package/dist/{chunk-Q35DT6I6.js → chunk-QFMLAT7L.js} +234 -225
- package/dist/chunk-QFMLAT7L.js.map +1 -0
- package/dist/{chunk-LVONK3YQ.js → chunk-QRKTESVE.js} +2 -2
- package/dist/{chunk-HT5WSUC7.js → chunk-QXEDIDBZ.js} +3 -3
- package/dist/{chunk-WURSS6MP.js → chunk-R66YMYJU.js} +2 -2
- package/dist/{chunk-HDHK3SXK.js → chunk-RFLYID6H.js} +5 -5
- package/dist/{chunk-ADJJQSYC.js → chunk-RIYZFKIM.js} +39 -37
- package/dist/chunk-RIYZFKIM.js.map +1 -0
- package/dist/{chunk-JK7C5A4I.js → chunk-RQNZDTKT.js} +19 -19
- package/dist/{chunk-EHCUFCXM.js → chunk-RYSRFAHN.js} +32 -22
- package/dist/chunk-RYSRFAHN.js.map +1 -0
- package/dist/{chunk-I6VUUEXH.js → chunk-S2U4CDAC.js} +150 -150
- package/dist/chunk-S2U4CDAC.js.map +1 -0
- package/dist/{chunk-ST22GONV.js → chunk-S37GP7LX.js} +19 -19
- package/dist/{chunk-A2EWJQXX.js → chunk-SM5QX6UK.js} +4 -4
- package/dist/{chunk-FBE6AIIW.js → chunk-SOKNCW5U.js} +2 -2
- package/dist/{chunk-4W7VISE7.js → chunk-SSOO4GWN.js} +193 -194
- package/dist/chunk-SSOO4GWN.js.map +1 -0
- package/dist/{chunk-UP4BE32Y.js → chunk-SY2AAZNB.js} +5 -5
- package/dist/{chunk-33TPANCR.js → chunk-TFK4KFKA.js} +4 -4
- package/dist/{chunk-4432A3HQ.js → chunk-TIQPKOFW.js} +4 -4
- package/dist/{chunk-HPPKLBTJ.js → chunk-TJQDL3JH.js} +2 -2
- package/dist/chunk-TL7BOFFL.js +89 -0
- package/dist/chunk-TL7BOFFL.js.map +1 -0
- package/dist/{chunk-FD4Q5KFL.js → chunk-TLL22FFO.js} +2 -2
- package/dist/{chunk-QM5H4FPT.js → chunk-TV6BWONY.js} +3 -3
- package/dist/{chunk-4VKA5O7T.js → chunk-U6MPB3K6.js} +4 -4
- package/dist/{chunk-XOFUXMPP.js → chunk-ULJAOMJA.js} +2 -2
- package/dist/chunk-ULYQEFNH.js +529 -0
- package/dist/chunk-ULYQEFNH.js.map +1 -0
- package/dist/{chunk-H5EVWF6L.js → chunk-UNNJUJVD.js} +2 -2
- package/dist/{chunk-RGW24ZZM.js → chunk-UP7I3W6O.js} +51 -49
- package/dist/chunk-UP7I3W6O.js.map +1 -0
- package/dist/{chunk-5MZTJMZ3.js → chunk-UUGR3X5I.js} +17 -11
- package/dist/chunk-UUGR3X5I.js.map +1 -0
- package/dist/{chunk-Z6DKXQG7.js → chunk-UXXFMF4X.js} +2 -2
- package/dist/{chunk-OBQVTCTW.js → chunk-UYNCMZX5.js} +4 -4
- package/dist/{chunk-RGPYMHKI.js → chunk-V3K4RQO7.js} +9 -3
- package/dist/chunk-V3K4RQO7.js.map +1 -0
- package/dist/{chunk-KZHW27BV.js → chunk-V4QZ7UBK.js} +2 -2
- package/dist/{chunk-SUVEDKE2.js → chunk-VH5EGTH2.js} +3 -3
- package/dist/{chunk-MYNUBDU7.js → chunk-VYKW6TB2.js} +1 -1
- package/dist/chunk-VYKW6TB2.js.map +1 -0
- package/dist/{chunk-QEJTQTF5.js → chunk-W6T5HR3Z.js} +3 -3
- package/dist/{chunk-VP62LPLW.js → chunk-WCMG4HYI.js} +10 -10
- package/dist/{chunk-GZLLDA6P.js → chunk-WEFN327U.js} +2 -2
- package/dist/{chunk-7BST7BA6.js → chunk-WKHUZIOW.js} +1 -1
- package/dist/{chunk-ANHUMDJX.js → chunk-WNDTLK44.js} +2 -2
- package/dist/{chunk-2DS4UOYQ.js → chunk-WSZQNTVN.js} +2 -2
- package/dist/{chunk-GALB2G3W.js → chunk-X2AH4DRF.js} +2 -2
- package/dist/{chunk-Z2DAWUO3.js → chunk-XMNUZUUA.js} +6 -6
- package/dist/{chunk-GAIM5RNE.js → chunk-XN7NSPE6.js} +3 -3
- package/dist/chunk-XV6ZYRHK.js +59 -0
- package/dist/chunk-XV6ZYRHK.js.map +1 -0
- package/dist/{chunk-FLGUVRR7.js → chunk-Y5BSA3I7.js} +5 -5
- package/dist/{chunk-WRLWLGEF.js → chunk-Y5E3XQ2S.js} +25 -2
- package/dist/{chunk-WRLWLGEF.js.map → chunk-Y5E3XQ2S.js.map} +1 -1
- package/dist/{chunk-QCD5Y7K5.js → chunk-YEROLKOA.js} +16 -16
- package/dist/{chunk-NDF3SH3X.js → chunk-YJPKDRI2.js} +15 -15
- package/dist/{chunk-TQGJN5UZ.js → chunk-YV56F4UP.js} +318 -700
- package/dist/chunk-YV56F4UP.js.map +1 -0
- package/dist/{chunk-VAIESMPY.js → chunk-YVBHGMKC.js} +4 -4
- package/dist/{chunk-AD22P5X3.js → chunk-YXA2EKV3.js} +3 -3
- package/dist/{chunk-FDNJVZRE.js → chunk-YYCOSTUU.js} +17 -17
- package/dist/{chunk-NLMTNEWW.js → chunk-Z6E6TUAE.js} +2 -2
- package/dist/{chunk-BJW7G6EF.js → chunk-Z7IGO5EA.js} +3 -3
- package/dist/{chunk-NCX5SAQY.js → chunk-ZEIFJ6PX.js} +5 -5
- package/dist/{chunk-JRXHSVD5.js → chunk-ZS2UQ3DV.js} +65 -8
- package/dist/chunk-ZS2UQ3DV.js.map +1 -0
- package/dist/{chunk-4EONHNJU.js → chunk-ZVVT72MT.js} +2 -2
- package/dist/components/browser-viewer.d.ts +1 -1
- package/dist/composer.js +13 -13
- package/dist/{computer-viewer-KEDVLD42.js → computer-viewer-25AJIDYA.js} +9 -9
- package/dist/connect.js +10 -10
- package/dist/desktop.js +2 -2
- package/dist/editor.js +2 -2
- package/dist/{embedded-new-voice-LFHWWYD2.js → embedded-new-voice-RZZEJT6M.js} +7 -7
- package/dist/{embedded-voice-6QS4ANNX.js → embedded-voice-6OKSSPLW.js} +7 -7
- package/dist/{fleet-decision-row-QNSTP3VX.js → fleet-decision-row-NN2HXDX3.js} +2 -2
- package/dist/hooks/internal.d.ts +38 -0
- package/dist/hooks/use-client-config-flags.d.ts +12 -0
- package/dist/hooks/use-workspace-sessions.d.ts +10 -1
- package/dist/index.js +233 -227
- package/dist/interaction.js +11 -9
- package/dist/interaction.js.map +1 -1
- package/dist/{latest-question-AW3PPDUM.js → latest-question-2PFWQSSG.js} +4 -3
- package/dist/{latest-question-AW3PPDUM.js.map → latest-question-2PFWQSSG.js.map} +1 -1
- package/dist/machines.js +5 -5
- package/dist/messages/en.d.ts +3 -3
- package/dist/messages.js +1 -1
- package/dist/{model-policy-picker-menu-CURJ247L.js → model-policy-picker-menu-VVFGGAI6.js} +6 -6
- package/dist/native-previews.js +3 -3
- package/dist/{platform-activity-row-BMXXNZKX.js → platform-activity-row-ENQVIFTL.js} +2 -2
- package/dist/{queue-surface-implementation-2X5AXB6I.js → queue-surface-implementation-4SHOQPQQ.js} +10 -8
- package/dist/{queue-surface-implementation-2X5AXB6I.js.map → queue-surface-implementation-4SHOQPQQ.js.map} +1 -1
- package/dist/realtime.js +6 -6
- package/dist/{sandbox-files-4FBG3GS2.js → sandbox-files-CCOTGXXA.js} +11 -11
- package/dist/sandbox-files-CCOTGXXA.js.map +1 -0
- package/dist/session-app.js +258 -252
- package/dist/session-list-model.d.ts +1 -0
- package/dist/session-list-model.js +8 -2
- package/dist/{session-realtime-2XIB254N.js → session-realtime-JNKDSGH7.js} +3 -3
- package/dist/session-realtime-JNKDSGH7.js.map +1 -0
- package/dist/session-realtime.js +2 -2
- package/dist/session-ui.js +76 -71
- package/dist/session.js +24 -22
- package/dist/sites.js +2 -2
- package/dist/terminal.js +2 -2
- package/dist/this-computer.js +3 -3
- package/dist/timeline/invoked-tool.d.ts +5 -0
- package/dist/timeline/tool-display-name.d.ts +2 -2
- package/dist/timeline/tool-icon.d.ts +14 -0
- package/dist/timeline/tool-presentation.d.ts +8 -3
- package/dist/{timeline-annotation-markers-X4K2IEOO.js → timeline-annotation-markers-KHNYNY2J.js} +5 -5
- package/dist/{timeline-annotation-selection-MEHBW676.js → timeline-annotation-selection-AXEDJHBP.js} +7 -7
- package/dist/{timeline-annotations-dialog-U2FPQ3UY.js → timeline-annotations-dialog-AV4ZBXRC.js} +9 -9
- package/dist/timeline-model.js +25 -23
- package/dist/ui/access-list.js +18 -18
- package/dist/ui/cadence-picker.js +2 -2
- package/dist/ui/choice-cards.js +2 -2
- package/dist/ui/detail-page.js +2 -2
- package/dist/ui/detail-sheet.js +2 -2
- package/dist/ui/diff-view.js +2 -2
- package/dist/ui/disclosure.js +4 -4
- package/dist/ui/flush-form-page.js +3 -3
- package/dist/ui/form-dialog.js +2 -2
- package/dist/ui/list-row.js +4 -4
- package/dist/ui/revision-history.js +11 -11
- package/dist/ui/role-select.js +7 -7
- package/dist/ui/select-menu.js +2 -2
- package/dist/ui/settings-nav.js +3 -3
- package/dist/usage.js +3 -3
- package/dist/workbench.js +11 -11
- package/package.json +4 -4
- package/src/app/app-state.tsx +3 -1
- package/src/app/components/capabilities/session-machine-card.tsx +9 -2
- package/src/app/components/rail/session-list.tsx +254 -44
- package/src/app/components/rail/session-row-content.tsx +24 -2
- package/src/app/components/rail/session-shell.tsx +14 -9
- package/src/app/components/rail/site-session-group-heading.tsx +59 -20
- package/src/app/components/session/session-tenancy-control.tsx +18 -0
- package/src/app/components/session/site-origin-link.test.tsx +73 -0
- package/src/app/components/session/site-origin-link.tsx +4 -2
- package/src/app/embed/memory-navigation.tsx +1 -0
- package/src/app/lib/actions/held-modifier.test.ts +101 -0
- package/src/app/lib/actions/held-modifier.ts +108 -0
- package/src/app/lib/console-site.tsx +38 -0
- package/src/app/lib/navigation.tsx +4 -0
- package/src/app/lib/routes.tsx +42 -0
- package/src/app/lib/session-failure-toasts.ts +26 -0
- package/src/app/lib/session-ui-features.tsx +18 -4
- package/src/app/lib/sessions-group.tsx +219 -30
- package/src/app/lib/site-opened.tsx +48 -0
- package/src/app/lib/site-session-groups.test.ts +173 -6
- package/src/app/lib/site-view-routes.test.ts +55 -0
- package/src/app/lib/use-session-list-hint-refresh.tsx +44 -4
- package/src/app/routes/artifacts.tsx +2 -29
- package/src/app/routes/session-transient-failures.test.tsx +343 -0
- package/src/app/routes/session-unavailable.tsx +74 -3
- package/src/app/routes/session.tsx +4 -13
- package/src/app/routes/sessions-index.tsx +13 -9
- package/src/app/routes/site-view.test.tsx +476 -0
- package/src/app/routes/site-view.tsx +583 -0
- package/src/components/browser-viewer.tsx +16 -2
- package/src/hooks/internal.ts +129 -6
- package/src/hooks/use-client-config-flags.ts +8 -0
- package/src/hooks/use-session-events.ts +83 -9
- package/src/hooks/use-workspace-sessions.ts +21 -1
- package/src/messages/en.ts +3 -3
- package/src/session-list-model.ts +4 -0
- package/src/timeline/activity-rail.tsx +3 -2
- package/src/timeline/invoked-tool.ts +14 -4
- package/src/timeline/projection.ts +11 -6
- package/src/timeline/rolling-activity.tsx +6 -2
- package/src/timeline/tool-display-name.ts +2 -2
- package/src/timeline/tool-icon.tsx +165 -0
- package/src/timeline/tool-presentation.ts +207 -48
- package/src/timeline/tool-renderers.tsx +1 -70
- package/styles/compiled.css +38 -0
- package/dist/chunk-22ZBT6CN.js +0 -50
- package/dist/chunk-22ZBT6CN.js.map +0 -1
- package/dist/chunk-4R3JCVID.js.map +0 -1
- package/dist/chunk-4W7VISE7.js.map +0 -1
- package/dist/chunk-5JZYPZ72.js.map +0 -1
- package/dist/chunk-5MZTJMZ3.js.map +0 -1
- package/dist/chunk-6W3LF3DB.js.map +0 -1
- package/dist/chunk-ADJJQSYC.js.map +0 -1
- package/dist/chunk-APU42QDI.js.map +0 -1
- package/dist/chunk-BJIZ7PL7.js.map +0 -1
- package/dist/chunk-CVG4FILQ.js.map +0 -1
- package/dist/chunk-EF5SYXAY.js.map +0 -1
- package/dist/chunk-EHCUFCXM.js.map +0 -1
- package/dist/chunk-GZ64CASI.js.map +0 -1
- package/dist/chunk-I6VUUEXH.js.map +0 -1
- package/dist/chunk-JRXHSVD5.js.map +0 -1
- package/dist/chunk-KF3MF6FP.js.map +0 -1
- package/dist/chunk-MYNUBDU7.js.map +0 -1
- package/dist/chunk-NAWXARTY.js.map +0 -1
- package/dist/chunk-PM3OSANE.js.map +0 -1
- package/dist/chunk-Q35DT6I6.js.map +0 -1
- package/dist/chunk-R25ZKOZR.js +0 -24
- package/dist/chunk-R25ZKOZR.js.map +0 -1
- package/dist/chunk-RGPYMHKI.js.map +0 -1
- package/dist/chunk-RGW24ZZM.js.map +0 -1
- package/dist/chunk-ROQOVH4N.js.map +0 -1
- package/dist/chunk-TQGJN5UZ.js.map +0 -1
- package/dist/chunk-X7L4H4VG.js.map +0 -1
- package/dist/chunk-XFNLU7EW.js.map +0 -1
- package/dist/chunk-Z5WMLJKI.js.map +0 -1
- /package/dist/{browser-viewer-RYYQSRTC.js.map → app/lib/console-site.js.map} +0 -0
- /package/dist/{chat-interactive-block-ABCRKXJ4.js.map → app/lib/site-opened.js.map} +0 -0
- /package/dist/{computer-viewer-KEDVLD42.js.map → browser-viewer-QMCNV4RI.js.map} +0 -0
- /package/dist/{embedded-new-voice-LFHWWYD2.js.map → chat-interactive-block-PMIAUXSO.js.map} +0 -0
- /package/dist/{chunk-TGVVEGZG.js.map → chunk-22FFOHPT.js.map} +0 -0
- /package/dist/{chunk-UHFWF6ZU.js.map → chunk-2FPS5H2D.js.map} +0 -0
- /package/dist/{chunk-5POTDNQT.js.map → chunk-2NC7NZCE.js.map} +0 -0
- /package/dist/{chunk-ZKYYZH6L.js.map → chunk-2QBYDGWO.js.map} +0 -0
- /package/dist/{chunk-TWXIFWBD.js.map → chunk-34EU25RL.js.map} +0 -0
- /package/dist/{chunk-R63QEVPK.js.map → chunk-35BC2FU2.js.map} +0 -0
- /package/dist/{chunk-PTGRFAMH.js.map → chunk-3ABPIUCK.js.map} +0 -0
- /package/dist/{chunk-S4SC5SSV.js.map → chunk-3GU7AWG7.js.map} +0 -0
- /package/dist/{chunk-722UO6YQ.js.map → chunk-3PEXVG4D.js.map} +0 -0
- /package/dist/{chunk-63VGE4OH.js.map → chunk-3RMKPHBL.js.map} +0 -0
- /package/dist/{chunk-RQDFYQHA.js.map → chunk-3STBLX4O.js.map} +0 -0
- /package/dist/{chunk-S4EZ3JUB.js.map → chunk-3X5FKDYQ.js.map} +0 -0
- /package/dist/{chunk-KTRKZRID.js.map → chunk-4GLLWX33.js.map} +0 -0
- /package/dist/{chunk-SD2K5ZN5.js.map → chunk-4LPA25NQ.js.map} +0 -0
- /package/dist/{chunk-KWKGBGAF.js.map → chunk-4RMN4E2Y.js.map} +0 -0
- /package/dist/{chunk-X7ASQHR6.js.map → chunk-4SAGYEVB.js.map} +0 -0
- /package/dist/{chunk-HTT3FB7T.js.map → chunk-4VK2R5QC.js.map} +0 -0
- /package/dist/{chunk-DDK4WFJ3.js.map → chunk-4XQC7VLT.js.map} +0 -0
- /package/dist/{chunk-IVOA3DXA.js.map → chunk-4YXAQMTD.js.map} +0 -0
- /package/dist/{chunk-HOJGAJAB.js.map → chunk-52WK2GGK.js.map} +0 -0
- /package/dist/{chunk-NYZQ7LO7.js.map → chunk-552UYIQ7.js.map} +0 -0
- /package/dist/{chunk-LEXPBQ56.js.map → chunk-5DSKMG2I.js.map} +0 -0
- /package/dist/{chunk-WNG757ID.js.map → chunk-5FA455GR.js.map} +0 -0
- /package/dist/{chunk-HWDGJFM4.js.map → chunk-5FEN3KYH.js.map} +0 -0
- /package/dist/{chunk-OSVHU2WU.js.map → chunk-5JHRMUAZ.js.map} +0 -0
- /package/dist/{chunk-RKB2Z457.js.map → chunk-5VGJXWQ2.js.map} +0 -0
- /package/dist/{chunk-GFUUFM2O.js.map → chunk-5W6ZDKRR.js.map} +0 -0
- /package/dist/{chunk-6PQNLL4E.js.map → chunk-5W7KJ5NQ.js.map} +0 -0
- /package/dist/{chunk-Q35YZVDZ.js.map → chunk-5Y2FPLZE.js.map} +0 -0
- /package/dist/{chunk-F3NERYBQ.js.map → chunk-62VER7O4.js.map} +0 -0
- /package/dist/{chunk-FBMU3VK5.js.map → chunk-6DCEDIF6.js.map} +0 -0
- /package/dist/{chunk-LE2EDBXU.js.map → chunk-73WI7FL2.js.map} +0 -0
- /package/dist/{chunk-ZRJCGBVV.js.map → chunk-7FJMRJDG.js.map} +0 -0
- /package/dist/{chunk-7KGKDWWR.js.map → chunk-7HFLYNWN.js.map} +0 -0
- /package/dist/{chunk-72J6C2AJ.js.map → chunk-7KIENXRE.js.map} +0 -0
- /package/dist/{chunk-CBY5CXBD.js.map → chunk-7NPCEBZE.js.map} +0 -0
- /package/dist/{chunk-46VBQG2D.js.map → chunk-7P4AQMGA.js.map} +0 -0
- /package/dist/{chunk-S7PVL7XH.js.map → chunk-A4BD4ZVB.js.map} +0 -0
- /package/dist/{chunk-73SOCVLS.js.map → chunk-AIEXYO2X.js.map} +0 -0
- /package/dist/{chunk-U7TC2XJQ.js.map → chunk-AJPW3SV4.js.map} +0 -0
- /package/dist/{chunk-HRJQAFKR.js.map → chunk-AX6YJA5U.js.map} +0 -0
- /package/dist/{chunk-P5WABK2H.js.map → chunk-BCM7C3MJ.js.map} +0 -0
- /package/dist/{chunk-DT7BORXG.js.map → chunk-BMJTNPWK.js.map} +0 -0
- /package/dist/{chunk-HIHO2QE7.js.map → chunk-BT2MVGHT.js.map} +0 -0
- /package/dist/{chunk-3XOISKZC.js.map → chunk-BXQYAAVE.js.map} +0 -0
- /package/dist/{chunk-IBTXYLBW.js.map → chunk-CCFWY4GF.js.map} +0 -0
- /package/dist/{chunk-ZOC3OP6F.js.map → chunk-CCR33J7L.js.map} +0 -0
- /package/dist/{chunk-GTQ3SNEI.js.map → chunk-CD3MO3IC.js.map} +0 -0
- /package/dist/{chunk-WSMYOLHG.js.map → chunk-CDEXRJB6.js.map} +0 -0
- /package/dist/{chunk-3GLAPCVI.js.map → chunk-CFFNT2OY.js.map} +0 -0
- /package/dist/{chunk-HO5Y2OOX.js.map → chunk-CMLJSF2F.js.map} +0 -0
- /package/dist/{chunk-RA3FNMWF.js.map → chunk-CP7ZQHBW.js.map} +0 -0
- /package/dist/{chunk-IOKSNX74.js.map → chunk-D5OWJZQR.js.map} +0 -0
- /package/dist/{chunk-SQGXMHJO.js.map → chunk-DGLRZMXL.js.map} +0 -0
- /package/dist/{chunk-GNEHAPKV.js.map → chunk-DJFTH2DI.js.map} +0 -0
- /package/dist/{chunk-HQG4SLTE.js.map → chunk-DYJGYGPB.js.map} +0 -0
- /package/dist/{chunk-4EAF3HSD.js.map → chunk-EJ7WARW7.js.map} +0 -0
- /package/dist/{chunk-3AA6RNGE.js.map → chunk-ENS6E4RZ.js.map} +0 -0
- /package/dist/{chunk-OOEO4MKY.js.map → chunk-EPWD4KRA.js.map} +0 -0
- /package/dist/{chunk-PN66T6JA.js.map → chunk-EQE3MNQN.js.map} +0 -0
- /package/dist/{chunk-TSBE4KOQ.js.map → chunk-EWL6NDOO.js.map} +0 -0
- /package/dist/{chunk-OO2T63BY.js.map → chunk-EYS4ZOF5.js.map} +0 -0
- /package/dist/{chunk-7CZTKBTI.js.map → chunk-FDAV72IX.js.map} +0 -0
- /package/dist/{chunk-AG7VGUIW.js.map → chunk-FFNPUSVO.js.map} +0 -0
- /package/dist/{chunk-P5T36BA3.js.map → chunk-FRP64DEK.js.map} +0 -0
- /package/dist/{chunk-KBF3SE7G.js.map → chunk-FSP334UU.js.map} +0 -0
- /package/dist/{chunk-BSX2R4CW.js.map → chunk-FTX5CNHA.js.map} +0 -0
- /package/dist/{chunk-O756O2I7.js.map → chunk-FWOBNL2A.js.map} +0 -0
- /package/dist/{chunk-6NIB2KGJ.js.map → chunk-FWYEZ3LE.js.map} +0 -0
- /package/dist/{chunk-DLOYMWUQ.js.map → chunk-G4HQUBO4.js.map} +0 -0
- /package/dist/{chunk-CSHBR2IZ.js.map → chunk-GDLDBR6B.js.map} +0 -0
- /package/dist/{chunk-U36PO27Q.js.map → chunk-GHHM6WN4.js.map} +0 -0
- /package/dist/{chunk-OANSIX34.js.map → chunk-GRSODLVO.js.map} +0 -0
- /package/dist/{chunk-EU6XSQFM.js.map → chunk-GXW2I2M2.js.map} +0 -0
- /package/dist/{chunk-5JEIDFPD.js.map → chunk-GZS37O3G.js.map} +0 -0
- /package/dist/{chunk-HNYJEAES.js.map → chunk-HQWVDQXW.js.map} +0 -0
- /package/dist/{chunk-YXOKAG66.js.map → chunk-HU6JTNWF.js.map} +0 -0
- /package/dist/{chunk-QRVNI5V6.js.map → chunk-I6KIQKU6.js.map} +0 -0
- /package/dist/{chunk-BNUPYHHZ.js.map → chunk-IDXTASGN.js.map} +0 -0
- /package/dist/{chunk-L6RXRRN3.js.map → chunk-ILDOW2IQ.js.map} +0 -0
- /package/dist/{chunk-VUHPA3XQ.js.map → chunk-ITX2TB4K.js.map} +0 -0
- /package/dist/{chunk-BXRIQZAH.js.map → chunk-J22HD2PB.js.map} +0 -0
- /package/dist/{chunk-U47YDYLQ.js.map → chunk-J5MEDX7C.js.map} +0 -0
- /package/dist/{chunk-F6LBGYS6.js.map → chunk-J7FBBLHF.js.map} +0 -0
- /package/dist/{chunk-QZRDCFHI.js.map → chunk-JM4HQPAI.js.map} +0 -0
- /package/dist/{chunk-PIVGX42P.js.map → chunk-JNY5MT3I.js.map} +0 -0
- /package/dist/{chunk-XWWXIZFP.js.map → chunk-JO6R5EXF.js.map} +0 -0
- /package/dist/{chunk-NWZW2WHN.js.map → chunk-JQCGPTZ6.js.map} +0 -0
- /package/dist/{chunk-OR37STQZ.js.map → chunk-KEXYBG7Q.js.map} +0 -0
- /package/dist/{chunk-AZVANYMB.js.map → chunk-KUNFUSZ7.js.map} +0 -0
- /package/dist/{chunk-DXZNDKQD.js.map → chunk-LEEJBZ5B.js.map} +0 -0
- /package/dist/{chunk-AOLE4IRZ.js.map → chunk-LF5CBAOS.js.map} +0 -0
- /package/dist/{chunk-RIMKJBCD.js.map → chunk-LMPTC4CX.js.map} +0 -0
- /package/dist/{chunk-3KVWXKD6.js.map → chunk-LQ47YL6E.js.map} +0 -0
- /package/dist/{chunk-RSNYGEVZ.js.map → chunk-LT4J7RHI.js.map} +0 -0
- /package/dist/{chunk-U3HSFCON.js.map → chunk-MCTTONOW.js.map} +0 -0
- /package/dist/{chunk-7DU35P5J.js.map → chunk-MIECLOQC.js.map} +0 -0
- /package/dist/{chunk-FM4OUCC2.js.map → chunk-MOKYT3X3.js.map} +0 -0
- /package/dist/{chunk-L7YURQI2.js.map → chunk-MXLKI7BI.js.map} +0 -0
- /package/dist/{chunk-XRRSFQEV.js.map → chunk-NAZZLAWX.js.map} +0 -0
- /package/dist/{chunk-UWJ5P5CU.js.map → chunk-NEK4WB5P.js.map} +0 -0
- /package/dist/{chunk-6L7U46Y2.js.map → chunk-NKNVIO66.js.map} +0 -0
- /package/dist/{chunk-JKUICTLM.js.map → chunk-NLAFNMPK.js.map} +0 -0
- /package/dist/{chunk-4LKNIGHB.js.map → chunk-O2SBHS2N.js.map} +0 -0
- /package/dist/{chunk-DWPOQ3S5.js.map → chunk-OTMWHZBY.js.map} +0 -0
- /package/dist/{chunk-JTN3T4QN.js.map → chunk-PCFK7HKD.js.map} +0 -0
- /package/dist/{chunk-VVCDB2T7.js.map → chunk-PCJLH45G.js.map} +0 -0
- /package/dist/{chunk-PZ24CYDO.js.map → chunk-PFAUGEV5.js.map} +0 -0
- /package/dist/{chunk-HGMWMK5K.js.map → chunk-PO3BH3KQ.js.map} +0 -0
- /package/dist/{chunk-B74GSYR6.js.map → chunk-PUTS4DYW.js.map} +0 -0
- /package/dist/{chunk-JSIDLTTG.js.map → chunk-PZ2V2XIK.js.map} +0 -0
- /package/dist/{chunk-TMEQPODK.js.map → chunk-PZ37VDB5.js.map} +0 -0
- /package/dist/{chunk-LVONK3YQ.js.map → chunk-QRKTESVE.js.map} +0 -0
- /package/dist/{chunk-HT5WSUC7.js.map → chunk-QXEDIDBZ.js.map} +0 -0
- /package/dist/{chunk-WURSS6MP.js.map → chunk-R66YMYJU.js.map} +0 -0
- /package/dist/{chunk-HDHK3SXK.js.map → chunk-RFLYID6H.js.map} +0 -0
- /package/dist/{chunk-JK7C5A4I.js.map → chunk-RQNZDTKT.js.map} +0 -0
- /package/dist/{chunk-ST22GONV.js.map → chunk-S37GP7LX.js.map} +0 -0
- /package/dist/{chunk-A2EWJQXX.js.map → chunk-SM5QX6UK.js.map} +0 -0
- /package/dist/{chunk-FBE6AIIW.js.map → chunk-SOKNCW5U.js.map} +0 -0
- /package/dist/{chunk-UP4BE32Y.js.map → chunk-SY2AAZNB.js.map} +0 -0
- /package/dist/{chunk-33TPANCR.js.map → chunk-TFK4KFKA.js.map} +0 -0
- /package/dist/{chunk-4432A3HQ.js.map → chunk-TIQPKOFW.js.map} +0 -0
- /package/dist/{chunk-HPPKLBTJ.js.map → chunk-TJQDL3JH.js.map} +0 -0
- /package/dist/{chunk-FD4Q5KFL.js.map → chunk-TLL22FFO.js.map} +0 -0
- /package/dist/{chunk-QM5H4FPT.js.map → chunk-TV6BWONY.js.map} +0 -0
- /package/dist/{chunk-4VKA5O7T.js.map → chunk-U6MPB3K6.js.map} +0 -0
- /package/dist/{chunk-XOFUXMPP.js.map → chunk-ULJAOMJA.js.map} +0 -0
- /package/dist/{chunk-H5EVWF6L.js.map → chunk-UNNJUJVD.js.map} +0 -0
- /package/dist/{chunk-Z6DKXQG7.js.map → chunk-UXXFMF4X.js.map} +0 -0
- /package/dist/{chunk-OBQVTCTW.js.map → chunk-UYNCMZX5.js.map} +0 -0
- /package/dist/{chunk-KZHW27BV.js.map → chunk-V4QZ7UBK.js.map} +0 -0
- /package/dist/{chunk-SUVEDKE2.js.map → chunk-VH5EGTH2.js.map} +0 -0
- /package/dist/{chunk-QEJTQTF5.js.map → chunk-W6T5HR3Z.js.map} +0 -0
- /package/dist/{chunk-VP62LPLW.js.map → chunk-WCMG4HYI.js.map} +0 -0
- /package/dist/{chunk-GZLLDA6P.js.map → chunk-WEFN327U.js.map} +0 -0
- /package/dist/{chunk-7BST7BA6.js.map → chunk-WKHUZIOW.js.map} +0 -0
- /package/dist/{chunk-ANHUMDJX.js.map → chunk-WNDTLK44.js.map} +0 -0
- /package/dist/{chunk-2DS4UOYQ.js.map → chunk-WSZQNTVN.js.map} +0 -0
- /package/dist/{chunk-GALB2G3W.js.map → chunk-X2AH4DRF.js.map} +0 -0
- /package/dist/{chunk-Z2DAWUO3.js.map → chunk-XMNUZUUA.js.map} +0 -0
- /package/dist/{chunk-GAIM5RNE.js.map → chunk-XN7NSPE6.js.map} +0 -0
- /package/dist/{chunk-FLGUVRR7.js.map → chunk-Y5BSA3I7.js.map} +0 -0
- /package/dist/{chunk-QCD5Y7K5.js.map → chunk-YEROLKOA.js.map} +0 -0
- /package/dist/{chunk-NDF3SH3X.js.map → chunk-YJPKDRI2.js.map} +0 -0
- /package/dist/{chunk-VAIESMPY.js.map → chunk-YVBHGMKC.js.map} +0 -0
- /package/dist/{chunk-AD22P5X3.js.map → chunk-YXA2EKV3.js.map} +0 -0
- /package/dist/{chunk-FDNJVZRE.js.map → chunk-YYCOSTUU.js.map} +0 -0
- /package/dist/{chunk-NLMTNEWW.js.map → chunk-Z6E6TUAE.js.map} +0 -0
- /package/dist/{chunk-BJW7G6EF.js.map → chunk-Z7IGO5EA.js.map} +0 -0
- /package/dist/{chunk-NCX5SAQY.js.map → chunk-ZEIFJ6PX.js.map} +0 -0
- /package/dist/{chunk-4EONHNJU.js.map → chunk-ZVVT72MT.js.map} +0 -0
- /package/dist/{embedded-voice-6QS4ANNX.js.map → computer-viewer-25AJIDYA.js.map} +0 -0
- /package/dist/{model-policy-picker-menu-CURJ247L.js.map → embedded-new-voice-RZZEJT6M.js.map} +0 -0
- /package/dist/{sandbox-files-4FBG3GS2.js.map → embedded-voice-6OKSSPLW.js.map} +0 -0
- /package/dist/{fleet-decision-row-QNSTP3VX.js.map → fleet-decision-row-NN2HXDX3.js.map} +0 -0
- /package/dist/{session-realtime-2XIB254N.js.map → model-policy-picker-menu-VVFGGAI6.js.map} +0 -0
- /package/dist/{platform-activity-row-BMXXNZKX.js.map → platform-activity-row-ENQVIFTL.js.map} +0 -0
- /package/dist/{timeline-annotation-markers-X4K2IEOO.js.map → timeline-annotation-markers-KHNYNY2J.js.map} +0 -0
- /package/dist/{timeline-annotation-selection-MEHBW676.js.map → timeline-annotation-selection-AXEDJHBP.js.map} +0 -0
- /package/dist/{timeline-annotations-dialog-U2FPQ3UY.js.map → timeline-annotations-dialog-AV4ZBXRC.js.map} +0 -0
|
@@ -1,164 +1,53 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import {
|
|
3
|
+
applyPatchOpsFromToolItem,
|
|
4
|
+
controlCaret,
|
|
5
|
+
execTruncated,
|
|
6
|
+
invokedToolCall,
|
|
7
|
+
isExecSessionLostBanner,
|
|
8
|
+
looksBinary,
|
|
9
|
+
parseExecBannerSessionId,
|
|
10
|
+
parseToolArgs,
|
|
11
|
+
retainedToolResultImages,
|
|
12
|
+
sandboxCommandExitCode,
|
|
13
|
+
stripExecBanner,
|
|
14
|
+
tailPeek,
|
|
15
|
+
unwrapMcpOutput,
|
|
16
|
+
v4aToGitFileDiff
|
|
17
|
+
} from "./chunk-ULYQEFNH.js";
|
|
18
|
+
import {
|
|
19
|
+
builtInToolStep,
|
|
3
20
|
mcpToolLeaf,
|
|
4
21
|
toolDisplayName,
|
|
5
22
|
toolStepLabel,
|
|
6
23
|
toolStepPhase
|
|
7
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-LEKBNKLD.js";
|
|
8
25
|
import {
|
|
9
26
|
stringifyPayload,
|
|
10
27
|
tryParseJson
|
|
11
28
|
} from "./chunk-SJGAHTY5.js";
|
|
12
29
|
|
|
13
|
-
// src/timeline/
|
|
14
|
-
var
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"
|
|
30
|
+
// src/timeline/genie-copy.ts
|
|
31
|
+
var GENIE_PREPARING_PHRASES = (t) => [
|
|
32
|
+
t("timeline.genieCopy.polishingTheLamp"),
|
|
33
|
+
t("timeline.genieCopy.consultingTheCarpet"),
|
|
34
|
+
t("timeline.genieCopy.untanglingWishes"),
|
|
35
|
+
t("timeline.genieCopy.summoningALittleCleverness"),
|
|
36
|
+
t("timeline.genieCopy.checkingTheFinePrintOn"),
|
|
37
|
+
t("timeline.genieCopy.warmingUpTheAbracadabra"),
|
|
38
|
+
t("timeline.genieCopy.rearrangingTheStars"),
|
|
39
|
+
t("timeline.genieCopy.negotiatingWithTheLamp"),
|
|
40
|
+
t("timeline.genieCopy.dustingOffAThousandYears"),
|
|
41
|
+
t("timeline.genieCopy.wishfulThinking"),
|
|
42
|
+
t("timeline.genieCopy.decantingALittleMagic"),
|
|
43
|
+
t("timeline.genieCopy.findingTheGoodStardust"),
|
|
44
|
+
t("timeline.genieCopy.fluffingTheMagicCarpet"),
|
|
45
|
+
t("timeline.genieCopy.puttingAWishIntoMotion"),
|
|
46
|
+
t("timeline.genieCopy.aLittleHocusALittle")
|
|
47
|
+
];
|
|
48
|
+
var GENIE_WAITING_PHRASES = (t) => [
|
|
49
|
+
t("timeline.genieCopy.waitingForAResponse")
|
|
22
50
|
];
|
|
23
|
-
function turnSummaryFallbackLabel(t, items, unloadedSteps = false) {
|
|
24
|
-
const preparationOnly = !unloadedSteps && items.some((item) => item.kind === "startup-phase") && items.every((item) => item.kind === "startup-phase" || item.kind === "agent-message");
|
|
25
|
-
return preparationOnly ? t("timeline.turnSummary.preparation") : t("timeline.turnSummary.steps");
|
|
26
|
-
}
|
|
27
|
-
function formatElapsed(t, durationMs) {
|
|
28
|
-
const totalSeconds = Math.max(0, Math.floor(durationMs / 1e3));
|
|
29
|
-
if (totalSeconds < 60) {
|
|
30
|
-
return t("timeline.turnSummaryModel.seconds", { count: totalSeconds });
|
|
31
|
-
}
|
|
32
|
-
const totalMinutes = Math.floor(totalSeconds / 60);
|
|
33
|
-
if (totalMinutes < 60) {
|
|
34
|
-
const seconds = totalSeconds % 60;
|
|
35
|
-
return seconds ? t("timeline.turnSummaryModel.minutesSeconds", { minutes: totalMinutes, seconds }) : t("timeline.turnSummaryModel.minutes", { count: totalMinutes });
|
|
36
|
-
}
|
|
37
|
-
const hours = Math.floor(totalMinutes / 60);
|
|
38
|
-
return t("timeline.turnSummaryModel.hoursMinutes", {
|
|
39
|
-
hours,
|
|
40
|
-
minutes: String(totalMinutes % 60).padStart(2, "0")
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
function createTurnSummaryContext(t, items, outcome, failureText, durationMs, contextCompactionCount) {
|
|
44
|
-
const itemSnapshot = Object.freeze([...items]);
|
|
45
|
-
const toolCalls = Object.freeze(
|
|
46
|
-
itemSnapshot.filter((item) => item.kind === "tool-call")
|
|
47
|
-
);
|
|
48
|
-
const settled = itemSnapshot.every((item) => {
|
|
49
|
-
if (item.kind === "reasoning" || item.kind === "agent-message") {
|
|
50
|
-
return !item.streaming;
|
|
51
|
-
}
|
|
52
|
-
if (item.kind === "tool-call" || item.kind === "worker" || item.kind === "sandbox" || item.kind === "startup-phase") {
|
|
53
|
-
return item.status !== "running";
|
|
54
|
-
}
|
|
55
|
-
return true;
|
|
56
|
-
});
|
|
57
|
-
return Object.freeze({
|
|
58
|
-
t,
|
|
59
|
-
items: itemSnapshot,
|
|
60
|
-
toolCalls,
|
|
61
|
-
outcome,
|
|
62
|
-
failureText,
|
|
63
|
-
durationMs,
|
|
64
|
-
settled,
|
|
65
|
-
contextCompactionCount: Math.max(0, Math.floor(contextCompactionCount))
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
var BUILT_IN_TURN_SUMMARY_FACETS = Object.freeze([
|
|
69
|
-
{
|
|
70
|
-
id: "memories",
|
|
71
|
-
summarize: ({ items, t }) => {
|
|
72
|
-
let saved = 0;
|
|
73
|
-
let updated = 0;
|
|
74
|
-
for (const item of items) {
|
|
75
|
-
if (item.kind !== "memory") {
|
|
76
|
-
continue;
|
|
77
|
-
}
|
|
78
|
-
if (item.variant === "corrected") {
|
|
79
|
-
updated += 1;
|
|
80
|
-
} else {
|
|
81
|
-
saved += 1;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
const parts = [];
|
|
85
|
-
if (saved) {
|
|
86
|
-
parts.push(t("timeline.turnSummaryModel.memoriesSaved", { count: saved }));
|
|
87
|
-
}
|
|
88
|
-
if (updated) {
|
|
89
|
-
parts.push(t("timeline.turnSummaryModel.memoriesUpdated", { count: updated }));
|
|
90
|
-
}
|
|
91
|
-
return parts.length > 0 ? { content: parts.join(" \xB7 ") } : null;
|
|
92
|
-
}
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
id: "compacted",
|
|
96
|
-
summarize: ({ contextCompactionCount, t }) => contextCompactionCount > 0 ? {
|
|
97
|
-
content: t("timeline.turnSummaryModel.compacts", { count: contextCompactionCount }),
|
|
98
|
-
ariaLabel: t("timeline.turnSummaryModel.compactions", {
|
|
99
|
-
count: contextCompactionCount
|
|
100
|
-
})
|
|
101
|
-
} : null
|
|
102
|
-
},
|
|
103
|
-
{
|
|
104
|
-
id: "duration",
|
|
105
|
-
summarize: ({ durationMs, t }) => {
|
|
106
|
-
const duration = formatDurationFacet(t, durationMs);
|
|
107
|
-
return duration ? { content: duration } : null;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
]);
|
|
111
|
-
function resolveTurnSummaryFacets(configuration) {
|
|
112
|
-
const requested = configuration?.replace ?? [
|
|
113
|
-
...BUILT_IN_TURN_SUMMARY_FACETS.filter(
|
|
114
|
-
(facet) => !configuration?.remove?.includes(facet.id)
|
|
115
|
-
),
|
|
116
|
-
...configuration?.add ?? []
|
|
117
|
-
];
|
|
118
|
-
const seen = /* @__PURE__ */ new Set();
|
|
119
|
-
return requested.filter((facet) => {
|
|
120
|
-
if (!facet.id || seen.has(facet.id)) {
|
|
121
|
-
return false;
|
|
122
|
-
}
|
|
123
|
-
seen.add(facet.id);
|
|
124
|
-
return true;
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
function formatDurationFacet(t, durationMs) {
|
|
128
|
-
if (durationMs === void 0 || !Number.isFinite(durationMs) || durationMs < 1e3) {
|
|
129
|
-
return null;
|
|
130
|
-
}
|
|
131
|
-
const totalSeconds = Math.floor(durationMs / 1e3);
|
|
132
|
-
if (totalSeconds < 60) {
|
|
133
|
-
return t("timeline.turnSummaryModel.seconds", { count: totalSeconds });
|
|
134
|
-
}
|
|
135
|
-
const totalMinutes = Math.floor(totalSeconds / 60);
|
|
136
|
-
if (totalMinutes < 60) {
|
|
137
|
-
return t("timeline.turnSummaryModel.minutes", { count: totalMinutes });
|
|
138
|
-
}
|
|
139
|
-
const hours = Math.floor(totalMinutes / 60);
|
|
140
|
-
const minutes = totalMinutes % 60;
|
|
141
|
-
return t("timeline.turnSummaryModel.hoursMinutes", {
|
|
142
|
-
hours,
|
|
143
|
-
minutes: String(minutes).padStart(2, "0")
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
function hasFacetContent(content) {
|
|
147
|
-
return content !== null && content !== void 0 && content !== false && content !== "";
|
|
148
|
-
}
|
|
149
|
-
function selectTurnSummaryFacets(definitions, context, statusKind) {
|
|
150
|
-
return definitions.flatMap((facet) => {
|
|
151
|
-
if (statusKind && (facet.id === "duration" || statusKind !== "worked" && BUILT_IN_TURN_SUMMARY_FACET_IDS.includes(facet.id))) {
|
|
152
|
-
return [];
|
|
153
|
-
}
|
|
154
|
-
try {
|
|
155
|
-
const result = facet.summarize(context);
|
|
156
|
-
return result && hasFacetContent(result.content) ? [{ facet, result }] : [];
|
|
157
|
-
} catch {
|
|
158
|
-
return [];
|
|
159
|
-
}
|
|
160
|
-
});
|
|
161
|
-
}
|
|
162
51
|
|
|
163
52
|
// src/timeline/registry.ts
|
|
164
53
|
function rawTypeOf(item) {
|
|
@@ -212,501 +101,8 @@ function createToolRegistry(baseEntries, baseFallback, options = {}) {
|
|
|
212
101
|
return { resolve, fallback };
|
|
213
102
|
}
|
|
214
103
|
|
|
215
|
-
// src/timeline/parsers.ts
|
|
216
|
-
import {
|
|
217
|
-
normalizeMcpOutput,
|
|
218
|
-
parseGeneratedImageReceipt
|
|
219
|
-
} from "@opengeni/sdk";
|
|
220
|
-
function sandboxCommandExitCode(out) {
|
|
221
|
-
const match = String(out ?? "").match(/Process exited with code (-?\d+)/);
|
|
222
|
-
return match ? Number(match[1]) : null;
|
|
223
|
-
}
|
|
224
|
-
function parseExecBannerSessionId(out) {
|
|
225
|
-
const text = String(out ?? "");
|
|
226
|
-
const outputIdx = text.indexOf("\nOutput:\n");
|
|
227
|
-
const banner = outputIdx >= 0 ? text.slice(0, outputIdx) : text.startsWith("Output:\n") ? "" : text;
|
|
228
|
-
const match = banner.match(/Process running with session ID (\d+)/);
|
|
229
|
-
if (!match) {
|
|
230
|
-
return null;
|
|
231
|
-
}
|
|
232
|
-
const n = Number.parseInt(match[1], 10);
|
|
233
|
-
return Number.isFinite(n) ? n : null;
|
|
234
|
-
}
|
|
235
|
-
function stripExecBanner(out) {
|
|
236
|
-
const text = String(out ?? "");
|
|
237
|
-
const marker = text.indexOf("\nOutput:\n");
|
|
238
|
-
if (marker >= 0) {
|
|
239
|
-
return text.slice(marker + "\nOutput:\n".length);
|
|
240
|
-
}
|
|
241
|
-
if (text.startsWith("Output:\n")) {
|
|
242
|
-
return text.slice("Output:\n".length);
|
|
243
|
-
}
|
|
244
|
-
return text;
|
|
245
|
-
}
|
|
246
|
-
function execTruncated(out) {
|
|
247
|
-
return /Total output lines:|\.{3}\d+ tokens truncated\.{3}|\[\.{3}\d+ characters truncated/.test(
|
|
248
|
-
String(out ?? "")
|
|
249
|
-
);
|
|
250
|
-
}
|
|
251
|
-
function isExecSessionLostBanner(out) {
|
|
252
|
-
return /write_stdin failed: session not found: \d+/.test(String(out ?? ""));
|
|
253
|
-
}
|
|
254
|
-
function looksBinary(text) {
|
|
255
|
-
return text.includes("\0") || text.startsWith("\x7FELF");
|
|
256
|
-
}
|
|
257
|
-
function controlCaret(printable) {
|
|
258
|
-
return String(printable).replace(
|
|
259
|
-
/[\u0000-\u001f]/g,
|
|
260
|
-
(c) => `^${String.fromCharCode(c.charCodeAt(0) + 64)}`
|
|
261
|
-
);
|
|
262
|
-
}
|
|
263
|
-
function v4aToGitFileDiff(op) {
|
|
264
|
-
const status = op.type === "create_file" ? "added" : op.type === "delete_file" ? "deleted" : op.moveTo ? "renamed" : "modified";
|
|
265
|
-
const oldPath = op.moveTo ? op.path : null;
|
|
266
|
-
const path = op.moveTo || op.path;
|
|
267
|
-
const hunks = [];
|
|
268
|
-
let additions = 0;
|
|
269
|
-
let deletions = 0;
|
|
270
|
-
let sawHunkAnchor = false;
|
|
271
|
-
if (op.type !== "delete_file") {
|
|
272
|
-
const lines = (op.diff ?? "").split("\n");
|
|
273
|
-
let cur = null;
|
|
274
|
-
let oldNo = 1;
|
|
275
|
-
let newNo = 1;
|
|
276
|
-
for (const raw of lines) {
|
|
277
|
-
if (raw.startsWith("@@")) {
|
|
278
|
-
sawHunkAnchor = true;
|
|
279
|
-
const match = raw.match(/-(\d+)(?:,\d+)?\s+\+(\d+)/);
|
|
280
|
-
oldNo = match ? Number(match[1]) : 1;
|
|
281
|
-
newNo = match ? Number(match[2]) : 1;
|
|
282
|
-
cur = {
|
|
283
|
-
oldStart: oldNo,
|
|
284
|
-
oldLines: 0,
|
|
285
|
-
newStart: newNo,
|
|
286
|
-
newLines: 0,
|
|
287
|
-
header: raw,
|
|
288
|
-
lines: [{ type: "meta", oldNo: null, newNo: null, text: raw }]
|
|
289
|
-
};
|
|
290
|
-
hunks.push(cur);
|
|
291
|
-
} else if (cur || op.type === "create_file") {
|
|
292
|
-
if (!cur) {
|
|
293
|
-
cur = {
|
|
294
|
-
oldStart: 0,
|
|
295
|
-
oldLines: 0,
|
|
296
|
-
newStart: 1,
|
|
297
|
-
newLines: 0,
|
|
298
|
-
header: "",
|
|
299
|
-
lines: []
|
|
300
|
-
};
|
|
301
|
-
hunks.push(cur);
|
|
302
|
-
oldNo = 0;
|
|
303
|
-
newNo = 1;
|
|
304
|
-
}
|
|
305
|
-
if (raw.startsWith("+")) {
|
|
306
|
-
cur.lines.push({
|
|
307
|
-
type: "add",
|
|
308
|
-
oldNo: null,
|
|
309
|
-
newNo: newNo++,
|
|
310
|
-
text: raw.slice(1)
|
|
311
|
-
});
|
|
312
|
-
cur.newLines += 1;
|
|
313
|
-
additions += 1;
|
|
314
|
-
} else if (raw.startsWith("-")) {
|
|
315
|
-
cur.lines.push({
|
|
316
|
-
type: "del",
|
|
317
|
-
oldNo: oldNo++,
|
|
318
|
-
newNo: null,
|
|
319
|
-
text: raw.slice(1)
|
|
320
|
-
});
|
|
321
|
-
cur.oldLines += 1;
|
|
322
|
-
deletions += 1;
|
|
323
|
-
} else {
|
|
324
|
-
cur.lines.push({
|
|
325
|
-
type: "context",
|
|
326
|
-
oldNo: oldNo++,
|
|
327
|
-
newNo: newNo++,
|
|
328
|
-
text: raw.replace(/^ /, "")
|
|
329
|
-
});
|
|
330
|
-
cur.oldLines += 1;
|
|
331
|
-
cur.newLines += 1;
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
if (op.type === "update_file" && !sawHunkAnchor && lines.some((l) => l.trim().length > 0)) {
|
|
336
|
-
throw new Error("malformed V4A: no @@ hunk anchor");
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
return {
|
|
340
|
-
path,
|
|
341
|
-
oldPath,
|
|
342
|
-
status,
|
|
343
|
-
isBinary: false,
|
|
344
|
-
isImage: false,
|
|
345
|
-
additions,
|
|
346
|
-
deletions,
|
|
347
|
-
hunks,
|
|
348
|
-
truncated: false
|
|
349
|
-
};
|
|
350
|
-
}
|
|
351
|
-
var BEGIN_PATCH = "*** Begin Patch";
|
|
352
|
-
var END_PATCH = "*** End Patch";
|
|
353
|
-
var ADD_FILE = "*** Add File: ";
|
|
354
|
-
var DELETE_FILE = "*** Delete File: ";
|
|
355
|
-
var UPDATE_FILE = "*** Update File: ";
|
|
356
|
-
var MOVE_TO = "*** Move to: ";
|
|
357
|
-
var APPLY_PATCH_OP_TYPES = /* @__PURE__ */ new Set(["create_file", "update_file", "delete_file"]);
|
|
358
|
-
function isRecord(value) {
|
|
359
|
-
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
360
|
-
}
|
|
361
|
-
function freeformApplyPatchOps(rawPatch) {
|
|
362
|
-
return parseFreeformApplyPatch(rawPatch.trimStart());
|
|
363
|
-
}
|
|
364
|
-
function asApplyPatchOperation(value) {
|
|
365
|
-
if (!isRecord(value)) return null;
|
|
366
|
-
if (typeof value.type !== "string" || !APPLY_PATCH_OP_TYPES.has(value.type)) {
|
|
367
|
-
return null;
|
|
368
|
-
}
|
|
369
|
-
if (typeof value.path !== "string" || !value.path) {
|
|
370
|
-
return null;
|
|
371
|
-
}
|
|
372
|
-
const op = {
|
|
373
|
-
type: value.type,
|
|
374
|
-
path: value.path
|
|
375
|
-
};
|
|
376
|
-
if (typeof value.diff === "string") op.diff = value.diff;
|
|
377
|
-
if (typeof value.moveTo === "string" && value.moveTo.length > 0) op.moveTo = value.moveTo;
|
|
378
|
-
return op;
|
|
379
|
-
}
|
|
380
|
-
function parseStructuredOperations(payloads) {
|
|
381
|
-
if (payloads.length === 0) return [];
|
|
382
|
-
const operations = [];
|
|
383
|
-
for (const payload of payloads) {
|
|
384
|
-
const op = asApplyPatchOperation(payload);
|
|
385
|
-
if (!op) return [];
|
|
386
|
-
operations.push(op);
|
|
387
|
-
}
|
|
388
|
-
return operations;
|
|
389
|
-
}
|
|
390
|
-
function parseFreeformApplyPatch(rawPatch) {
|
|
391
|
-
const lines = rawPatch.split(/\r?\n/);
|
|
392
|
-
if (lines.at(-1) === "") lines.pop();
|
|
393
|
-
if (lines[0] !== BEGIN_PATCH) return [];
|
|
394
|
-
if (lines.length < 2 || lines.at(-1) !== END_PATCH) return [];
|
|
395
|
-
const operations = [];
|
|
396
|
-
let index = 1;
|
|
397
|
-
while (index < lines.length - 1) {
|
|
398
|
-
const line = lines[index];
|
|
399
|
-
let parsed = null;
|
|
400
|
-
if (line.startsWith(ADD_FILE)) parsed = parseAddFilePatch(lines, index);
|
|
401
|
-
else if (line.startsWith(DELETE_FILE)) parsed = parseDeleteFilePatch(lines, index);
|
|
402
|
-
else if (line.startsWith(UPDATE_FILE)) parsed = parseUpdateFilePatch(lines, index);
|
|
403
|
-
else return [];
|
|
404
|
-
if (!parsed || "error" in parsed) return [];
|
|
405
|
-
operations.push(parsed.operation);
|
|
406
|
-
index = parsed.nextIndex;
|
|
407
|
-
}
|
|
408
|
-
return operations.length > 0 ? operations : [];
|
|
409
|
-
}
|
|
410
|
-
function parsePatchHeader(line, prefix) {
|
|
411
|
-
const path = line.slice(prefix.length).trim();
|
|
412
|
-
return path || null;
|
|
413
|
-
}
|
|
414
|
-
function isFileOperationHeader(line) {
|
|
415
|
-
return line.startsWith(ADD_FILE) || line.startsWith(DELETE_FILE) || line.startsWith(UPDATE_FILE);
|
|
416
|
-
}
|
|
417
|
-
function joinDiff(lines) {
|
|
418
|
-
return `${lines.join("\n")}
|
|
419
|
-
`;
|
|
420
|
-
}
|
|
421
|
-
function parseAddFilePatch(lines, index) {
|
|
422
|
-
const path = parsePatchHeader(lines[index], ADD_FILE);
|
|
423
|
-
if (!path) return { error: true };
|
|
424
|
-
index += 1;
|
|
425
|
-
const diffLines = [];
|
|
426
|
-
while (index < lines.length - 1 && !isFileOperationHeader(lines[index])) {
|
|
427
|
-
const line = lines[index];
|
|
428
|
-
if (!line.startsWith("+")) return { error: true };
|
|
429
|
-
diffLines.push(line);
|
|
430
|
-
index += 1;
|
|
431
|
-
}
|
|
432
|
-
if (diffLines.length === 0) return { error: true };
|
|
433
|
-
return {
|
|
434
|
-
operation: { type: "create_file", path, diff: joinDiff(diffLines) },
|
|
435
|
-
nextIndex: index
|
|
436
|
-
};
|
|
437
|
-
}
|
|
438
|
-
function parseDeleteFilePatch(lines, index) {
|
|
439
|
-
const path = parsePatchHeader(lines[index], DELETE_FILE);
|
|
440
|
-
if (!path) return { error: true };
|
|
441
|
-
index += 1;
|
|
442
|
-
if (index < lines.length - 1 && !isFileOperationHeader(lines[index])) {
|
|
443
|
-
return { error: true };
|
|
444
|
-
}
|
|
445
|
-
return { operation: { type: "delete_file", path }, nextIndex: index };
|
|
446
|
-
}
|
|
447
|
-
function parseUpdateFilePatch(lines, index) {
|
|
448
|
-
const path = parsePatchHeader(lines[index], UPDATE_FILE);
|
|
449
|
-
if (!path) return { error: true };
|
|
450
|
-
index += 1;
|
|
451
|
-
let moveTo;
|
|
452
|
-
if (index < lines.length - 1 && lines[index].startsWith(MOVE_TO)) {
|
|
453
|
-
const parsedMoveTo = parsePatchHeader(lines[index], MOVE_TO);
|
|
454
|
-
if (!parsedMoveTo) return { error: true };
|
|
455
|
-
moveTo = parsedMoveTo;
|
|
456
|
-
index += 1;
|
|
457
|
-
}
|
|
458
|
-
const diffLines = [];
|
|
459
|
-
while (index < lines.length - 1 && !isFileOperationHeader(lines[index])) {
|
|
460
|
-
diffLines.push(lines[index]);
|
|
461
|
-
index += 1;
|
|
462
|
-
}
|
|
463
|
-
if (diffLines.length === 0 && !moveTo) return { error: true };
|
|
464
|
-
return {
|
|
465
|
-
operation: {
|
|
466
|
-
type: "update_file",
|
|
467
|
-
path,
|
|
468
|
-
diff: diffLines.length > 0 ? joinDiff(diffLines) : "",
|
|
469
|
-
...moveTo ? { moveTo } : {}
|
|
470
|
-
},
|
|
471
|
-
nextIndex: index
|
|
472
|
-
};
|
|
473
|
-
}
|
|
474
|
-
function applyPatchOps(raw) {
|
|
475
|
-
if (raw == null) return [];
|
|
476
|
-
if (typeof raw === "string") {
|
|
477
|
-
const trimmed = raw.trimStart();
|
|
478
|
-
if (trimmed.startsWith(BEGIN_PATCH)) return freeformApplyPatchOps(trimmed);
|
|
479
|
-
const parsed = tryParseJson(trimmed);
|
|
480
|
-
return parsed === void 0 ? [] : applyPatchOps(parsed);
|
|
481
|
-
}
|
|
482
|
-
if (Array.isArray(raw)) return parseStructuredOperations(raw);
|
|
483
|
-
if (!isRecord(raw)) return [];
|
|
484
|
-
if (typeof raw.patch === "string") return freeformApplyPatchOps(raw.patch);
|
|
485
|
-
if (Array.isArray(raw.command)) {
|
|
486
|
-
const [commandName, patch] = raw.command;
|
|
487
|
-
if (commandName === "apply_patch" && typeof patch === "string") {
|
|
488
|
-
return freeformApplyPatchOps(patch);
|
|
489
|
-
}
|
|
490
|
-
}
|
|
491
|
-
if (Array.isArray(raw.operations) && raw.operations.length > 0) {
|
|
492
|
-
return parseStructuredOperations(raw.operations);
|
|
493
|
-
}
|
|
494
|
-
if (raw.operation !== void 0) {
|
|
495
|
-
const op = asApplyPatchOperation(raw.operation);
|
|
496
|
-
return op ? [op] : [];
|
|
497
|
-
}
|
|
498
|
-
const flat = asApplyPatchOperation(raw);
|
|
499
|
-
return flat ? [flat] : [];
|
|
500
|
-
}
|
|
501
|
-
function applyPatchOpsFromToolItem(item) {
|
|
502
|
-
const fromRaw = applyPatchOps(item.raw);
|
|
503
|
-
if (fromRaw.length > 0) return fromRaw;
|
|
504
|
-
if (isRecord(item.raw)) {
|
|
505
|
-
const nested = item.raw.arguments ?? item.raw.input;
|
|
506
|
-
if (nested !== void 0 && nested !== item.arguments) {
|
|
507
|
-
const fromNested = applyPatchOps(nested);
|
|
508
|
-
if (fromNested.length > 0) return fromNested;
|
|
509
|
-
}
|
|
510
|
-
}
|
|
511
|
-
if (item.arguments !== void 0 && item.arguments !== null) {
|
|
512
|
-
return applyPatchOps(item.arguments);
|
|
513
|
-
}
|
|
514
|
-
return [];
|
|
515
|
-
}
|
|
516
|
-
function isApplyPatch(item) {
|
|
517
|
-
const type = item.raw && typeof item.raw === "object" ? item.raw.type : void 0;
|
|
518
|
-
if (type === "apply_patch_call") {
|
|
519
|
-
return true;
|
|
520
|
-
}
|
|
521
|
-
const name = item.name;
|
|
522
|
-
return name === "apply_patch_call" || name === "apply_patch" || name.endsWith("__apply_patch");
|
|
523
|
-
}
|
|
524
|
-
function parseToolArgs(args) {
|
|
525
|
-
if (args == null) {
|
|
526
|
-
return {};
|
|
527
|
-
}
|
|
528
|
-
if (typeof args === "string") {
|
|
529
|
-
const parsed = tryParseJson(args);
|
|
530
|
-
return parsed && typeof parsed === "object" ? parsed : {};
|
|
531
|
-
}
|
|
532
|
-
return typeof args === "object" ? args : {};
|
|
533
|
-
}
|
|
534
|
-
function tailPeek(text) {
|
|
535
|
-
const trimmed = text.trim();
|
|
536
|
-
if (!trimmed) {
|
|
537
|
-
return "";
|
|
538
|
-
}
|
|
539
|
-
const lines = trimmed.split("\n");
|
|
540
|
-
return lines[lines.length - 1] ?? "";
|
|
541
|
-
}
|
|
542
|
-
function unwrapMcpOutput(output) {
|
|
543
|
-
const normalized = normalizeMcpOutput(output);
|
|
544
|
-
return { text: normalized.text, isError: normalized.isError };
|
|
545
|
-
}
|
|
546
|
-
function screenshotDataUrl(out) {
|
|
547
|
-
if (typeof out === "string") {
|
|
548
|
-
if (out.startsWith("data:image")) {
|
|
549
|
-
return out;
|
|
550
|
-
}
|
|
551
|
-
if (out.startsWith("{") || out.startsWith("[")) {
|
|
552
|
-
const parsed = tryParseJson(out);
|
|
553
|
-
if (parsed !== void 0 && parsed !== out) {
|
|
554
|
-
return screenshotDataUrl(parsed);
|
|
555
|
-
}
|
|
556
|
-
}
|
|
557
|
-
return null;
|
|
558
|
-
}
|
|
559
|
-
if (Array.isArray(out)) {
|
|
560
|
-
for (const entry of out) {
|
|
561
|
-
const url = screenshotDataUrl(entry);
|
|
562
|
-
if (url) {
|
|
563
|
-
return url;
|
|
564
|
-
}
|
|
565
|
-
}
|
|
566
|
-
return null;
|
|
567
|
-
}
|
|
568
|
-
if (out === null || typeof out !== "object") {
|
|
569
|
-
return null;
|
|
570
|
-
}
|
|
571
|
-
const record = out;
|
|
572
|
-
const imageUrl = record.image_url ?? record.imageUrl;
|
|
573
|
-
if (typeof imageUrl === "string" && imageUrl.startsWith("data:image")) {
|
|
574
|
-
return imageUrl;
|
|
575
|
-
}
|
|
576
|
-
if (imageUrl && typeof imageUrl === "object") {
|
|
577
|
-
const url = imageUrl.url;
|
|
578
|
-
if (typeof url === "string" && url.startsWith("data:image")) {
|
|
579
|
-
return url;
|
|
580
|
-
}
|
|
581
|
-
}
|
|
582
|
-
const image = record.image;
|
|
583
|
-
if (image && typeof image === "object") {
|
|
584
|
-
const mediaType = typeof image.mediaType === "string" ? image.mediaType : "image/png";
|
|
585
|
-
const base64 = bytesToBase64(image.data);
|
|
586
|
-
if (base64) {
|
|
587
|
-
return `data:${mediaType};base64,${base64}`;
|
|
588
|
-
}
|
|
589
|
-
if (typeof image.data === "string" && image.data.length > 0) {
|
|
590
|
-
return `data:${mediaType};base64,${image.data}`;
|
|
591
|
-
}
|
|
592
|
-
}
|
|
593
|
-
return null;
|
|
594
|
-
}
|
|
595
|
-
function retainedScreenshotMetadata(out) {
|
|
596
|
-
if (typeof out === "string" && (out.startsWith("{") || out.startsWith("["))) {
|
|
597
|
-
const parsed = tryParseJson(out);
|
|
598
|
-
if (parsed !== void 0 && parsed !== out) return retainedScreenshotMetadata(parsed);
|
|
599
|
-
}
|
|
600
|
-
if (Array.isArray(out)) {
|
|
601
|
-
for (const entry of out) {
|
|
602
|
-
const metadata = retainedScreenshotMetadata(entry);
|
|
603
|
-
if (metadata) return metadata;
|
|
604
|
-
}
|
|
605
|
-
return null;
|
|
606
|
-
}
|
|
607
|
-
if (!out || typeof out !== "object") return null;
|
|
608
|
-
const value = out;
|
|
609
|
-
if (typeof value.artifactId !== "string" || typeof value.available !== "boolean") return null;
|
|
610
|
-
if (!value.available) {
|
|
611
|
-
return typeof value.reason === "string" ? value : null;
|
|
612
|
-
}
|
|
613
|
-
return (value.kind === "computer_screenshot" || value.kind === "browser_screenshot") && ["image/png", "image/jpeg", "image/webp"].includes(String(value.contentType)) && typeof value.originalBytes === "number" && typeof value.sha256 === "string" && value.dimensions !== null && typeof value.dimensions === "object" && value.retention !== null && typeof value.retention === "object" && value.retention.policy === "session_screenshot" ? value : null;
|
|
614
|
-
}
|
|
615
|
-
function generatedImageReceipt(out) {
|
|
616
|
-
return parseGeneratedImageReceipt(out);
|
|
617
|
-
}
|
|
618
|
-
function retainedToolResultImages(out) {
|
|
619
|
-
const parsed = typeof out === "string" && (out.startsWith("{") || out.startsWith("[")) ? tryParseJson(out) : out;
|
|
620
|
-
const split = (entries) => {
|
|
621
|
-
const images = [];
|
|
622
|
-
const rest = entries.filter((entry) => {
|
|
623
|
-
if (!entry || typeof entry !== "object" || Array.isArray(entry)) return true;
|
|
624
|
-
const receipt = retainedScreenshotMetadata(entry);
|
|
625
|
-
if (!receipt?.available) return true;
|
|
626
|
-
images.push(receipt);
|
|
627
|
-
return false;
|
|
628
|
-
});
|
|
629
|
-
return { images, rest };
|
|
630
|
-
};
|
|
631
|
-
if (Array.isArray(parsed)) {
|
|
632
|
-
const { images, rest } = split(parsed);
|
|
633
|
-
return images.length ? { images, output: rest } : { images, output: out };
|
|
634
|
-
}
|
|
635
|
-
if (parsed && typeof parsed === "object") {
|
|
636
|
-
const record = parsed;
|
|
637
|
-
if (Array.isArray(record.content)) {
|
|
638
|
-
const { images, rest } = split(record.content);
|
|
639
|
-
return images.length ? { images, output: { ...record, content: rest } } : { images, output: out };
|
|
640
|
-
}
|
|
641
|
-
}
|
|
642
|
-
return { images: [], output: out };
|
|
643
|
-
}
|
|
644
|
-
function mediaPreviewFact(out) {
|
|
645
|
-
if (typeof out === "string" && (out.startsWith("{") || out.startsWith("["))) {
|
|
646
|
-
const parsed = tryParseJson(out);
|
|
647
|
-
if (parsed !== void 0 && parsed !== out) return mediaPreviewFact(parsed);
|
|
648
|
-
}
|
|
649
|
-
if (Array.isArray(out)) {
|
|
650
|
-
for (const entry of out) {
|
|
651
|
-
const preview = mediaPreviewFact(entry);
|
|
652
|
-
if (preview) return preview;
|
|
653
|
-
}
|
|
654
|
-
return null;
|
|
655
|
-
}
|
|
656
|
-
if (!out || typeof out !== "object") return null;
|
|
657
|
-
const record = out;
|
|
658
|
-
if (record.type !== "media_preview" || typeof record.mediaType !== "string" || record.fullOutputAvailable !== false || typeof record.preview !== "string" || record.inlineBytes !== null && typeof record.inlineBytes !== "number") {
|
|
659
|
-
return null;
|
|
660
|
-
}
|
|
661
|
-
return record;
|
|
662
|
-
}
|
|
663
|
-
function bytesToBase64(data) {
|
|
664
|
-
const isByte = (n) => typeof n === "number" && Number.isInteger(n) && n >= 0 && n <= 255;
|
|
665
|
-
let bytes = null;
|
|
666
|
-
if (Array.isArray(data) && data.every(isByte)) {
|
|
667
|
-
bytes = data;
|
|
668
|
-
} else if (data && typeof data === "object") {
|
|
669
|
-
const record = data;
|
|
670
|
-
if (record.type === "Buffer" && Array.isArray(record.data) && record.data.every(isByte)) {
|
|
671
|
-
bytes = record.data;
|
|
672
|
-
} else {
|
|
673
|
-
const keys = Object.keys(record);
|
|
674
|
-
if (keys.length > 0 && keys.every((key) => /^\d+$/.test(key))) {
|
|
675
|
-
const values = keys.sort((a, b) => Number(a) - Number(b)).map((key) => record[key]);
|
|
676
|
-
if (values.every(isByte)) {
|
|
677
|
-
bytes = values;
|
|
678
|
-
}
|
|
679
|
-
}
|
|
680
|
-
}
|
|
681
|
-
}
|
|
682
|
-
if (!bytes || bytes.length === 0) {
|
|
683
|
-
return null;
|
|
684
|
-
}
|
|
685
|
-
try {
|
|
686
|
-
let binary = "";
|
|
687
|
-
const CHUNK = 32768;
|
|
688
|
-
for (let i = 0; i < bytes.length; i += CHUNK) {
|
|
689
|
-
binary += String.fromCharCode(...bytes.slice(i, i + CHUNK));
|
|
690
|
-
}
|
|
691
|
-
return typeof btoa === "function" ? btoa(binary) : Buffer.from(binary, "binary").toString("base64");
|
|
692
|
-
} catch {
|
|
693
|
-
return null;
|
|
694
|
-
}
|
|
695
|
-
}
|
|
696
|
-
|
|
697
104
|
// src/timeline/tool-presentation.ts
|
|
698
105
|
import { isConnectedMachineOutcomeUnknownOutput } from "@opengeni/sdk";
|
|
699
|
-
|
|
700
|
-
// src/timeline/invoked-tool.ts
|
|
701
|
-
function invokedToolCall(item) {
|
|
702
|
-
if (mcpToolLeaf(item.name) !== "tool_invoke") return item;
|
|
703
|
-
const args = parseToolArgs(item.arguments);
|
|
704
|
-
if (typeof args.name !== "string" || !args.name.trim()) return item;
|
|
705
|
-
const { display: _display, ...rest } = item;
|
|
706
|
-
return { ...rest, name: args.name, arguments: args.arguments ?? {} };
|
|
707
|
-
}
|
|
708
|
-
|
|
709
|
-
// src/timeline/tool-presentation.ts
|
|
710
106
|
function withComputePreview(label, preview) {
|
|
711
107
|
if (!label) {
|
|
712
108
|
return preview;
|
|
@@ -1135,9 +531,127 @@ function goalToolPreview(name, args) {
|
|
|
1135
531
|
const text = typeof record.text === "string" ? record.text : typeof record.evidence === "string" ? record.evidence : typeof record.rationale === "string" ? record.rationale : typeof record.reason === "string" ? record.reason : typeof record.progressNote === "string" ? record.progressNote : null;
|
|
1136
532
|
return text ? truncatePreview(text, 90) : null;
|
|
1137
533
|
}
|
|
534
|
+
var TOOL_STEP_ICONS = {
|
|
535
|
+
// Chats, goals and notifications
|
|
536
|
+
nameChat: "rename",
|
|
537
|
+
notify: "bell",
|
|
538
|
+
withdrawNotification: "bell",
|
|
539
|
+
tidyInbox: "inbox",
|
|
540
|
+
setGoal: "target",
|
|
541
|
+
noteProgress: "target",
|
|
542
|
+
completeGoal: "target",
|
|
543
|
+
pauseGoal: "target",
|
|
544
|
+
resumeGoal: "target",
|
|
545
|
+
wait: "wait",
|
|
546
|
+
askYou: "question",
|
|
547
|
+
askForHelp: "help",
|
|
548
|
+
// Notes, knowledge and instructions
|
|
549
|
+
checkNotes: "brain",
|
|
550
|
+
saveNote: "brain",
|
|
551
|
+
archiveNote: "brain",
|
|
552
|
+
proposeUpdate: "brain",
|
|
553
|
+
confirmUpdate: "brain",
|
|
554
|
+
updateInstructions: "brain",
|
|
555
|
+
coordinateWork: "sessions",
|
|
556
|
+
// Guides (Skills)
|
|
557
|
+
readGuide: "guide",
|
|
558
|
+
findGuides: "guide",
|
|
559
|
+
saveGuide: "guide",
|
|
560
|
+
removeGuide: "guide",
|
|
561
|
+
// Computers
|
|
562
|
+
findComputers: "server",
|
|
563
|
+
switchComputer: "server",
|
|
564
|
+
useComputer: "server",
|
|
565
|
+
setUpComputer: "server",
|
|
566
|
+
removeComputer: "server",
|
|
567
|
+
runCommand: "terminal",
|
|
568
|
+
runCode: "code",
|
|
569
|
+
editFile: "file-diff",
|
|
570
|
+
lookAtImage: "image",
|
|
571
|
+
searchCode: "search",
|
|
572
|
+
searchFiles: "file-search",
|
|
573
|
+
openFile: "file",
|
|
574
|
+
// Screens and the browser
|
|
575
|
+
checkScreens: "screen",
|
|
576
|
+
openScreen: "screen",
|
|
577
|
+
lookAtScreen: "screen",
|
|
578
|
+
useScreen: "screen",
|
|
579
|
+
enableScreenControl: "screen",
|
|
580
|
+
useClipboard: "clipboard",
|
|
581
|
+
openBrowser: "browser",
|
|
582
|
+
useBrowser: "browser",
|
|
583
|
+
readPage: "browser",
|
|
584
|
+
lookAtPage: "browser",
|
|
585
|
+
workInBrowser: "browser",
|
|
586
|
+
download: "download",
|
|
587
|
+
recordBrowser: "record",
|
|
588
|
+
signIn: "sign-in",
|
|
589
|
+
manageSignIns: "sign-in",
|
|
590
|
+
shareBrowser: "share",
|
|
591
|
+
workInExcel: "spreadsheet",
|
|
592
|
+
// Projects, other chats and helpers
|
|
593
|
+
checkProjects: "folder",
|
|
594
|
+
organizeProjects: "folder",
|
|
595
|
+
checkChats: "sessions",
|
|
596
|
+
chooseChat: "sessions",
|
|
597
|
+
checkProgress: "progress",
|
|
598
|
+
changeModel: "model",
|
|
599
|
+
startHelper: "helper",
|
|
600
|
+
messageAssistant: "sessions",
|
|
601
|
+
manageChat: "sessions",
|
|
602
|
+
// Workspace administration and setup
|
|
603
|
+
manageWorkspace: "settings",
|
|
604
|
+
manageSetup: "server-cog",
|
|
605
|
+
checkModels: "model",
|
|
606
|
+
// Passwords and settings
|
|
607
|
+
findPassword: "key",
|
|
608
|
+
savePassword: "key",
|
|
609
|
+
deletePassword: "key",
|
|
610
|
+
checkSettings: "settings",
|
|
611
|
+
updateSettings: "settings",
|
|
612
|
+
// Tools and connections
|
|
613
|
+
findTools: "package-search",
|
|
614
|
+
useTool: "plug",
|
|
615
|
+
requestAccess: "plug",
|
|
616
|
+
listRepositories: "git",
|
|
617
|
+
// Web, images and video
|
|
618
|
+
searchWeb: "search",
|
|
619
|
+
createImage: "image",
|
|
620
|
+
createVideo: "video",
|
|
621
|
+
// Social accounts
|
|
622
|
+
checkAccounts: "share",
|
|
623
|
+
readPosts: "share",
|
|
624
|
+
syncPosts: "share",
|
|
625
|
+
replyToPost: "share",
|
|
626
|
+
// Scheduled tasks
|
|
627
|
+
checkSchedules: "calendar",
|
|
628
|
+
createSchedule: "calendar",
|
|
629
|
+
updateSchedule: "calendar",
|
|
630
|
+
runSchedule: "calendar",
|
|
631
|
+
// Slack
|
|
632
|
+
readSlack: "message",
|
|
633
|
+
postSlack: "message",
|
|
634
|
+
deleteMessage: "message",
|
|
635
|
+
// Accounting
|
|
636
|
+
readAccounting: "accounting",
|
|
637
|
+
updateAccounting: "accounting",
|
|
638
|
+
// Documents, files and Sites
|
|
639
|
+
searchDocuments: "file-search",
|
|
640
|
+
checkDocuments: "document",
|
|
641
|
+
createDocument: "document",
|
|
642
|
+
editDocument: "document",
|
|
643
|
+
exportDocument: "document",
|
|
644
|
+
restoreDocument: "document",
|
|
645
|
+
archiveDocument: "archive",
|
|
646
|
+
shareFile: "attachment",
|
|
647
|
+
checkSite: "site",
|
|
648
|
+
updateSite: "site"
|
|
649
|
+
};
|
|
1138
650
|
function genericToolIconKind(name) {
|
|
1139
651
|
const leaf = mcpToolLeaf(name);
|
|
1140
|
-
|
|
652
|
+
const step = builtInToolStep(leaf);
|
|
653
|
+
if (step) return TOOL_STEP_ICONS[step];
|
|
654
|
+
return leaf.startsWith("goal_") ? "target" : leaf.startsWith("memory_") || leaf.startsWith("knowledge_") ? "brain" : leaf.startsWith("session_") || leaf.startsWith("sessions_") ? "sessions" : leaf.startsWith("sandbox") || leaf.startsWith("connected_machine_") ? "server" : leaf.startsWith("rig_") ? "server-cog" : leaf.startsWith("scheduled_") ? "calendar" : leaf.startsWith("artifacts_") || leaf.startsWith("editable_artifact_") ? "document" : leaf.startsWith("site_") ? "site" : leaf.startsWith("browser_") ? "browser" : leaf.startsWith("computer_") || leaf.startsWith("cua_") ? "screen" : leaf.startsWith("secret_") ? "key" : leaf.startsWith("social_") || leaf.startsWith("x_") || leaf.startsWith("reddit_") ? "share" : leaf.startsWith("slack_") ? "message" : leaf.startsWith("github_") ? "git" : leaf.startsWith("variable_") || leaf.startsWith("environment_") ? "settings" : leaf.includes("document") ? "file-search" : leaf.startsWith("skill_") ? "guide" : "wrench";
|
|
1141
655
|
}
|
|
1142
656
|
function mcpRowPresentation(t, item, options) {
|
|
1143
657
|
const args = parseToolArgs(item.arguments);
|
|
@@ -1224,7 +738,7 @@ function machinePresentation(t, item) {
|
|
|
1224
738
|
const failed = item.status !== "running" && item.status !== "cancelled" && (item.status === "failed" || unwrapMcpOutput(item.output).isError);
|
|
1225
739
|
return mcpRowPresentation(t, item, {
|
|
1226
740
|
tool: "machine",
|
|
1227
|
-
icon:
|
|
741
|
+
icon: genericToolIconKind(item.name),
|
|
1228
742
|
title: failed ? machineFailureTitle(t, leaf) : machineTitle(t, leaf, args, action, item.output),
|
|
1229
743
|
runningPreview: preview,
|
|
1230
744
|
runningFallback: t("timeline.toolPresentation.running"),
|
|
@@ -1234,9 +748,6 @@ function machinePresentation(t, item) {
|
|
|
1234
748
|
quietError: true
|
|
1235
749
|
});
|
|
1236
750
|
}
|
|
1237
|
-
function isScreenTool(leaf) {
|
|
1238
|
-
return leaf.startsWith("computer_") || leaf.startsWith("cua_") || leaf === "interaction_discover";
|
|
1239
|
-
}
|
|
1240
751
|
function machineFailureTitle(t, leaf) {
|
|
1241
752
|
switch (leaf) {
|
|
1242
753
|
case "sandboxes_list":
|
|
@@ -1586,7 +1097,7 @@ function sessionTitlePresentation(t, item) {
|
|
|
1586
1097
|
const previewTitle = titleArg ? truncatePreview(titleArg, 72) : "";
|
|
1587
1098
|
const base = {
|
|
1588
1099
|
tool: "session_title",
|
|
1589
|
-
icon:
|
|
1100
|
+
icon: genericToolIconKind(item.name),
|
|
1590
1101
|
title: toolDisplayName(t, item.name, item.display, callStepPhase(item))
|
|
1591
1102
|
};
|
|
1592
1103
|
if (item.status === "running") {
|
|
@@ -1787,60 +1298,161 @@ function presentedToolRow(t, item, context) {
|
|
|
1787
1298
|
}
|
|
1788
1299
|
}
|
|
1789
1300
|
|
|
1790
|
-
// src/timeline/
|
|
1791
|
-
var
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
t("timeline.genieCopy.negotiatingWithTheLamp"),
|
|
1800
|
-
t("timeline.genieCopy.dustingOffAThousandYears"),
|
|
1801
|
-
t("timeline.genieCopy.wishfulThinking"),
|
|
1802
|
-
t("timeline.genieCopy.decantingALittleMagic"),
|
|
1803
|
-
t("timeline.genieCopy.findingTheGoodStardust"),
|
|
1804
|
-
t("timeline.genieCopy.fluffingTheMagicCarpet"),
|
|
1805
|
-
t("timeline.genieCopy.puttingAWishIntoMotion"),
|
|
1806
|
-
t("timeline.genieCopy.aLittleHocusALittle")
|
|
1807
|
-
];
|
|
1808
|
-
var GENIE_WAITING_PHRASES = (t) => [
|
|
1809
|
-
t("timeline.genieCopy.waitingForAResponse")
|
|
1301
|
+
// src/timeline/turn-summary-model.ts
|
|
1302
|
+
var BUILT_IN_TURN_SUMMARY_FACET_IDS = [
|
|
1303
|
+
"steps",
|
|
1304
|
+
"files",
|
|
1305
|
+
"commands",
|
|
1306
|
+
"screenshots",
|
|
1307
|
+
"memories",
|
|
1308
|
+
"compacted",
|
|
1309
|
+
"duration"
|
|
1810
1310
|
];
|
|
1311
|
+
function turnSummaryFallbackLabel(t, items, unloadedSteps = false) {
|
|
1312
|
+
const preparationOnly = !unloadedSteps && items.some((item) => item.kind === "startup-phase") && items.every((item) => item.kind === "startup-phase" || item.kind === "agent-message");
|
|
1313
|
+
return preparationOnly ? t("timeline.turnSummary.preparation") : t("timeline.turnSummary.steps");
|
|
1314
|
+
}
|
|
1315
|
+
function formatElapsed(t, durationMs) {
|
|
1316
|
+
const totalSeconds = Math.max(0, Math.floor(durationMs / 1e3));
|
|
1317
|
+
if (totalSeconds < 60) {
|
|
1318
|
+
return t("timeline.turnSummaryModel.seconds", { count: totalSeconds });
|
|
1319
|
+
}
|
|
1320
|
+
const totalMinutes = Math.floor(totalSeconds / 60);
|
|
1321
|
+
if (totalMinutes < 60) {
|
|
1322
|
+
const seconds = totalSeconds % 60;
|
|
1323
|
+
return seconds ? t("timeline.turnSummaryModel.minutesSeconds", { minutes: totalMinutes, seconds }) : t("timeline.turnSummaryModel.minutes", { count: totalMinutes });
|
|
1324
|
+
}
|
|
1325
|
+
const hours = Math.floor(totalMinutes / 60);
|
|
1326
|
+
return t("timeline.turnSummaryModel.hoursMinutes", {
|
|
1327
|
+
hours,
|
|
1328
|
+
minutes: String(totalMinutes % 60).padStart(2, "0")
|
|
1329
|
+
});
|
|
1330
|
+
}
|
|
1331
|
+
function createTurnSummaryContext(t, items, outcome, failureText, durationMs, contextCompactionCount) {
|
|
1332
|
+
const itemSnapshot = Object.freeze([...items]);
|
|
1333
|
+
const toolCalls = Object.freeze(
|
|
1334
|
+
itemSnapshot.filter((item) => item.kind === "tool-call")
|
|
1335
|
+
);
|
|
1336
|
+
const settled = itemSnapshot.every((item) => {
|
|
1337
|
+
if (item.kind === "reasoning" || item.kind === "agent-message") {
|
|
1338
|
+
return !item.streaming;
|
|
1339
|
+
}
|
|
1340
|
+
if (item.kind === "tool-call" || item.kind === "worker" || item.kind === "sandbox" || item.kind === "startup-phase") {
|
|
1341
|
+
return item.status !== "running";
|
|
1342
|
+
}
|
|
1343
|
+
return true;
|
|
1344
|
+
});
|
|
1345
|
+
return Object.freeze({
|
|
1346
|
+
t,
|
|
1347
|
+
items: itemSnapshot,
|
|
1348
|
+
toolCalls,
|
|
1349
|
+
outcome,
|
|
1350
|
+
failureText,
|
|
1351
|
+
durationMs,
|
|
1352
|
+
settled,
|
|
1353
|
+
contextCompactionCount: Math.max(0, Math.floor(contextCompactionCount))
|
|
1354
|
+
});
|
|
1355
|
+
}
|
|
1356
|
+
var BUILT_IN_TURN_SUMMARY_FACETS = Object.freeze([
|
|
1357
|
+
{
|
|
1358
|
+
id: "memories",
|
|
1359
|
+
summarize: ({ items, t }) => {
|
|
1360
|
+
let saved = 0;
|
|
1361
|
+
let updated = 0;
|
|
1362
|
+
for (const item of items) {
|
|
1363
|
+
if (item.kind !== "memory") {
|
|
1364
|
+
continue;
|
|
1365
|
+
}
|
|
1366
|
+
if (item.variant === "corrected") {
|
|
1367
|
+
updated += 1;
|
|
1368
|
+
} else {
|
|
1369
|
+
saved += 1;
|
|
1370
|
+
}
|
|
1371
|
+
}
|
|
1372
|
+
const parts = [];
|
|
1373
|
+
if (saved) {
|
|
1374
|
+
parts.push(t("timeline.turnSummaryModel.memoriesSaved", { count: saved }));
|
|
1375
|
+
}
|
|
1376
|
+
if (updated) {
|
|
1377
|
+
parts.push(t("timeline.turnSummaryModel.memoriesUpdated", { count: updated }));
|
|
1378
|
+
}
|
|
1379
|
+
return parts.length > 0 ? { content: parts.join(" \xB7 ") } : null;
|
|
1380
|
+
}
|
|
1381
|
+
},
|
|
1382
|
+
{
|
|
1383
|
+
id: "compacted",
|
|
1384
|
+
summarize: ({ contextCompactionCount, t }) => contextCompactionCount > 0 ? {
|
|
1385
|
+
content: t("timeline.turnSummaryModel.compacts", { count: contextCompactionCount }),
|
|
1386
|
+
ariaLabel: t("timeline.turnSummaryModel.compactions", {
|
|
1387
|
+
count: contextCompactionCount
|
|
1388
|
+
})
|
|
1389
|
+
} : null
|
|
1390
|
+
},
|
|
1391
|
+
{
|
|
1392
|
+
id: "duration",
|
|
1393
|
+
summarize: ({ durationMs, t }) => {
|
|
1394
|
+
const duration = formatDurationFacet(t, durationMs);
|
|
1395
|
+
return duration ? { content: duration } : null;
|
|
1396
|
+
}
|
|
1397
|
+
}
|
|
1398
|
+
]);
|
|
1399
|
+
function resolveTurnSummaryFacets(configuration) {
|
|
1400
|
+
const requested = configuration?.replace ?? [
|
|
1401
|
+
...BUILT_IN_TURN_SUMMARY_FACETS.filter(
|
|
1402
|
+
(facet) => !configuration?.remove?.includes(facet.id)
|
|
1403
|
+
),
|
|
1404
|
+
...configuration?.add ?? []
|
|
1405
|
+
];
|
|
1406
|
+
const seen = /* @__PURE__ */ new Set();
|
|
1407
|
+
return requested.filter((facet) => {
|
|
1408
|
+
if (!facet.id || seen.has(facet.id)) {
|
|
1409
|
+
return false;
|
|
1410
|
+
}
|
|
1411
|
+
seen.add(facet.id);
|
|
1412
|
+
return true;
|
|
1413
|
+
});
|
|
1414
|
+
}
|
|
1415
|
+
function formatDurationFacet(t, durationMs) {
|
|
1416
|
+
if (durationMs === void 0 || !Number.isFinite(durationMs) || durationMs < 1e3) {
|
|
1417
|
+
return null;
|
|
1418
|
+
}
|
|
1419
|
+
const totalSeconds = Math.floor(durationMs / 1e3);
|
|
1420
|
+
if (totalSeconds < 60) {
|
|
1421
|
+
return t("timeline.turnSummaryModel.seconds", { count: totalSeconds });
|
|
1422
|
+
}
|
|
1423
|
+
const totalMinutes = Math.floor(totalSeconds / 60);
|
|
1424
|
+
if (totalMinutes < 60) {
|
|
1425
|
+
return t("timeline.turnSummaryModel.minutes", { count: totalMinutes });
|
|
1426
|
+
}
|
|
1427
|
+
const hours = Math.floor(totalMinutes / 60);
|
|
1428
|
+
const minutes = totalMinutes % 60;
|
|
1429
|
+
return t("timeline.turnSummaryModel.hoursMinutes", {
|
|
1430
|
+
hours,
|
|
1431
|
+
minutes: String(minutes).padStart(2, "0")
|
|
1432
|
+
});
|
|
1433
|
+
}
|
|
1434
|
+
function hasFacetContent(content) {
|
|
1435
|
+
return content !== null && content !== void 0 && content !== false && content !== "";
|
|
1436
|
+
}
|
|
1437
|
+
function selectTurnSummaryFacets(definitions, context, statusKind) {
|
|
1438
|
+
return definitions.flatMap((facet) => {
|
|
1439
|
+
if (statusKind && (facet.id === "duration" || statusKind !== "worked" && BUILT_IN_TURN_SUMMARY_FACET_IDS.includes(facet.id))) {
|
|
1440
|
+
return [];
|
|
1441
|
+
}
|
|
1442
|
+
try {
|
|
1443
|
+
const result = facet.summarize(context);
|
|
1444
|
+
return result && hasFacetContent(result.content) ? [{ facet, result }] : [];
|
|
1445
|
+
} catch {
|
|
1446
|
+
return [];
|
|
1447
|
+
}
|
|
1448
|
+
});
|
|
1449
|
+
}
|
|
1811
1450
|
|
|
1812
1451
|
export {
|
|
1813
|
-
|
|
1814
|
-
|
|
1815
|
-
formatElapsed,
|
|
1816
|
-
createTurnSummaryContext,
|
|
1817
|
-
BUILT_IN_TURN_SUMMARY_FACETS,
|
|
1818
|
-
resolveTurnSummaryFacets,
|
|
1819
|
-
formatDurationFacet,
|
|
1820
|
-
selectTurnSummaryFacets,
|
|
1452
|
+
GENIE_PREPARING_PHRASES,
|
|
1453
|
+
GENIE_WAITING_PHRASES,
|
|
1821
1454
|
rawTypeOf,
|
|
1822
1455
|
createToolRegistry,
|
|
1823
|
-
sandboxCommandExitCode,
|
|
1824
|
-
parseExecBannerSessionId,
|
|
1825
|
-
stripExecBanner,
|
|
1826
|
-
execTruncated,
|
|
1827
|
-
isExecSessionLostBanner,
|
|
1828
|
-
looksBinary,
|
|
1829
|
-
controlCaret,
|
|
1830
|
-
v4aToGitFileDiff,
|
|
1831
|
-
parseFreeformApplyPatch,
|
|
1832
|
-
applyPatchOps,
|
|
1833
|
-
applyPatchOpsFromToolItem,
|
|
1834
|
-
isApplyPatch,
|
|
1835
|
-
parseToolArgs,
|
|
1836
|
-
tailPeek,
|
|
1837
|
-
unwrapMcpOutput,
|
|
1838
|
-
screenshotDataUrl,
|
|
1839
|
-
retainedScreenshotMetadata,
|
|
1840
|
-
generatedImageReceipt,
|
|
1841
|
-
retainedToolResultImages,
|
|
1842
|
-
mediaPreviewFact,
|
|
1843
|
-
invokedToolCall,
|
|
1844
1456
|
withComputePreview,
|
|
1845
1457
|
truncatePreview,
|
|
1846
1458
|
execPresentation,
|
|
@@ -1863,7 +1475,13 @@ export {
|
|
|
1863
1475
|
presentedToolKind,
|
|
1864
1476
|
presentsToolOutputPreview,
|
|
1865
1477
|
toolRowPresentation,
|
|
1866
|
-
|
|
1867
|
-
|
|
1478
|
+
BUILT_IN_TURN_SUMMARY_FACET_IDS,
|
|
1479
|
+
turnSummaryFallbackLabel,
|
|
1480
|
+
formatElapsed,
|
|
1481
|
+
createTurnSummaryContext,
|
|
1482
|
+
BUILT_IN_TURN_SUMMARY_FACETS,
|
|
1483
|
+
resolveTurnSummaryFacets,
|
|
1484
|
+
formatDurationFacet,
|
|
1485
|
+
selectTurnSummaryFacets
|
|
1868
1486
|
};
|
|
1869
|
-
//# sourceMappingURL=chunk-
|
|
1487
|
+
//# sourceMappingURL=chunk-YV56F4UP.js.map
|