@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
|
@@ -0,0 +1,529 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
mcpToolLeaf
|
|
4
|
+
} from "./chunk-LEKBNKLD.js";
|
|
5
|
+
import {
|
|
6
|
+
tryParseJson
|
|
7
|
+
} from "./chunk-SJGAHTY5.js";
|
|
8
|
+
|
|
9
|
+
// src/timeline/parsers.ts
|
|
10
|
+
import {
|
|
11
|
+
normalizeMcpOutput,
|
|
12
|
+
parseGeneratedImageReceipt
|
|
13
|
+
} from "@opengeni/sdk";
|
|
14
|
+
function sandboxCommandExitCode(out) {
|
|
15
|
+
const match = String(out ?? "").match(/Process exited with code (-?\d+)/);
|
|
16
|
+
return match ? Number(match[1]) : null;
|
|
17
|
+
}
|
|
18
|
+
function parseExecBannerSessionId(out) {
|
|
19
|
+
const text = String(out ?? "");
|
|
20
|
+
const outputIdx = text.indexOf("\nOutput:\n");
|
|
21
|
+
const banner = outputIdx >= 0 ? text.slice(0, outputIdx) : text.startsWith("Output:\n") ? "" : text;
|
|
22
|
+
const match = banner.match(/Process running with session ID (\d+)/);
|
|
23
|
+
if (!match) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
const n = Number.parseInt(match[1], 10);
|
|
27
|
+
return Number.isFinite(n) ? n : null;
|
|
28
|
+
}
|
|
29
|
+
function stripExecBanner(out) {
|
|
30
|
+
const text = String(out ?? "");
|
|
31
|
+
const marker = text.indexOf("\nOutput:\n");
|
|
32
|
+
if (marker >= 0) {
|
|
33
|
+
return text.slice(marker + "\nOutput:\n".length);
|
|
34
|
+
}
|
|
35
|
+
if (text.startsWith("Output:\n")) {
|
|
36
|
+
return text.slice("Output:\n".length);
|
|
37
|
+
}
|
|
38
|
+
return text;
|
|
39
|
+
}
|
|
40
|
+
function execTruncated(out) {
|
|
41
|
+
return /Total output lines:|\.{3}\d+ tokens truncated\.{3}|\[\.{3}\d+ characters truncated/.test(
|
|
42
|
+
String(out ?? "")
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
function isExecSessionLostBanner(out) {
|
|
46
|
+
return /write_stdin failed: session not found: \d+/.test(String(out ?? ""));
|
|
47
|
+
}
|
|
48
|
+
function looksBinary(text) {
|
|
49
|
+
return text.includes("\0") || text.startsWith("\x7FELF");
|
|
50
|
+
}
|
|
51
|
+
function controlCaret(printable) {
|
|
52
|
+
return String(printable).replace(
|
|
53
|
+
/[\u0000-\u001f]/g,
|
|
54
|
+
(c) => `^${String.fromCharCode(c.charCodeAt(0) + 64)}`
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
function v4aToGitFileDiff(op) {
|
|
58
|
+
const status = op.type === "create_file" ? "added" : op.type === "delete_file" ? "deleted" : op.moveTo ? "renamed" : "modified";
|
|
59
|
+
const oldPath = op.moveTo ? op.path : null;
|
|
60
|
+
const path = op.moveTo || op.path;
|
|
61
|
+
const hunks = [];
|
|
62
|
+
let additions = 0;
|
|
63
|
+
let deletions = 0;
|
|
64
|
+
let sawHunkAnchor = false;
|
|
65
|
+
if (op.type !== "delete_file") {
|
|
66
|
+
const lines = (op.diff ?? "").split("\n");
|
|
67
|
+
let cur = null;
|
|
68
|
+
let oldNo = 1;
|
|
69
|
+
let newNo = 1;
|
|
70
|
+
for (const raw of lines) {
|
|
71
|
+
if (raw.startsWith("@@")) {
|
|
72
|
+
sawHunkAnchor = true;
|
|
73
|
+
const match = raw.match(/-(\d+)(?:,\d+)?\s+\+(\d+)/);
|
|
74
|
+
oldNo = match ? Number(match[1]) : 1;
|
|
75
|
+
newNo = match ? Number(match[2]) : 1;
|
|
76
|
+
cur = {
|
|
77
|
+
oldStart: oldNo,
|
|
78
|
+
oldLines: 0,
|
|
79
|
+
newStart: newNo,
|
|
80
|
+
newLines: 0,
|
|
81
|
+
header: raw,
|
|
82
|
+
lines: [{ type: "meta", oldNo: null, newNo: null, text: raw }]
|
|
83
|
+
};
|
|
84
|
+
hunks.push(cur);
|
|
85
|
+
} else if (cur || op.type === "create_file") {
|
|
86
|
+
if (!cur) {
|
|
87
|
+
cur = {
|
|
88
|
+
oldStart: 0,
|
|
89
|
+
oldLines: 0,
|
|
90
|
+
newStart: 1,
|
|
91
|
+
newLines: 0,
|
|
92
|
+
header: "",
|
|
93
|
+
lines: []
|
|
94
|
+
};
|
|
95
|
+
hunks.push(cur);
|
|
96
|
+
oldNo = 0;
|
|
97
|
+
newNo = 1;
|
|
98
|
+
}
|
|
99
|
+
if (raw.startsWith("+")) {
|
|
100
|
+
cur.lines.push({
|
|
101
|
+
type: "add",
|
|
102
|
+
oldNo: null,
|
|
103
|
+
newNo: newNo++,
|
|
104
|
+
text: raw.slice(1)
|
|
105
|
+
});
|
|
106
|
+
cur.newLines += 1;
|
|
107
|
+
additions += 1;
|
|
108
|
+
} else if (raw.startsWith("-")) {
|
|
109
|
+
cur.lines.push({
|
|
110
|
+
type: "del",
|
|
111
|
+
oldNo: oldNo++,
|
|
112
|
+
newNo: null,
|
|
113
|
+
text: raw.slice(1)
|
|
114
|
+
});
|
|
115
|
+
cur.oldLines += 1;
|
|
116
|
+
deletions += 1;
|
|
117
|
+
} else {
|
|
118
|
+
cur.lines.push({
|
|
119
|
+
type: "context",
|
|
120
|
+
oldNo: oldNo++,
|
|
121
|
+
newNo: newNo++,
|
|
122
|
+
text: raw.replace(/^ /, "")
|
|
123
|
+
});
|
|
124
|
+
cur.oldLines += 1;
|
|
125
|
+
cur.newLines += 1;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
if (op.type === "update_file" && !sawHunkAnchor && lines.some((l) => l.trim().length > 0)) {
|
|
130
|
+
throw new Error("malformed V4A: no @@ hunk anchor");
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return {
|
|
134
|
+
path,
|
|
135
|
+
oldPath,
|
|
136
|
+
status,
|
|
137
|
+
isBinary: false,
|
|
138
|
+
isImage: false,
|
|
139
|
+
additions,
|
|
140
|
+
deletions,
|
|
141
|
+
hunks,
|
|
142
|
+
truncated: false
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
var BEGIN_PATCH = "*** Begin Patch";
|
|
146
|
+
var END_PATCH = "*** End Patch";
|
|
147
|
+
var ADD_FILE = "*** Add File: ";
|
|
148
|
+
var DELETE_FILE = "*** Delete File: ";
|
|
149
|
+
var UPDATE_FILE = "*** Update File: ";
|
|
150
|
+
var MOVE_TO = "*** Move to: ";
|
|
151
|
+
var APPLY_PATCH_OP_TYPES = /* @__PURE__ */ new Set(["create_file", "update_file", "delete_file"]);
|
|
152
|
+
function isRecord(value) {
|
|
153
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
154
|
+
}
|
|
155
|
+
function freeformApplyPatchOps(rawPatch) {
|
|
156
|
+
return parseFreeformApplyPatch(rawPatch.trimStart());
|
|
157
|
+
}
|
|
158
|
+
function asApplyPatchOperation(value) {
|
|
159
|
+
if (!isRecord(value)) return null;
|
|
160
|
+
if (typeof value.type !== "string" || !APPLY_PATCH_OP_TYPES.has(value.type)) {
|
|
161
|
+
return null;
|
|
162
|
+
}
|
|
163
|
+
if (typeof value.path !== "string" || !value.path) {
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
const op = {
|
|
167
|
+
type: value.type,
|
|
168
|
+
path: value.path
|
|
169
|
+
};
|
|
170
|
+
if (typeof value.diff === "string") op.diff = value.diff;
|
|
171
|
+
if (typeof value.moveTo === "string" && value.moveTo.length > 0) op.moveTo = value.moveTo;
|
|
172
|
+
return op;
|
|
173
|
+
}
|
|
174
|
+
function parseStructuredOperations(payloads) {
|
|
175
|
+
if (payloads.length === 0) return [];
|
|
176
|
+
const operations = [];
|
|
177
|
+
for (const payload of payloads) {
|
|
178
|
+
const op = asApplyPatchOperation(payload);
|
|
179
|
+
if (!op) return [];
|
|
180
|
+
operations.push(op);
|
|
181
|
+
}
|
|
182
|
+
return operations;
|
|
183
|
+
}
|
|
184
|
+
function parseFreeformApplyPatch(rawPatch) {
|
|
185
|
+
const lines = rawPatch.split(/\r?\n/);
|
|
186
|
+
if (lines.at(-1) === "") lines.pop();
|
|
187
|
+
if (lines[0] !== BEGIN_PATCH) return [];
|
|
188
|
+
if (lines.length < 2 || lines.at(-1) !== END_PATCH) return [];
|
|
189
|
+
const operations = [];
|
|
190
|
+
let index = 1;
|
|
191
|
+
while (index < lines.length - 1) {
|
|
192
|
+
const line = lines[index];
|
|
193
|
+
let parsed = null;
|
|
194
|
+
if (line.startsWith(ADD_FILE)) parsed = parseAddFilePatch(lines, index);
|
|
195
|
+
else if (line.startsWith(DELETE_FILE)) parsed = parseDeleteFilePatch(lines, index);
|
|
196
|
+
else if (line.startsWith(UPDATE_FILE)) parsed = parseUpdateFilePatch(lines, index);
|
|
197
|
+
else return [];
|
|
198
|
+
if (!parsed || "error" in parsed) return [];
|
|
199
|
+
operations.push(parsed.operation);
|
|
200
|
+
index = parsed.nextIndex;
|
|
201
|
+
}
|
|
202
|
+
return operations.length > 0 ? operations : [];
|
|
203
|
+
}
|
|
204
|
+
function parsePatchHeader(line, prefix) {
|
|
205
|
+
const path = line.slice(prefix.length).trim();
|
|
206
|
+
return path || null;
|
|
207
|
+
}
|
|
208
|
+
function isFileOperationHeader(line) {
|
|
209
|
+
return line.startsWith(ADD_FILE) || line.startsWith(DELETE_FILE) || line.startsWith(UPDATE_FILE);
|
|
210
|
+
}
|
|
211
|
+
function joinDiff(lines) {
|
|
212
|
+
return `${lines.join("\n")}
|
|
213
|
+
`;
|
|
214
|
+
}
|
|
215
|
+
function parseAddFilePatch(lines, index) {
|
|
216
|
+
const path = parsePatchHeader(lines[index], ADD_FILE);
|
|
217
|
+
if (!path) return { error: true };
|
|
218
|
+
index += 1;
|
|
219
|
+
const diffLines = [];
|
|
220
|
+
while (index < lines.length - 1 && !isFileOperationHeader(lines[index])) {
|
|
221
|
+
const line = lines[index];
|
|
222
|
+
if (!line.startsWith("+")) return { error: true };
|
|
223
|
+
diffLines.push(line);
|
|
224
|
+
index += 1;
|
|
225
|
+
}
|
|
226
|
+
if (diffLines.length === 0) return { error: true };
|
|
227
|
+
return {
|
|
228
|
+
operation: { type: "create_file", path, diff: joinDiff(diffLines) },
|
|
229
|
+
nextIndex: index
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
function parseDeleteFilePatch(lines, index) {
|
|
233
|
+
const path = parsePatchHeader(lines[index], DELETE_FILE);
|
|
234
|
+
if (!path) return { error: true };
|
|
235
|
+
index += 1;
|
|
236
|
+
if (index < lines.length - 1 && !isFileOperationHeader(lines[index])) {
|
|
237
|
+
return { error: true };
|
|
238
|
+
}
|
|
239
|
+
return { operation: { type: "delete_file", path }, nextIndex: index };
|
|
240
|
+
}
|
|
241
|
+
function parseUpdateFilePatch(lines, index) {
|
|
242
|
+
const path = parsePatchHeader(lines[index], UPDATE_FILE);
|
|
243
|
+
if (!path) return { error: true };
|
|
244
|
+
index += 1;
|
|
245
|
+
let moveTo;
|
|
246
|
+
if (index < lines.length - 1 && lines[index].startsWith(MOVE_TO)) {
|
|
247
|
+
const parsedMoveTo = parsePatchHeader(lines[index], MOVE_TO);
|
|
248
|
+
if (!parsedMoveTo) return { error: true };
|
|
249
|
+
moveTo = parsedMoveTo;
|
|
250
|
+
index += 1;
|
|
251
|
+
}
|
|
252
|
+
const diffLines = [];
|
|
253
|
+
while (index < lines.length - 1 && !isFileOperationHeader(lines[index])) {
|
|
254
|
+
diffLines.push(lines[index]);
|
|
255
|
+
index += 1;
|
|
256
|
+
}
|
|
257
|
+
if (diffLines.length === 0 && !moveTo) return { error: true };
|
|
258
|
+
return {
|
|
259
|
+
operation: {
|
|
260
|
+
type: "update_file",
|
|
261
|
+
path,
|
|
262
|
+
diff: diffLines.length > 0 ? joinDiff(diffLines) : "",
|
|
263
|
+
...moveTo ? { moveTo } : {}
|
|
264
|
+
},
|
|
265
|
+
nextIndex: index
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
function applyPatchOps(raw) {
|
|
269
|
+
if (raw == null) return [];
|
|
270
|
+
if (typeof raw === "string") {
|
|
271
|
+
const trimmed = raw.trimStart();
|
|
272
|
+
if (trimmed.startsWith(BEGIN_PATCH)) return freeformApplyPatchOps(trimmed);
|
|
273
|
+
const parsed = tryParseJson(trimmed);
|
|
274
|
+
return parsed === void 0 ? [] : applyPatchOps(parsed);
|
|
275
|
+
}
|
|
276
|
+
if (Array.isArray(raw)) return parseStructuredOperations(raw);
|
|
277
|
+
if (!isRecord(raw)) return [];
|
|
278
|
+
if (typeof raw.patch === "string") return freeformApplyPatchOps(raw.patch);
|
|
279
|
+
if (Array.isArray(raw.command)) {
|
|
280
|
+
const [commandName, patch] = raw.command;
|
|
281
|
+
if (commandName === "apply_patch" && typeof patch === "string") {
|
|
282
|
+
return freeformApplyPatchOps(patch);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
if (Array.isArray(raw.operations) && raw.operations.length > 0) {
|
|
286
|
+
return parseStructuredOperations(raw.operations);
|
|
287
|
+
}
|
|
288
|
+
if (raw.operation !== void 0) {
|
|
289
|
+
const op = asApplyPatchOperation(raw.operation);
|
|
290
|
+
return op ? [op] : [];
|
|
291
|
+
}
|
|
292
|
+
const flat = asApplyPatchOperation(raw);
|
|
293
|
+
return flat ? [flat] : [];
|
|
294
|
+
}
|
|
295
|
+
function applyPatchOpsFromToolItem(item) {
|
|
296
|
+
const fromRaw = applyPatchOps(item.raw);
|
|
297
|
+
if (fromRaw.length > 0) return fromRaw;
|
|
298
|
+
if (isRecord(item.raw)) {
|
|
299
|
+
const nested = item.raw.arguments ?? item.raw.input;
|
|
300
|
+
if (nested !== void 0 && nested !== item.arguments) {
|
|
301
|
+
const fromNested = applyPatchOps(nested);
|
|
302
|
+
if (fromNested.length > 0) return fromNested;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
if (item.arguments !== void 0 && item.arguments !== null) {
|
|
306
|
+
return applyPatchOps(item.arguments);
|
|
307
|
+
}
|
|
308
|
+
return [];
|
|
309
|
+
}
|
|
310
|
+
function isApplyPatch(item) {
|
|
311
|
+
const type = item.raw && typeof item.raw === "object" ? item.raw.type : void 0;
|
|
312
|
+
if (type === "apply_patch_call") {
|
|
313
|
+
return true;
|
|
314
|
+
}
|
|
315
|
+
const name = item.name;
|
|
316
|
+
return name === "apply_patch_call" || name === "apply_patch" || name.endsWith("__apply_patch");
|
|
317
|
+
}
|
|
318
|
+
function parseToolArgs(args) {
|
|
319
|
+
if (args == null) {
|
|
320
|
+
return {};
|
|
321
|
+
}
|
|
322
|
+
if (typeof args === "string") {
|
|
323
|
+
const parsed = tryParseJson(args);
|
|
324
|
+
return parsed && typeof parsed === "object" ? parsed : {};
|
|
325
|
+
}
|
|
326
|
+
return typeof args === "object" ? args : {};
|
|
327
|
+
}
|
|
328
|
+
function tailPeek(text) {
|
|
329
|
+
const trimmed = text.trim();
|
|
330
|
+
if (!trimmed) {
|
|
331
|
+
return "";
|
|
332
|
+
}
|
|
333
|
+
const lines = trimmed.split("\n");
|
|
334
|
+
return lines[lines.length - 1] ?? "";
|
|
335
|
+
}
|
|
336
|
+
function unwrapMcpOutput(output) {
|
|
337
|
+
const normalized = normalizeMcpOutput(output);
|
|
338
|
+
return { text: normalized.text, isError: normalized.isError };
|
|
339
|
+
}
|
|
340
|
+
function screenshotDataUrl(out) {
|
|
341
|
+
if (typeof out === "string") {
|
|
342
|
+
if (out.startsWith("data:image")) {
|
|
343
|
+
return out;
|
|
344
|
+
}
|
|
345
|
+
if (out.startsWith("{") || out.startsWith("[")) {
|
|
346
|
+
const parsed = tryParseJson(out);
|
|
347
|
+
if (parsed !== void 0 && parsed !== out) {
|
|
348
|
+
return screenshotDataUrl(parsed);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
return null;
|
|
352
|
+
}
|
|
353
|
+
if (Array.isArray(out)) {
|
|
354
|
+
for (const entry of out) {
|
|
355
|
+
const url = screenshotDataUrl(entry);
|
|
356
|
+
if (url) {
|
|
357
|
+
return url;
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
return null;
|
|
361
|
+
}
|
|
362
|
+
if (out === null || typeof out !== "object") {
|
|
363
|
+
return null;
|
|
364
|
+
}
|
|
365
|
+
const record = out;
|
|
366
|
+
const imageUrl = record.image_url ?? record.imageUrl;
|
|
367
|
+
if (typeof imageUrl === "string" && imageUrl.startsWith("data:image")) {
|
|
368
|
+
return imageUrl;
|
|
369
|
+
}
|
|
370
|
+
if (imageUrl && typeof imageUrl === "object") {
|
|
371
|
+
const url = imageUrl.url;
|
|
372
|
+
if (typeof url === "string" && url.startsWith("data:image")) {
|
|
373
|
+
return url;
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
const image = record.image;
|
|
377
|
+
if (image && typeof image === "object") {
|
|
378
|
+
const mediaType = typeof image.mediaType === "string" ? image.mediaType : "image/png";
|
|
379
|
+
const base64 = bytesToBase64(image.data);
|
|
380
|
+
if (base64) {
|
|
381
|
+
return `data:${mediaType};base64,${base64}`;
|
|
382
|
+
}
|
|
383
|
+
if (typeof image.data === "string" && image.data.length > 0) {
|
|
384
|
+
return `data:${mediaType};base64,${image.data}`;
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
return null;
|
|
388
|
+
}
|
|
389
|
+
function retainedScreenshotMetadata(out) {
|
|
390
|
+
if (typeof out === "string" && (out.startsWith("{") || out.startsWith("["))) {
|
|
391
|
+
const parsed = tryParseJson(out);
|
|
392
|
+
if (parsed !== void 0 && parsed !== out) return retainedScreenshotMetadata(parsed);
|
|
393
|
+
}
|
|
394
|
+
if (Array.isArray(out)) {
|
|
395
|
+
for (const entry of out) {
|
|
396
|
+
const metadata = retainedScreenshotMetadata(entry);
|
|
397
|
+
if (metadata) return metadata;
|
|
398
|
+
}
|
|
399
|
+
return null;
|
|
400
|
+
}
|
|
401
|
+
if (!out || typeof out !== "object") return null;
|
|
402
|
+
const value = out;
|
|
403
|
+
if (typeof value.artifactId !== "string" || typeof value.available !== "boolean") return null;
|
|
404
|
+
if (!value.available) {
|
|
405
|
+
return typeof value.reason === "string" ? value : null;
|
|
406
|
+
}
|
|
407
|
+
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;
|
|
408
|
+
}
|
|
409
|
+
function generatedImageReceipt(out) {
|
|
410
|
+
return parseGeneratedImageReceipt(out);
|
|
411
|
+
}
|
|
412
|
+
function retainedToolResultImages(out) {
|
|
413
|
+
const parsed = typeof out === "string" && (out.startsWith("{") || out.startsWith("[")) ? tryParseJson(out) : out;
|
|
414
|
+
const split = (entries) => {
|
|
415
|
+
const images = [];
|
|
416
|
+
const rest = entries.filter((entry) => {
|
|
417
|
+
if (!entry || typeof entry !== "object" || Array.isArray(entry)) return true;
|
|
418
|
+
const receipt = retainedScreenshotMetadata(entry);
|
|
419
|
+
if (!receipt?.available) return true;
|
|
420
|
+
images.push(receipt);
|
|
421
|
+
return false;
|
|
422
|
+
});
|
|
423
|
+
return { images, rest };
|
|
424
|
+
};
|
|
425
|
+
if (Array.isArray(parsed)) {
|
|
426
|
+
const { images, rest } = split(parsed);
|
|
427
|
+
return images.length ? { images, output: rest } : { images, output: out };
|
|
428
|
+
}
|
|
429
|
+
if (parsed && typeof parsed === "object") {
|
|
430
|
+
const record = parsed;
|
|
431
|
+
if (Array.isArray(record.content)) {
|
|
432
|
+
const { images, rest } = split(record.content);
|
|
433
|
+
return images.length ? { images, output: { ...record, content: rest } } : { images, output: out };
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
return { images: [], output: out };
|
|
437
|
+
}
|
|
438
|
+
function mediaPreviewFact(out) {
|
|
439
|
+
if (typeof out === "string" && (out.startsWith("{") || out.startsWith("["))) {
|
|
440
|
+
const parsed = tryParseJson(out);
|
|
441
|
+
if (parsed !== void 0 && parsed !== out) return mediaPreviewFact(parsed);
|
|
442
|
+
}
|
|
443
|
+
if (Array.isArray(out)) {
|
|
444
|
+
for (const entry of out) {
|
|
445
|
+
const preview = mediaPreviewFact(entry);
|
|
446
|
+
if (preview) return preview;
|
|
447
|
+
}
|
|
448
|
+
return null;
|
|
449
|
+
}
|
|
450
|
+
if (!out || typeof out !== "object") return null;
|
|
451
|
+
const record = out;
|
|
452
|
+
if (record.type !== "media_preview" || typeof record.mediaType !== "string" || record.fullOutputAvailable !== false || typeof record.preview !== "string" || record.inlineBytes !== null && typeof record.inlineBytes !== "number") {
|
|
453
|
+
return null;
|
|
454
|
+
}
|
|
455
|
+
return record;
|
|
456
|
+
}
|
|
457
|
+
function bytesToBase64(data) {
|
|
458
|
+
const isByte = (n) => typeof n === "number" && Number.isInteger(n) && n >= 0 && n <= 255;
|
|
459
|
+
let bytes = null;
|
|
460
|
+
if (Array.isArray(data) && data.every(isByte)) {
|
|
461
|
+
bytes = data;
|
|
462
|
+
} else if (data && typeof data === "object") {
|
|
463
|
+
const record = data;
|
|
464
|
+
if (record.type === "Buffer" && Array.isArray(record.data) && record.data.every(isByte)) {
|
|
465
|
+
bytes = record.data;
|
|
466
|
+
} else {
|
|
467
|
+
const keys = Object.keys(record);
|
|
468
|
+
if (keys.length > 0 && keys.every((key) => /^\d+$/.test(key))) {
|
|
469
|
+
const values = keys.sort((a, b) => Number(a) - Number(b)).map((key) => record[key]);
|
|
470
|
+
if (values.every(isByte)) {
|
|
471
|
+
bytes = values;
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
if (!bytes || bytes.length === 0) {
|
|
477
|
+
return null;
|
|
478
|
+
}
|
|
479
|
+
try {
|
|
480
|
+
let binary = "";
|
|
481
|
+
const CHUNK = 32768;
|
|
482
|
+
for (let i = 0; i < bytes.length; i += CHUNK) {
|
|
483
|
+
binary += String.fromCharCode(...bytes.slice(i, i + CHUNK));
|
|
484
|
+
}
|
|
485
|
+
return typeof btoa === "function" ? btoa(binary) : Buffer.from(binary, "binary").toString("base64");
|
|
486
|
+
} catch {
|
|
487
|
+
return null;
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
// src/timeline/invoked-tool.ts
|
|
492
|
+
function invokedTool(name, rawArguments) {
|
|
493
|
+
if (mcpToolLeaf(name) !== "tool_invoke") return null;
|
|
494
|
+
const args = parseToolArgs(rawArguments);
|
|
495
|
+
if (typeof args.name !== "string" || !args.name.trim()) return null;
|
|
496
|
+
return { name: args.name, arguments: args.arguments ?? {} };
|
|
497
|
+
}
|
|
498
|
+
function invokedToolCall(item) {
|
|
499
|
+
const invoked = invokedTool(item.name, item.arguments);
|
|
500
|
+
if (!invoked) return item;
|
|
501
|
+
const { display: _display, ...rest } = item;
|
|
502
|
+
return { ...rest, ...invoked };
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
export {
|
|
506
|
+
sandboxCommandExitCode,
|
|
507
|
+
parseExecBannerSessionId,
|
|
508
|
+
stripExecBanner,
|
|
509
|
+
execTruncated,
|
|
510
|
+
isExecSessionLostBanner,
|
|
511
|
+
looksBinary,
|
|
512
|
+
controlCaret,
|
|
513
|
+
v4aToGitFileDiff,
|
|
514
|
+
parseFreeformApplyPatch,
|
|
515
|
+
applyPatchOps,
|
|
516
|
+
applyPatchOpsFromToolItem,
|
|
517
|
+
isApplyPatch,
|
|
518
|
+
parseToolArgs,
|
|
519
|
+
tailPeek,
|
|
520
|
+
unwrapMcpOutput,
|
|
521
|
+
screenshotDataUrl,
|
|
522
|
+
retainedScreenshotMetadata,
|
|
523
|
+
generatedImageReceipt,
|
|
524
|
+
retainedToolResultImages,
|
|
525
|
+
mediaPreviewFact,
|
|
526
|
+
invokedTool,
|
|
527
|
+
invokedToolCall
|
|
528
|
+
};
|
|
529
|
+
//# sourceMappingURL=chunk-ULYQEFNH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/timeline/parsers.ts","../src/timeline/invoked-tool.ts"],"sourcesContent":["import {\n normalizeMcpOutput,\n parseGeneratedImageReceipt,\n type GeneratedImageReceipt,\n type GitFileDiff,\n type RetainedArtifactMetadata,\n} from \"@opengeni/sdk\";\nimport { tryParseJson } from \"../lib/format\";\n\nexport type { GeneratedImageReceipt };\n\n/* ----------------------------------------------------------------------------\n Pure parsers for the provider-native tool shapes that the timeline renders.\n\n These are intentionally browser-safe, dependency-free mirrors of the\n server-side helpers in `@opengeni/runtime` (`sandboxCommandExitCode`,\n `parseExecBannerSessionId`, `stripExecBanner`) plus the V4A diff parser the\n apply-patch renderer needs. The SDK does not depend on `@opengeni/runtime` by\n design (runtime is a heavy server package); these few regexes are cheap to\n own here and keep the React surface free of a server dependency.\n\n Every function is pure -- same input, same output -- so it can be\n unit-tested and memoized.\n -------------------------------------------------------------------------- */\n\n/** Recover the exit code from a sandbox exec banner (`Process exited with code N`). */\nexport function sandboxCommandExitCode(out: unknown): number | null {\n const match = String(out ?? \"\").match(/Process exited with code (-?\\d+)/);\n return match ? Number(match[1]) : null;\n}\n\n/**\n * Recover the numeric exec-session id the sandbox embeds for a STILL-RUNNING\n * (backgrounded) process (`Process running with session ID N`). A finished\n * command emits `Process exited with code N` instead, which yields `null`.\n */\nexport function parseExecBannerSessionId(out: unknown): number | null {\n const text = String(out ?? \"\");\n const outputIdx = text.indexOf(\"\\nOutput:\\n\");\n const banner =\n outputIdx >= 0 ? text.slice(0, outputIdx) : text.startsWith(\"Output:\\n\") ? \"\" : text;\n const match = banner.match(/Process running with session ID (\\d+)/);\n if (!match) {\n return null;\n }\n const n = Number.parseInt(match[1]!, 10);\n return Number.isFinite(n) ? n : null;\n}\n\n/** Strip the exec banner (`Chunk ID ...\\n...\\nOutput:\\n`) down to the command's stdout. */\nexport function stripExecBanner(out: unknown): string {\n const text = String(out ?? \"\");\n const marker = text.indexOf(\"\\nOutput:\\n\");\n if (marker >= 0) {\n return text.slice(marker + \"\\nOutput:\\n\".length);\n }\n if (text.startsWith(\"Output:\\n\")) {\n return text.slice(\"Output:\\n\".length);\n }\n return text;\n}\n\n/** The sandbox clamped the output (token/line truncation markers in the banner). */\nexport function execTruncated(out: unknown): boolean {\n return /Total output lines:|\\.{3}\\d+ tokens truncated\\.{3}|\\[\\.{3}\\d+ characters truncated/.test(\n String(out ?? \"\"),\n );\n}\n\n/** A `write_stdin` whose target PTY vanished (`write_stdin failed: session not found: N`). */\nexport function isExecSessionLostBanner(out: unknown): boolean {\n return /write_stdin failed: session not found: \\d+/.test(String(out ?? \"\"));\n}\n\n/** True when the exec stdout looks binary/garbled (a NUL byte or ELF magic). */\nexport function looksBinary(text: string): boolean {\n return text.includes(\"\\u0000\") || text.startsWith(\"\\u007fELF\");\n}\n\n/**\n * Render unprintable control characters as caret notation (0x03 -> `^C`) so a\n * `write_stdin` keystroke payload reads cleanly in the row title.\n */\nexport function controlCaret(printable: string): string {\n return String(printable).replace(\n /[\\u0000-\\u001f]/g,\n (c) => `^${String.fromCharCode(c.charCodeAt(0) + 64)}`,\n );\n}\n\n/* --- V4A apply_patch diff -> GitFileDiff ------------------------------------ */\n\n/** One operation inside an `apply_patch_call` (a V4A file edit). */\nexport type ApplyPatchOperation = {\n /**\n * The V4A op kind. The three canonical values are `create_file`,\n * `update_file`, and `delete_file`; the open `string` tail tolerates a\n * forward-compatible/unknown op kind from the provider without a type error\n * (it falls through to the \"Edited\" treatment).\n */\n type: \"create_file\" | \"update_file\" | \"delete_file\" | (string & {});\n path: string;\n /** Rename target -- when present the op is a move/rename. */\n moveTo?: string | null | undefined;\n /** The V4A hunk string (`@@ ...` lines with `+`/`-`/context prefixes). */\n diff?: string | undefined;\n};\n\n/**\n * Parse a single V4A `apply_patch` operation into the SDK's `GitFileDiff` shape\n * so it can flow into the SAME `DiffView` / `PierreDiff` the Files tab uses.\n * Throws on a hunk string it cannot structure (no `@@` anchor on an update); the\n * renderer catches and falls back to a raw-patch view.\n */\nexport function v4aToGitFileDiff(op: ApplyPatchOperation): GitFileDiff {\n const status: GitFileDiff[\"status\"] =\n op.type === \"create_file\"\n ? \"added\"\n : op.type === \"delete_file\"\n ? \"deleted\"\n : op.moveTo\n ? \"renamed\"\n : \"modified\";\n const oldPath = op.moveTo ? op.path : null;\n const path = op.moveTo || op.path;\n\n const hunks: GitFileDiff[\"hunks\"] = [];\n let additions = 0;\n let deletions = 0;\n let sawHunkAnchor = false;\n\n if (op.type !== \"delete_file\") {\n const lines = (op.diff ?? \"\").split(\"\\n\");\n let cur: GitFileDiff[\"hunks\"][number] | null = null;\n let oldNo = 1;\n let newNo = 1;\n for (const raw of lines) {\n if (raw.startsWith(\"@@\")) {\n sawHunkAnchor = true;\n const match = raw.match(/-(\\d+)(?:,\\d+)?\\s+\\+(\\d+)/);\n oldNo = match ? Number(match[1]) : 1;\n newNo = match ? Number(match[2]) : 1;\n cur = {\n oldStart: oldNo,\n oldLines: 0,\n newStart: newNo,\n newLines: 0,\n header: raw,\n lines: [{ type: \"meta\", oldNo: null, newNo: null, text: raw }],\n };\n hunks.push(cur);\n } else if (cur || op.type === \"create_file\") {\n if (!cur) {\n // No `@@` anchor on a create_file body: synthesize an add-only hunk.\n // Leave `header` empty so `gitFileDiffToPatch` regenerates a valid\n // `@@ -0,0 +1,N @@` from the range fields once newLines is counted — a\n // pre-baked partial header (e.g. `@@ +1 @@`) renders zero lines in a\n // generic unified-diff parser.\n cur = {\n oldStart: 0,\n oldLines: 0,\n newStart: 1,\n newLines: 0,\n header: \"\",\n lines: [],\n };\n hunks.push(cur);\n oldNo = 0;\n newNo = 1;\n }\n if (raw.startsWith(\"+\")) {\n cur.lines.push({\n type: \"add\",\n oldNo: null,\n newNo: newNo++,\n text: raw.slice(1),\n });\n cur.newLines += 1;\n additions += 1;\n } else if (raw.startsWith(\"-\")) {\n cur.lines.push({\n type: \"del\",\n oldNo: oldNo++,\n newNo: null,\n text: raw.slice(1),\n });\n cur.oldLines += 1;\n deletions += 1;\n } else {\n cur.lines.push({\n type: \"context\",\n oldNo: oldNo++,\n newNo: newNo++,\n text: raw.replace(/^ /, \"\"),\n });\n cur.oldLines += 1;\n cur.newLines += 1;\n }\n }\n }\n // An update with content but no recognizable hunk anchor is malformed V4A;\n // the caller falls back to the raw-patch view instead of a structured diff.\n if (op.type === \"update_file\" && !sawHunkAnchor && lines.some((l) => l.trim().length > 0)) {\n throw new Error(\"malformed V4A: no @@ hunk anchor\");\n }\n }\n\n return {\n path,\n oldPath,\n status,\n isBinary: false,\n isImage: false,\n additions,\n deletions,\n hunks,\n truncated: false,\n };\n}\n\nconst BEGIN_PATCH = \"*** Begin Patch\";\nconst END_PATCH = \"*** End Patch\";\nconst ADD_FILE = \"*** Add File: \";\nconst DELETE_FILE = \"*** Delete File: \";\nconst UPDATE_FILE = \"*** Update File: \";\nconst MOVE_TO = \"*** Move to: \";\n\nconst APPLY_PATCH_OP_TYPES = new Set([\"create_file\", \"update_file\", \"delete_file\"]);\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n\n/** Freeform / `{ patch }` / command payloads — tolerate leading whitespace. */\nfunction freeformApplyPatchOps(rawPatch: string): ApplyPatchOperation[] {\n return parseFreeformApplyPatch(rawPatch.trimStart());\n}\n\nfunction asApplyPatchOperation(value: unknown): ApplyPatchOperation | null {\n if (!isRecord(value)) return null;\n if (typeof value.type !== \"string\" || !APPLY_PATCH_OP_TYPES.has(value.type)) {\n return null;\n }\n if (typeof value.path !== \"string\" || !value.path) {\n return null;\n }\n const op: ApplyPatchOperation = {\n type: value.type as ApplyPatchOperation[\"type\"],\n path: value.path,\n };\n if (typeof value.diff === \"string\") op.diff = value.diff;\n if (typeof value.moveTo === \"string\" && value.moveTo.length > 0) op.moveTo = value.moveTo;\n return op;\n}\n\nfunction parseStructuredOperations(payloads: unknown[]): ApplyPatchOperation[] {\n if (payloads.length === 0) return [];\n const operations: ApplyPatchOperation[] = [];\n for (const payload of payloads) {\n const op = asApplyPatchOperation(payload);\n if (!op) return [];\n operations.push(op);\n }\n return operations;\n}\n\n/**\n * Mirror of `@openai/agents-core` freeform `*** Begin Patch` → ops. Kept here so\n * the timeline can render Codex function-tool apply_patch without importing the\n * server SDK package.\n */\nexport function parseFreeformApplyPatch(rawPatch: string): ApplyPatchOperation[] {\n const lines = rawPatch.split(/\\r?\\n/);\n if (lines.at(-1) === \"\") lines.pop();\n if (lines[0] !== BEGIN_PATCH) return [];\n if (lines.length < 2 || lines.at(-1) !== END_PATCH) return [];\n\n const operations: ApplyPatchOperation[] = [];\n let index = 1;\n while (index < lines.length - 1) {\n const line = lines[index]!;\n let parsed: { operation: ApplyPatchOperation; nextIndex: number } | { error: true } | null =\n null;\n if (line.startsWith(ADD_FILE)) parsed = parseAddFilePatch(lines, index);\n else if (line.startsWith(DELETE_FILE)) parsed = parseDeleteFilePatch(lines, index);\n else if (line.startsWith(UPDATE_FILE)) parsed = parseUpdateFilePatch(lines, index);\n else return [];\n if (!parsed || \"error\" in parsed) return [];\n operations.push(parsed.operation);\n index = parsed.nextIndex;\n }\n // Match the SDK: Begin/End with no file ops is not a valid patch.\n return operations.length > 0 ? operations : [];\n}\n\nfunction parsePatchHeader(line: string, prefix: string): string | null {\n const path = line.slice(prefix.length).trim();\n return path || null;\n}\n\nfunction isFileOperationHeader(line: string): boolean {\n return line.startsWith(ADD_FILE) || line.startsWith(DELETE_FILE) || line.startsWith(UPDATE_FILE);\n}\n\nfunction joinDiff(lines: string[]): string {\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nfunction parseAddFilePatch(\n lines: string[],\n index: number,\n): { operation: ApplyPatchOperation; nextIndex: number } | { error: true } {\n const path = parsePatchHeader(lines[index]!, ADD_FILE);\n if (!path) return { error: true };\n index += 1;\n const diffLines: string[] = [];\n while (index < lines.length - 1 && !isFileOperationHeader(lines[index]!)) {\n const line = lines[index]!;\n if (!line.startsWith(\"+\")) return { error: true };\n diffLines.push(line);\n index += 1;\n }\n if (diffLines.length === 0) return { error: true };\n return {\n operation: { type: \"create_file\", path, diff: joinDiff(diffLines) },\n nextIndex: index,\n };\n}\n\nfunction parseDeleteFilePatch(\n lines: string[],\n index: number,\n): { operation: ApplyPatchOperation; nextIndex: number } | { error: true } {\n const path = parsePatchHeader(lines[index]!, DELETE_FILE);\n if (!path) return { error: true };\n index += 1;\n if (index < lines.length - 1 && !isFileOperationHeader(lines[index]!)) {\n return { error: true };\n }\n return { operation: { type: \"delete_file\", path }, nextIndex: index };\n}\n\nfunction parseUpdateFilePatch(\n lines: string[],\n index: number,\n): { operation: ApplyPatchOperation; nextIndex: number } | { error: true } {\n const path = parsePatchHeader(lines[index]!, UPDATE_FILE);\n if (!path) return { error: true };\n index += 1;\n let moveTo: string | undefined;\n if (index < lines.length - 1 && lines[index]!.startsWith(MOVE_TO)) {\n const parsedMoveTo = parsePatchHeader(lines[index]!, MOVE_TO);\n if (!parsedMoveTo) return { error: true };\n moveTo = parsedMoveTo;\n index += 1;\n }\n const diffLines: string[] = [];\n while (index < lines.length - 1 && !isFileOperationHeader(lines[index]!)) {\n diffLines.push(lines[index]!);\n index += 1;\n }\n if (diffLines.length === 0 && !moveTo) return { error: true };\n return {\n operation: {\n type: \"update_file\",\n path,\n diff: diffLines.length > 0 ? joinDiff(diffLines) : \"\",\n ...(moveTo ? { moveTo } : {}),\n },\n nextIndex: index,\n };\n}\n\n/**\n * Normalize every apply_patch payload the Agents SDK accepts into structured\n * ops — hosted `{ operation }` / `{ operations }`, function-tool `{ patch }`,\n * `command` tuple, flat op, freeform string, or op array.\n */\nexport function applyPatchOps(raw: unknown): ApplyPatchOperation[] {\n if (raw == null) return [];\n if (typeof raw === \"string\") {\n const trimmed = raw.trimStart();\n if (trimmed.startsWith(BEGIN_PATCH)) return freeformApplyPatchOps(trimmed);\n const parsed = tryParseJson(trimmed);\n return parsed === undefined ? [] : applyPatchOps(parsed);\n }\n if (Array.isArray(raw)) return parseStructuredOperations(raw);\n if (!isRecord(raw)) return [];\n\n if (typeof raw.patch === \"string\") return freeformApplyPatchOps(raw.patch);\n if (Array.isArray(raw.command)) {\n const [commandName, patch] = raw.command;\n if (commandName === \"apply_patch\" && typeof patch === \"string\") {\n return freeformApplyPatchOps(patch);\n }\n }\n // Empty `operations: []` is not authoritative — fall through to operation/flat.\n if (Array.isArray(raw.operations) && raw.operations.length > 0) {\n return parseStructuredOperations(raw.operations);\n }\n if (raw.operation !== undefined) {\n const op = asApplyPatchOperation(raw.operation);\n return op ? [op] : [];\n }\n // Flat single op: `{ type, path, diff?, moveTo? }`.\n const flat = asApplyPatchOperation(raw);\n return flat ? [flat] : [];\n}\n\n/** Ops from provider `raw` and/or function-tool arguments (Codex path). */\nexport function applyPatchOpsFromToolItem(item: {\n raw: unknown;\n arguments: unknown;\n}): ApplyPatchOperation[] {\n const fromRaw = applyPatchOps(item.raw);\n if (fromRaw.length > 0) return fromRaw;\n\n // function_call envelopes sometimes keep the payload only under raw.arguments.\n if (isRecord(item.raw)) {\n const nested = item.raw.arguments ?? item.raw.input;\n if (nested !== undefined && nested !== item.arguments) {\n const fromNested = applyPatchOps(nested);\n if (fromNested.length > 0) return fromNested;\n }\n }\n\n if (item.arguments !== undefined && item.arguments !== null) {\n return applyPatchOps(item.arguments);\n }\n return [];\n}\n\n/**\n * True when a tool item is apply_patch — hosted `raw.type === \"apply_patch_call\"`,\n * function-tool `name` `apply_patch` / `apply_patch_call`, or an MCP-prefixed\n * `…__apply_patch` leaf. Centralizes the rawType-or-name check.\n */\nexport function isApplyPatch(item: { name: string; raw: unknown }): boolean {\n const type =\n item.raw && typeof item.raw === \"object\" ? (item.raw as { type?: unknown }).type : undefined;\n if (type === \"apply_patch_call\") {\n return true;\n }\n const name = item.name;\n return name === \"apply_patch_call\" || name === \"apply_patch\" || name.endsWith(\"__apply_patch\");\n}\n\n/** Parse tool arguments that may arrive as a JSON string or an object. */\nexport function parseToolArgs(args: unknown): Record<string, unknown> {\n if (args == null) {\n return {};\n }\n if (typeof args === \"string\") {\n const parsed = tryParseJson(args);\n return parsed && typeof parsed === \"object\" ? (parsed as Record<string, unknown>) : {};\n }\n return typeof args === \"object\" ? (args as Record<string, unknown>) : {};\n}\n\n/** The last non-empty line of a string -- the compact \"what happened\" peek. */\nexport function tailPeek(text: string): string {\n const trimmed = text.trim();\n if (!trimmed) {\n return \"\";\n }\n const lines = trimmed.split(\"\\n\");\n return lines[lines.length - 1] ?? \"\";\n}\n\n/**\n * Unwrap an MCP tool result (`{ content: [{ type: \"text\", text }], isError? }`)\n * into a flat `{ text, isError }`. Non-MCP outputs pass through as their string\n * form.\n */\nexport function unwrapMcpOutput(output: unknown): {\n text: string;\n isError: boolean;\n} {\n const normalized = normalizeMcpOutput(output);\n return { text: normalized.text, isError: normalized.isError };\n}\n\n/* --- computer-use screenshot extraction ------------------------------------- */\n\n/**\n * Extract a renderable `data:` URL from a computer-use screenshot output,\n * whatever transport produced it. The hosted `computer_call` and the\n * function-text mode persist a plain `data:image/...` string; the\n * function-image mode (codex-backed sessions) persists the STRUCTURED image\n * output — `{type:\"image\", image:{data, mediaType}}` with `data` arriving as a\n * number array / index map / Buffer-JSON / base64 string after event\n * serialization — or the agents-core normalized `input_image` content item.\n * Returns null when the output carries no image (so callers fall back to their\n * text/empty presentation).\n */\nexport function screenshotDataUrl(out: unknown): string | null {\n if (typeof out === \"string\") {\n if (out.startsWith(\"data:image\")) {\n return out;\n }\n // A JSON-encoded structured output (some transports stringify tool results).\n if (out.startsWith(\"{\") || out.startsWith(\"[\")) {\n const parsed = tryParseJson(out);\n if (parsed !== undefined && parsed !== out) {\n return screenshotDataUrl(parsed);\n }\n }\n return null;\n }\n if (Array.isArray(out)) {\n for (const entry of out) {\n const url = screenshotDataUrl(entry);\n if (url) {\n return url;\n }\n }\n return null;\n }\n if (out === null || typeof out !== \"object\") {\n return null;\n }\n const record = out as Record<string, unknown>;\n // agents-core normalized content item: {type:\"input_image\", image_url: \"data:…\" | {url}}\n const imageUrl = record.image_url ?? record.imageUrl;\n if (typeof imageUrl === \"string\" && imageUrl.startsWith(\"data:image\")) {\n return imageUrl;\n }\n if (imageUrl && typeof imageUrl === \"object\") {\n const url = (imageUrl as Record<string, unknown>).url;\n if (typeof url === \"string\" && url.startsWith(\"data:image\")) {\n return url;\n }\n }\n // Structured tool output: {type:\"image\", image:{data, mediaType}}\n const image = record.image as Record<string, unknown> | undefined;\n if (image && typeof image === \"object\") {\n const mediaType = typeof image.mediaType === \"string\" ? image.mediaType : \"image/png\";\n const base64 = bytesToBase64(image.data);\n if (base64) {\n return `data:${mediaType};base64,${base64}`;\n }\n if (typeof image.data === \"string\" && image.data.length > 0) {\n // Already base64 text.\n return `data:${mediaType};base64,${image.data}`;\n }\n }\n return null;\n}\n\n/** Parse the closed retained-screenshot receipt carried by new tool events. */\nexport function retainedScreenshotMetadata(out: unknown): RetainedArtifactMetadata | null {\n if (typeof out === \"string\" && (out.startsWith(\"{\") || out.startsWith(\"[\"))) {\n const parsed = tryParseJson(out);\n if (parsed !== undefined && parsed !== out) return retainedScreenshotMetadata(parsed);\n }\n if (Array.isArray(out)) {\n for (const entry of out) {\n const metadata = retainedScreenshotMetadata(entry);\n if (metadata) return metadata;\n }\n return null;\n }\n if (!out || typeof out !== \"object\") return null;\n const value = out as Record<string, unknown>;\n if (typeof value.artifactId !== \"string\" || typeof value.available !== \"boolean\") return null;\n if (!value.available) {\n return typeof value.reason === \"string\" ? (value as unknown as RetainedArtifactMetadata) : null;\n }\n return (value.kind === \"computer_screenshot\" || value.kind === \"browser_screenshot\") &&\n [\"image/png\", \"image/jpeg\", \"image/webp\"].includes(String(value.contentType)) &&\n typeof value.originalBytes === \"number\" &&\n typeof value.sha256 === \"string\" &&\n value.dimensions !== null &&\n typeof value.dimensions === \"object\" &&\n value.retention !== null &&\n typeof value.retention === \"object\" &&\n (value.retention as Record<string, unknown>).policy === \"session_screenshot\"\n ? (value as unknown as RetainedArtifactMetadata)\n : null;\n}\n\n/** Parse the closed permanent generated-image receipt from native/function tools. */\nexport function generatedImageReceipt(out: unknown): GeneratedImageReceipt | null {\n return parseGeneratedImageReceipt(out);\n}\n\n/**\n * Images a tool result returned that the platform retained, plus the result\n * without them, so its text renders as usual. Any tool's result content can\n * carry these receipts in place of its image blocks.\n */\nexport function retainedToolResultImages(out: unknown): {\n images: Extract<RetainedArtifactMetadata, { available: true }>[];\n output: unknown;\n} {\n const parsed =\n typeof out === \"string\" && (out.startsWith(\"{\") || out.startsWith(\"[\"))\n ? tryParseJson(out)\n : out;\n const split = (entries: unknown[]) => {\n const images: Extract<RetainedArtifactMetadata, { available: true }>[] = [];\n const rest = entries.filter((entry) => {\n if (!entry || typeof entry !== \"object\" || Array.isArray(entry)) return true;\n const receipt = retainedScreenshotMetadata(entry);\n if (!receipt?.available) return true;\n images.push(receipt);\n return false;\n });\n return { images, rest };\n };\n if (Array.isArray(parsed)) {\n const { images, rest } = split(parsed);\n return images.length ? { images, output: rest } : { images, output: out };\n }\n if (parsed && typeof parsed === \"object\") {\n const record = parsed as Record<string, unknown>;\n if (Array.isArray(record.content)) {\n const { images, rest } = split(record.content);\n return images.length\n ? { images, output: { ...record, content: rest } }\n : { images, output: out };\n }\n }\n return { images: [], output: out };\n}\n\nexport type TimelineMediaPreview = {\n type: \"media_preview\";\n mediaType: string;\n inlineBytes: number | null;\n fullOutputAvailable: false;\n preview: string;\n};\n\n/** Find the explicit non-retained inline-media fact in a tool output. */\nexport function mediaPreviewFact(out: unknown): TimelineMediaPreview | null {\n if (typeof out === \"string\" && (out.startsWith(\"{\") || out.startsWith(\"[\"))) {\n const parsed = tryParseJson(out);\n if (parsed !== undefined && parsed !== out) return mediaPreviewFact(parsed);\n }\n if (Array.isArray(out)) {\n for (const entry of out) {\n const preview = mediaPreviewFact(entry);\n if (preview) return preview;\n }\n return null;\n }\n if (!out || typeof out !== \"object\") return null;\n const record = out as Record<string, unknown>;\n if (\n record.type !== \"media_preview\" ||\n typeof record.mediaType !== \"string\" ||\n record.fullOutputAvailable !== false ||\n typeof record.preview !== \"string\" ||\n (record.inlineBytes !== null && typeof record.inlineBytes !== \"number\")\n ) {\n return null;\n }\n return record as TimelineMediaPreview;\n}\n\n/** Serialize whatever a Uint8Array became in JSON (number[], {\"0\":n,…} index\n * map, or Buffer-JSON {type:\"Buffer\",data:[…]}) back into base64. */\nfunction bytesToBase64(data: unknown): string | null {\n const isByte = (n: unknown): n is number =>\n typeof n === \"number\" && Number.isInteger(n) && n >= 0 && n <= 255;\n let bytes: number[] | null = null;\n if (Array.isArray(data) && data.every(isByte)) {\n bytes = data;\n } else if (data && typeof data === \"object\") {\n const record = data as Record<string, unknown>;\n if (record.type === \"Buffer\" && Array.isArray(record.data) && record.data.every(isByte)) {\n bytes = record.data;\n } else {\n const keys = Object.keys(record);\n if (keys.length > 0 && keys.every((key) => /^\\d+$/.test(key))) {\n const values = keys.sort((a, b) => Number(a) - Number(b)).map((key) => record[key]);\n if (values.every(isByte)) {\n bytes = values;\n }\n }\n }\n }\n if (!bytes || bytes.length === 0) {\n return null;\n }\n try {\n let binary = \"\";\n const CHUNK = 0x8000;\n for (let i = 0; i < bytes.length; i += CHUNK) {\n binary += String.fromCharCode(...bytes.slice(i, i + CHUNK));\n }\n return typeof btoa === \"function\"\n ? btoa(binary)\n : Buffer.from(binary, \"binary\").toString(\"base64\");\n } catch {\n // A hostile/absurd payload must degrade to \"no image\", never crash a render.\n return null;\n }\n}\n","import { parseToolArgs } from \"./parsers\";\nimport { mcpToolLeaf } from \"./tool-display-name\";\nimport type { ToolCallItem } from \"./types\";\n\n/** The tool a `tool_invoke` call ran, or null for any other call. */\nexport function invokedTool(\n name: string,\n rawArguments: unknown,\n): { name: string; arguments: unknown } | null {\n if (mcpToolLeaf(name) !== \"tool_invoke\") return null;\n const args = parseToolArgs(rawArguments);\n if (typeof args.name !== \"string\" || !args.name.trim()) return null;\n return { name: args.name, arguments: args.arguments ?? {} };\n}\n\n/**\n * A `tool_invoke` call shown as the tool it ran, so the row reads \"Run on …\"\n * instead of \"Tool invoke\". Any other call comes back unchanged.\n */\nexport function invokedToolCall(item: ToolCallItem): ToolCallItem {\n const invoked = invokedTool(item.name, item.arguments);\n if (!invoked) return item;\n const { display: _display, ...rest } = item;\n return { ...rest, ...invoked };\n}\n"],"mappings":"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","names":[]}
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
} from "./chunk-ECNX3UOI.js";
|
|
13
13
|
import {
|
|
14
14
|
usePage
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-VYKW6TB2.js";
|
|
16
16
|
import {
|
|
17
17
|
userErrorTextWithoutReference
|
|
18
18
|
} from "./chunk-L4OF77LE.js";
|
|
@@ -220,4 +220,4 @@ function CouponRedeemForm({
|
|
|
220
220
|
export {
|
|
221
221
|
CouponRedeem
|
|
222
222
|
};
|
|
223
|
-
//# sourceMappingURL=chunk-
|
|
223
|
+
//# sourceMappingURL=chunk-UNNJUJVD.js.map
|