@opengeni/react 6.7.0 → 6.8.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 +9 -9
- package/dist/app/components/Composer.js +20 -20
- package/dist/app/components/agent/agent-capability-picker.js +6 -6
- package/dist/app/components/artifacts/artifact-browse-controls.js +2 -2
- package/dist/app/components/artifacts/artifact-library.js +13 -13
- package/dist/app/components/artifacts/artifact-viewer.js +21 -21
- package/dist/app/components/artifacts/chat-interactive-block.js +14 -14
- package/dist/app/components/artifacts/copy-artifact-link.js +2 -2
- package/dist/app/components/artifacts/file-reach-dialog.js +7 -7
- package/dist/app/components/artifacts/inline-chat-image.js +22 -22
- package/dist/app/components/artifacts/retained-file-preview.js +23 -23
- package/dist/app/components/artifacts/retained-text-preview.js +3 -3
- package/dist/app/components/artifacts/site-actions.d.ts +43 -0
- package/dist/app/components/artifacts/site-actions.js +38 -0
- package/dist/app/components/artifacts/site-audience.js +5 -5
- package/dist/app/components/artifacts/site-conversations.js +13 -13
- package/dist/app/components/artifacts/site-data.js +14 -14
- package/dist/app/components/artifacts/site-publishing-page.js +31 -31
- package/dist/app/components/artifacts/site-publishing.js +25 -25
- package/dist/app/components/artifacts/site-settings.js +30 -30
- package/dist/app/components/artifacts/site-version-menu.js +3 -3
- package/dist/app/components/billing-class-mark.js +3 -3
- package/dist/app/components/bots/bot-launch-strip.js +23 -23
- package/dist/app/components/bots/bot-template-dialog.js +30 -30
- package/dist/app/components/bots/bot-template-shortcuts.js +23 -23
- package/dist/app/components/bots/bot-templates-page.js +37 -37
- package/dist/app/components/capabilities/capability-detail-sheet.js +9 -9
- package/dist/app/components/capabilities/capability-logo-source.js +14 -15
- package/dist/app/components/capabilities/connection-ownership-selector.js +4 -4
- package/dist/app/components/capabilities/connector-tool-permissions.js +4 -4
- package/dist/app/components/capabilities/detail-dialog.js +3 -3
- package/dist/app/components/capabilities/native-connect-setup.js +16 -17
- package/dist/app/components/capabilities/native-connect-setup.js.map +1 -1
- package/dist/app/components/capabilities/own-logins-shared-heads-up.js +3 -3
- package/dist/app/components/capabilities/prepared-mcp-setup-card.js +16 -17
- package/dist/app/components/capabilities/session-capability-card.js +49 -50
- package/dist/app/components/capabilities/session-capability-card.js.map +1 -1
- package/dist/app/components/capabilities/session-chrome-card.js +24 -25
- package/dist/app/components/capabilities/session-custom-mcp-card.js +17 -18
- package/dist/app/components/capabilities/session-github-card.js +17 -18
- package/dist/app/components/capabilities/session-machine-card.js +23 -24
- package/dist/app/components/capabilities/session-personal-github-card.js +15 -16
- package/dist/app/components/capabilities/session-plugin-card.js +9 -10
- package/dist/app/components/capabilities/use-connection-accounts.js +2 -2
- package/dist/app/components/command-menu/chat-status.js +19 -19
- package/dist/app/components/command-menu/chat-switcher.js +35 -35
- package/dist/app/components/command-menu/command-menu.js +42 -42
- package/dist/app/components/command-menu/shortcut-sheet.js +11 -11
- package/dist/app/components/composer-capabilities-menu-body.js +4 -4
- package/dist/app/components/composer-mobile-plus-panel.js +10 -10
- package/dist/app/components/composer-mobile-plus.js +3 -3
- package/dist/app/components/credit-required-gate.js +1 -1
- package/dist/app/components/credit-required-prompt.js +4 -4
- package/dist/app/components/credits/checkout-credits-celebration.js +3 -3
- package/dist/app/components/credits/checkout-return.js +3 -3
- 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/computer-use.js +2 -2
- package/dist/app/components/desktop/this-computer.js +5 -5
- package/dist/app/components/feedback.js +5 -5
- package/dist/app/components/github-app-connect-launcher.js +1 -1
- package/dist/app/components/machines/connect-machine-dialog.js +14 -14
- package/dist/app/components/markdown.js +7 -7
- package/dist/app/components/models/models-ui.js +6 -6
- package/dist/app/components/my-things.js +6 -6
- package/dist/app/components/own-where-it-works.js +5 -5
- package/dist/app/components/personal-resource-attachment-surface.js +4 -4
- package/dist/app/components/pickers.js +5 -5
- package/dist/app/components/rail/channel-create-dialog.js +5 -5
- package/dist/app/components/rail/project-glyph.js +23 -23
- package/dist/app/components/rail/project-profile.js +32 -32
- package/dist/app/components/rail/rail-context.js +1 -1
- package/dist/app/components/rail/rail-sections.js +70 -61
- package/dist/app/components/rail/session-header.js +54 -53
- package/dist/app/components/rail/session-list.js +68 -59
- package/dist/app/components/rail/session-row-content.js +4 -4
- package/dist/app/components/rail/session-row-hover-details.js +18 -18
- package/dist/app/components/rail/session-shell.js +89 -80
- package/dist/app/components/rail/site-session-group-heading.js +29 -12
- package/dist/app/components/session/agent-configuration-panel.js +14 -14
- package/dist/app/components/session/artifact-session-page.js +5 -5
- package/dist/app/components/session/banners.js +9 -9
- package/dist/app/components/session/console-new-conversation.js +43 -44
- package/dist/app/components/session/descendant-requests.js +39 -40
- package/dist/app/components/session/descendant-requests.js.map +1 -1
- package/dist/app/components/session/editable-artifacts-workspace.js +27 -27
- package/dist/app/components/session/failed-session-banner.js +9 -9
- package/dist/app/components/session/failure-recovery-boundary.js +3 -3
- package/dist/app/components/session/human-input-delegation-record.js +2 -2
- package/dist/app/components/session/human-input.js +37 -38
- package/dist/app/components/session/inspector.js +47 -48
- package/dist/app/components/session/inspector.js.map +1 -1
- package/dist/app/components/session/message-actions.js +5 -5
- package/dist/app/components/session/message-resource-attachments.js +13 -13
- package/dist/app/components/session/model-recovery-notice.js +3 -3
- package/dist/app/components/session/new-session-settings-menu.js +6 -6
- package/dist/app/components/session/new-session-setup-strip.js +24 -24
- package/dist/app/components/session/sandbox-recovery-actions.js +5 -5
- package/dist/app/components/session/sandbox-switcher.js +8 -8
- package/dist/app/components/session/sandbox-workspace.js +52 -53
- package/dist/app/components/session/search-markdown-highlight.js +8 -8
- package/dist/app/components/session/search-results-view.js +9 -9
- package/dist/app/components/session/session-admin-access.js +5 -5
- package/dist/app/components/session/session-admission-notice.js +4 -4
- package/dist/app/components/session/session-avatar-picker.js +24 -24
- package/dist/app/components/session/session-avatar.js +22 -22
- package/dist/app/components/session/session-machine-access-notice.js +4 -4
- package/dist/app/components/session/session-profile-dialog.js +29 -29
- package/dist/app/components/session/session-profile-editor.js +30 -30
- package/dist/app/components/session/session-retention.js +3 -3
- package/dist/app/components/session/session-search-dialog.js +11 -11
- package/dist/app/components/session/session-tenancy-control.js +4 -4
- package/dist/app/components/session/session-usage-limit-section.js +4 -4
- package/dist/app/components/session/share-chat-dialog.js +7 -7
- package/dist/app/components/session/subagents.js +12 -12
- package/dist/app/components/session/subscription-account-indicator.js +6 -6
- package/dist/app/components/settings/row-select.js +4 -4
- package/dist/app/components/transcription-settings.js +6 -6
- package/dist/app/components/ui/destructive-confirm.js +7 -7
- package/dist/app/components/usage/usage-entry.js +3 -3
- package/dist/app/components/window-bar.d.ts +3 -1
- package/dist/app/components/window-bar.js +13 -11
- package/dist/app/components/workspace-composer-plus.js +19 -20
- package/dist/app/components/workspace-reach.js +4 -4
- package/dist/app/embed/session-app.js +173 -167
- package/dist/app/lib/actions/actions-provider.js +9 -9
- package/dist/app/lib/agent-capabilities.js +3 -3
- package/dist/app/lib/codex-usage-query.js +2 -2
- package/dist/app/lib/composer-connectors.js +15 -16
- package/dist/app/lib/composer-send-blocking.d.ts +135 -1
- package/dist/app/lib/composer-send-blocking.js +30 -3
- package/dist/app/lib/console-site.js +2 -2
- package/dist/app/lib/console-text.js +2 -2
- package/dist/app/lib/copy-link.d.ts +2 -0
- package/dist/app/lib/events.js +15 -15
- package/dist/app/lib/failed-session-copy.js +4 -4
- package/dist/app/lib/model-access-onboarding.js +3 -3
- package/dist/app/lib/model-access.js +2 -2
- package/dist/app/lib/move-chat-to-machine.js +3 -3
- package/dist/app/lib/session-branch-cache.js +12 -12
- package/dist/app/lib/session-composer-readiness.d.ts +2 -2
- package/dist/app/lib/session-create.js +4 -4
- package/dist/app/lib/session-group-pagination.js +12 -12
- package/dist/app/lib/session-hover-facts.js +17 -17
- package/dist/app/lib/session-model.js +2 -2
- package/dist/app/lib/session-rail.js +9 -9
- package/dist/app/lib/session-rename.js +3 -3
- package/dist/app/lib/sessions-group.js +11 -11
- package/dist/app/lib/site-sidebar-bridge.d.ts +24 -0
- package/dist/app/lib/site-tool-consent-dialog.js +9 -10
- package/dist/app/lib/site-tool-consent-dialog.js.map +1 -1
- package/dist/app/lib/site-tool-consent.js +1 -1
- package/dist/app/lib/turn-failure-analytics.js +5 -5
- package/dist/app/lib/use-follow-up-repositories.js +5 -5
- package/dist/app/lib/use-workspace-machines.js +5 -5
- package/dist/app/lib/use-workspace-model-catalog.js +3 -3
- package/dist/app/lib/use-workspace-rigs.js +2 -2
- package/dist/app/lib/workspace-navigation-preference.js +4 -4
- package/dist/app/lib/workspace-scope-context.js +3 -3
- package/dist/app/routes/artifacts.js +69 -69
- package/dist/app/routes/retained-artifact.js +48 -48
- package/dist/app/routes/session.js +100 -101
- package/dist/app/routes/sessions-index-hydration.js +5 -5
- package/dist/app/routes/sessions-index.js +85 -85
- package/dist/app/routes/site-view.js +177 -85
- package/dist/app/routes/site-view.js.map +1 -1
- 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 +13 -13
- package/dist/automations.js +12 -12
- package/dist/{browser-viewer-TC27OCIP.js → browser-viewer-ZHQDVHZ2.js} +5 -5
- package/dist/{chat-interactive-block-RWPQBHVS.js → chat-interactive-block-VSDD6X3M.js} +5 -5
- package/dist/{chunk-5MOJZORA.js → chunk-2EA4IRIP.js} +34 -3
- package/dist/chunk-2EA4IRIP.js.map +1 -0
- package/dist/{chunk-C43KRXGA.js → chunk-2GCHGWNE.js} +3 -3
- package/dist/{chunk-XLH7QY2R.js → chunk-2J77TWGH.js} +3 -3
- package/dist/{chunk-77WAKEAH.js → chunk-2OXSB2OL.js} +2 -2
- package/dist/{chunk-H3T7IWNA.js → chunk-2VJOSU4H.js} +2 -2
- package/dist/{chunk-N6AACDUW.js → chunk-34NV52R3.js} +4 -4
- package/dist/{chunk-L7YTNTIK.js → chunk-3CDJSKDW.js} +3 -3
- package/dist/{chunk-EWSOC6WF.js → chunk-3DRLCX5V.js} +2 -2
- package/dist/{chunk-JEUPAVYY.js → chunk-3L465FBR.js} +6 -6
- package/dist/{chunk-5NWEKLDZ.js → chunk-3NNAC43A.js} +2 -2
- package/dist/{chunk-EDI6SJ2N.js → chunk-3OK7Y6ES.js} +2 -2
- package/dist/{chunk-AWKES45Y.js → chunk-3PM3M2Q6.js} +2 -2
- package/dist/{chunk-I7XIZRFD.js → chunk-3PZ3LRPV.js} +3 -3
- package/dist/{chunk-AW2MQB37.js → chunk-44JWVYJB.js} +2 -2
- package/dist/{chunk-2M3J7ZWQ.js → chunk-467WDSOK.js} +2 -2
- package/dist/{chunk-UTIAXH52.js → chunk-477DTTMH.js} +3 -3
- package/dist/{chunk-J5F5HPPW.js → chunk-4BWMAGJJ.js} +3 -3
- package/dist/{chunk-YSJEAAOL.js → chunk-4F3AEJI6.js} +4 -4
- package/dist/{chunk-LHPNABDH.js → chunk-4JXPLTWV.js} +2 -2
- package/dist/{chunk-RQKLF42C.js → chunk-4K64EKM7.js} +4 -4
- package/dist/{chunk-NUNZS36W.js → chunk-4O2XWOLZ.js} +3 -3
- package/dist/{chunk-QB2KMIDP.js → chunk-4SJAEPM2.js} +2 -2
- package/dist/{chunk-6JHU2UBS.js → chunk-4Z5X7PLC.js} +3 -3
- package/dist/{chunk-2STUPWEL.js → chunk-54U6ZBEX.js} +3 -3
- package/dist/{chunk-XXSOHN35.js → chunk-5FLYHX5R.js} +2 -2
- package/dist/{chunk-MIYFS2XN.js → chunk-5MHMCE2G.js} +3 -3
- package/dist/{chunk-YWVI6ZMK.js → chunk-5MIBQ4P5.js} +2 -2
- package/dist/chunk-6B73WNLR.js +173 -0
- package/dist/chunk-6B73WNLR.js.map +1 -0
- package/dist/{chunk-5O2FCCHZ.js → chunk-6QK65ZWM.js} +3 -3
- package/dist/{chunk-RPVREAU7.js → chunk-736RUNIA.js} +4 -4
- package/dist/{chunk-2KALVELR.js → chunk-74CBR5YE.js} +3 -3
- package/dist/{chunk-5IE76VCY.js → chunk-752WXSDN.js} +2 -2
- package/dist/{chunk-OPJJSKUK.js → chunk-77B6UCNK.js} +6 -6
- package/dist/{chunk-SEO7TICN.js → chunk-77BHKC43.js} +1 -1
- package/dist/{chunk-ZUA3JMI6.js → chunk-77SYIH6O.js} +2 -2
- package/dist/{chunk-ILDXWY37.js → chunk-7AI4E7PV.js} +2 -2
- package/dist/{chunk-C372BFOV.js → chunk-7NLF35YL.js} +4 -4
- package/dist/{chunk-IFB3WJ36.js → chunk-7YTR3UFO.js} +4 -4
- package/dist/{chunk-BMICEQZQ.js → chunk-7Z76QP64.js} +3 -3
- package/dist/{chunk-YWIFM7D7.js → chunk-AAS7OWV6.js} +3 -3
- package/dist/{chunk-5QAY6K77.js → chunk-AB5IW227.js} +3 -3
- package/dist/{chunk-ZBIXBQNI.js → chunk-ABJZDRW2.js} +2 -2
- package/dist/{chunk-4DVJ6ONS.js → chunk-AH3DGOTK.js} +2 -2
- package/dist/{chunk-HGKTHF2U.js → chunk-AJBDAVX3.js} +8 -8
- package/dist/{chunk-5YKW2K6I.js → chunk-AJDGP2N4.js} +20 -20
- package/dist/{chunk-HD5X76TP.js → chunk-AQQT2FIC.js} +5 -5
- package/dist/chunk-AQQT2FIC.js.map +1 -0
- package/dist/{chunk-SC6RRD2D.js → chunk-ARTEEI2E.js} +11 -2
- package/dist/{chunk-SC6RRD2D.js.map → chunk-ARTEEI2E.js.map} +1 -1
- package/dist/{chunk-IXPTECSC.js → chunk-AVXDIRRW.js} +2 -2
- package/dist/{chunk-QK5EFEUT.js → chunk-BASI553K.js} +4 -4
- package/dist/{chunk-CRU35QQH.js → chunk-BFFNINCC.js} +108 -66
- package/dist/chunk-BFFNINCC.js.map +1 -0
- package/dist/{chunk-Z4FMAFNH.js → chunk-BQYRZIZ7.js} +2 -2
- package/dist/{chunk-DZXEDSQI.js → chunk-CEMSIU4Z.js} +5 -5
- package/dist/{chunk-FZC5N55X.js → chunk-CH4UQ4NO.js} +5 -5
- package/dist/{chunk-7X6SDK2C.js → chunk-CHU3RDV4.js} +3 -3
- package/dist/{chunk-Y4OBB2VN.js → chunk-CV4VVLPZ.js} +2 -2
- package/dist/{chunk-JQL7ZH6C.js → chunk-CXAN2FHF.js} +7 -7
- package/dist/{chunk-F2OPHAUN.js → chunk-CYDXCILL.js} +7 -7
- package/dist/{chunk-3PZ7JZI2.js → chunk-D3PTVN2I.js} +2 -2
- package/dist/{chunk-FPXASDG5.js → chunk-D5TIVCXG.js} +2 -2
- package/dist/{chunk-7W37NS3I.js → chunk-D74Z2N4K.js} +2 -2
- package/dist/{chunk-MNZG4OHU.js → chunk-DCEQCGVN.js} +2 -2
- package/dist/{chunk-ND2BXV3P.js → chunk-DEHLWZSI.js} +4 -4
- package/dist/{chunk-2YUOVM3G.js → chunk-DIP7YALH.js} +2 -2
- package/dist/{chunk-6PZ7OBYU.js → chunk-DLVIRJGK.js} +4 -4
- package/dist/{chunk-KLEUWIMZ.js → chunk-DQPIEQGP.js} +2 -2
- package/dist/{chunk-T2QX3FDP.js → chunk-DWJ6J3YW.js} +4 -4
- package/dist/{chunk-3CPWWGNK.js → chunk-E5KOWRDU.js} +2 -2
- package/dist/{chunk-6WGRDRMA.js → chunk-EBIVTDEG.js} +2 -2
- package/dist/{chunk-KUDGXAF7.js → chunk-EBTUPRRQ.js} +10 -10
- package/dist/{chunk-5CPEEAFD.js → chunk-EDDKPIIV.js} +2 -2
- package/dist/{chunk-TX3VECZU.js → chunk-EGKARC53.js} +2 -2
- package/dist/{chunk-JEA3QDX7.js → chunk-EKJHOWTZ.js} +4 -4
- package/dist/{chunk-UVN5TMHU.js → chunk-ESXAECZ3.js} +2 -2
- package/dist/{chunk-3SOIESJM.js → chunk-EWZ2RLNG.js} +2 -2
- package/dist/{chunk-CMKGILJK.js → chunk-FBA2NXYH.js} +4 -4
- package/dist/{chunk-O6N4ABCA.js → chunk-FER6EVIY.js} +2 -2
- package/dist/{chunk-DF5EAHDN.js → chunk-FLWQJDJ5.js} +5 -5
- package/dist/{chunk-PTAG4PDC.js → chunk-FNXCFIPW.js} +2 -2
- package/dist/chunk-FPSS23S4.js +36 -0
- package/dist/chunk-FPSS23S4.js.map +1 -0
- package/dist/{chunk-BJEJFISW.js → chunk-FSDQQQIA.js} +3 -3
- package/dist/{chunk-PTF5B7TJ.js → chunk-G5UQBTXY.js} +2 -2
- package/dist/{chunk-4E3ZJRTZ.js → chunk-G6ICCGJ3.js} +2 -2
- package/dist/{chunk-NRTE7DNV.js → chunk-GIWFLWXG.js} +4 -4
- package/dist/{chunk-MM4FNWI4.js → chunk-GMHIOYB7.js} +4 -4
- package/dist/{chunk-6DK6Z4UN.js → chunk-GOCODNQS.js} +3 -3
- package/dist/{chunk-TPQTRNER.js → chunk-GSCGKJNK.js} +2 -2
- package/dist/{chunk-7VMZGLYI.js → chunk-GTHCHCWW.js} +3 -3
- package/dist/{chunk-SQJIKMN3.js → chunk-GTRAH4FG.js} +2 -2
- package/dist/{chunk-ZYAZUPPV.js → chunk-GU7T2S5N.js} +3 -3
- package/dist/{chunk-JKHKLL5W.js → chunk-H6BX6WOW.js} +3 -3
- package/dist/{chunk-IMZCQBOT.js → chunk-H6MJFMHZ.js} +3 -3
- package/dist/{chunk-HSOXMJOT.js → chunk-HEGV4QMS.js} +2 -2
- package/dist/chunk-HROITVQJ.js +85 -0
- package/dist/chunk-HROITVQJ.js.map +1 -0
- package/dist/{chunk-OF4TIKYC.js → chunk-HTMQGS63.js} +17 -9
- package/dist/chunk-HTMQGS63.js.map +1 -0
- package/dist/{chunk-NC7PVOEK.js → chunk-HWVPLFIW.js} +2 -2
- package/dist/{chunk-IMDQUHBJ.js → chunk-HYEIA25Y.js} +2 -2
- package/dist/{chunk-ECJBYNLJ.js → chunk-ICAMYP5M.js} +2 -2
- package/dist/{chunk-DJAXC5OK.js → chunk-IFSXVU2S.js} +2 -2
- package/dist/{chunk-I4MRDSUF.js → chunk-IJR6VOLU.js} +3 -3
- package/dist/{chunk-YCVD6CI3.js → chunk-IN3VQFKS.js} +2 -2
- package/dist/{chunk-BJFH6JI5.js → chunk-IZXYFWA4.js} +13 -13
- package/dist/{chunk-MFROMEKA.js → chunk-J2BTILRR.js} +3 -3
- package/dist/{chunk-NCYMNCJO.js → chunk-J2WY42FA.js} +2 -2
- package/dist/{chunk-DGMR6JEJ.js → chunk-J4XSTXZP.js} +2 -2
- package/dist/{chunk-ZTPXACWB.js → chunk-JKL5S7UQ.js} +6 -6
- package/dist/{chunk-P77WNZDY.js → chunk-JMHEFZOB.js} +2 -2
- package/dist/{chunk-IDANQPRH.js → chunk-JV3UI7BH.js} +3 -3
- package/dist/{chunk-NW53H5RW.js → chunk-JV5ULONH.js} +166 -65
- package/dist/chunk-JV5ULONH.js.map +1 -0
- package/dist/{chunk-FVXBNBHO.js → chunk-K3D7IQQP.js} +6 -6
- package/dist/{chunk-XEQMZB3C.js → chunk-K4DQS2ML.js} +24 -6
- package/dist/chunk-K4DQS2ML.js.map +1 -0
- package/dist/{chunk-GKVJIDHF.js → chunk-KFNZZ2N6.js} +2 -2
- package/dist/{chunk-I4QEJ62Y.js → chunk-KI46GKMD.js} +7 -7
- package/dist/{chunk-SIRLACNZ.js → chunk-KO3OHHY2.js} +3 -3
- package/dist/{chunk-NULUNM7H.js → chunk-KUE5BOQE.js} +5 -5
- package/dist/{chunk-O3LKCBP5.js → chunk-LIJNVIT3.js} +3 -3
- package/dist/{chunk-JWB44UGJ.js → chunk-LIJPDVYP.js} +2 -2
- package/dist/{chunk-KYS77RPN.js → chunk-LPKJ77EK.js} +2 -2
- package/dist/{chunk-RMFKVOM7.js → chunk-LQKVNREV.js} +4 -4
- package/dist/{chunk-E7XERZWC.js → chunk-LTJFV2JI.js} +2 -2
- package/dist/{chunk-INXGSG3J.js → chunk-LVDNY5RC.js} +2 -2
- package/dist/{chunk-2INLDVK3.js → chunk-LVELUUK6.js} +2 -2
- package/dist/{chunk-TAT5USZN.js → chunk-M3FDGRB4.js} +3 -3
- package/dist/{chunk-5EWSRZ2Y.js → chunk-M3HGBO2Y.js} +1 -1
- package/dist/{chunk-J3DY5HWQ.js → chunk-M5IQVMLR.js} +4 -4
- package/dist/{chunk-53AGXXZM.js → chunk-MKDFYE2E.js} +2 -2
- package/dist/{chunk-4SAWSRAA.js → chunk-MRECRNVU.js} +5 -5
- package/dist/{chunk-2I7HDP53.js → chunk-MT2R57SF.js} +2 -2
- package/dist/{chunk-Z7Y523PS.js → chunk-MV2CLIO6.js} +6 -6
- package/dist/{chunk-JZ4NLCAP.js → chunk-MZY3VKKM.js} +2 -2
- package/dist/{chunk-YENLNISG.js → chunk-N3FM4BNA.js} +2 -2
- package/dist/{chunk-DZWARC4M.js → chunk-NFCS5WYC.js} +3 -3
- package/dist/{chunk-I5QZJODL.js → chunk-NQ2CPQJF.js} +3 -3
- package/dist/{chunk-6DVCC7QS.js → chunk-OBGOLHCP.js} +164 -43
- package/dist/chunk-OBGOLHCP.js.map +1 -0
- package/dist/{chunk-CUIWCGMA.js → chunk-OCXEY7HE.js} +2 -2
- package/dist/{chunk-VTTAJOQ7.js → chunk-OCXTTKVA.js} +2 -2
- package/dist/{chunk-KRDR5RJD.js → chunk-OGU73VUN.js} +2 -2
- package/dist/{chunk-YIRVLKAX.js → chunk-OI6VI6SU.js} +9 -9
- package/dist/{chunk-BHNSJVBC.js → chunk-OJWDNNW3.js} +5 -5
- package/dist/{chunk-X6KAJI3V.js → chunk-OK7BQMCI.js} +9 -9
- package/dist/{chunk-I5B5L6Q4.js → chunk-OOOSGPJL.js} +1 -1
- package/dist/chunk-OP2GD6QW.js +166 -0
- package/dist/chunk-OP2GD6QW.js.map +1 -0
- package/dist/{chunk-TUIN4MB7.js → chunk-ORV7EFSL.js} +4 -4
- package/dist/{chunk-JDTGRRNU.js → chunk-OSJ366KR.js} +49 -31
- package/dist/chunk-OSJ366KR.js.map +1 -0
- package/dist/{chunk-3IK6UYO6.js → chunk-OTW25A6I.js} +3 -3
- package/dist/{chunk-NPGISCU6.js → chunk-OWET7EY2.js} +16 -16
- package/dist/{chunk-CRAOSVHC.js → chunk-OXQ2SXVC.js} +2 -2
- package/dist/{chunk-3ED2U6XE.js → chunk-OYCK4JRS.js} +2 -2
- package/dist/{chunk-YQXTDZSU.js → chunk-OYOFPNLC.js} +4 -4
- package/dist/{chunk-4NQHXYMW.js → chunk-PD7NWM7V.js} +2 -2
- package/dist/{chunk-4YCA2Y73.js → chunk-PF2WU2IL.js} +3 -3
- package/dist/{chunk-Z654FWNU.js → chunk-PLYVGZIN.js} +2 -2
- package/dist/{chunk-MVW6HNPI.js → chunk-PRT4J2DL.js} +2 -2
- package/dist/{chunk-TXLIEOJX.js → chunk-PSM3CU7N.js} +111 -80
- package/dist/chunk-PSM3CU7N.js.map +1 -0
- package/dist/{chunk-OPWCMA4D.js → chunk-PUUEI4W3.js} +6 -6
- package/dist/{chunk-RLBKLAEY.js → chunk-PVB4YVDP.js} +2 -2
- package/dist/{chunk-NXCMHIKI.js → chunk-PWUSSSSL.js} +2 -2
- package/dist/{chunk-MJUCFQMS.js → chunk-PYB4BFEC.js} +3 -3
- package/dist/{chunk-2FSBSCZJ.js → chunk-PZKHST7A.js} +2 -2
- package/dist/{chunk-QZAAUQRN.js → chunk-Q5EZNBPI.js} +3 -3
- package/dist/{chunk-ZHDFQITM.js → chunk-Q5K2J5GG.js} +2 -2
- package/dist/{chunk-7T2ZE3VT.js → chunk-QPQ7R77C.js} +8 -1
- package/dist/chunk-QPQ7R77C.js.map +1 -0
- package/dist/{chunk-6BCXNDEI.js → chunk-QQIZMVAJ.js} +74 -60
- package/dist/chunk-QQIZMVAJ.js.map +1 -0
- package/dist/{chunk-OV6QJRT4.js → chunk-QRECBCJM.js} +2 -2
- package/dist/{chunk-3GZA4BUW.js → chunk-QURYQFDN.js} +2 -2
- package/dist/{chunk-VS7AHPCZ.js → chunk-R33SBMB7.js} +3 -3
- package/dist/{chunk-KCBMFSMS.js → chunk-R4JA5JFI.js} +3 -3
- package/dist/{chunk-HC4JFZVU.js → chunk-R5QAL43H.js} +2 -2
- package/dist/{chunk-QPSGCC5D.js → chunk-RGR57NYY.js} +2 -2
- package/dist/{chunk-XWFAMUZQ.js → chunk-RHXYO4H2.js} +2 -2
- package/dist/{chunk-Y4BB2KS2.js → chunk-RISUROBM.js} +7 -7
- package/dist/{chunk-U3DN4HEY.js → chunk-RMCLFSMX.js} +2 -2
- package/dist/{chunk-YK7756IF.js → chunk-RTZANSSC.js} +3 -3
- package/dist/{chunk-ZEG4VPBL.js → chunk-S27VZ5DO.js} +6 -6
- package/dist/{chunk-54YW6SZZ.js → chunk-SBXSKRFA.js} +3 -3
- package/dist/{chunk-HAX4LCR5.js → chunk-SFIXTOOJ.js} +3 -3
- package/dist/{chunk-QIOQ2NPQ.js → chunk-SGH7I7OY.js} +2 -2
- package/dist/{chunk-K2A5PXQ5.js → chunk-SJYTQLN3.js} +3 -3
- package/dist/{chunk-2Z3NQNTM.js → chunk-SK5S2PCK.js} +15 -15
- package/dist/{chunk-X3MWB2QU.js → chunk-SN2WENRP.js} +3 -3
- package/dist/{chunk-OSY5K7L7.js → chunk-SP44O3OU.js} +2 -2
- package/dist/{chunk-OZCBM3UC.js → chunk-SSR4ZX52.js} +2 -2
- package/dist/{chunk-QCSJ4CWE.js → chunk-SXGJL7UT.js} +14 -14
- package/dist/{chunk-NC55IFN3.js → chunk-T67LTMSW.js} +10 -10
- package/dist/{chunk-AXHZYXUV.js → chunk-TDTD66BK.js} +2 -2
- package/dist/{chunk-NGJJJPZZ.js → chunk-TK5FWVZR.js} +3 -3
- package/dist/{chunk-YPWU5KPE.js → chunk-TKQL7EDB.js} +56 -19
- package/dist/chunk-TKQL7EDB.js.map +1 -0
- package/dist/{chunk-2OP6WLGV.js → chunk-TNSJFZ6Q.js} +4 -4
- package/dist/{chunk-O732GAFC.js → chunk-U4LTPFD2.js} +2 -2
- package/dist/{chunk-4DVNUCRR.js → chunk-U5UGM5XD.js} +6 -6
- package/dist/{chunk-UJK53QFL.js → chunk-UBRQ3PQD.js} +2 -2
- package/dist/{chunk-SODC7T6L.js → chunk-UMX6DZME.js} +2 -2
- package/dist/{chunk-YLS6QE5G.js → chunk-UO35OEOX.js} +4 -4
- package/dist/{chunk-SHHJCL7X.js → chunk-UTRNLNCW.js} +3 -3
- package/dist/{chunk-HEFPPMBQ.js → chunk-UU5FBVRX.js} +2 -2
- package/dist/{chunk-GQXZPKK7.js → chunk-V6UOVHW3.js} +2 -2
- package/dist/{chunk-GVN5SZLX.js → chunk-VATYK3JQ.js} +3 -3
- package/dist/{chunk-7TIX2UAR.js → chunk-VCJQQYRE.js} +4 -4
- package/dist/{chunk-6WD2INST.js → chunk-WDASYY4S.js} +7 -7
- package/dist/{chunk-DXBYWSL5.js → chunk-WIFDNUKD.js} +3 -3
- package/dist/{chunk-RT7CJMER.js → chunk-WIXHUBQN.js} +2 -2
- package/dist/{chunk-57AZS3IE.js → chunk-WRMUXZ7C.js} +3 -3
- package/dist/{chunk-2CLNIEK4.js → chunk-WTSQUCHB.js} +3 -3
- package/dist/{chunk-OVKYVZMW.js → chunk-WXF2RTS4.js} +2 -2
- package/dist/{chunk-MIHN76LX.js → chunk-WYGTAQMX.js} +3 -3
- package/dist/{chunk-2RG7NIAS.js → chunk-X2QJXDE4.js} +10 -10
- package/dist/{chunk-GAVYGBFI.js → chunk-XMBOLFFS.js} +2 -2
- package/dist/{chunk-T7OXJZCX.js → chunk-XOIDUM2H.js} +1 -1
- package/dist/{chunk-ORJPS5VN.js → chunk-XUOYNJPB.js} +97 -37
- package/dist/chunk-XUOYNJPB.js.map +1 -0
- package/dist/{chunk-XHIQ5I6N.js → chunk-XVLEBB4Y.js} +2 -2
- package/dist/{chunk-Q3DPEYX4.js → chunk-XZCCEKPW.js} +7 -7
- package/dist/{chunk-T3OWFVMS.js → chunk-Y3XZEKDQ.js} +2 -2
- package/dist/{chunk-KODELWYT.js → chunk-YJSCLGAW.js} +3 -3
- package/dist/{chunk-ROKQU7WG.js → chunk-YMI27QPF.js} +2 -2
- package/dist/{chunk-U7XM7CB4.js → chunk-YNTLWCF4.js} +4 -4
- package/dist/{chunk-ZQCND77P.js → chunk-YRYF76OE.js} +2 -2
- package/dist/{chunk-2BDT3UZQ.js → chunk-ZAX4XQLN.js} +3 -3
- package/dist/{chunk-DXR5PDFP.js → chunk-ZBHGNE2J.js} +3 -3
- package/dist/{chunk-I7ITSXSJ.js → chunk-ZR5EKJT6.js} +2 -2
- package/dist/{chunk-IZXHMZQ6.js → chunk-ZW5YTIH3.js} +4 -4
- package/dist/components/artifacts/artifact-sandbox.d.ts +6 -1
- package/dist/components/artifacts/site-view.d.ts +4 -2
- package/dist/components/timeline-anchor.d.ts +8 -3
- package/dist/components/timeline-reading-progress.d.ts +1 -1
- package/dist/components/timeline-settlement.d.ts +1 -1
- package/dist/composer-messages.js +2 -2
- package/dist/composer.js +10 -10
- package/dist/{computer-viewer-TDDO25AV.js → computer-viewer-5LKRCEVQ.js} +5 -5
- package/dist/connect.js +13 -14
- package/dist/desktop-dictation.js +7 -7
- package/dist/desktop.js +2 -2
- package/dist/editor.js +2 -2
- package/dist/{embedded-new-voice-2G3VLPVQ.js → embedded-new-voice-GHJRY3YL.js} +5 -5
- package/dist/{embedded-voice-T5IWOWGD.js → embedded-voice-ASQXBSTX.js} +5 -5
- package/dist/{fleet-decision-row-WM64KXP3.js → fleet-decision-row-U7LDVBEM.js} +2 -2
- package/dist/in-chat-connect-model.js +5 -5
- package/dist/index.js +62 -63
- package/dist/interaction.js +6 -6
- package/dist/{latest-question-OX56OVQ5.js → latest-question-RNVF262Q.js} +5 -5
- package/dist/lib/format.d.ts +10 -0
- package/dist/machines.js +4 -4
- package/dist/meetings-recorder.js +1 -1
- package/dist/meetings.js +24 -24
- package/dist/messages/en.d.ts +7 -0
- package/dist/messages.js +1 -1
- package/dist/{model-policy-picker-menu-SMC6J6QN.js → model-policy-picker-menu-E6XKMFTA.js} +4 -4
- package/dist/{payment-page-card-G4U63KUV.js → payment-page-card-DJDKV2LW.js} +6 -5
- package/dist/{payment-page-card-G4U63KUV.js.map → payment-page-card-DJDKV2LW.js.map} +1 -1
- package/dist/{platform-activity-row-BUZGZAKZ.js → platform-activity-row-MSDCSMET.js} +17 -7
- package/dist/platform-activity-row-MSDCSMET.js.map +1 -0
- package/dist/{queue-surface-implementation-4KUZ4PJV.js → queue-surface-implementation-GUAIG6TK.js} +5 -5
- package/dist/realtime.js +4 -4
- package/dist/{recorder-host-WF2RRR56.js → recorder-host-2MYDJPQW.js} +4 -4
- package/dist/recordings.js +3 -3
- package/dist/{sandbox-files-ESDMOFSD.js → sandbox-files-W5W2LW4K.js} +6 -6
- package/dist/session-app.js +173 -167
- package/dist/{session-connect-cards-Q53KMMYY.js → session-connect-cards-HPH7JOZP.js} +9 -10
- package/dist/session-list-model.js +2 -2
- package/dist/{session-realtime-CF3I35WJ.js → session-realtime-SDTKFFIR.js} +3 -3
- package/dist/session-realtime-SDTKFFIR.js.map +1 -0
- package/dist/session-realtime.js +2 -2
- package/dist/session-ui.js +37 -38
- package/dist/session.js +9 -9
- package/dist/sites.js +2 -2
- package/dist/terminal.js +2 -2
- package/dist/this-computer.js +3 -3
- package/dist/timeline/shared.d.ts +2 -0
- package/dist/{timeline-annotation-markers-CJK4RYZ4.js → timeline-annotation-markers-FNILLWNU.js} +2 -2
- package/dist/{timeline-annotation-selection-67GF5H26.js → timeline-annotation-selection-MBCIDO2Q.js} +2 -2
- package/dist/{timeline-annotations-dialog-ONJPQDJQ.js → timeline-annotations-dialog-JPNKLOTE.js} +3 -3
- package/dist/timeline-model.js +6 -6
- package/dist/ui/access-list.js +6 -6
- package/dist/ui/cadence-picker.js +4 -4
- package/dist/ui/choice-cards.js +3 -3
- package/dist/ui/confirm-dialog.js +4 -4
- package/dist/ui/copy-field.js +3 -3
- package/dist/ui/detail-page.js +5 -5
- package/dist/ui/detail-sheet.js +4 -4
- package/dist/ui/dialog.js +2 -2
- package/dist/ui/disclosure.js +5 -5
- package/dist/ui/email-chips-input.js +3 -3
- package/dist/ui/field.js +2 -2
- package/dist/ui/flush-form-page.js +4 -4
- package/dist/ui/form-dialog.js +3 -3
- package/dist/ui/list-row.js +3 -3
- package/dist/ui/page-header.js +2 -2
- package/dist/ui/relative-time.js +2 -2
- package/dist/ui/revision-history.js +4 -4
- package/dist/ui/role-select.js +6 -6
- package/dist/ui/select-menu.js +3 -3
- package/dist/ui/sheet.js +2 -2
- package/dist/ui/usage-meter.js +3 -3
- package/dist/ui/window-bar-title.d.ts +7 -3
- package/dist/ui/window-bar-title.js +1 -1
- package/dist/usage.js +2 -2
- package/dist/workbench.js +4 -4
- package/package.json +4 -4
- package/src/app/components/artifacts/site-actions.tsx +105 -0
- package/src/app/components/rail/session-header-copy.test.tsx +172 -0
- package/src/app/components/rail/session-header.tsx +68 -12
- package/src/app/components/rail/session-list.tsx +20 -0
- package/src/app/components/rail/site-session-group-heading.test.tsx +210 -0
- package/src/app/components/rail/site-session-group-heading.tsx +119 -60
- package/src/app/components/session/failed-session-actions.test.tsx +4 -0
- package/src/app/components/window-bar.tsx +63 -15
- package/src/app/lib/composer-send-blocking.tsx +312 -1
- package/src/app/lib/copy-link.ts +10 -0
- package/src/app/lib/session-composer-readiness.ts +4 -3
- package/src/app/lib/site-sidebar-bridge.test.tsx +67 -0
- package/src/app/lib/site-sidebar-bridge.ts +57 -0
- package/src/app/routes/session.tsx +45 -12
- package/src/app/routes/sessions-index.tsx +164 -105
- package/src/app/routes/site-view.test.tsx +74 -6
- package/src/app/routes/site-view.tsx +135 -14
- package/src/components/approval-surface.tsx +78 -3
- package/src/components/artifacts/artifact-sandbox.tsx +27 -2
- package/src/components/artifacts/site-view.tsx +13 -1
- package/src/components/message-timeline.tsx +25 -52
- package/src/components/session-capability-frame.tsx +2 -30
- package/src/components/timeline-anchor.tsx +19 -14
- package/src/components/timeline-reading-progress.ts +1 -2
- package/src/components/timeline-settlement.ts +3 -3
- package/src/lib/format.ts +46 -1
- package/src/messages/en.ts +11 -0
- package/src/timeline/platform-activity-row.tsx +20 -8
- package/src/timeline/shared.tsx +203 -32
- package/src/ui/window-bar-title.test.tsx +37 -0
- package/src/ui/window-bar-title.tsx +13 -6
- package/styles/compiled.css +5 -0
- package/dist/chunk-5MOJZORA.js.map +0 -1
- package/dist/chunk-6BCXNDEI.js.map +0 -1
- package/dist/chunk-6DVCC7QS.js.map +0 -1
- package/dist/chunk-7T2ZE3VT.js.map +0 -1
- package/dist/chunk-AFRGP2VP.js +0 -17
- package/dist/chunk-AFRGP2VP.js.map +0 -1
- package/dist/chunk-CRU35QQH.js.map +0 -1
- package/dist/chunk-FO4LYKJL.js +0 -197
- package/dist/chunk-FO4LYKJL.js.map +0 -1
- package/dist/chunk-HD5X76TP.js.map +0 -1
- package/dist/chunk-JDTGRRNU.js.map +0 -1
- package/dist/chunk-NW53H5RW.js.map +0 -1
- package/dist/chunk-OF4TIKYC.js.map +0 -1
- package/dist/chunk-ORJPS5VN.js.map +0 -1
- package/dist/chunk-TXLIEOJX.js.map +0 -1
- package/dist/chunk-VBUVBHFJ.js +0 -16
- package/dist/chunk-VBUVBHFJ.js.map +0 -1
- package/dist/chunk-XEQMZB3C.js.map +0 -1
- package/dist/chunk-YPWU5KPE.js.map +0 -1
- package/dist/components/timeline-answer-follow.d.ts +0 -8
- package/dist/platform-activity-row-BUZGZAKZ.js.map +0 -1
- package/src/components/timeline-answer-follow.ts +0 -15
- /package/dist/{browser-viewer-TC27OCIP.js.map → app/components/artifacts/site-actions.js.map} +0 -0
- /package/dist/{chat-interactive-block-RWPQBHVS.js.map → browser-viewer-ZHQDVHZ2.js.map} +0 -0
- /package/dist/{computer-viewer-TDDO25AV.js.map → chat-interactive-block-VSDD6X3M.js.map} +0 -0
- /package/dist/{chunk-C43KRXGA.js.map → chunk-2GCHGWNE.js.map} +0 -0
- /package/dist/{chunk-XLH7QY2R.js.map → chunk-2J77TWGH.js.map} +0 -0
- /package/dist/{chunk-77WAKEAH.js.map → chunk-2OXSB2OL.js.map} +0 -0
- /package/dist/{chunk-H3T7IWNA.js.map → chunk-2VJOSU4H.js.map} +0 -0
- /package/dist/{chunk-N6AACDUW.js.map → chunk-34NV52R3.js.map} +0 -0
- /package/dist/{chunk-L7YTNTIK.js.map → chunk-3CDJSKDW.js.map} +0 -0
- /package/dist/{chunk-EWSOC6WF.js.map → chunk-3DRLCX5V.js.map} +0 -0
- /package/dist/{chunk-JEUPAVYY.js.map → chunk-3L465FBR.js.map} +0 -0
- /package/dist/{chunk-5NWEKLDZ.js.map → chunk-3NNAC43A.js.map} +0 -0
- /package/dist/{chunk-EDI6SJ2N.js.map → chunk-3OK7Y6ES.js.map} +0 -0
- /package/dist/{chunk-AWKES45Y.js.map → chunk-3PM3M2Q6.js.map} +0 -0
- /package/dist/{chunk-I7XIZRFD.js.map → chunk-3PZ3LRPV.js.map} +0 -0
- /package/dist/{chunk-AW2MQB37.js.map → chunk-44JWVYJB.js.map} +0 -0
- /package/dist/{chunk-2M3J7ZWQ.js.map → chunk-467WDSOK.js.map} +0 -0
- /package/dist/{chunk-UTIAXH52.js.map → chunk-477DTTMH.js.map} +0 -0
- /package/dist/{chunk-J5F5HPPW.js.map → chunk-4BWMAGJJ.js.map} +0 -0
- /package/dist/{chunk-YSJEAAOL.js.map → chunk-4F3AEJI6.js.map} +0 -0
- /package/dist/{chunk-LHPNABDH.js.map → chunk-4JXPLTWV.js.map} +0 -0
- /package/dist/{chunk-RQKLF42C.js.map → chunk-4K64EKM7.js.map} +0 -0
- /package/dist/{chunk-NUNZS36W.js.map → chunk-4O2XWOLZ.js.map} +0 -0
- /package/dist/{chunk-QB2KMIDP.js.map → chunk-4SJAEPM2.js.map} +0 -0
- /package/dist/{chunk-6JHU2UBS.js.map → chunk-4Z5X7PLC.js.map} +0 -0
- /package/dist/{chunk-2STUPWEL.js.map → chunk-54U6ZBEX.js.map} +0 -0
- /package/dist/{chunk-XXSOHN35.js.map → chunk-5FLYHX5R.js.map} +0 -0
- /package/dist/{chunk-MIYFS2XN.js.map → chunk-5MHMCE2G.js.map} +0 -0
- /package/dist/{chunk-YWVI6ZMK.js.map → chunk-5MIBQ4P5.js.map} +0 -0
- /package/dist/{chunk-5O2FCCHZ.js.map → chunk-6QK65ZWM.js.map} +0 -0
- /package/dist/{chunk-RPVREAU7.js.map → chunk-736RUNIA.js.map} +0 -0
- /package/dist/{chunk-2KALVELR.js.map → chunk-74CBR5YE.js.map} +0 -0
- /package/dist/{chunk-5IE76VCY.js.map → chunk-752WXSDN.js.map} +0 -0
- /package/dist/{chunk-OPJJSKUK.js.map → chunk-77B6UCNK.js.map} +0 -0
- /package/dist/{chunk-SEO7TICN.js.map → chunk-77BHKC43.js.map} +0 -0
- /package/dist/{chunk-ZUA3JMI6.js.map → chunk-77SYIH6O.js.map} +0 -0
- /package/dist/{chunk-ILDXWY37.js.map → chunk-7AI4E7PV.js.map} +0 -0
- /package/dist/{chunk-C372BFOV.js.map → chunk-7NLF35YL.js.map} +0 -0
- /package/dist/{chunk-IFB3WJ36.js.map → chunk-7YTR3UFO.js.map} +0 -0
- /package/dist/{chunk-BMICEQZQ.js.map → chunk-7Z76QP64.js.map} +0 -0
- /package/dist/{chunk-YWIFM7D7.js.map → chunk-AAS7OWV6.js.map} +0 -0
- /package/dist/{chunk-5QAY6K77.js.map → chunk-AB5IW227.js.map} +0 -0
- /package/dist/{chunk-ZBIXBQNI.js.map → chunk-ABJZDRW2.js.map} +0 -0
- /package/dist/{chunk-4DVJ6ONS.js.map → chunk-AH3DGOTK.js.map} +0 -0
- /package/dist/{chunk-HGKTHF2U.js.map → chunk-AJBDAVX3.js.map} +0 -0
- /package/dist/{chunk-5YKW2K6I.js.map → chunk-AJDGP2N4.js.map} +0 -0
- /package/dist/{chunk-IXPTECSC.js.map → chunk-AVXDIRRW.js.map} +0 -0
- /package/dist/{chunk-QK5EFEUT.js.map → chunk-BASI553K.js.map} +0 -0
- /package/dist/{chunk-Z4FMAFNH.js.map → chunk-BQYRZIZ7.js.map} +0 -0
- /package/dist/{chunk-DZXEDSQI.js.map → chunk-CEMSIU4Z.js.map} +0 -0
- /package/dist/{chunk-FZC5N55X.js.map → chunk-CH4UQ4NO.js.map} +0 -0
- /package/dist/{chunk-7X6SDK2C.js.map → chunk-CHU3RDV4.js.map} +0 -0
- /package/dist/{chunk-Y4OBB2VN.js.map → chunk-CV4VVLPZ.js.map} +0 -0
- /package/dist/{chunk-JQL7ZH6C.js.map → chunk-CXAN2FHF.js.map} +0 -0
- /package/dist/{chunk-F2OPHAUN.js.map → chunk-CYDXCILL.js.map} +0 -0
- /package/dist/{chunk-3PZ7JZI2.js.map → chunk-D3PTVN2I.js.map} +0 -0
- /package/dist/{chunk-FPXASDG5.js.map → chunk-D5TIVCXG.js.map} +0 -0
- /package/dist/{chunk-7W37NS3I.js.map → chunk-D74Z2N4K.js.map} +0 -0
- /package/dist/{chunk-MNZG4OHU.js.map → chunk-DCEQCGVN.js.map} +0 -0
- /package/dist/{chunk-ND2BXV3P.js.map → chunk-DEHLWZSI.js.map} +0 -0
- /package/dist/{chunk-2YUOVM3G.js.map → chunk-DIP7YALH.js.map} +0 -0
- /package/dist/{chunk-6PZ7OBYU.js.map → chunk-DLVIRJGK.js.map} +0 -0
- /package/dist/{chunk-KLEUWIMZ.js.map → chunk-DQPIEQGP.js.map} +0 -0
- /package/dist/{chunk-T2QX3FDP.js.map → chunk-DWJ6J3YW.js.map} +0 -0
- /package/dist/{chunk-3CPWWGNK.js.map → chunk-E5KOWRDU.js.map} +0 -0
- /package/dist/{chunk-6WGRDRMA.js.map → chunk-EBIVTDEG.js.map} +0 -0
- /package/dist/{chunk-KUDGXAF7.js.map → chunk-EBTUPRRQ.js.map} +0 -0
- /package/dist/{chunk-5CPEEAFD.js.map → chunk-EDDKPIIV.js.map} +0 -0
- /package/dist/{chunk-TX3VECZU.js.map → chunk-EGKARC53.js.map} +0 -0
- /package/dist/{chunk-JEA3QDX7.js.map → chunk-EKJHOWTZ.js.map} +0 -0
- /package/dist/{chunk-UVN5TMHU.js.map → chunk-ESXAECZ3.js.map} +0 -0
- /package/dist/{chunk-3SOIESJM.js.map → chunk-EWZ2RLNG.js.map} +0 -0
- /package/dist/{chunk-CMKGILJK.js.map → chunk-FBA2NXYH.js.map} +0 -0
- /package/dist/{chunk-O6N4ABCA.js.map → chunk-FER6EVIY.js.map} +0 -0
- /package/dist/{chunk-DF5EAHDN.js.map → chunk-FLWQJDJ5.js.map} +0 -0
- /package/dist/{chunk-PTAG4PDC.js.map → chunk-FNXCFIPW.js.map} +0 -0
- /package/dist/{chunk-BJEJFISW.js.map → chunk-FSDQQQIA.js.map} +0 -0
- /package/dist/{chunk-PTF5B7TJ.js.map → chunk-G5UQBTXY.js.map} +0 -0
- /package/dist/{chunk-4E3ZJRTZ.js.map → chunk-G6ICCGJ3.js.map} +0 -0
- /package/dist/{chunk-NRTE7DNV.js.map → chunk-GIWFLWXG.js.map} +0 -0
- /package/dist/{chunk-MM4FNWI4.js.map → chunk-GMHIOYB7.js.map} +0 -0
- /package/dist/{chunk-6DK6Z4UN.js.map → chunk-GOCODNQS.js.map} +0 -0
- /package/dist/{chunk-TPQTRNER.js.map → chunk-GSCGKJNK.js.map} +0 -0
- /package/dist/{chunk-7VMZGLYI.js.map → chunk-GTHCHCWW.js.map} +0 -0
- /package/dist/{chunk-SQJIKMN3.js.map → chunk-GTRAH4FG.js.map} +0 -0
- /package/dist/{chunk-ZYAZUPPV.js.map → chunk-GU7T2S5N.js.map} +0 -0
- /package/dist/{chunk-JKHKLL5W.js.map → chunk-H6BX6WOW.js.map} +0 -0
- /package/dist/{chunk-IMZCQBOT.js.map → chunk-H6MJFMHZ.js.map} +0 -0
- /package/dist/{chunk-HSOXMJOT.js.map → chunk-HEGV4QMS.js.map} +0 -0
- /package/dist/{chunk-NC7PVOEK.js.map → chunk-HWVPLFIW.js.map} +0 -0
- /package/dist/{chunk-IMDQUHBJ.js.map → chunk-HYEIA25Y.js.map} +0 -0
- /package/dist/{chunk-ECJBYNLJ.js.map → chunk-ICAMYP5M.js.map} +0 -0
- /package/dist/{chunk-DJAXC5OK.js.map → chunk-IFSXVU2S.js.map} +0 -0
- /package/dist/{chunk-I4MRDSUF.js.map → chunk-IJR6VOLU.js.map} +0 -0
- /package/dist/{chunk-YCVD6CI3.js.map → chunk-IN3VQFKS.js.map} +0 -0
- /package/dist/{chunk-BJFH6JI5.js.map → chunk-IZXYFWA4.js.map} +0 -0
- /package/dist/{chunk-MFROMEKA.js.map → chunk-J2BTILRR.js.map} +0 -0
- /package/dist/{chunk-NCYMNCJO.js.map → chunk-J2WY42FA.js.map} +0 -0
- /package/dist/{chunk-DGMR6JEJ.js.map → chunk-J4XSTXZP.js.map} +0 -0
- /package/dist/{chunk-ZTPXACWB.js.map → chunk-JKL5S7UQ.js.map} +0 -0
- /package/dist/{chunk-P77WNZDY.js.map → chunk-JMHEFZOB.js.map} +0 -0
- /package/dist/{chunk-IDANQPRH.js.map → chunk-JV3UI7BH.js.map} +0 -0
- /package/dist/{chunk-FVXBNBHO.js.map → chunk-K3D7IQQP.js.map} +0 -0
- /package/dist/{chunk-GKVJIDHF.js.map → chunk-KFNZZ2N6.js.map} +0 -0
- /package/dist/{chunk-I4QEJ62Y.js.map → chunk-KI46GKMD.js.map} +0 -0
- /package/dist/{chunk-SIRLACNZ.js.map → chunk-KO3OHHY2.js.map} +0 -0
- /package/dist/{chunk-NULUNM7H.js.map → chunk-KUE5BOQE.js.map} +0 -0
- /package/dist/{chunk-O3LKCBP5.js.map → chunk-LIJNVIT3.js.map} +0 -0
- /package/dist/{chunk-JWB44UGJ.js.map → chunk-LIJPDVYP.js.map} +0 -0
- /package/dist/{chunk-KYS77RPN.js.map → chunk-LPKJ77EK.js.map} +0 -0
- /package/dist/{chunk-RMFKVOM7.js.map → chunk-LQKVNREV.js.map} +0 -0
- /package/dist/{chunk-E7XERZWC.js.map → chunk-LTJFV2JI.js.map} +0 -0
- /package/dist/{chunk-INXGSG3J.js.map → chunk-LVDNY5RC.js.map} +0 -0
- /package/dist/{chunk-2INLDVK3.js.map → chunk-LVELUUK6.js.map} +0 -0
- /package/dist/{chunk-TAT5USZN.js.map → chunk-M3FDGRB4.js.map} +0 -0
- /package/dist/{chunk-5EWSRZ2Y.js.map → chunk-M3HGBO2Y.js.map} +0 -0
- /package/dist/{chunk-J3DY5HWQ.js.map → chunk-M5IQVMLR.js.map} +0 -0
- /package/dist/{chunk-53AGXXZM.js.map → chunk-MKDFYE2E.js.map} +0 -0
- /package/dist/{chunk-4SAWSRAA.js.map → chunk-MRECRNVU.js.map} +0 -0
- /package/dist/{chunk-2I7HDP53.js.map → chunk-MT2R57SF.js.map} +0 -0
- /package/dist/{chunk-Z7Y523PS.js.map → chunk-MV2CLIO6.js.map} +0 -0
- /package/dist/{chunk-JZ4NLCAP.js.map → chunk-MZY3VKKM.js.map} +0 -0
- /package/dist/{chunk-YENLNISG.js.map → chunk-N3FM4BNA.js.map} +0 -0
- /package/dist/{chunk-DZWARC4M.js.map → chunk-NFCS5WYC.js.map} +0 -0
- /package/dist/{chunk-I5QZJODL.js.map → chunk-NQ2CPQJF.js.map} +0 -0
- /package/dist/{chunk-CUIWCGMA.js.map → chunk-OCXEY7HE.js.map} +0 -0
- /package/dist/{chunk-VTTAJOQ7.js.map → chunk-OCXTTKVA.js.map} +0 -0
- /package/dist/{chunk-KRDR5RJD.js.map → chunk-OGU73VUN.js.map} +0 -0
- /package/dist/{chunk-YIRVLKAX.js.map → chunk-OI6VI6SU.js.map} +0 -0
- /package/dist/{chunk-BHNSJVBC.js.map → chunk-OJWDNNW3.js.map} +0 -0
- /package/dist/{chunk-X6KAJI3V.js.map → chunk-OK7BQMCI.js.map} +0 -0
- /package/dist/{chunk-I5B5L6Q4.js.map → chunk-OOOSGPJL.js.map} +0 -0
- /package/dist/{chunk-TUIN4MB7.js.map → chunk-ORV7EFSL.js.map} +0 -0
- /package/dist/{chunk-3IK6UYO6.js.map → chunk-OTW25A6I.js.map} +0 -0
- /package/dist/{chunk-NPGISCU6.js.map → chunk-OWET7EY2.js.map} +0 -0
- /package/dist/{chunk-CRAOSVHC.js.map → chunk-OXQ2SXVC.js.map} +0 -0
- /package/dist/{chunk-3ED2U6XE.js.map → chunk-OYCK4JRS.js.map} +0 -0
- /package/dist/{chunk-YQXTDZSU.js.map → chunk-OYOFPNLC.js.map} +0 -0
- /package/dist/{chunk-4NQHXYMW.js.map → chunk-PD7NWM7V.js.map} +0 -0
- /package/dist/{chunk-4YCA2Y73.js.map → chunk-PF2WU2IL.js.map} +0 -0
- /package/dist/{chunk-Z654FWNU.js.map → chunk-PLYVGZIN.js.map} +0 -0
- /package/dist/{chunk-MVW6HNPI.js.map → chunk-PRT4J2DL.js.map} +0 -0
- /package/dist/{chunk-OPWCMA4D.js.map → chunk-PUUEI4W3.js.map} +0 -0
- /package/dist/{chunk-RLBKLAEY.js.map → chunk-PVB4YVDP.js.map} +0 -0
- /package/dist/{chunk-NXCMHIKI.js.map → chunk-PWUSSSSL.js.map} +0 -0
- /package/dist/{chunk-MJUCFQMS.js.map → chunk-PYB4BFEC.js.map} +0 -0
- /package/dist/{chunk-2FSBSCZJ.js.map → chunk-PZKHST7A.js.map} +0 -0
- /package/dist/{chunk-QZAAUQRN.js.map → chunk-Q5EZNBPI.js.map} +0 -0
- /package/dist/{chunk-ZHDFQITM.js.map → chunk-Q5K2J5GG.js.map} +0 -0
- /package/dist/{chunk-OV6QJRT4.js.map → chunk-QRECBCJM.js.map} +0 -0
- /package/dist/{chunk-3GZA4BUW.js.map → chunk-QURYQFDN.js.map} +0 -0
- /package/dist/{chunk-VS7AHPCZ.js.map → chunk-R33SBMB7.js.map} +0 -0
- /package/dist/{chunk-KCBMFSMS.js.map → chunk-R4JA5JFI.js.map} +0 -0
- /package/dist/{chunk-HC4JFZVU.js.map → chunk-R5QAL43H.js.map} +0 -0
- /package/dist/{chunk-QPSGCC5D.js.map → chunk-RGR57NYY.js.map} +0 -0
- /package/dist/{chunk-XWFAMUZQ.js.map → chunk-RHXYO4H2.js.map} +0 -0
- /package/dist/{chunk-Y4BB2KS2.js.map → chunk-RISUROBM.js.map} +0 -0
- /package/dist/{chunk-U3DN4HEY.js.map → chunk-RMCLFSMX.js.map} +0 -0
- /package/dist/{chunk-YK7756IF.js.map → chunk-RTZANSSC.js.map} +0 -0
- /package/dist/{chunk-ZEG4VPBL.js.map → chunk-S27VZ5DO.js.map} +0 -0
- /package/dist/{chunk-54YW6SZZ.js.map → chunk-SBXSKRFA.js.map} +0 -0
- /package/dist/{chunk-HAX4LCR5.js.map → chunk-SFIXTOOJ.js.map} +0 -0
- /package/dist/{chunk-QIOQ2NPQ.js.map → chunk-SGH7I7OY.js.map} +0 -0
- /package/dist/{chunk-K2A5PXQ5.js.map → chunk-SJYTQLN3.js.map} +0 -0
- /package/dist/{chunk-2Z3NQNTM.js.map → chunk-SK5S2PCK.js.map} +0 -0
- /package/dist/{chunk-X3MWB2QU.js.map → chunk-SN2WENRP.js.map} +0 -0
- /package/dist/{chunk-OSY5K7L7.js.map → chunk-SP44O3OU.js.map} +0 -0
- /package/dist/{chunk-OZCBM3UC.js.map → chunk-SSR4ZX52.js.map} +0 -0
- /package/dist/{chunk-QCSJ4CWE.js.map → chunk-SXGJL7UT.js.map} +0 -0
- /package/dist/{chunk-NC55IFN3.js.map → chunk-T67LTMSW.js.map} +0 -0
- /package/dist/{chunk-AXHZYXUV.js.map → chunk-TDTD66BK.js.map} +0 -0
- /package/dist/{chunk-NGJJJPZZ.js.map → chunk-TK5FWVZR.js.map} +0 -0
- /package/dist/{chunk-2OP6WLGV.js.map → chunk-TNSJFZ6Q.js.map} +0 -0
- /package/dist/{chunk-O732GAFC.js.map → chunk-U4LTPFD2.js.map} +0 -0
- /package/dist/{chunk-4DVNUCRR.js.map → chunk-U5UGM5XD.js.map} +0 -0
- /package/dist/{chunk-UJK53QFL.js.map → chunk-UBRQ3PQD.js.map} +0 -0
- /package/dist/{chunk-SODC7T6L.js.map → chunk-UMX6DZME.js.map} +0 -0
- /package/dist/{chunk-YLS6QE5G.js.map → chunk-UO35OEOX.js.map} +0 -0
- /package/dist/{chunk-SHHJCL7X.js.map → chunk-UTRNLNCW.js.map} +0 -0
- /package/dist/{chunk-HEFPPMBQ.js.map → chunk-UU5FBVRX.js.map} +0 -0
- /package/dist/{chunk-GQXZPKK7.js.map → chunk-V6UOVHW3.js.map} +0 -0
- /package/dist/{chunk-GVN5SZLX.js.map → chunk-VATYK3JQ.js.map} +0 -0
- /package/dist/{chunk-7TIX2UAR.js.map → chunk-VCJQQYRE.js.map} +0 -0
- /package/dist/{chunk-6WD2INST.js.map → chunk-WDASYY4S.js.map} +0 -0
- /package/dist/{chunk-DXBYWSL5.js.map → chunk-WIFDNUKD.js.map} +0 -0
- /package/dist/{chunk-RT7CJMER.js.map → chunk-WIXHUBQN.js.map} +0 -0
- /package/dist/{chunk-57AZS3IE.js.map → chunk-WRMUXZ7C.js.map} +0 -0
- /package/dist/{chunk-2CLNIEK4.js.map → chunk-WTSQUCHB.js.map} +0 -0
- /package/dist/{chunk-OVKYVZMW.js.map → chunk-WXF2RTS4.js.map} +0 -0
- /package/dist/{chunk-MIHN76LX.js.map → chunk-WYGTAQMX.js.map} +0 -0
- /package/dist/{chunk-2RG7NIAS.js.map → chunk-X2QJXDE4.js.map} +0 -0
- /package/dist/{chunk-GAVYGBFI.js.map → chunk-XMBOLFFS.js.map} +0 -0
- /package/dist/{chunk-T7OXJZCX.js.map → chunk-XOIDUM2H.js.map} +0 -0
- /package/dist/{chunk-XHIQ5I6N.js.map → chunk-XVLEBB4Y.js.map} +0 -0
- /package/dist/{chunk-Q3DPEYX4.js.map → chunk-XZCCEKPW.js.map} +0 -0
- /package/dist/{chunk-T3OWFVMS.js.map → chunk-Y3XZEKDQ.js.map} +0 -0
- /package/dist/{chunk-KODELWYT.js.map → chunk-YJSCLGAW.js.map} +0 -0
- /package/dist/{chunk-ROKQU7WG.js.map → chunk-YMI27QPF.js.map} +0 -0
- /package/dist/{chunk-U7XM7CB4.js.map → chunk-YNTLWCF4.js.map} +0 -0
- /package/dist/{chunk-ZQCND77P.js.map → chunk-YRYF76OE.js.map} +0 -0
- /package/dist/{chunk-2BDT3UZQ.js.map → chunk-ZAX4XQLN.js.map} +0 -0
- /package/dist/{chunk-DXR5PDFP.js.map → chunk-ZBHGNE2J.js.map} +0 -0
- /package/dist/{chunk-I7ITSXSJ.js.map → chunk-ZR5EKJT6.js.map} +0 -0
- /package/dist/{chunk-IZXHMZQ6.js.map → chunk-ZW5YTIH3.js.map} +0 -0
- /package/dist/{embedded-new-voice-2G3VLPVQ.js.map → computer-viewer-5LKRCEVQ.js.map} +0 -0
- /package/dist/{embedded-voice-T5IWOWGD.js.map → embedded-new-voice-GHJRY3YL.js.map} +0 -0
- /package/dist/{model-policy-picker-menu-SMC6J6QN.js.map → embedded-voice-ASQXBSTX.js.map} +0 -0
- /package/dist/{fleet-decision-row-WM64KXP3.js.map → fleet-decision-row-U7LDVBEM.js.map} +0 -0
- /package/dist/{latest-question-OX56OVQ5.js.map → latest-question-RNVF262Q.js.map} +0 -0
- /package/dist/{sandbox-files-ESDMOFSD.js.map → model-policy-picker-menu-E6XKMFTA.js.map} +0 -0
- /package/dist/{queue-surface-implementation-4KUZ4PJV.js.map → queue-surface-implementation-GUAIG6TK.js.map} +0 -0
- /package/dist/{recorder-host-WF2RRR56.js.map → recorder-host-2MYDJPQW.js.map} +0 -0
- /package/dist/{session-connect-cards-Q53KMMYY.js.map → sandbox-files-W5W2LW4K.js.map} +0 -0
- /package/dist/{session-realtime-CF3I35WJ.js.map → session-connect-cards-HPH7JOZP.js.map} +0 -0
- /package/dist/{timeline-annotation-markers-CJK4RYZ4.js.map → timeline-annotation-markers-FNILLWNU.js.map} +0 -0
- /package/dist/{timeline-annotation-selection-67GF5H26.js.map → timeline-annotation-selection-MBCIDO2Q.js.map} +0 -0
- /package/dist/{timeline-annotations-dialog-ONJPQDJQ.js.map → timeline-annotations-dialog-JPNKLOTE.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/secrets-ui.tsx","../src/components/secret-ref-chip.tsx","../src/timeline/disclosure-context.tsx","../src/timeline/shared.tsx","../src/components/timeline-search.tsx"],"sourcesContent":["import type { GeneratePasswordSpec } from \"@opengeni/sdk\";\nimport { createContext, useContext, type ReactNode } from \"react\";\n\n/**\n * Secret-reference token shapes (structural mirror of `@opengeni/contracts`\n * `SecretTextToken`). @opengeni/react may not depend on the contracts\n * runtime, so hosts inject the one tokenizer and generator through\n * `SecretsUiProvider`.\n */\nexport type SecretReferenceTargetLike =\n | { form: \"id\"; itemId: string; field: string | null }\n | { form: \"path\"; segments: readonly string[] };\n\nexport type SecretReferenceLike = {\n kind: \"secret\" | \"secretfile\";\n raw: string;\n start: number;\n end: number;\n target: SecretReferenceTargetLike;\n otp: boolean;\n previous: boolean;\n};\n\nexport type SecretTextTokenLike =\n | { type: \"text\"; value: string }\n | { type: \"reference\"; reference: SecretReferenceLike }\n | { type: \"invalid\"; raw: string; start: number; end: number; reason: string };\n\nexport type PasswordStrengthLike = {\n bits: number;\n label: \"weak\" | \"fair\" | \"strong\" | \"very_strong\";\n};\n\nexport type SecretsUi = {\n /** Split text into plain text, references and invalid reference-looking text. */\n tokenize: (text: string) => SecretTextTokenLike[];\n /** Client-side password generator (same implementation as the server). */\n generatePassword: (spec?: GeneratePasswordSpec) => string;\n passwordStrength?: ((password: string) => PasswordStrengthLike) | undefined;\n /** Optional link target for a reference chip (for example the item page). */\n hrefForReference?: ((reference: SecretReferenceLike) => string | null) | undefined;\n};\n\nconst SecretsUiContext = createContext<SecretsUi | null>(null);\n\nexport function SecretsUiProvider({\n value,\n children,\n}: {\n value: SecretsUi | null;\n children?: ReactNode;\n}) {\n return <SecretsUiContext.Provider value={value}>{children}</SecretsUiContext.Provider>;\n}\n\n/** Null without a provider: chips render as plain text, Generate is server-side. */\nexport function useSecretsUi(): SecretsUi | null {\n return useContext(SecretsUiContext);\n}\n","import type { HumanInputSecretAnswerResult } from \"@opengeni/sdk\";\nimport { FileLockIcon, LockIcon } from \"lucide-react\";\nimport { Fragment, type ReactNode } from \"react\";\nimport { cn } from \"../lib/cn\";\nimport { useSecretsUi, type SecretReferenceLike, type SecretsUi } from \"../secrets-ui\";\nimport { secretReferenceLabel } from \"../secret-reference-label\";\nimport { useOpenGeniText } from \"../messages/runtime\";\n\nexport {\n secretReferenceLabel,\n secretReferenceLabelText,\n type SecretReferenceLabel,\n} from \"../secret-reference-label\";\n\n/* Secret references (`{{secret:GitHub/password}}`) read as small chips: a lock\n glyph and the item and field, with the exact reference on hover. Parsing\n only: a chip never resolves or shows a value. */\n\nconst CHIP_CLASS =\n // em-relative so one chip reads right in prose, payload mono runs and titles.\n \"og-secret-chip inline-flex max-w-full min-w-0 items-center gap-[0.3em] rounded-full border border-og-border bg-og-surface-2 px-[0.5em] align-baseline font-og-sans text-[0.9em] leading-[1.45] font-medium not-italic text-og-fg no-underline [overflow-wrap:normal] [word-break:normal]\";\n\nfunction SecretChipFrame({\n icon,\n primary,\n suffix,\n title,\n srPrefix,\n href,\n className,\n dataAttributes,\n}: {\n icon: \"lock\" | \"file\";\n primary: string;\n suffix: string;\n title: string;\n srPrefix: string;\n href?: string | null | undefined;\n className?: string | undefined;\n dataAttributes?: Record<string, string> | undefined;\n}) {\n const Icon = icon === \"file\" ? FileLockIcon : LockIcon;\n const body = (\n <>\n <Icon aria-hidden=\"true\" className=\"size-[1em] shrink-0 text-og-fg-muted\" />\n <span className=\"sr-only\">{srPrefix}</span>\n <span className=\"min-w-0 max-w-[18em] truncate\">{primary}</span>\n {suffix ? <span className=\"shrink-0 whitespace-nowrap\">{suffix}</span> : null}\n </>\n );\n if (href) {\n return (\n <a\n href={href}\n title={title}\n className={cn(\n CHIP_CLASS,\n \"cursor-pointer transition-colors hover:border-og-border-strong hover:bg-og-surface-3 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-og-accent/55\",\n className,\n )}\n {...dataAttributes}\n >\n {body}\n </a>\n );\n }\n return (\n <span title={title} className={cn(CHIP_CLASS, className)} {...dataAttributes}>\n {body}\n </span>\n );\n}\n\nexport type SecretRefChipProps = {\n reference: SecretReferenceLike;\n /** Link to the item when the host provides `hrefForReference`. Off inside other controls. */\n linkable?: boolean | undefined;\n className?: string | undefined;\n};\n\n/** One secret reference as a chip. Focusable only when it links. */\nexport function SecretRefChip({ reference, linkable = true, className }: SecretRefChipProps) {\n const ui = useSecretsUi();\n return (\n <SecretRefChipView ui={ui} reference={reference} linkable={linkable} className={className} />\n );\n}\n\nfunction SecretRefChipView({\n ui,\n reference,\n linkable,\n className,\n}: {\n ui: SecretsUi | null;\n reference: SecretReferenceLike;\n linkable: boolean;\n className?: string | undefined;\n}) {\n const t = useOpenGeniText();\n const label = secretReferenceLabel(t, reference);\n const href = linkable ? (ui?.hrefForReference?.(reference) ?? null) : null;\n return (\n <SecretChipFrame\n icon={reference.kind === \"secretfile\" ? \"file\" : \"lock\"}\n primary={label.primary}\n suffix={label.suffix}\n title={reference.raw}\n srPrefix={`${reference.kind === \"secretfile\" ? t(\"secretRefChip.secretFile\") : t(\"secretRefChip.secret\")} `}\n href={href}\n className={className}\n dataAttributes={{ \"data-og-secret-ref\": reference.raw }}\n />\n );\n}\n\nexport type SecretRefTextProps = {\n text: string;\n linkable?: boolean | undefined;\n chipClassName?: string | undefined;\n};\n\n/**\n * Text with each valid secret reference as a chip. Malformed reference-like\n * text stays plain, and without a `SecretsUiProvider` the text is unchanged.\n */\nexport function SecretRefText({ text, linkable = true, chipClassName }: SecretRefTextProps) {\n const ui = useSecretsUi();\n return <>{renderSecretRefText(ui, text, { linkable, chipClassName })}</>;\n}\n\n/** Fast path: only text that mentions a reference is tokenized. */\nexport function mayContainSecretReference(text: string): boolean {\n return text.includes(\"{{secret\");\n}\n\nexport function renderSecretRefText(\n ui: SecretsUi | null,\n text: string,\n options: { linkable?: boolean | undefined; chipClassName?: string | undefined } = {},\n): ReactNode {\n if (!ui || !mayContainSecretReference(text)) return text;\n const tokens = ui.tokenize(text);\n if (!tokens.some((token) => token.type === \"reference\")) return text;\n // Keys are source offsets: text runs start where the previous token ended.\n let offset = 0;\n return tokens.map((token) => {\n if (token.type === \"reference\") {\n offset = token.reference.end;\n return (\n <SecretRefChipView\n key={`ref-${token.reference.start}`}\n ui={ui}\n reference={token.reference}\n linkable={options.linkable ?? true}\n className={options.chipClassName}\n />\n );\n }\n if (token.type === \"invalid\") {\n offset = token.end;\n return <Fragment key={`invalid-${token.start}`}>{token.raw}</Fragment>;\n }\n return <Fragment key={`text-${offset}`}>{token.value}</Fragment>;\n });\n}\n\nexport type SecretAnswerChipProps = {\n result: HumanInputSecretAnswerResult;\n label: string;\n className?: string | undefined;\n};\n\n/** The answered ask card: \"Saved to Private › GitHub\", plus the username. Never a value. */\nexport function SecretAnswerChip({ result, label, className }: SecretAnswerChipProps) {\n return (\n <SecretChipFrame\n icon=\"lock\"\n primary={label}\n suffix={result.username ? ` · ${result.username}` : \"\"}\n title={result.reference}\n srPrefix=\"\"\n className={cn(\"text-og-sm\", className)}\n dataAttributes={{ \"data-og-secret-answer\": result.reference }}\n />\n );\n}\n","import { createContext, useContext, type ReactNode } from \"react\";\n\n/* ----------------------------------------------------------------------------\n Disclosure defaults context\n\n A tiny, opt-in context that lets an ancestor seed the INITIAL open state of\n every collapsible in the timeline (ActivityDisclosure rows and TurnSummary\n chips). Its sole intended use is deterministic screenshot capture: a tool can\n force every card open so a headless render shows expanded bodies.\n\n It is fully inert in normal app usage. With no provider, the hook returns\n `undefined`, every collapsible keeps its own author-chosen default, and there\n is zero change to how the components look or animate. Mounting the provider\n only changes the SEED of the initial `open` state — Radix still owns the\n open/close transition, so animations are untouched.\n -------------------------------------------------------------------------- */\n\nconst DisclosureDefaultsContext = createContext<boolean | undefined>(undefined);\n\n/**\n * Seed the initial open state of every timeline collapsible below this node.\n * Intended for screenshot/test instrumentation only; absent by default.\n */\nexport function DisclosureDefaultsProvider({\n defaultOpen,\n children,\n}: {\n defaultOpen: boolean;\n children: ReactNode;\n}) {\n return (\n <DisclosureDefaultsContext.Provider value={defaultOpen}>\n {children}\n </DisclosureDefaultsContext.Provider>\n );\n}\n\n/**\n * The forced initial-open seed from an ancestor {@link DisclosureDefaultsProvider},\n * or `undefined` when none is mounted (the inert, app-default case).\n */\nexport function useForcedDefaultOpen(): boolean | undefined {\n return useContext(DisclosureDefaultsContext);\n}\n","import { CameraIcon, CameraOffIcon, ChevronRightIcon } from \"lucide-react\";\nimport { useToolDetails } from \"./tool-details\";\nimport { createContext, useContext, useEffect, useState, type ReactNode } from \"react\";\nimport { useTimelineSearchReveal } from \"../components/timeline-search\";\nimport { cn } from \"../lib/cn\";\nimport { stringifyPayload } from \"../lib/format\";\nimport { redactPayload } from \"./credential-redaction\";\nimport { SecretRefText } from \"../components/secret-ref-chip\";\nimport { useForcedDefaultOpen } from \"./disclosure-context\";\nimport { useLightboxOptional } from \"./screenshot-lightbox\";\nimport type { ToolCallTruncation, ToolOutputPreview } from \"./types\";\nimport { useOpenGeniText } from \"../messages/runtime\";\nimport { ShimmerText } from \"./shimmer-text\";\n\n/* ----------------------------------------------------------------------------\n Shared timeline primitives\n\n The restraint layer. One disclosure shape every tool renderer reuses, so the\n rail reads as a calm, aligned column: a chevron, a tinted icon, a title, an\n optional muted preview, and — at most — ONE quiet right-aligned signal\n (a settle chip). Compact by default; the body only mounts when expanded.\n\n CHIP DOCTRINE (closed set — do not extend):\n The right gutter carries at most ONE terse status token per row, and COLOR is\n spent only on the exception. Success is the default, so it never earns a hue:\n a settled-ok chip is bare muted text (or nothing). The colored dot is reserved\n for failure alone. In-flight state is NOT a gutter chip — the shimmering title\n carries it, so a running row has a clean right edge (no detached pulse badge).\n There is no bordered/filled pill. Anything narrative (a session id, \"approval\n rejected\", \"malformed V4A\") belongs in the muted preview line, never the gutter.\n\n ok a settled success quiet muted text (\"0\", \"done\") — no dot\n bad a settled failure red dot + red text (\"exit 6\") — the one hue\n muted quiet metadata subtle text (\"session 3\")\n -------------------------------------------------------------------------- */\n\nconst ToolOutputPreviewContext = createContext<ToolOutputPreview | null>(null);\n\n/**\n * Marks a tool row whose output is a bounded preview. The row's disclosure\n * reads the exact output when it opens and shows it once it lands; until then\n * the body says it is loading, and a failed read says it is a preview.\n */\nexport function ToolOutputPreviewProvider({\n value,\n children,\n}: {\n value: ToolOutputPreview | null;\n children: ReactNode;\n}) {\n return (\n <ToolOutputPreviewContext.Provider value={value}>{children}</ToolOutputPreviewContext.Provider>\n );\n}\n\n/**\n * A subtle settle signal — see the CHIP DOCTRINE above. The closed tone set.\n * `\"interrupted\"` is a calm neutral tone for cancelled items — no dot, same\n * quiet weight as `\"muted\"`, but semantically distinct from metadata.\n */\nexport type DisclosureChip = {\n tone: \"ok\" | \"bad\" | \"muted\" | \"interrupted\";\n text: string;\n};\n\nconst ToolCallTruncationContext = createContext<ToolCallTruncation | null>(null);\n\nexport function ToolCallTruncationProvider({\n value,\n children,\n}: {\n value: ToolCallTruncation | null;\n children: ReactNode;\n}) {\n return (\n <ToolCallTruncationContext.Provider value={value}>\n {children}\n </ToolCallTruncationContext.Provider>\n );\n}\n\nexport type ActivityDisclosureProps = {\n /** Override the rolling preview; null keeps rapidly streaming details out of the header. */\n compactPreview?: ReactNode;\n icon: ReactNode;\n /** Icon tint. Defaults to the muted foreground; renderers pass accent/failed. */\n iconTone?: \"accent\" | \"failed\" | \"running\" | \"muted\" | undefined;\n title: ReactNode;\n /** Render the title in the mono face (commands, paths). */\n titleMono?: boolean | undefined;\n /** Shimmer the title while the tool is in-flight. */\n running?: boolean | undefined;\n /**\n * Quiet single-line secondary text (truncated). It is detail-on-demand: hidden\n * when a media preview is set, AND hidden once the row is expanded (the body\n * then owns the detail), so a stat/path never appears twice at once.\n */\n preview?: ReactNode | undefined;\n /** A small inline media preview (a screenshot thumbnail) shown in place of `preview`. */\n media?: ReactNode | undefined;\n /** At most one quiet settle chip, right-aligned to the gutter. */\n chip?: DisclosureChip | undefined;\n /**\n * When true the row carries the standard failure affordance: the icon is tinted\n * red and a \"failed\" bad-chip appears in the right gutter (unless an explicit\n * `chip` is already supplied — the caller's chip wins). Output is still visible\n * on expand; this is a quiet status signal, not a blocking banner.\n *\n * Renderers should pass `failed={item.status === \"failed\"}` on their settled\n * (non-running) paths so any tool with a failed status shows a consistent\n * affordance without each renderer having to duplicate the logic.\n */\n failed?: boolean | undefined;\n /**\n * When true the row carries a calm \"interrupted\" affordance: the icon stays\n * muted (no red) and a quiet \"interrupted\" chip appears in the right gutter\n * (unless an explicit `chip` is already supplied — the caller's chip wins).\n * This is the cancelled-status analogue of `failed`, but deliberately calm\n * and neutral — it is NOT an error; the user chose to stop.\n *\n * Renderers should pass `cancelled={item.status === \"cancelled\"}` so any\n * in-flight item that was interrupted on turn.cancelled reads consistently.\n * `cancelled` is ignored when `failed` is also true (failure takes precedence).\n */\n cancelled?: boolean | undefined;\n /** When false the row is a static line (no expand affordance). */\n expandable?: boolean | undefined;\n /** Seed this individual disclosure open; user interaction still owns it afterwards. */\n defaultOpen?: boolean | undefined;\n children?: ReactNode | undefined;\n};\n\nconst ICON_TONE: Record<NonNullable<ActivityDisclosureProps[\"iconTone\"]>, string> = {\n accent: \"text-og-accent\",\n failed: \"text-og-status-failed\",\n running: \"text-og-status-running\",\n muted: \"text-og-fg-subtle\",\n};\n\n/**\n * The one disclosure row shape every activity row reuses (tool calls, reasoning,\n * sandbox ops): a chevron, a tinted icon, a title, an optional muted preview or\n * inline media, and at most one right-gutter settle chip. Compact by default;\n * the body mounts only when expanded.\n */\nexport const CompactActivityContext = createContext(false);\n\nexport function ActivityDisclosure({\n icon,\n iconTone: iconToneProp = \"muted\",\n title,\n titleMono,\n running,\n preview,\n compactPreview,\n media,\n chip: chipProp,\n failed,\n cancelled,\n expandable = true,\n defaultOpen,\n children,\n}: ActivityDisclosureProps) {\n const t = useOpenGeniText();\n // `failed` takes precedence over `cancelled` when both are set (shouldn't happen, but be safe).\n // When `failed` is set the icon goes red and a \"failed\" chip appears in the\n // gutter — unless the caller already supplied an explicit chip (their chip wins,\n // e.g. an exit-code chip that is more informative than a bare \"failed\" label).\n // When `cancelled` is set (and not failed) the icon stays muted and a calm\n // \"interrupted\" chip appears — no red, just a quiet neutral signal.\n const iconTone = failed && iconToneProp === \"muted\" ? \"failed\" : iconToneProp;\n const chip =\n chipProp ??\n (failed\n ? ({ tone: \"bad\", text: t(\"timeline.chip.failed\") } satisfies DisclosureChip)\n : cancelled\n ? ({ tone: \"interrupted\", text: t(\"timeline.chip.interrupted\") } satisfies DisclosureChip)\n : undefined);\n // An ancestor may seed the initial open state (screenshot instrumentation);\n // absent in normal app usage, where the row starts collapsed.\n const forcedDefaultOpen = useForcedDefaultOpen();\n const [open, setOpen] = useState(defaultOpen ?? forcedDefaultOpen ?? false);\n const searchReveal = useTimelineSearchReveal();\n useEffect(() => {\n if (searchReveal) setOpen(true);\n }, [searchReveal]);\n // A truncation notice is about raw output, which plain tool details never show.\n const plain = useToolDetails() === \"plain\";\n const truncationContext = useContext(ToolCallTruncationContext);\n const truncation = plain ? null : truncationContext;\n const compact = useContext(CompactActivityContext);\n // A previewed output reads its exact output when the row opens (once: a\n // failed read waits for Retry).\n const outputPreview = useContext(ToolOutputPreviewContext);\n const loadOutput = outputPreview?.load;\n const outputPending = outputPreview?.state === \"preview\";\n useEffect(() => {\n if (open && outputPending && !compact) loadOutput?.();\n }, [open, outputPending, loadOutput, compact]);\n if (compact)\n return (\n <span className=\"og-rolling-label\">\n <span className={cn(\"shrink-0\", ICON_TONE[iconTone])}>{icon}</span>\n <ShimmerText active=\"ancestor\" tone=\"reel\" className=\"og-command-reel\">\n <span className=\"og-reel-title\">{title}</span>\n {(compactPreview === undefined ? preview : compactPreview) ? (\n <span className=\"og-reel-preview text-og-fg-subtle\">\n {compactPreview === undefined ? preview : compactPreview}\n </span>\n ) : null}\n </ShimmerText>\n </span>\n );\n const hasBody = expandable && (children != null || truncation != null);\n\n // The preview is detail-on-demand: it is suppressed once the row is open so a\n // path/stat shown in the body never also sits in the collapsed row.\n const previewVisible = preview != null && !open;\n\n // ONE full-row layout for EVERY tool — media or not — so the hit target always\n // equals the visible row. The chevron → icon → title lead; a flex spacer (or\n // the preview) fills the middle; the right gutter (ml-auto) carries the chip OR\n // the media thumbnail. There is no media-vs-non-media fork: the screenshot card\n // toggles from anywhere on the row, exactly like every other row.\n //\n // The row is the single Collapsible.Trigger (via `asChild` onto a div), so it\n // is the toggle surface. A div — not a native <button> — so the interactive\n // media thumbnail (itself a <button>) is valid nested DOM; that thumbnail calls\n // stopPropagation so activating it never toggles the row.\n //\n // Radix forwards aria-expanded / aria-controls / data-state and a click handler\n // onto the asChild child, but it does NOT synthesize the button role, tab stop,\n // or Enter/Space activation for a non-button element. We add those ourselves\n // (role/tabIndex/onKeyDown) so the row is a fully keyboard-operable button to\n // AT and the keyboard, matching its native-<button> siblings (TurnSummary).\n const rowClass = cn(\n \"group/disclosure flex w-full min-w-0 items-center gap-2 rounded-og-sm px-1.5 py-1.5 text-left text-og-base\",\n \"text-og-fg-muted transition-colors duration-150\",\n // A tool row is a touch target on coarse pointers: grow its hit area to the\n // 44px mobile minimum without loosening the dense desktop rail.\n \"pointer-coarse:min-h-11 pointer-coarse:py-2.5\",\n );\n // The chevron rotates to point down when open; it tracks `data-state` on this\n // same row (the Trigger), so the affordance never freezes.\n const inner = (\n <>\n {hasBody ? (\n <ChevronRightIcon className=\"size-3.5 shrink-0 text-og-fg-subtle transition-transform duration-[var(--_og-duration-disclose)] ease-og-in-out group-data-[state=open]/disclosure:rotate-90\" />\n ) : (\n <span className=\"size-3.5 shrink-0\" />\n )}\n <span className={cn(\"shrink-0\", ICON_TONE[iconTone])}>{icon}</span>\n <ShimmerText\n active={Boolean(running)}\n tone=\"reel\"\n className={cn(\"og-command-reel\", running && \"og-command-reel-running\")}\n >\n <span\n className={cn(\n \"min-w-0 shrink truncate text-og-base font-medium\",\n titleMono && \"font-og-mono text-og-sm font-normal\",\n )}\n >\n {title}\n </span>\n {previewVisible && !media ? (\n <span className=\"min-w-0 flex-1 truncate text-og-sm text-og-fg-subtle\">{preview}</span>\n ) : (\n <span className=\"flex-1\" />\n )}\n </ShimmerText>\n {/* The right gutter carries at most ONE signal: the media thumbnail, else a\n terse settle chip (hidden once expanded — the body owns the detail). */}\n {media && !open ? (\n <span className=\"ml-auto flex shrink-0 items-center gap-2 pl-2\">{media}</span>\n ) : chip && !open ? (\n <span className=\"ml-auto shrink-0 pl-2\">\n <Chip chip={chip} />\n </span>\n ) : null}\n </>\n );\n\n // A `data-status` attribute on the root lets tests (and AT) detect the item's\n // settled state regardless of whether the chip slot is occupied by media.\n const dataStatus = cancelled ? \"cancelled\" : failed ? \"failed\" : undefined;\n\n if (!hasBody) {\n return (\n <div className={cn(rowClass, \"cursor-default\")} data-status={dataStatus}>\n {inner}\n </div>\n );\n }\n\n // Native disclosure (not radix-ui Collapsible): importing `radix-ui` from the\n // timeline registry pulls Popper into the session share-graph and crashes\n // lazy workspace settings (`createPopperScope is not a function`).\n return (\n <div>\n <div\n role=\"button\"\n tabIndex={0}\n aria-expanded={open}\n data-state={open ? \"open\" : \"closed\"}\n onClick={() => setOpen((prev) => !prev)}\n onKeyDown={(event) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n setOpen((prev) => !prev);\n }\n }}\n data-status={dataStatus}\n className={cn(\n rowClass,\n \"cursor-pointer outline-hidden hover:bg-og-surface-1 hover:text-og-fg\",\n \"focus-visible:ring-2 focus-visible:ring-og-accent focus-visible:ring-offset-0\",\n )}\n >\n {inner}\n </div>\n {open ? (\n <div className=\"mb-2 ml-7 mt-1.5 flex flex-col gap-2 overflow-hidden animate-og-expand\">\n {outputPreview && loadOutput && outputPreview.state !== \"error\" ? (\n // Never show a preview's body as if it were the whole output.\n <div\n data-og-tool-output-loading=\"\"\n role=\"status\"\n className=\"text-og-sm leading-5 text-og-fg-subtle\"\n >\n {t(\"timeline.shared.loadingFullOutput\")}\n </div>\n ) : outputPreview ? (\n <>\n <ToolOutputPreviewNotice preview={outputPreview} />\n <ToolOutputPreviewContext.Provider value={null}>\n {children}\n </ToolOutputPreviewContext.Provider>\n </>\n ) : (\n children\n )}\n {truncation ? <ToolCallTruncationNotice truncation={truncation} /> : null}\n </div>\n ) : null}\n </div>\n );\n}\n\n/** Says the body below is a preview, with Retry when the exact read failed. */\nfunction ToolOutputPreviewNotice({ preview }: { preview: ToolOutputPreview }) {\n const t = useOpenGeniText();\n const retry = preview.load;\n return (\n <div\n data-og-tool-output-preview=\"\"\n role=\"status\"\n className=\"flex flex-wrap items-center gap-x-2 text-og-sm leading-5 text-og-fg-subtle\"\n >\n <span>\n {retry ? t(\"timeline.shared.outputPreviewFailed\") : t(\"timeline.shared.outputPreviewOnly\")}\n </span>\n {retry ? (\n <button\n type=\"button\"\n onClick={retry}\n className=\"rounded-og-sm font-medium text-og-fg-muted underline-offset-2 hover:text-og-fg hover:underline focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-og-accent\"\n >\n {t(\"timeline.shared.retryFullOutput\")}\n </button>\n ) : null}\n </div>\n );\n}\n\nfunction ToolCallTruncationNotice({ truncation }: { truncation: ToolCallTruncation }) {\n const t = useOpenGeniText();\n const fullEvidence = truncation.fullEvidence.available\n ? \"retained\"\n : (truncation.fullEvidence.reason ?? \"unavailable\");\n return (\n <div data-og-tool-output-truncation=\"\" className=\"text-og-sm leading-5 text-og-fg-subtle\">\n {t(\"timeline.shared.outputBoundedAt\")}{\" \"}\n <code className=\"font-og-mono\">{truncation.surface}</code>\n {truncation.omittedBytes != null && truncation.omittedBytes > 0\n ? ` · ${t(\"timeline.shared.bytesOmitted\", { count: truncation.omittedBytes, bytes: truncation.omittedBytes.toLocaleString(t.locale) })}`\n : null}\n {` · ${t(\"timeline.shared.truncationReason\")} `}\n <code className=\"font-og-mono\">{truncation.reason}</code>\n {` · ${t(\"timeline.shared.fullEvidence\")} `}\n <code className=\"font-og-mono\">{fullEvidence}</code>\n </div>\n );\n}\n\n/**\n * The right-gutter settle chip. Color is spent only on the exception: a failure\n * is a red dot + red text (the one colored token in a healthy run); success and\n * metadata are bare muted text with no dot. No box, no fill (see the CHIP\n * DOCTRINE above). A `bad` chip with empty text is a lone dot (no trailing void).\n */\nfunction Chip({ chip }: { chip: DisclosureChip }) {\n const base = \"inline-flex items-center font-og-mono text-og-xs leading-none\";\n const withText = chip.text ? \"gap-1.5\" : \"gap-0\";\n if (chip.tone === \"bad\") {\n return (\n <span className={cn(base, withText, \"text-og-status-failed\")}>\n <span className=\"size-1.5 rounded-full bg-og-status-failed\" />\n {chip.text}\n </span>\n );\n }\n // \"interrupted\" is a calm cancelled signal: same quiet weight as muted, no\n // dot, no red — just a slightly more prominent subtle text so \"interrupted\"\n // reads at a glance without demanding attention the way a failure does.\n if (chip.tone === \"interrupted\") {\n return <span className={cn(base, \"text-og-fg-subtle og-cancelled-chip\")}>{chip.text}</span>;\n }\n // ok and muted are the same quiet weight — success never earns a hue.\n return <span className={cn(base, \"text-og-fg-subtle\")}>{chip.text}</span>;\n}\n\n/* --- terminal output block (exec / write_stdin) ---------------------------- */\n\ntype TermBlockProps = Parameters<typeof TermBlockView>[0];\n\n/** Terminal output under a tool row; plain tool details never show it. */\nexport function TermBlock(props: TermBlockProps) {\n return useToolDetails() === \"plain\" ? null : <TermBlockView {...props} />;\n}\n\nfunction TermBlockView({\n command,\n workdir,\n output,\n live,\n tailLines = 12,\n failed,\n}: {\n /**\n * The command shown in full above the output (a command row's title says\n * what it did in plain words, so this is where the command itself reads).\n * Pass `null` when the row title already carries it: the header then drops\n * the command, and the whole prompt line if there is no workdir either.\n */\n command: string | null;\n workdir?: string | null | undefined;\n /** The FULL output. TermBlock owns the tail/full slicing internally. */\n output: string;\n live?: boolean | undefined;\n /** A non-zero exit / failed call — tints the left accent red (the one hue). */\n failed?: boolean | undefined;\n /**\n * When the output exceeds the tail window, only the last `tailLines` are shown\n * with a \"show full output\" toggle. The component holds the full text, so the\n * toggle reveals the rest (never a dead affordance). Defaults to 12.\n */\n tailLines?: number | undefined;\n}) {\n const t = useOpenGeniText();\n const [full, setFull] = useState(false);\n const empty = output.trim() === \"\";\n const lines = output.split(\"\\n\");\n const big = lines.length > tailLines + 4;\n const shown = full || !big ? output : lines.slice(-tailLines).join(\"\\n\");\n const showMore = big && !full;\n const showHeader = command != null || workdir != null;\n\n // No frame, no fill: a quiet monospace run flush on the page, marked only by a\n // 2px left accent so it reads as terminal output at a glance without becoming\n // yet another nested box. Color is spent only on the exception — a settled run\n // gets a calm neutral rule, a live one the running hue, a failed one the red.\n return (\n <div\n className={cn(\n \"min-w-0 border-l-2 pl-3\",\n failed\n ? \"border-og-status-failed/50\"\n : live\n ? \"border-og-status-running/50\"\n : \"border-og-border\",\n )}\n >\n {showHeader ? (\n <div className=\"flex items-start gap-2 pb-1\">\n <span className=\"select-none text-og-status-idle\">$</span>\n {command != null ? (\n <span className=\"max-h-64 min-w-0 flex-1 overflow-auto whitespace-pre-wrap wrap-anywhere font-og-mono text-og-sm text-og-fg-muted\">\n <SecretRefText text={command} />\n </span>\n ) : (\n <span className=\"flex-1\" />\n )}\n {workdir ? (\n <span className=\"shrink-0 font-og-mono text-og-xs text-og-fg-subtle\">{workdir}</span>\n ) : null}\n </div>\n ) : null}\n {empty ? (\n <p className=\"font-og-mono text-og-xs italic text-og-fg-subtle\">\n {t(\"timeline.shared.noOutput\")}\n </p>\n ) : (\n <pre className=\"max-h-72 overflow-auto whitespace-pre-wrap wrap-anywhere font-og-mono text-og-xs leading-5 text-og-fg-muted\">\n {shown}\n {live ? (\n <span className=\"ml-px inline-block h-[1em] w-[2px] translate-y-[2px] animate-og-blink bg-og-accent align-middle\" />\n ) : null}\n </pre>\n )}\n {showMore ? (\n <button\n type=\"button\"\n onClick={() => setFull(true)}\n className=\"mt-1 text-left text-og-xs text-og-fg-subtle transition-colors hover:text-og-fg\"\n >\n {t(\"timeline.shared.showFullOutputLengthLines\", { length: lines.length })}\n </button>\n ) : null}\n </div>\n );\n}\n\n/* --- generic payload block -------------------------------------------------- */\n\nexport function PayloadBlock({\n label,\n value,\n failed,\n}: {\n label: string;\n value: unknown;\n failed?: boolean | undefined;\n}) {\n const plain = useToolDetails() === \"plain\";\n // Signed links never show their signature.\n const shown = redactPayload(value);\n const text = typeof shown === \"string\" ? shown : stringifyPayload(shown);\n // Raw arguments and output are developer detail: plain tool details never show them.\n if (plain || !text || text.trim() === \"\") {\n return null;\n }\n // Flush on the page, no frame — a labelled monospace run marked only by a 2px\n // left accent (red when the call failed, otherwise a calm neutral rule), so a\n // payload reads as detail hanging off the row, never a nested card.\n return (\n <div\n className={cn(\n \"min-w-0 border-l-2 pl-3\",\n failed ? \"border-og-status-failed/50\" : \"border-og-border\",\n )}\n >\n <p className=\"mb-1 text-og-xs font-medium uppercase tracking-[0.08em] text-og-fg-subtle\">\n {label}\n </p>\n <pre\n className={cn(\n \"max-h-64 overflow-auto whitespace-pre-wrap wrap-anywhere font-og-mono text-og-xs leading-5\",\n failed ? \"text-og-status-failed\" : \"text-og-fg-muted\",\n )}\n >\n <SecretRefText text={text} />\n </pre>\n </div>\n );\n}\n\n/** A quiet inline note inside an expanded body (lost output, empty frame, …). */\nexport function BodyNote({\n children,\n tone,\n}: {\n children: ReactNode;\n tone?: \"error\" | \"muted\" | undefined;\n}) {\n if (tone === \"error\") {\n // A quiet error run marked by a 2px red accent — the same flush, frameless\n // language as the payload/output blocks, not a filled callout box.\n return (\n <div className=\"border-l-2 border-og-status-failed/50 pl-3 font-og-mono text-og-xs leading-5 text-og-status-failed\">\n {children}\n </div>\n );\n }\n return <p className=\"px-0.5 text-og-sm italic leading-5 text-og-fg-subtle\">{children}</p>;\n}\n\n/* --- screenshot thumbnail + media states ------------------------------------ */\n\n/**\n * The shared inline-media footprint, so thumb / skeleton / empty align. Sized to\n * the row's line height (~28px) so a media row never out-weighs a text row and\n * the single-column rhythm holds.\n */\nconst MEDIA_BOX = \"h-7 w-[52px] shrink-0 rounded-og-xs border border-og-border\";\n\n/**\n * A loading screenshot placeholder. A faint camera glyph over a shimmering box,\n * so a still frame of the running state reads unambiguously as \"capturing\" — not\n * a broken thumbnail.\n */\nexport function MediaSkeleton() {\n return (\n <span\n className={cn(\n MEDIA_BOX,\n \"relative inline-flex items-center justify-center overflow-hidden bg-og-surface-2\",\n )}\n >\n <span className=\"absolute inset-0 animate-og-pulse bg-og-surface-3/50\" />\n <CameraIcon className=\"relative size-3.5 text-og-fg-subtle\" />\n </span>\n );\n}\n\n/** A standardized \"tool ran, produced no image\" placeholder in the media slot. */\nexport function MediaEmpty() {\n return (\n <span className={cn(MEDIA_BOX, \"inline-flex items-center justify-center bg-og-bg\")}>\n <CameraOffIcon className=\"size-3.5 text-og-fg-subtle\" />\n </span>\n );\n}\n\n/**\n * A small inline screenshot thumbnail that opens the app lightbox on click.\n *\n * Requires a `LightboxProvider` ancestor for the click-to-expand affordance.\n * Outside one it degrades to a plain, non-interactive image — never a dead\n * \"Expand\" button that announces an action it cannot perform.\n */\nexport function Thumbnail({\n src,\n caption,\n alt = \"screenshot\",\n expandLabel: expandLabelProp,\n lightboxLabel: lightboxLabelProp,\n downloadFilename,\n}: {\n src: string;\n caption?: string | undefined;\n alt?: string;\n expandLabel?: string | undefined;\n lightboxLabel?: string | undefined;\n downloadFilename?: string | undefined;\n}) {\n const t = useOpenGeniText();\n const expandLabel =\n expandLabelProp === undefined ? t(\"timeline.shared.expandScreenshot\") : expandLabelProp;\n const lightboxLabel =\n lightboxLabelProp === undefined ? t(\"timeline.shared.screenshot\") : lightboxLabelProp;\n const lightbox = useLightboxOptional();\n const [failed, setFailed] = useState(false);\n if (failed) {\n return <MediaEmpty />;\n }\n // A plain <img> (not a framework Image): this is a framework-agnostic SDK, so\n // the host's image component is unavailable and unwanted here.\n const img = (\n <img\n src={src}\n alt={alt}\n onError={() => setFailed(true)}\n className=\"h-full w-full object-cover transition-opacity group-hover/thumb:opacity-80\"\n />\n );\n if (!lightbox) {\n return <span className={cn(MEDIA_BOX, \"inline-flex overflow-hidden bg-og-bg\")}>{img}</span>;\n }\n // The thumbnail is a real, independently-focusable button nested inside the\n // row's disclosure trigger. It stops both pointer AND keyboard activation from\n // bubbling, so opening the lightbox never also toggles the row.\n return (\n <button\n type=\"button\"\n onClick={(event) => {\n event.stopPropagation();\n lightbox.open(src, caption, event.currentTarget, lightboxLabel, downloadFilename);\n }}\n onKeyDown={(event) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.stopPropagation();\n }\n }}\n className={cn(\n MEDIA_BOX,\n \"group/thumb relative inline-flex overflow-hidden bg-og-bg outline-hidden\",\n \"focus-visible:ring-2 focus-visible:ring-og-accent\",\n )}\n aria-label={expandLabel}\n >\n {img}\n </button>\n );\n}\n\n/**\n * The expanded screenshot inside a tool body: a contained, clickable preview\n * (opens the lightbox) with a quiet caption. Constrained height + object-contain\n * so it never breaks the row layout. Like {@link Thumbnail}, it degrades to a\n * plain image outside a `LightboxProvider`.\n */\nexport function ScreenshotFigure({\n src,\n caption,\n showCaption = true,\n alt = \"screenshot\",\n expandLabel: expandLabelProp,\n lightboxLabel: lightboxLabelProp,\n downloadFilename,\n}: {\n src: string;\n caption?: string | undefined;\n /** Off when the row above already says the same; the lightbox keeps it. */\n showCaption?: boolean | undefined;\n alt?: string;\n expandLabel?: string | undefined;\n lightboxLabel?: string | undefined;\n downloadFilename?: string | undefined;\n}) {\n const t = useOpenGeniText();\n const expandLabel =\n expandLabelProp === undefined ? t(\"timeline.shared.expandScreenshot\") : expandLabelProp;\n const lightboxLabel =\n lightboxLabelProp === undefined ? t(\"timeline.shared.screenshot\") : lightboxLabelProp;\n const lightbox = useLightboxOptional();\n const [failed, setFailed] = useState(false);\n const surface = \"block w-full overflow-hidden rounded-og-md border border-og-border bg-og-bg\";\n // A plain <img>, like {@link Thumbnail} — a framework-agnostic SDK has no host\n // Image component to defer to.\n const img = (\n <img\n src={src}\n alt={alt}\n onError={() => setFailed(true)}\n className=\"max-h-80 w-full object-contain\"\n />\n );\n return (\n <figure className=\"m-0 min-w-0\">\n {failed ? (\n <div className=\"rounded-og-md border border-og-border bg-og-bg px-3 py-6 text-center font-og-mono text-og-xs text-og-fg-subtle\">\n {t(\"timeline.shared.imageUnavailable\")}\n </div>\n ) : lightbox ? (\n <button\n type=\"button\"\n onClick={(event) =>\n lightbox.open(src, caption, event.currentTarget, lightboxLabel, downloadFilename)\n }\n className={surface}\n aria-label={expandLabel}\n >\n {img}\n </button>\n ) : (\n <div className={surface}>{img}</div>\n )}\n {caption && showCaption ? (\n <figcaption className=\"mt-1.5 font-og-mono text-og-xs text-og-fg-subtle\">\n {caption}\n </figcaption>\n ) : null}\n </figure>\n );\n}\n","import { createContext, useContext, useLayoutEffect, useRef, type RefObject } from \"react\";\nimport type { TimelineItem } from \"../timeline/types\";\nimport { annotatableText, rangeFromOffsets, visibleClientRect } from \"./timeline-annotation-shared\";\n\nexport type TimelineSearchTarget = {\n sequence: number;\n eventId?: string | undefined;\n /** Literal, case-insensitive text. No regex interpretation. */\n query: string;\n /** Zero-based occurrence within the source message. Defaults to zero. */\n occurrence?: number | undefined;\n /**\n * Zero-based UTF-16 offset of the match in the original message text, as\n * reported by backend all-occurrence search (messageMatchOffset). When set\n * it takes precedence over `occurrence` and is validated against `query`,\n * so a stale offset degrades to no highlight rather than a wrong one.\n */\n offset?: number | undefined;\n};\n\n/** Scoped to the target's group; disclosure expansion persists after closing find. */\nexport const TimelineSearchRevealContext = createContext<string | null>(null);\nexport const useTimelineSearchReveal = () => useContext(TimelineSearchRevealContext);\n\nexport function isTimelineSearchTarget(item: TimelineItem, target: TimelineSearchTarget): boolean {\n const sources =\n item.sourceEvents ??\n (\"annotationSource\" in item && item.annotationSource ? [item.annotationSource] : []);\n return sources.some(\n (source) =>\n source.sequence === target.sequence && (!target.eventId || source.eventId === target.eventId),\n );\n}\n\n/** Scan without allocating an offset array proportional to a huge message. */\nexport function literalSearchOffset(text: string, query: string, occurrence = 0): number {\n if (!query || !Number.isSafeInteger(occurrence) || occurrence < 0) return -1;\n // Regex escaping preserves UTF-16 offsets even for case folds whose lowercase\n // string representation changes length (for example dotted capital I).\n const pattern = new RegExp(query.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"), \"giu\");\n let match: RegExpExecArray | null;\n let index = 0;\n while ((match = pattern.exec(text))) {\n if (index++ === occurrence) return match.index;\n }\n return -1;\n}\n\n/**\n * Validate a caller-supplied UTF-16 offset against the text and query. The\n * sticky flag pins the match to exactly `offset`; like literalSearchOffset,\n * regex escaping keeps offsets in UTF-16 units even for length-changing case\n * folds. Returns -1 when the offset is stale or the text no longer matches.\n */\nexport function matchAtOffset(text: string, query: string, offset: number): number {\n if (!query || !Number.isSafeInteger(offset) || offset < 0 || offset > text.length) return -1;\n const pattern = new RegExp(query.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"), \"iyu\");\n pattern.lastIndex = offset;\n // Unicode regex engines may rewind a lastIndex inside a surrogate pair.\n return pattern.exec(text)?.index === offset ? offset : -1;\n}\n\n/** Resolve a target to a UTF-16 offset: explicit offset wins, else the ordinal scan. */\nexport function searchMatchOffset(text: string, target: TimelineSearchTarget): number {\n if (target.offset != null) return matchAtOffset(text, target.query, target.offset);\n return literalSearchOffset(text, target.query, target.occurrence);\n}\n\ntype HighlightRegistry = { set(name: string, value: unknown): void; delete(name: string): void };\nlet nextHighlightId = 0;\n\n/** Range highlighting does not mutate React-owned text or its layout. */\nexport function useTimelineSearchNavigation(\n root: RefObject<HTMLDivElement | null>,\n itemId: string | undefined,\n target: TimelineSearchTarget | null | undefined,\n releasePin: () => void,\n revision: unknown,\n) {\n const highlightName = useRef(\"\");\n if (!highlightName.current) highlightName.current = `og-search-${++nextHighlightId}`;\n const key = target\n ? JSON.stringify([\n itemId,\n target.sequence,\n target.eventId,\n target.query,\n target.occurrence ?? 0,\n target.offset ?? null,\n ])\n : null;\n const navigated = useRef<string | null>(null);\n useLayoutEffect(() => {\n if (!key) navigated.current = null;\n if (!key || !target || !itemId || !root.current) return;\n releasePin();\n const scroller = root.current;\n const registry = (\n globalThis.CSS as (typeof CSS & { highlights?: HighlightRegistry }) | undefined\n )?.highlights;\n const HighlightClass = (\n globalThis as unknown as { Highlight?: new (...ranges: Range[]) => unknown }\n ).Highlight;\n const style = document.createElement(\"style\");\n style.textContent = `::highlight(${highlightName.current}) { background: var(--og-color-accent-deep); color: var(--og-color-accent-fg); }`;\n scroller.append(style);\n let frame = 0;\n const update = () => {\n const source = [...scroller.querySelectorAll<HTMLElement>(\"[data-og-search-item]\")].find(\n (element) => element.dataset.ogSearchItem === itemId,\n );\n if (!source) return;\n // A virtualized renderer can explicitly identify the selected occurrence\n // when earlier occurrences are not mounted. Never accept a stale marker\n // belonging to a different sequence, occurrence, or query.\n const materialized = [\n ...source.querySelectorAll<HTMLElement>(\"[data-og-search-occurrence]\"),\n ].find(\n (element) =>\n element.dataset.ogSearchSequence === String(target.sequence) &&\n element.dataset.ogSearchQuery === target.query &&\n (target.offset != null\n ? element.dataset.ogSearchOffset === String(target.offset)\n : element.dataset.ogSearchOccurrence === String(target.occurrence ?? 0)),\n );\n const { text, spans } = annotatableText(materialized ?? source);\n // Inside a materialized chunk the match starts at the chunk start.\n // Raw source offsets must NEVER be interpreted as rendered DOM offsets:\n // even matching characters can identify a different repeated occurrence.\n const offset = materialized\n ? matchAtOffset(text, target.query, 0)\n : target.offset != null\n ? -1\n : searchMatchOffset(text, target);\n const range =\n offset < 0 ? null : rangeFromOffsets(spans, offset, offset + target.query.length);\n if (range && registry && HighlightClass)\n registry.set(highlightName.current, new HighlightClass(range));\n else registry?.delete(highlightName.current);\n const rect = range ? visibleClientRect(range) : null;\n // A custom renderer may mount the message body later (or materialize a\n // virtualized chunk in response to renderMessageText's search context).\n // Finding its empty shell is not proof that the occurrence was revealed.\n if (navigated.current === key || !range || !rect) return;\n const box = rect;\n if (!box.height && !box.width) return;\n scroller.scrollTop +=\n box.top - scroller.getBoundingClientRect().top - scroller.clientHeight / 2;\n navigated.current = key;\n };\n const schedule = () => {\n cancelAnimationFrame(frame);\n frame = requestAnimationFrame(update);\n };\n const observer = new MutationObserver(schedule);\n observer.observe(scroller, { childList: true, subtree: true, characterData: true });\n const resize = typeof ResizeObserver === \"undefined\" ? null : new ResizeObserver(schedule);\n resize?.observe(scroller);\n schedule();\n return () => {\n observer.disconnect();\n resize?.disconnect();\n cancelAnimationFrame(frame);\n registry?.delete(highlightName.current);\n style.remove();\n };\n }, [key, root, itemId, target, releasePin, revision]);\n}\n"],"mappings":"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","names":["Fragment","jsx","createContext","useContext","jsx","createContext","useContext","createContext","useContext","createContext","useContext","Fragment","jsx","jsxs","createContext","useContext"]}
|