@opengeni/react 6.5.2-canary.41607687019001 → 6.7.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.d.ts +4 -0
- package/dist/app/app-state.js +19 -14
- package/dist/app/components/Composer.js +25 -23
- package/dist/app/components/agent/agent-capability-picker.js +10 -8
- package/dist/app/components/artifacts/artifact-browse-controls.js +4 -4
- package/dist/app/components/artifacts/artifact-library.js +21 -19
- package/dist/app/components/artifacts/artifact-page-chrome.js +3 -3
- package/dist/app/components/artifacts/artifact-viewer.js +23 -22
- package/dist/app/components/artifacts/artifact-viewer.js.map +1 -1
- package/dist/app/components/artifacts/chat-interactive-block.js +12 -12
- package/dist/app/components/artifacts/copy-artifact-link.js +7 -5
- package/dist/app/components/artifacts/file-reach-dialog.js +11 -9
- package/dist/app/components/artifacts/inline-chat-image.js +18 -18
- package/dist/app/components/artifacts/retained-file-preview.js +24 -23
- package/dist/app/components/artifacts/retained-text-preview.js +3 -3
- package/dist/app/components/artifacts/site-audience.js +6 -5
- package/dist/app/components/artifacts/site-conversations.js +16 -14
- package/dist/app/components/artifacts/site-data.js +18 -16
- package/dist/app/components/artifacts/site-public-link.js +3 -2
- package/dist/app/components/artifacts/site-publishing-page.js +39 -37
- package/dist/app/components/artifacts/site-publishing.js +34 -32
- package/dist/app/components/artifacts/site-settings.js +38 -36
- package/dist/app/components/artifacts/site-version-menu.js +8 -7
- package/dist/app/components/billing-class-mark.js +3 -3
- package/dist/app/components/bots/bot-launch-strip.js +17 -17
- package/dist/app/components/bots/bot-template-dialog.js +30 -28
- package/dist/app/components/bots/bot-template-shortcuts.js +19 -19
- package/dist/app/components/bots/bot-templates-page.js +38 -36
- package/dist/app/components/bots/bot-templates-page.js.map +1 -1
- package/dist/app/components/capabilities/capability-detail-sheet.js +13 -11
- package/dist/app/components/capabilities/capability-logo-source.js +13 -13
- package/dist/app/components/capabilities/capability-logo.js +4 -3
- package/dist/app/components/capabilities/connector-tool-permissions.js +8 -6
- package/dist/app/components/capabilities/native-connect-setup.js +14 -14
- package/dist/app/components/capabilities/own-logins-shared-heads-up.js +7 -6
- package/dist/app/components/capabilities/perform-capability-action.js +7 -6
- package/dist/app/components/capabilities/prepared-mcp-setup-card.js +17 -17
- package/dist/app/components/capabilities/session-capability-card.js +72 -70
- package/dist/app/components/capabilities/session-capability-card.js.map +1 -1
- package/dist/app/components/capabilities/session-chrome-card.js +28 -26
- package/dist/app/components/capabilities/session-connection-accounts.js +4 -3
- package/dist/app/components/capabilities/session-custom-mcp-card.js +20 -19
- package/dist/app/components/capabilities/session-github-card.js +22 -20
- package/dist/app/components/capabilities/session-machine-card.js +27 -25
- package/dist/app/components/capabilities/session-personal-github-card.js +16 -16
- package/dist/app/components/capabilities/session-plugin-card.js +10 -9
- package/dist/app/components/capabilities/use-capabilities-catalog.js +4 -3
- package/dist/app/components/capabilities/use-connection-accounts.js +5 -4
- package/dist/app/components/command-menu/chat-status.js +15 -13
- package/dist/app/components/command-menu/chat-switcher.js +35 -33
- package/dist/app/components/command-menu/chat-switcher.js.map +1 -1
- package/dist/app/components/command-menu/command-menu.js +53 -50
- package/dist/app/components/command-menu/command-menu.js.map +1 -1
- package/dist/app/components/command-menu/shortcut-sheet.js +18 -16
- package/dist/app/components/command-menu/shortcut-sheet.js.map +1 -1
- package/dist/app/components/common.js +4 -3
- package/dist/app/components/composer-capabilities-menu-body.js +4 -4
- package/dist/app/components/composer-mobile-plus-panel.js +8 -8
- package/dist/app/components/composer-mobile-plus.js +1 -1
- package/dist/app/components/credit-required-gate.js +3 -3
- package/dist/app/components/credit-required-prompt.js +10 -8
- package/dist/app/components/credit-required-prompt.js.map +1 -1
- package/dist/app/components/credits/checkout-credits-celebration.js +3 -2
- package/dist/app/components/credits/checkout-return.js +3 -2
- package/dist/app/components/credits/checkout-return.js.map +1 -1
- package/dist/app/components/credits/coupon-redeem.js +5 -4
- package/dist/app/components/credits/credit-refusal-notice.js +7 -5
- package/dist/app/components/cross-slot-deep-link-recovery.js +5 -4
- package/dist/app/components/desktop/app-shots.js +13 -11
- package/dist/app/components/desktop/computer-use.js +6 -4
- package/dist/app/components/desktop/this-computer.js +9 -7
- package/dist/app/components/feedback.js +5 -4
- package/dist/app/components/follow-up-repository-menu-body.js +8 -6
- package/dist/app/components/follow-up-repository-menu-body.js.map +1 -1
- package/dist/app/components/follow-up-repository-picker.js +1 -1
- package/dist/app/components/github-app-connect-launcher.js +5 -4
- package/dist/app/components/in-app-help-link.js +3 -3
- package/dist/app/components/knowledge/agent-learning-settings.js +3 -2
- package/dist/app/components/knowledge/agent-learning-settings.js.map +1 -1
- package/dist/app/components/machines/connect-machine-dialog.js +18 -16
- package/dist/app/components/manual-repository-editor.js +3 -2
- package/dist/app/components/markdown.js +6 -6
- package/dist/app/components/models/models-ui.js +12 -10
- package/dist/app/components/my-things.js +12 -10
- package/dist/app/components/my-things.js.map +1 -1
- package/dist/app/components/new-session-starters.js +3 -3
- package/dist/app/components/own-where-it-works.js +9 -7
- 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 +7 -5
- package/dist/app/components/rail/project-glyph.js +17 -17
- package/dist/app/components/rail/project-profile.js +31 -29
- package/dist/app/components/rail/rail-context.js +3 -3
- package/dist/app/components/rail/rail-sections.js +68 -66
- package/dist/app/components/rail/session-header.js +59 -57
- package/dist/app/components/rail/session-list.js +66 -64
- package/dist/app/components/rail/session-row-content.js +4 -4
- package/dist/app/components/rail/session-row-hover-details.js +14 -12
- package/dist/app/components/rail/session-shell.js +90 -88
- package/dist/app/components/rail/site-session-group-heading.js +8 -8
- package/dist/app/components/repository-picker.js +8 -6
- package/dist/app/components/secrets/session-secrets-panel.js +4 -3
- package/dist/app/components/secrets/vault-model.js +3 -2
- package/dist/app/components/session/agent-configuration-panel.js +25 -23
- package/dist/app/components/session/agent-configuration-panel.js.map +1 -1
- package/dist/app/components/session/artifact-link-boundary.js +3 -3
- package/dist/app/components/session/artifact-session-page.js +11 -9
- package/dist/app/components/session/banners.js +8 -8
- package/dist/app/components/session/codex-usage-notice.js +5 -3
- package/dist/app/components/session/console-new-conversation.js +42 -40
- package/dist/app/components/session/context-text-reader.js +3 -2
- package/dist/app/components/session/descendant-requests.js +39 -37
- package/dist/app/components/session/descendant-requests.js.map +1 -1
- package/dist/app/components/session/editable-artifacts-workspace.js +36 -34
- package/dist/app/components/session/editable-artifacts-workspace.js.map +1 -1
- package/dist/app/components/session/failed-session-banner.js +13 -11
- package/dist/app/components/session/failed-session-banner.js.map +1 -1
- package/dist/app/components/session/failure-recovery-boundary.js +3 -3
- package/dist/app/components/session/human-input-delegation-record.js +2 -2
- package/dist/app/components/session/human-input.js +33 -31
- package/dist/app/components/session/inspector.js +57 -55
- package/dist/app/components/session/inspector.js.map +1 -1
- package/dist/app/components/session/message-actions.js +5 -4
- package/dist/app/components/session/message-actions.js.map +1 -1
- package/dist/app/components/session/message-resource-attachments.js +12 -11
- package/dist/app/components/session/message-resource-attachments.js.map +1 -1
- package/dist/app/components/session/model-context-inspector.js +6 -4
- package/dist/app/components/session/model-recovery-notice.js +3 -3
- package/dist/app/components/session/new-session-settings-menu.js +11 -9
- package/dist/app/components/session/new-session-setup-strip.js +18 -18
- package/dist/app/components/session/sandbox-recovery-actions.js +3 -3
- package/dist/app/components/session/sandbox-switcher.js +10 -9
- package/dist/app/components/session/sandbox-workspace.js +47 -46
- package/dist/app/components/session/search-markdown-highlight.js +7 -7
- package/dist/app/components/session/search-results-view.js +8 -8
- package/dist/app/components/session/session-admin-access.js +13 -11
- package/dist/app/components/session/session-admission-notice.js +7 -5
- package/dist/app/components/session/session-avatar-picker.js +22 -20
- package/dist/app/components/session/session-avatar.js +16 -16
- package/dist/app/components/session/session-machine-access-notice.js +7 -5
- package/dist/app/components/session/session-profile-dialog.js +29 -27
- package/dist/app/components/session/session-profile-editor.js +30 -28
- package/dist/app/components/session/session-retention.js +10 -8
- package/dist/app/components/session/session-search-dialog.js +10 -10
- package/dist/app/components/session/session-skill-reviews.js +2 -1
- package/dist/app/components/session/session-skill-reviews.js.map +1 -1
- package/dist/app/components/session/session-tenancy-control.js +13 -11
- package/dist/app/components/session/session-tenancy-control.js.map +1 -1
- package/dist/app/components/session/session-unattended-setting.js +7 -5
- package/dist/app/components/session/session-usage-limit-section.js +11 -9
- package/dist/app/components/session/share-chat-dialog.js +9 -7
- package/dist/app/components/session/site-origin-link.js +3 -3
- package/dist/app/components/session/subagents.js +8 -8
- package/dist/app/components/session/subscription-account-indicator.js +6 -6
- package/dist/app/components/session-connectors-menu-body.js +4 -3
- package/dist/app/components/session-connectors-menu-body.js.map +1 -1
- package/dist/app/components/settings/row-select.js +7 -5
- package/dist/app/components/toaster.js +3 -2
- package/dist/app/components/transcription-settings.js +11 -9
- package/dist/app/components/ui/destructive-confirm.js +11 -9
- package/dist/app/components/usage/usage-entry.js +5 -5
- package/dist/app/components/window-bar.js +16 -14
- package/dist/app/components/workspace-composer-plus.js +22 -21
- package/dist/app/components/workspace-reach.js +6 -4
- package/dist/app/components/workspace-tenant-boundary.js +5 -4
- package/dist/app/embed/memory-navigation.js +3 -3
- package/dist/app/embed/session-app.js +211 -209
- package/dist/app/lib/actions/actions-provider.js +15 -13
- package/dist/app/lib/agent-capabilities.js +3 -3
- package/dist/app/lib/app-surfaces.js +7 -6
- package/dist/app/lib/archive-session.d.ts +9 -4
- package/dist/app/lib/archive-session.js +4 -2
- package/dist/app/lib/bot-templates.js +3 -2
- package/dist/app/lib/capabilities.js +3 -2
- package/dist/app/lib/codex-usage-query.js +2 -2
- package/dist/app/lib/composer-connectors.js +17 -16
- package/dist/app/lib/console-site.js +2 -2
- package/dist/app/lib/console-text.js +2 -2
- package/dist/app/lib/events.js +9 -9
- package/dist/app/lib/failed-session-copy.js +3 -3
- package/dist/app/lib/inbox.js +4 -2
- package/dist/app/lib/model-access-onboarding.js +3 -3
- package/dist/app/lib/move-chat-to-machine.js +3 -3
- package/dist/app/lib/navigation.js +2 -2
- package/dist/app/lib/session-branch-cache.js +6 -6
- package/dist/app/lib/session-create.js +4 -4
- package/dist/app/lib/session-group-pagination.js +6 -6
- package/dist/app/lib/session-hover-facts.js +13 -11
- package/dist/app/lib/session-model.js +2 -2
- package/dist/app/lib/session-rail.js +3 -3
- package/dist/app/lib/session-rename.js +3 -3
- package/dist/app/lib/session-restart-operation-controller.js +4 -3
- package/dist/app/lib/session-tenancy.js +3 -2
- package/dist/app/lib/session-usage-limit.js +3 -2
- package/dist/app/lib/sessions-group.js +5 -5
- package/dist/app/lib/site-publishing.js +3 -2
- package/dist/app/lib/site-tool-consent-dialog.js +9 -7
- 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/subscription-plans.js +3 -2
- package/dist/app/lib/toast.js +2 -1
- package/dist/app/lib/turn-failure-analytics.js +4 -4
- package/dist/app/lib/use-duplicate-site.js +6 -5
- package/dist/app/lib/use-follow-up-repositories.js +6 -5
- package/dist/app/lib/use-workspace-integrations.js +4 -3
- package/dist/app/lib/use-workspace-machines.js +4 -4
- package/dist/app/lib/use-workspace-model-catalog.js +5 -4
- 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 +67 -66
- package/dist/app/routes/artifacts.js.map +1 -1
- package/dist/app/routes/retained-artifact.js +42 -40
- package/dist/app/routes/retained-artifact.js.map +1 -1
- package/dist/app/routes/session-unavailable.js +8 -7
- package/dist/app/routes/session.js +119 -117
- package/dist/app/routes/sessions-index-hydration.js +5 -5
- package/dist/app/routes/sessions-index.js +104 -102
- package/dist/app/routes/site-view.js +67 -65
- 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 +10 -10
- package/dist/automations.js +17 -15
- package/dist/automations.js.map +1 -1
- package/dist/browser-viewer-TC27OCIP.js +23 -0
- package/dist/chat-interactive-block-RWPQBHVS.js +18 -0
- package/dist/chunk-2BDT3UZQ.js +229 -0
- package/dist/chunk-2CLNIEK4.js +373 -0
- package/dist/chunk-2FSBSCZJ.js +451 -0
- package/dist/chunk-2I7HDP53.js +199 -0
- package/dist/chunk-2INLDVK3.js +15 -0
- package/dist/chunk-2KALVELR.js +126 -0
- package/dist/chunk-2M3J7ZWQ.js +418 -0
- package/dist/chunk-2OP6WLGV.js +708 -0
- package/dist/chunk-2RG7NIAS.js +2936 -0
- package/dist/chunk-2STUPWEL.js +135 -0
- package/dist/chunk-2YUOVM3G.js +271 -0
- package/dist/chunk-2Z3NQNTM.js +3670 -0
- package/dist/chunk-3CPWWGNK.js +920 -0
- package/dist/chunk-3ED2U6XE.js +37 -0
- package/dist/chunk-3GZA4BUW.js +216 -0
- package/dist/chunk-3IK6UYO6.js +1022 -0
- package/dist/chunk-3PZ7JZI2.js +431 -0
- package/dist/chunk-4DVJ6ONS.js +50 -0
- package/dist/chunk-4DVNUCRR.js +2386 -0
- package/dist/chunk-4DVNUCRR.js.map +1 -0
- package/dist/chunk-4E3ZJRTZ.js +41 -0
- package/dist/chunk-4SAWSRAA.js +141 -0
- package/dist/chunk-53AGXXZM.js +307 -0
- package/dist/chunk-54YW6SZZ.js +818 -0
- package/dist/chunk-57AZS3IE.js +2317 -0
- package/dist/chunk-5CPEEAFD.js +143 -0
- package/dist/chunk-5EWSRZ2Y.js +340 -0
- package/dist/chunk-5IE76VCY.js +387 -0
- package/dist/chunk-5NWEKLDZ.js +170 -0
- package/dist/chunk-5O2FCCHZ.js +198 -0
- package/dist/chunk-5QAY6K77.js +399 -0
- package/dist/chunk-5YKW2K6I.js +625 -0
- package/dist/chunk-5YKW2K6I.js.map +1 -0
- package/dist/chunk-6BCXNDEI.js +4116 -0
- package/dist/chunk-6BCXNDEI.js.map +1 -0
- package/dist/chunk-6DK6Z4UN.js +2599 -0
- package/dist/chunk-6DVCC7QS.js +702 -0
- package/dist/chunk-6JHU2UBS.js +2058 -0
- package/dist/chunk-6PZ7OBYU.js +490 -0
- package/dist/chunk-6WD2INST.js +539 -0
- package/dist/chunk-6WD2INST.js.map +1 -0
- package/dist/chunk-6WGRDRMA.js +163 -0
- package/dist/chunk-77WAKEAH.js +186 -0
- package/dist/chunk-7T2ZE3VT.js +5558 -0
- package/dist/chunk-7T2ZE3VT.js.map +1 -0
- package/dist/chunk-7TDO3CUM.js +393 -0
- package/dist/chunk-7TIX2UAR.js +247 -0
- package/dist/chunk-7V5REBCP.js +148 -0
- package/dist/chunk-7VMZGLYI.js +339 -0
- package/dist/chunk-7W37NS3I.js +236 -0
- package/dist/chunk-7X6SDK2C.js +111 -0
- package/dist/chunk-7ZNUHRP5.js +95 -0
- package/dist/chunk-A36PZALD.js +84 -0
- package/dist/chunk-AUI6VA63.js +107 -0
- package/dist/chunk-AW2MQB37.js +24 -0
- package/dist/chunk-AWKES45Y.js +198 -0
- package/dist/chunk-AXHZYXUV.js +132 -0
- package/dist/chunk-BHNSJVBC.js +129 -0
- package/dist/chunk-BJEJFISW.js +50 -0
- package/dist/chunk-BJFH6JI5.js +422 -0
- package/dist/chunk-BMICEQZQ.js +960 -0
- package/dist/chunk-BTLBYBLU.js +29 -0
- package/dist/chunk-BXBDYNRP.js +89 -0
- package/dist/chunk-C372BFOV.js +357 -0
- package/dist/chunk-C43KRXGA.js +234 -0
- package/dist/chunk-C43KRXGA.js.map +1 -0
- package/dist/chunk-CMKGILJK.js +4824 -0
- package/dist/chunk-CRAOSVHC.js +50 -0
- package/dist/chunk-CRU35QQH.js +281 -0
- package/dist/chunk-CUIWCGMA.js +172 -0
- package/dist/chunk-D5TWNFFE.js +38 -0
- package/dist/chunk-DF5EAHDN.js +4461 -0
- package/dist/chunk-DJAXC5OK.js +56 -0
- package/dist/chunk-DXBYWSL5.js +3550 -0
- package/dist/chunk-DXR5PDFP.js +84 -0
- package/dist/chunk-DZWARC4M.js +267 -0
- package/dist/chunk-DZXEDSQI.js +106 -0
- package/dist/chunk-E7XERZWC.js +48 -0
- package/dist/chunk-ECJBYNLJ.js +79 -0
- package/dist/chunk-EDI6SJ2N.js +43 -0
- package/dist/chunk-EWSOC6WF.js +114 -0
- package/dist/chunk-F2OPHAUN.js +103 -0
- package/dist/chunk-F4ISQGGM.js +81 -0
- package/dist/chunk-FO4LYKJL.js +197 -0
- package/dist/chunk-FPXASDG5.js +73 -0
- package/dist/chunk-FSOQDUCG.js +117 -0
- package/dist/chunk-FSOQDUCG.js.map +1 -0
- package/dist/chunk-FVXBNBHO.js +157 -0
- package/dist/chunk-FYWT2O76.js +34 -0
- package/dist/chunk-FYWT2O76.js.map +1 -0
- package/dist/chunk-FZC5N55X.js +981 -0
- package/dist/chunk-GAVYGBFI.js +99 -0
- package/dist/chunk-GFIMOUDT.js +846 -0
- package/dist/chunk-GFIMOUDT.js.map +1 -0
- package/dist/chunk-GKVJIDHF.js +33 -0
- package/dist/chunk-GVN5SZLX.js +212 -0
- package/dist/chunk-H3T7IWNA.js +134 -0
- package/dist/chunk-HAX4LCR5.js +261 -0
- package/dist/chunk-HC4JFZVU.js +121 -0
- package/dist/chunk-HEFPPMBQ.js +581 -0
- package/dist/chunk-HGKTHF2U.js +1356 -0
- package/dist/chunk-HGKTHF2U.js.map +1 -0
- package/dist/chunk-HNLR7Q4Z.js +83 -0
- package/dist/chunk-HSOXMJOT.js +12 -0
- package/dist/chunk-I4MRDSUF.js +281 -0
- package/dist/chunk-I4QEJ62Y.js +202 -0
- package/dist/chunk-I5B5L6Q4.js +56 -0
- package/dist/chunk-I5QZJODL.js +264 -0
- package/dist/chunk-I7ITSXSJ.js +603 -0
- package/dist/chunk-I7XIZRFD.js +390 -0
- package/dist/chunk-IDANQPRH.js +82 -0
- package/dist/chunk-IFB3WJ36.js +212 -0
- package/dist/chunk-IHTAKKTK.js +264 -0
- package/dist/chunk-IKXNLWAL.js +205 -0
- package/dist/chunk-IKXNLWAL.js.map +1 -0
- package/dist/chunk-ILDXWY37.js +173 -0
- package/dist/chunk-IMDQUHBJ.js +570 -0
- package/dist/chunk-IMZCQBOT.js +119 -0
- package/dist/chunk-IXPTECSC.js +403 -0
- package/dist/chunk-J255A3N5.js +71 -0
- package/dist/chunk-J5F5HPPW.js +141 -0
- package/dist/chunk-JDTGRRNU.js +5045 -0
- package/dist/chunk-JDTGRRNU.js.map +1 -0
- package/dist/chunk-JEA3QDX7.js +2469 -0
- package/dist/chunk-JEUPAVYY.js +156 -0
- package/dist/chunk-JKHKLL5W.js +194 -0
- package/dist/chunk-JQL7ZH6C.js +650 -0
- package/dist/chunk-JWB44UGJ.js +57 -0
- package/dist/chunk-JZ4NLCAP.js +333 -0
- package/dist/chunk-K2A5PXQ5.js +412 -0
- package/dist/chunk-K56XV3C3.js +623 -0
- package/dist/chunk-K6GAXXVA.js +23 -0
- package/dist/chunk-KCBMFSMS.js +199 -0
- package/dist/chunk-KF2FV3ZJ.js +268 -0
- package/dist/chunk-KJD65EJP.js +278 -0
- package/dist/chunk-KLEUWIMZ.js +386 -0
- package/dist/chunk-KODELWYT.js +309 -0
- package/dist/chunk-KRDR5RJD.js +83 -0
- package/dist/chunk-KUDGXAF7.js +914 -0
- package/dist/chunk-KY2R73CG.js +171 -0
- package/dist/chunk-KY2R73CG.js.map +1 -0
- package/dist/chunk-KYS77RPN.js +85 -0
- package/dist/chunk-L7YTNTIK.js +368 -0
- package/dist/chunk-LHPNABDH.js +686 -0
- package/dist/chunk-MFROMEKA.js +401 -0
- package/dist/chunk-MIHN76LX.js +2656 -0
- package/dist/chunk-MIYFS2XN.js +42 -0
- package/dist/chunk-MJUCFQMS.js +65 -0
- package/dist/chunk-MM4FNWI4.js +3064 -0
- package/dist/chunk-MNZG4OHU.js +790 -0
- package/dist/chunk-MVW6HNPI.js +250 -0
- package/dist/chunk-MVW6HNPI.js.map +1 -0
- package/dist/chunk-N6AACDUW.js +200 -0
- package/dist/chunk-NC55IFN3.js +781 -0
- package/dist/chunk-NC7PVOEK.js +98 -0
- package/dist/chunk-NCYMNCJO.js +70 -0
- package/dist/chunk-ND2BXV3P.js +259 -0
- package/dist/chunk-NDBTFUO6.js +272 -0
- package/dist/chunk-NDQJZ7HF.js +206 -0
- package/dist/chunk-NGJJJPZZ.js +162 -0
- package/dist/chunk-NJTSNNE7.js +251 -0
- package/dist/chunk-NPGISCU6.js +4159 -0
- package/dist/chunk-NPGISCU6.js.map +1 -0
- package/dist/chunk-NRTE7DNV.js +1270 -0
- package/dist/chunk-NULUNM7H.js +290 -0
- package/dist/chunk-NUNZS36W.js +227 -0
- package/dist/chunk-NW53H5RW.js +2424 -0
- package/dist/chunk-NXCMHIKI.js +263 -0
- package/dist/chunk-O3LKCBP5.js +159 -0
- package/dist/chunk-O4EA4F3W.js +103 -0
- package/dist/chunk-O4EA4F3W.js.map +1 -0
- package/dist/chunk-O4OOG3D6.js +116 -0
- package/dist/chunk-O4OOG3D6.js.map +1 -0
- package/dist/chunk-O6N4ABCA.js +376 -0
- package/dist/chunk-O732GAFC.js +112 -0
- package/dist/chunk-OF4TIKYC.js +690 -0
- package/dist/chunk-OMPVOMPP.js +70 -0
- package/dist/chunk-OPJJSKUK.js +118 -0
- package/dist/chunk-OPWCMA4D.js +196 -0
- package/dist/chunk-ORJPS5VN.js +1193 -0
- package/dist/chunk-OSY5K7L7.js +187 -0
- package/dist/chunk-OV6QJRT4.js +45 -0
- package/dist/chunk-OVKYVZMW.js +108 -0
- package/dist/chunk-OZCBM3UC.js +171 -0
- package/dist/chunk-P3A2EINJ.js +61 -0
- package/dist/chunk-PTAG4PDC.js +27 -0
- package/dist/chunk-PTF5B7TJ.js +298 -0
- package/dist/chunk-Q3DPEYX4.js +848 -0
- package/dist/chunk-Q6CGOPJD.js +215 -0
- package/dist/chunk-Q6CGOPJD.js.map +1 -0
- package/dist/chunk-QB2KMIDP.js +100 -0
- package/dist/chunk-QCSJ4CWE.js +1067 -0
- package/dist/chunk-QIOQ2NPQ.js +414 -0
- package/dist/chunk-QK5EFEUT.js +353 -0
- package/dist/chunk-QPQBLYQJ.js +41 -0
- package/dist/chunk-QPSGCC5D.js +184 -0
- package/dist/chunk-QZAAUQRN.js +474 -0
- package/dist/chunk-QZM6YDJW.js +489 -0
- package/dist/chunk-QZM6YDJW.js.map +1 -0
- package/dist/chunk-RGBI63KJ.js +188 -0
- package/dist/chunk-RLBKLAEY.js +138 -0
- package/dist/chunk-RMFKVOM7.js +304 -0
- package/dist/chunk-ROKQU7WG.js +258 -0
- package/dist/chunk-RPVREAU7.js +251 -0
- package/dist/chunk-RQKLF42C.js +723 -0
- package/dist/chunk-SC6RRD2D.js +38 -0
- package/dist/chunk-SC6RRD2D.js.map +1 -0
- package/dist/chunk-SEO7TICN.js +94 -0
- package/dist/chunk-SHHJCL7X.js +432 -0
- package/dist/chunk-SIRLACNZ.js +114 -0
- package/dist/chunk-SKPHMYAA.js +237 -0
- package/dist/chunk-SODC7T6L.js +1583 -0
- package/dist/chunk-SQJIKMN3.js +366 -0
- package/dist/chunk-SVINDKVW.js +26 -0
- package/dist/chunk-SYCDHPZF.js +335 -0
- package/dist/chunk-T2QX3FDP.js +133 -0
- package/dist/chunk-T3OWFVMS.js +1187 -0
- package/dist/chunk-T6XI5FLY.js +61 -0
- package/dist/chunk-T7OXJZCX.js +62 -0
- package/dist/chunk-TAT5USZN.js +353 -0
- package/dist/chunk-TPQTRNER.js +172 -0
- package/dist/chunk-TUIN4MB7.js +266 -0
- package/dist/chunk-TX3VECZU.js +71 -0
- package/dist/chunk-TXLIEOJX.js +9624 -0
- package/dist/chunk-U3DN4HEY.js +27 -0
- package/dist/chunk-U7XM7CB4.js +191 -0
- package/dist/chunk-UJK53QFL.js +140 -0
- package/dist/chunk-UMTXA2TH.js +319 -0
- package/dist/chunk-UPDSXFK5.js +199 -0
- package/dist/chunk-UTIAXH52.js +269 -0
- package/dist/chunk-UVN5TMHU.js +1184 -0
- package/dist/chunk-V4Z4B2E3.js +52 -0
- package/dist/chunk-V4Z4B2E3.js.map +1 -0
- package/dist/chunk-VGYXW3VG.js +246 -0
- package/dist/chunk-VS7AHPCZ.js +255 -0
- package/dist/chunk-VTTAJOQ7.js +121 -0
- package/dist/chunk-VWPOLUAO.js +99 -0
- package/dist/chunk-X3MWB2QU.js +3851 -0
- package/dist/chunk-X6KAJI3V.js +211 -0
- package/dist/chunk-XBLRHV5R.js +50 -0
- package/dist/chunk-XDFP2LMW.js +605 -0
- package/dist/chunk-XEQMZB3C.js +525 -0
- package/dist/chunk-XEYLT5VA.js +223 -0
- package/dist/chunk-XHIQ5I6N.js +918 -0
- package/dist/chunk-XLH7QY2R.js +378 -0
- package/dist/chunk-XWFAMUZQ.js +113 -0
- package/dist/chunk-Y4BB2KS2.js +294 -0
- package/dist/chunk-Y4BB2KS2.js.map +1 -0
- package/dist/chunk-Y4OBB2VN.js +84 -0
- package/dist/chunk-YCVD6CI3.js +234 -0
- package/dist/chunk-YENLNISG.js +270 -0
- package/dist/chunk-YIRVLKAX.js +351 -0
- package/dist/chunk-YL73CVNK.js +390 -0
- package/dist/chunk-YLS6QE5G.js +288 -0
- package/dist/chunk-YNF2OC54.js +366 -0
- package/dist/chunk-YNF2OC54.js.map +1 -0
- package/dist/chunk-YPWU5KPE.js +147 -0
- package/dist/chunk-YQXTDZSU.js +2984 -0
- package/dist/chunk-YSJEAAOL.js +178 -0
- package/dist/chunk-YWIFM7D7.js +499 -0
- package/dist/chunk-YWVI6ZMK.js +103 -0
- package/dist/chunk-Z4FMAFNH.js +847 -0
- package/dist/chunk-Z654FWNU.js +136 -0
- package/dist/chunk-Z7Y523PS.js +130 -0
- package/dist/chunk-ZD67RM6G.js +60 -0
- package/dist/chunk-ZEG4VPBL.js +187 -0
- package/dist/chunk-ZHDFQITM.js +283 -0
- package/dist/chunk-ZHDFQITM.js.map +1 -0
- package/dist/chunk-ZLYCOBHW.js +75 -0
- package/dist/chunk-ZNJ5MTXV.js +89 -0
- package/dist/chunk-ZSGY3H53.js +155 -0
- package/dist/chunk-ZTPXACWB.js +1788 -0
- package/dist/chunk-ZUA3JMI6.js +107 -0
- package/dist/chunk-ZYAZUPPV.js +559 -0
- package/dist/composer.js +8 -8
- package/dist/computer-viewer-TDDO25AV.js +21 -0
- package/dist/connect.js +12 -12
- package/dist/desktop-dictation.js +12 -10
- package/dist/desktop-dictation.js.map +1 -1
- package/dist/desktop.js +2 -2
- package/dist/editor.js +2 -2
- package/dist/embedded-new-voice-2G3VLPVQ.js +24 -0
- package/dist/embedded-voice-T5IWOWGD.js +24 -0
- package/dist/fleet-decision-row-WM64KXP3.js +361 -0
- package/dist/in-chat-connect-model.js +5 -5
- package/dist/index.js +51 -51
- package/dist/interaction.js +5 -5
- package/dist/machines.js +3 -3
- package/dist/meetings-recorder.js +1 -1
- package/dist/meetings.js +40 -32
- package/dist/meetings.js.map +1 -1
- package/dist/messages/en.d.ts +3 -0
- package/dist/messages.js +1 -1
- package/dist/model-policy-picker-menu-SMC6J6QN.js +22 -0
- package/dist/payment-page-card-G4U63KUV.js +223 -0
- package/dist/platform-activity-row-BUZGZAKZ.js +128 -0
- package/dist/queue-surface-implementation-4KUZ4PJV.js +908 -0
- package/dist/realtime.js +4 -4
- package/dist/recorder-host-WF2RRR56.js +69 -0
- package/dist/recorder-host-WF2RRR56.js.map +1 -0
- package/dist/recordings.js +3 -3
- package/dist/sandbox-files-ESDMOFSD.js +27 -0
- package/dist/session-app.js +211 -209
- package/dist/session-connect-cards-Q53KMMYY.js +25 -0
- package/dist/session-list-model.js +2 -2
- package/dist/session-realtime-CF3I35WJ.js +30 -0
- package/dist/session-realtime.js +2 -2
- package/dist/session-ui.js +33 -31
- package/dist/session.js +5 -5
- package/dist/sites.js +2 -2
- package/dist/terminal.js +2 -2
- package/dist/this-computer.js +3 -3
- package/dist/timeline-annotation-markers-CJK4RYZ4.js +157 -0
- package/dist/timeline-annotation-selection-67GF5H26.js +208 -0
- package/dist/timeline-annotations-dialog-ONJPQDJQ.js +283 -0
- package/dist/ui/access-list.js +11 -9
- package/dist/ui/access-list.js.map +1 -1
- package/dist/ui/api-error.d.ts +6 -3
- package/dist/ui/api-error.js +2 -1
- package/dist/ui/cadence-picker.js +6 -4
- package/dist/ui/choice-cards.js +5 -3
- package/dist/ui/confirm-dialog.js +2 -2
- package/dist/ui/copy-field.js +5 -3
- package/dist/ui/detail-page.js +2 -2
- package/dist/ui/detail-sheet.js +2 -2
- package/dist/ui/diff-view.js +4 -3
- package/dist/ui/disclosure.js +3 -3
- package/dist/ui/email-chips-input.js +5 -3
- package/dist/ui/error-message.js +2 -1
- package/dist/ui/error-reference.d.ts +15 -0
- package/dist/ui/error-text.d.ts +10 -0
- package/dist/ui/error-text.js +9 -0
- package/dist/ui/error-text.js.map +1 -0
- package/dist/ui/field.js +4 -2
- package/dist/ui/flush-form-page.js +8 -6
- package/dist/ui/form-dialog.js +7 -5
- package/dist/ui/list-row.js +3 -3
- package/dist/ui/load-failure.js +3 -2
- package/dist/ui/load-failure.js.map +1 -1
- package/dist/ui/notice.js +3 -1
- package/dist/ui/relative-time.js +2 -2
- package/dist/ui/revision-history.js +9 -7
- package/dist/ui/revision-history.js.map +1 -1
- package/dist/ui/role-select.js +10 -8
- package/dist/ui/segmented-control.js +4 -2
- package/dist/ui/select-menu.js +5 -3
- package/dist/ui/setting-row.js +3 -1
- package/dist/ui/switch.js +4 -2
- package/dist/ui/usage-meter.js +3 -3
- package/dist/ui/word-list-row.js +4 -2
- package/dist/usage.js +2 -2
- package/dist/workbench.js +4 -4
- package/package.json +5 -6
- package/src/app/app-state.tsx +126 -14
- package/src/app/components/artifacts/site-data.tsx +2 -2
- package/src/app/components/artifacts/site-settings.tsx +2 -2
- package/src/app/components/rail/session-list.tsx +7 -8
- package/src/app/components/rail/session-shell.tsx +3 -3
- package/src/app/components/repository-picker.tsx +8 -1
- package/src/app/components/session/model-context-inspector.tsx +2 -1
- package/src/app/components/session/session-admin-access.tsx +2 -2
- package/src/app/lib/actions/chat-operations.ts +4 -4
- package/src/app/lib/archive-session.test.tsx +265 -2
- package/src/app/lib/archive-session.tsx +175 -9
- package/src/app/lib/copy-link.ts +2 -2
- package/src/app/lib/inbox.tsx +2 -2
- package/src/app/lib/session-failure-toasts.ts +3 -2
- package/src/app/lib/toast.test.tsx +215 -0
- package/src/app/lib/toast.tsx +67 -2
- package/src/app/personal-github-reconnect.test.tsx +356 -0
- package/src/app/routes/artifacts.tsx +1 -2
- package/src/components/tool-action-review.tsx +14 -1
- package/src/meetings/delete-meeting-dialog.tsx +2 -1
- package/src/meetings/meeting-ask.tsx +2 -1
- package/src/meetings/meeting-detail-page.tsx +2 -1
- package/src/meetings/meeting-notes.tsx +2 -1
- package/src/meetings/meeting-settings.tsx +4 -1
- package/src/meetings/meeting-transcript.tsx +4 -1
- package/src/meetings/recorder-context.tsx +10 -0
- package/src/meetings/recorder-host.test.tsx +60 -2
- package/src/meetings/recorder-host.tsx +16 -3
- package/src/meetings/recorder-panel.tsx +2 -1
- package/src/meetings/recorder-workspace.test.tsx +26 -1
- package/src/messages/en.ts +6 -0
- package/src/ui/api-error.test.ts +29 -5
- package/src/ui/api-error.tsx +10 -4
- package/src/ui/error-message.tsx +8 -0
- package/src/ui/error-reference.test.ts +54 -0
- package/src/ui/error-reference.ts +51 -0
- package/src/ui/error-text.test.tsx +66 -0
- package/src/ui/error-text.tsx +49 -0
- package/src/ui/field.tsx +4 -1
- package/src/ui/notice.tsx +7 -2
- package/src/ui/setting-row.tsx +4 -1
- package/styles/app.css +12 -0
- package/styles/compiled.css +9 -0
- package/dist/browser-viewer-NOP5EAUO.js +0 -23
- package/dist/chat-interactive-block-G7O44JHR.js +0 -18
- package/dist/chunk-26RWVLRD.js +0 -135
- package/dist/chunk-2AHTY7OT.js +0 -247
- package/dist/chunk-2GDNWKSC.js +0 -3670
- package/dist/chunk-2JENKGCE.js +0 -339
- package/dist/chunk-2KYQC4T5.js +0 -155
- package/dist/chunk-2RREGDQH.js +0 -708
- package/dist/chunk-2T7DX6KR.js +0 -353
- package/dist/chunk-2VB2O4FQ.js +0 -920
- package/dist/chunk-2VTTKH23.js +0 -94
- package/dist/chunk-2XNG2KNT.js +0 -172
- package/dist/chunk-2YC6JQRO.js +0 -399
- package/dist/chunk-2ZVRJRXC.js +0 -27
- package/dist/chunk-35737UT4.js +0 -162
- package/dist/chunk-366XZ4PM.js +0 -41
- package/dist/chunk-36MIDGAH.js +0 -199
- package/dist/chunk-3FD76LXM.js +0 -212
- package/dist/chunk-3OVIXY4O.js +0 -213
- package/dist/chunk-3OVIXY4O.js.map +0 -1
- package/dist/chunk-3QNRBEYH.js +0 -432
- package/dist/chunk-3QX55WLC.js +0 -15
- package/dist/chunk-3USJPT2S.js +0 -1022
- package/dist/chunk-42CMQ5VR.js +0 -251
- package/dist/chunk-4LPOWQJY.js +0 -42
- package/dist/chunk-4NBTZRKT.js +0 -79
- package/dist/chunk-4OXI6HCV.js +0 -118
- package/dist/chunk-4SZZAFYQ.js +0 -2317
- package/dist/chunk-4TQL3WP2.js +0 -140
- package/dist/chunk-4Y6BK7IU.js +0 -196
- package/dist/chunk-4YD7YZC5.js +0 -373
- package/dist/chunk-5DTST3TP.js +0 -81
- package/dist/chunk-5FH5LQVS.js +0 -130
- package/dist/chunk-5KWMYPJV.js +0 -847
- package/dist/chunk-5MUJDC6C.js +0 -84
- package/dist/chunk-5QM2WPKV.js +0 -41
- package/dist/chunk-5WUN7XPD.js +0 -1184
- package/dist/chunk-64PO2WXU.js +0 -1067
- package/dist/chunk-6AHATAAY.js +0 -431
- package/dist/chunk-6ED2YWBT.js +0 -56
- package/dist/chunk-6GXVYAGR.js +0 -170
- package/dist/chunk-6H4SJBPE.js +0 -85
- package/dist/chunk-6MT3HHUB.js +0 -84
- package/dist/chunk-6UHCBH4G.js +0 -198
- package/dist/chunk-6WLX3NR3.js +0 -198
- package/dist/chunk-73NXYYWE.js +0 -112
- package/dist/chunk-76ERNKIZ.js +0 -603
- package/dist/chunk-776QZ573.js +0 -57
- package/dist/chunk-7BYWOFVH.js +0 -171
- package/dist/chunk-7O5CGGIQ.js +0 -108
- package/dist/chunk-7QOHRZ67.js +0 -251
- package/dist/chunk-7WIDB4PL.js +0 -2058
- package/dist/chunk-7WKP3DYJ.js +0 -37
- package/dist/chunk-7XOVTPDI.js +0 -227
- package/dist/chunk-AB5MBIXY.js +0 -281
- package/dist/chunk-ADNMXBCX.js +0 -1193
- package/dist/chunk-AFBJTUFK.js +0 -202
- package/dist/chunk-ALVRWCXE.js +0 -61
- package/dist/chunk-AOHU6O3M.js +0 -247
- package/dist/chunk-AOHU6O3M.js.map +0 -1
- package/dist/chunk-APW4T4SW.js +0 -270
- package/dist/chunk-AXBSYWKX.js +0 -2656
- package/dist/chunk-B2I5ZW35.js +0 -422
- package/dist/chunk-B3LMRTRF.js +0 -223
- package/dist/chunk-BE2XENG2.js +0 -292
- package/dist/chunk-BE2XENG2.js.map +0 -1
- package/dist/chunk-BF4SADKX.js +0 -29
- package/dist/chunk-BKP43KK4.js +0 -1788
- package/dist/chunk-BM3NEZ6X.js +0 -781
- package/dist/chunk-BT3BAGB5.js +0 -216
- package/dist/chunk-BTSYDIVJ.js +0 -357
- package/dist/chunk-BUBNGKWG.js +0 -70
- package/dist/chunk-BVUJV5WR.js +0 -126
- package/dist/chunk-BZO5ZMUP.js +0 -27
- package/dist/chunk-C3HUF3M2.js +0 -157
- package/dist/chunk-C5QCAOES.js +0 -264
- package/dist/chunk-CGK6ALQU.js +0 -159
- package/dist/chunk-CPYGO76Q.js +0 -335
- package/dist/chunk-CQH4FWYA.js +0 -490
- package/dist/chunk-CZP5QXNB.js +0 -234
- package/dist/chunk-D2TOWEYH.js +0 -266
- package/dist/chunk-D6L4GHRH.js +0 -340
- package/dist/chunk-DKT3N37I.js +0 -50
- package/dist/chunk-DMMJIFKA.js +0 -84
- package/dist/chunk-DO74DQC7.js +0 -26
- package/dist/chunk-DOFJZ2JU.js +0 -83
- package/dist/chunk-DSXVY5WZ.js +0 -119
- package/dist/chunk-E337C2VK.js +0 -82
- package/dist/chunk-E6NRSRBE.js +0 -114
- package/dist/chunk-E6SQKHAU.js +0 -114
- package/dist/chunk-E7UIVD7F.js +0 -236
- package/dist/chunk-EGBII4CP.js +0 -229
- package/dist/chunk-EILSAQVJ.js +0 -200
- package/dist/chunk-ELL6HSYR.js +0 -307
- package/dist/chunk-EUBGLFFR.js +0 -73
- package/dist/chunk-EW6RNWSH.js +0 -212
- package/dist/chunk-EYUT5Y6V.js +0 -2599
- package/dist/chunk-F7U3QPZ3.js +0 -304
- package/dist/chunk-FBTJKSTM.js +0 -1270
- package/dist/chunk-FC2FTSK3.js +0 -2424
- package/dist/chunk-FOGNA3BU.js +0 -148
- package/dist/chunk-FQFKHNC7.js +0 -650
- package/dist/chunk-FTCHM755.js +0 -50
- package/dist/chunk-FXSHP4JZ.js +0 -3550
- package/dist/chunk-G6ZZC543.js +0 -818
- package/dist/chunk-G7FU6PUA.js +0 -100
- package/dist/chunk-GA4YEAMX.js +0 -3851
- package/dist/chunk-GE33BGB7.js +0 -12
- package/dist/chunk-GQ67HSJY.js +0 -570
- package/dist/chunk-GXXZ3WAK.js +0 -106
- package/dist/chunk-H2TCRX3H.js +0 -237
- package/dist/chunk-HLL4PBO7.js +0 -60
- package/dist/chunk-HLOEPV5C.js +0 -259
- package/dist/chunk-HUAGBS4O.js +0 -56
- package/dist/chunk-I36GSRUJ.js +0 -211
- package/dist/chunk-I6VBHT7S.js +0 -261
- package/dist/chunk-ICNNNOXE.js +0 -333
- package/dist/chunk-ICX64J4U.js +0 -172
- package/dist/chunk-ID36Y46W.js +0 -5046
- package/dist/chunk-ID36Y46W.js.map +0 -1
- package/dist/chunk-IGVVXLKJ.js +0 -559
- package/dist/chunk-IKJLSBUI.js +0 -2984
- package/dist/chunk-IKMUFDVS.js +0 -50
- package/dist/chunk-IKUNOX7F.js +0 -255
- package/dist/chunk-ILKDYBON.js +0 -288
- package/dist/chunk-IVYJX3OY.js +0 -187
- package/dist/chunk-JCY4CMDH.js +0 -107
- package/dist/chunk-JJZPLGIP.js +0 -474
- package/dist/chunk-JW33RV4V.js +0 -143
- package/dist/chunk-JWPA6ZPZ.js +0 -351
- package/dist/chunk-JZ4QXS6D.js +0 -50
- package/dist/chunk-K42OUZQ3.js +0 -386
- package/dist/chunk-K5TOVX5A.js +0 -206
- package/dist/chunk-K63HGHZX.js +0 -99
- package/dist/chunk-K6R5T44I.js +0 -75
- package/dist/chunk-KHJ5PXFM.js +0 -914
- package/dist/chunk-KJZRQ55O.js +0 -2319
- package/dist/chunk-KJZRQ55O.js.map +0 -1
- package/dist/chunk-KKI55ZMW.js +0 -65
- package/dist/chunk-KRPLAAFP.js +0 -199
- package/dist/chunk-KVFEZDBO.js +0 -134
- package/dist/chunk-L4I665WK.js +0 -45
- package/dist/chunk-L4OF77LE.js +0 -110
- package/dist/chunk-L4OF77LE.js.map +0 -1
- package/dist/chunk-LA5T52RM.js +0 -70
- package/dist/chunk-LM2W5YAT.js +0 -401
- package/dist/chunk-LQ62ECE6.js +0 -390
- package/dist/chunk-LQDUHU3Y.js +0 -71
- package/dist/chunk-LRJIYTZW.js +0 -4157
- package/dist/chunk-LRJIYTZW.js.map +0 -1
- package/dist/chunk-LRN6GYAZ.js +0 -138
- package/dist/chunk-M4SDVTKJ.js +0 -790
- package/dist/chunk-MA6O7CM6.js +0 -99
- package/dist/chunk-MBIBB6GI.js +0 -197
- package/dist/chunk-MF3ZFB4H.js +0 -199
- package/dist/chunk-MJJGJMYJ.js +0 -98
- package/dist/chunk-MLJADQFI.js +0 -4824
- package/dist/chunk-MQG7RV3B.js +0 -62
- package/dist/chunk-MTTGSQA5.js +0 -186
- package/dist/chunk-MW7Y3T55.js +0 -525
- package/dist/chunk-MYUFMVCH.js +0 -121
- package/dist/chunk-N3OARGH2.js +0 -61
- package/dist/chunk-NB2HMRT2.js +0 -353
- package/dist/chunk-NFDFYWMV.js +0 -141
- package/dist/chunk-NWGNFN3N.js +0 -1187
- package/dist/chunk-NWJRPDIO.js +0 -840
- package/dist/chunk-NWJRPDIO.js.map +0 -1
- package/dist/chunk-NXWBBZJV.js +0 -267
- package/dist/chunk-NY2QWROL.js +0 -71
- package/dist/chunk-O2IOPP3R.js +0 -848
- package/dist/chunk-O2UWH5RG.js +0 -141
- package/dist/chunk-O5YWDLYF.js +0 -393
- package/dist/chunk-OBMCZO7E.js +0 -121
- package/dist/chunk-OD3DCCCB.js +0 -132
- package/dist/chunk-OMH7R6I3.js +0 -390
- package/dist/chunk-OSA5EQG5.js +0 -113
- package/dist/chunk-OSJ3MUTZ.js +0 -2936
- package/dist/chunk-OWAYJ2OV.js +0 -368
- package/dist/chunk-OYXBFSGK.js +0 -269
- package/dist/chunk-PC2EBA5G.js +0 -4116
- package/dist/chunk-PC2EBA5G.js.map +0 -1
- package/dist/chunk-PC2MVXIP.js +0 -363
- package/dist/chunk-PC2MVXIP.js.map +0 -1
- package/dist/chunk-PENGLDR5.js +0 -309
- package/dist/chunk-PSMAWRPL.js +0 -191
- package/dist/chunk-PW4IMTYR.js +0 -702
- package/dist/chunk-PW54V7T5.js +0 -387
- package/dist/chunk-Q2EXYSMO.js +0 -24
- package/dist/chunk-Q2XJK5I4.js +0 -51
- package/dist/chunk-Q2XJK5I4.js.map +0 -1
- package/dist/chunk-Q4EFRI6X.js +0 -258
- package/dist/chunk-Q52CXW6C.js +0 -48
- package/dist/chunk-Q6XQ2R37.js +0 -184
- package/dist/chunk-QAJ53XBW.js +0 -23
- package/dist/chunk-QDTKECT4.js +0 -129
- package/dist/chunk-QE3ZFGI3.js +0 -43
- package/dist/chunk-QHHSUR2Y.js +0 -298
- package/dist/chunk-QHNVNR7B.js +0 -173
- package/dist/chunk-QIK2Q6N5.js +0 -376
- package/dist/chunk-QWL4L366.js +0 -38
- package/dist/chunk-R3J2PTVQ.js +0 -690
- package/dist/chunk-RBRX5ZS3.js +0 -319
- package/dist/chunk-REX6JIC7.js +0 -33
- package/dist/chunk-RGZ7EEC3.js +0 -537
- package/dist/chunk-RGZ7EEC3.js.map +0 -1
- package/dist/chunk-RIPS7GFR.js +0 -960
- package/dist/chunk-RTBZNFNV.js +0 -1354
- package/dist/chunk-RTBZNFNV.js.map +0 -1
- package/dist/chunk-SKMNW4SW.js +0 -187
- package/dist/chunk-SRFARKXC.js +0 -623
- package/dist/chunk-SWIHWCTW.js +0 -4461
- package/dist/chunk-TA5CFTO4.js +0 -103
- package/dist/chunk-TF4ZVJLI.js +0 -156
- package/dist/chunk-TG7DADJR.js +0 -9624
- package/dist/chunk-TI4R2ZD5.js +0 -623
- package/dist/chunk-TI4R2ZD5.js.map +0 -1
- package/dist/chunk-TNKWOUWP.js +0 -412
- package/dist/chunk-TNUSPXPW.js +0 -5555
- package/dist/chunk-TNUSPXPW.js.map +0 -1
- package/dist/chunk-TNYFHKVV.js +0 -366
- package/dist/chunk-TPMZBOFH.js +0 -178
- package/dist/chunk-TW3LKRJF.js +0 -263
- package/dist/chunk-TZAO65I4.js +0 -83
- package/dist/chunk-U5EFEMYU.js +0 -89
- package/dist/chunk-U6M4LS3M.js +0 -378
- package/dist/chunk-UI4HI5QK.js +0 -918
- package/dist/chunk-UJDOWCQ3.js +0 -272
- package/dist/chunk-UJUQ2QOX.js +0 -581
- package/dist/chunk-UQ3IM6FY.js +0 -133
- package/dist/chunk-UYE47LO6.js +0 -246
- package/dist/chunk-VADHIT26.js +0 -89
- package/dist/chunk-VFQ3H6CO.js +0 -163
- package/dist/chunk-VGUN6VB2.js +0 -188
- package/dist/chunk-VGWWEVSD.js +0 -723
- package/dist/chunk-VIEFJ2DM.js +0 -2469
- package/dist/chunk-VLXM36VS.js +0 -268
- package/dist/chunk-W3BFRR2G.js +0 -499
- package/dist/chunk-W5MPXR3A.js +0 -981
- package/dist/chunk-W5OWKVZG.js +0 -136
- package/dist/chunk-W6FRORMX.js +0 -486
- package/dist/chunk-W6FRORMX.js.map +0 -1
- package/dist/chunk-W7XROSZO.js +0 -232
- package/dist/chunk-W7XROSZO.js.map +0 -1
- package/dist/chunk-WEZ5PXZP.js +0 -403
- package/dist/chunk-WHWUWN2X.js +0 -197
- package/dist/chunk-WHWUWN2X.js.map +0 -1
- package/dist/chunk-WLEDGIVS.js +0 -114
- package/dist/chunk-WLEDGIVS.js.map +0 -1
- package/dist/chunk-WNDAKLHG.js +0 -281
- package/dist/chunk-WTJ4PLMU.js +0 -103
- package/dist/chunk-WV2KPJUW.js +0 -107
- package/dist/chunk-X3VY5EGY.js +0 -277
- package/dist/chunk-X3VY5EGY.js.map +0 -1
- package/dist/chunk-XDBYWVCW.js +0 -418
- package/dist/chunk-XF7MA4U5.js +0 -36
- package/dist/chunk-XF7MA4U5.js.map +0 -1
- package/dist/chunk-XOSQP3YA.js +0 -605
- package/dist/chunk-XYBV4ZJQ.js +0 -271
- package/dist/chunk-YBKVGLQR.js +0 -147
- package/dist/chunk-YDCUBUWH.js +0 -1583
- package/dist/chunk-YG6NARQY.js +0 -51
- package/dist/chunk-YG6NARQY.js.map +0 -1
- package/dist/chunk-YSVD5HI4.js +0 -278
- package/dist/chunk-YT3WGNG6.js +0 -290
- package/dist/chunk-YYICQDK4.js +0 -414
- package/dist/chunk-YYLMZLI6.js +0 -686
- package/dist/chunk-ZAMTKG5U.js +0 -95
- package/dist/chunk-ZDLYSXKN.js +0 -111
- package/dist/chunk-ZG447FSS.js +0 -194
- package/dist/chunk-ZIT5KD4Q.js +0 -264
- package/dist/chunk-ZUDOVDKR.js +0 -3064
- package/dist/chunk-ZW2ECJ3A.js +0 -451
- package/dist/computer-viewer-LPZ763KF.js +0 -21
- package/dist/embedded-new-voice-YVMKSLKJ.js +0 -24
- package/dist/embedded-voice-BJPQFXSU.js +0 -24
- package/dist/fleet-decision-row-AA4H5CDT.js +0 -361
- package/dist/model-policy-picker-menu-HSMWVO4P.js +0 -22
- package/dist/payment-page-card-3LTSFJGN.js +0 -223
- package/dist/platform-activity-row-5VYV6TX4.js +0 -128
- package/dist/queue-surface-implementation-NXHZUKD2.js +0 -908
- package/dist/recorder-host-ZKRWTDBM.js +0 -57
- package/dist/recorder-host-ZKRWTDBM.js.map +0 -1
- package/dist/sandbox-files-YCMLQUFU.js +0 -27
- package/dist/session-connect-cards-KSQLMRM5.js +0 -25
- package/dist/session-realtime-ZR6JLG3Y.js +0 -30
- package/dist/timeline-annotation-markers-YAHDPWVG.js +0 -157
- package/dist/timeline-annotation-selection-KHXNCEJP.js +0 -208
- package/dist/timeline-annotations-dialog-Y4XD3N7B.js +0 -283
- /package/dist/{browser-viewer-NOP5EAUO.js.map → browser-viewer-TC27OCIP.js.map} +0 -0
- /package/dist/{chat-interactive-block-G7O44JHR.js.map → chat-interactive-block-RWPQBHVS.js.map} +0 -0
- /package/dist/{chunk-EGBII4CP.js.map → chunk-2BDT3UZQ.js.map} +0 -0
- /package/dist/{chunk-4YD7YZC5.js.map → chunk-2CLNIEK4.js.map} +0 -0
- /package/dist/{chunk-ZW2ECJ3A.js.map → chunk-2FSBSCZJ.js.map} +0 -0
- /package/dist/{chunk-KRPLAAFP.js.map → chunk-2I7HDP53.js.map} +0 -0
- /package/dist/{chunk-3QX55WLC.js.map → chunk-2INLDVK3.js.map} +0 -0
- /package/dist/{chunk-BVUJV5WR.js.map → chunk-2KALVELR.js.map} +0 -0
- /package/dist/{chunk-XDBYWVCW.js.map → chunk-2M3J7ZWQ.js.map} +0 -0
- /package/dist/{chunk-2RREGDQH.js.map → chunk-2OP6WLGV.js.map} +0 -0
- /package/dist/{chunk-OSJ3MUTZ.js.map → chunk-2RG7NIAS.js.map} +0 -0
- /package/dist/{chunk-26RWVLRD.js.map → chunk-2STUPWEL.js.map} +0 -0
- /package/dist/{chunk-XYBV4ZJQ.js.map → chunk-2YUOVM3G.js.map} +0 -0
- /package/dist/{chunk-2GDNWKSC.js.map → chunk-2Z3NQNTM.js.map} +0 -0
- /package/dist/{chunk-2VB2O4FQ.js.map → chunk-3CPWWGNK.js.map} +0 -0
- /package/dist/{chunk-7WKP3DYJ.js.map → chunk-3ED2U6XE.js.map} +0 -0
- /package/dist/{chunk-BT3BAGB5.js.map → chunk-3GZA4BUW.js.map} +0 -0
- /package/dist/{chunk-3USJPT2S.js.map → chunk-3IK6UYO6.js.map} +0 -0
- /package/dist/{chunk-6AHATAAY.js.map → chunk-3PZ7JZI2.js.map} +0 -0
- /package/dist/{chunk-JZ4QXS6D.js.map → chunk-4DVJ6ONS.js.map} +0 -0
- /package/dist/{chunk-5QM2WPKV.js.map → chunk-4E3ZJRTZ.js.map} +0 -0
- /package/dist/{chunk-NFDFYWMV.js.map → chunk-4SAWSRAA.js.map} +0 -0
- /package/dist/{chunk-ELL6HSYR.js.map → chunk-53AGXXZM.js.map} +0 -0
- /package/dist/{chunk-G6ZZC543.js.map → chunk-54YW6SZZ.js.map} +0 -0
- /package/dist/{chunk-4SZZAFYQ.js.map → chunk-57AZS3IE.js.map} +0 -0
- /package/dist/{chunk-JW33RV4V.js.map → chunk-5CPEEAFD.js.map} +0 -0
- /package/dist/{chunk-D6L4GHRH.js.map → chunk-5EWSRZ2Y.js.map} +0 -0
- /package/dist/{chunk-PW54V7T5.js.map → chunk-5IE76VCY.js.map} +0 -0
- /package/dist/{chunk-6GXVYAGR.js.map → chunk-5NWEKLDZ.js.map} +0 -0
- /package/dist/{chunk-6UHCBH4G.js.map → chunk-5O2FCCHZ.js.map} +0 -0
- /package/dist/{chunk-2YC6JQRO.js.map → chunk-5QAY6K77.js.map} +0 -0
- /package/dist/{chunk-EYUT5Y6V.js.map → chunk-6DK6Z4UN.js.map} +0 -0
- /package/dist/{chunk-PW4IMTYR.js.map → chunk-6DVCC7QS.js.map} +0 -0
- /package/dist/{chunk-7WIDB4PL.js.map → chunk-6JHU2UBS.js.map} +0 -0
- /package/dist/{chunk-CQH4FWYA.js.map → chunk-6PZ7OBYU.js.map} +0 -0
- /package/dist/{chunk-VFQ3H6CO.js.map → chunk-6WGRDRMA.js.map} +0 -0
- /package/dist/{chunk-MTTGSQA5.js.map → chunk-77WAKEAH.js.map} +0 -0
- /package/dist/{chunk-O5YWDLYF.js.map → chunk-7TDO3CUM.js.map} +0 -0
- /package/dist/{chunk-2AHTY7OT.js.map → chunk-7TIX2UAR.js.map} +0 -0
- /package/dist/{chunk-FOGNA3BU.js.map → chunk-7V5REBCP.js.map} +0 -0
- /package/dist/{chunk-2JENKGCE.js.map → chunk-7VMZGLYI.js.map} +0 -0
- /package/dist/{chunk-E7UIVD7F.js.map → chunk-7W37NS3I.js.map} +0 -0
- /package/dist/{chunk-ZDLYSXKN.js.map → chunk-7X6SDK2C.js.map} +0 -0
- /package/dist/{chunk-ZAMTKG5U.js.map → chunk-7ZNUHRP5.js.map} +0 -0
- /package/dist/{chunk-DMMJIFKA.js.map → chunk-A36PZALD.js.map} +0 -0
- /package/dist/{chunk-WV2KPJUW.js.map → chunk-AUI6VA63.js.map} +0 -0
- /package/dist/{chunk-Q2EXYSMO.js.map → chunk-AW2MQB37.js.map} +0 -0
- /package/dist/{chunk-6WLX3NR3.js.map → chunk-AWKES45Y.js.map} +0 -0
- /package/dist/{chunk-OD3DCCCB.js.map → chunk-AXHZYXUV.js.map} +0 -0
- /package/dist/{chunk-QDTKECT4.js.map → chunk-BHNSJVBC.js.map} +0 -0
- /package/dist/{chunk-FTCHM755.js.map → chunk-BJEJFISW.js.map} +0 -0
- /package/dist/{chunk-B2I5ZW35.js.map → chunk-BJFH6JI5.js.map} +0 -0
- /package/dist/{chunk-RIPS7GFR.js.map → chunk-BMICEQZQ.js.map} +0 -0
- /package/dist/{chunk-BF4SADKX.js.map → chunk-BTLBYBLU.js.map} +0 -0
- /package/dist/{chunk-U5EFEMYU.js.map → chunk-BXBDYNRP.js.map} +0 -0
- /package/dist/{chunk-BTSYDIVJ.js.map → chunk-C372BFOV.js.map} +0 -0
- /package/dist/{chunk-MLJADQFI.js.map → chunk-CMKGILJK.js.map} +0 -0
- /package/dist/{chunk-DKT3N37I.js.map → chunk-CRAOSVHC.js.map} +0 -0
- /package/dist/{chunk-WNDAKLHG.js.map → chunk-CRU35QQH.js.map} +0 -0
- /package/dist/{chunk-2XNG2KNT.js.map → chunk-CUIWCGMA.js.map} +0 -0
- /package/dist/{chunk-QWL4L366.js.map → chunk-D5TWNFFE.js.map} +0 -0
- /package/dist/{chunk-SWIHWCTW.js.map → chunk-DF5EAHDN.js.map} +0 -0
- /package/dist/{chunk-HUAGBS4O.js.map → chunk-DJAXC5OK.js.map} +0 -0
- /package/dist/{chunk-FXSHP4JZ.js.map → chunk-DXBYWSL5.js.map} +0 -0
- /package/dist/{chunk-5MUJDC6C.js.map → chunk-DXR5PDFP.js.map} +0 -0
- /package/dist/{chunk-NXWBBZJV.js.map → chunk-DZWARC4M.js.map} +0 -0
- /package/dist/{chunk-GXXZ3WAK.js.map → chunk-DZXEDSQI.js.map} +0 -0
- /package/dist/{chunk-Q52CXW6C.js.map → chunk-E7XERZWC.js.map} +0 -0
- /package/dist/{chunk-4NBTZRKT.js.map → chunk-ECJBYNLJ.js.map} +0 -0
- /package/dist/{chunk-QE3ZFGI3.js.map → chunk-EDI6SJ2N.js.map} +0 -0
- /package/dist/{chunk-E6NRSRBE.js.map → chunk-EWSOC6WF.js.map} +0 -0
- /package/dist/{chunk-TA5CFTO4.js.map → chunk-F2OPHAUN.js.map} +0 -0
- /package/dist/{chunk-5DTST3TP.js.map → chunk-F4ISQGGM.js.map} +0 -0
- /package/dist/{chunk-MBIBB6GI.js.map → chunk-FO4LYKJL.js.map} +0 -0
- /package/dist/{chunk-EUBGLFFR.js.map → chunk-FPXASDG5.js.map} +0 -0
- /package/dist/{chunk-C3HUF3M2.js.map → chunk-FVXBNBHO.js.map} +0 -0
- /package/dist/{chunk-W5MPXR3A.js.map → chunk-FZC5N55X.js.map} +0 -0
- /package/dist/{chunk-MA6O7CM6.js.map → chunk-GAVYGBFI.js.map} +0 -0
- /package/dist/{chunk-REX6JIC7.js.map → chunk-GKVJIDHF.js.map} +0 -0
- /package/dist/{chunk-EW6RNWSH.js.map → chunk-GVN5SZLX.js.map} +0 -0
- /package/dist/{chunk-KVFEZDBO.js.map → chunk-H3T7IWNA.js.map} +0 -0
- /package/dist/{chunk-I6VBHT7S.js.map → chunk-HAX4LCR5.js.map} +0 -0
- /package/dist/{chunk-OBMCZO7E.js.map → chunk-HC4JFZVU.js.map} +0 -0
- /package/dist/{chunk-UJUQ2QOX.js.map → chunk-HEFPPMBQ.js.map} +0 -0
- /package/dist/{chunk-DOFJZ2JU.js.map → chunk-HNLR7Q4Z.js.map} +0 -0
- /package/dist/{chunk-GE33BGB7.js.map → chunk-HSOXMJOT.js.map} +0 -0
- /package/dist/{chunk-AB5MBIXY.js.map → chunk-I4MRDSUF.js.map} +0 -0
- /package/dist/{chunk-AFBJTUFK.js.map → chunk-I4QEJ62Y.js.map} +0 -0
- /package/dist/{chunk-6ED2YWBT.js.map → chunk-I5B5L6Q4.js.map} +0 -0
- /package/dist/{chunk-C5QCAOES.js.map → chunk-I5QZJODL.js.map} +0 -0
- /package/dist/{chunk-76ERNKIZ.js.map → chunk-I7ITSXSJ.js.map} +0 -0
- /package/dist/{chunk-OMH7R6I3.js.map → chunk-I7XIZRFD.js.map} +0 -0
- /package/dist/{chunk-E337C2VK.js.map → chunk-IDANQPRH.js.map} +0 -0
- /package/dist/{chunk-3FD76LXM.js.map → chunk-IFB3WJ36.js.map} +0 -0
- /package/dist/{chunk-ZIT5KD4Q.js.map → chunk-IHTAKKTK.js.map} +0 -0
- /package/dist/{chunk-QHNVNR7B.js.map → chunk-ILDXWY37.js.map} +0 -0
- /package/dist/{chunk-GQ67HSJY.js.map → chunk-IMDQUHBJ.js.map} +0 -0
- /package/dist/{chunk-DSXVY5WZ.js.map → chunk-IMZCQBOT.js.map} +0 -0
- /package/dist/{chunk-WEZ5PXZP.js.map → chunk-IXPTECSC.js.map} +0 -0
- /package/dist/{chunk-NY2QWROL.js.map → chunk-J255A3N5.js.map} +0 -0
- /package/dist/{chunk-O2UWH5RG.js.map → chunk-J5F5HPPW.js.map} +0 -0
- /package/dist/{chunk-VIEFJ2DM.js.map → chunk-JEA3QDX7.js.map} +0 -0
- /package/dist/{chunk-TF4ZVJLI.js.map → chunk-JEUPAVYY.js.map} +0 -0
- /package/dist/{chunk-ZG447FSS.js.map → chunk-JKHKLL5W.js.map} +0 -0
- /package/dist/{chunk-FQFKHNC7.js.map → chunk-JQL7ZH6C.js.map} +0 -0
- /package/dist/{chunk-776QZ573.js.map → chunk-JWB44UGJ.js.map} +0 -0
- /package/dist/{chunk-ICNNNOXE.js.map → chunk-JZ4NLCAP.js.map} +0 -0
- /package/dist/{chunk-TNKWOUWP.js.map → chunk-K2A5PXQ5.js.map} +0 -0
- /package/dist/{chunk-SRFARKXC.js.map → chunk-K56XV3C3.js.map} +0 -0
- /package/dist/{chunk-QAJ53XBW.js.map → chunk-K6GAXXVA.js.map} +0 -0
- /package/dist/{chunk-MF3ZFB4H.js.map → chunk-KCBMFSMS.js.map} +0 -0
- /package/dist/{chunk-VLXM36VS.js.map → chunk-KF2FV3ZJ.js.map} +0 -0
- /package/dist/{chunk-YSVD5HI4.js.map → chunk-KJD65EJP.js.map} +0 -0
- /package/dist/{chunk-K42OUZQ3.js.map → chunk-KLEUWIMZ.js.map} +0 -0
- /package/dist/{chunk-PENGLDR5.js.map → chunk-KODELWYT.js.map} +0 -0
- /package/dist/{chunk-TZAO65I4.js.map → chunk-KRDR5RJD.js.map} +0 -0
- /package/dist/{chunk-KHJ5PXFM.js.map → chunk-KUDGXAF7.js.map} +0 -0
- /package/dist/{chunk-6H4SJBPE.js.map → chunk-KYS77RPN.js.map} +0 -0
- /package/dist/{chunk-OWAYJ2OV.js.map → chunk-L7YTNTIK.js.map} +0 -0
- /package/dist/{chunk-YYLMZLI6.js.map → chunk-LHPNABDH.js.map} +0 -0
- /package/dist/{chunk-LM2W5YAT.js.map → chunk-MFROMEKA.js.map} +0 -0
- /package/dist/{chunk-AXBSYWKX.js.map → chunk-MIHN76LX.js.map} +0 -0
- /package/dist/{chunk-4LPOWQJY.js.map → chunk-MIYFS2XN.js.map} +0 -0
- /package/dist/{chunk-KKI55ZMW.js.map → chunk-MJUCFQMS.js.map} +0 -0
- /package/dist/{chunk-ZUDOVDKR.js.map → chunk-MM4FNWI4.js.map} +0 -0
- /package/dist/{chunk-M4SDVTKJ.js.map → chunk-MNZG4OHU.js.map} +0 -0
- /package/dist/{chunk-EILSAQVJ.js.map → chunk-N6AACDUW.js.map} +0 -0
- /package/dist/{chunk-BM3NEZ6X.js.map → chunk-NC55IFN3.js.map} +0 -0
- /package/dist/{chunk-MJJGJMYJ.js.map → chunk-NC7PVOEK.js.map} +0 -0
- /package/dist/{chunk-LA5T52RM.js.map → chunk-NCYMNCJO.js.map} +0 -0
- /package/dist/{chunk-HLOEPV5C.js.map → chunk-ND2BXV3P.js.map} +0 -0
- /package/dist/{chunk-UJDOWCQ3.js.map → chunk-NDBTFUO6.js.map} +0 -0
- /package/dist/{chunk-K5TOVX5A.js.map → chunk-NDQJZ7HF.js.map} +0 -0
- /package/dist/{chunk-35737UT4.js.map → chunk-NGJJJPZZ.js.map} +0 -0
- /package/dist/{chunk-42CMQ5VR.js.map → chunk-NJTSNNE7.js.map} +0 -0
- /package/dist/{chunk-FBTJKSTM.js.map → chunk-NRTE7DNV.js.map} +0 -0
- /package/dist/{chunk-YT3WGNG6.js.map → chunk-NULUNM7H.js.map} +0 -0
- /package/dist/{chunk-7XOVTPDI.js.map → chunk-NUNZS36W.js.map} +0 -0
- /package/dist/{chunk-FC2FTSK3.js.map → chunk-NW53H5RW.js.map} +0 -0
- /package/dist/{chunk-TW3LKRJF.js.map → chunk-NXCMHIKI.js.map} +0 -0
- /package/dist/{chunk-CGK6ALQU.js.map → chunk-O3LKCBP5.js.map} +0 -0
- /package/dist/{chunk-QIK2Q6N5.js.map → chunk-O6N4ABCA.js.map} +0 -0
- /package/dist/{chunk-73NXYYWE.js.map → chunk-O732GAFC.js.map} +0 -0
- /package/dist/{chunk-R3J2PTVQ.js.map → chunk-OF4TIKYC.js.map} +0 -0
- /package/dist/{chunk-BUBNGKWG.js.map → chunk-OMPVOMPP.js.map} +0 -0
- /package/dist/{chunk-4OXI6HCV.js.map → chunk-OPJJSKUK.js.map} +0 -0
- /package/dist/{chunk-4Y6BK7IU.js.map → chunk-OPWCMA4D.js.map} +0 -0
- /package/dist/{chunk-ADNMXBCX.js.map → chunk-ORJPS5VN.js.map} +0 -0
- /package/dist/{chunk-SKMNW4SW.js.map → chunk-OSY5K7L7.js.map} +0 -0
- /package/dist/{chunk-L4I665WK.js.map → chunk-OV6QJRT4.js.map} +0 -0
- /package/dist/{chunk-7O5CGGIQ.js.map → chunk-OVKYVZMW.js.map} +0 -0
- /package/dist/{chunk-7BYWOFVH.js.map → chunk-OZCBM3UC.js.map} +0 -0
- /package/dist/{chunk-ALVRWCXE.js.map → chunk-P3A2EINJ.js.map} +0 -0
- /package/dist/{chunk-BZO5ZMUP.js.map → chunk-PTAG4PDC.js.map} +0 -0
- /package/dist/{chunk-QHHSUR2Y.js.map → chunk-PTF5B7TJ.js.map} +0 -0
- /package/dist/{chunk-O2IOPP3R.js.map → chunk-Q3DPEYX4.js.map} +0 -0
- /package/dist/{chunk-G7FU6PUA.js.map → chunk-QB2KMIDP.js.map} +0 -0
- /package/dist/{chunk-64PO2WXU.js.map → chunk-QCSJ4CWE.js.map} +0 -0
- /package/dist/{chunk-YYICQDK4.js.map → chunk-QIOQ2NPQ.js.map} +0 -0
- /package/dist/{chunk-NB2HMRT2.js.map → chunk-QK5EFEUT.js.map} +0 -0
- /package/dist/{chunk-366XZ4PM.js.map → chunk-QPQBLYQJ.js.map} +0 -0
- /package/dist/{chunk-Q6XQ2R37.js.map → chunk-QPSGCC5D.js.map} +0 -0
- /package/dist/{chunk-JJZPLGIP.js.map → chunk-QZAAUQRN.js.map} +0 -0
- /package/dist/{chunk-VGUN6VB2.js.map → chunk-RGBI63KJ.js.map} +0 -0
- /package/dist/{chunk-LRN6GYAZ.js.map → chunk-RLBKLAEY.js.map} +0 -0
- /package/dist/{chunk-F7U3QPZ3.js.map → chunk-RMFKVOM7.js.map} +0 -0
- /package/dist/{chunk-Q4EFRI6X.js.map → chunk-ROKQU7WG.js.map} +0 -0
- /package/dist/{chunk-7QOHRZ67.js.map → chunk-RPVREAU7.js.map} +0 -0
- /package/dist/{chunk-VGWWEVSD.js.map → chunk-RQKLF42C.js.map} +0 -0
- /package/dist/{chunk-2VTTKH23.js.map → chunk-SEO7TICN.js.map} +0 -0
- /package/dist/{chunk-3QNRBEYH.js.map → chunk-SHHJCL7X.js.map} +0 -0
- /package/dist/{chunk-E6SQKHAU.js.map → chunk-SIRLACNZ.js.map} +0 -0
- /package/dist/{chunk-H2TCRX3H.js.map → chunk-SKPHMYAA.js.map} +0 -0
- /package/dist/{chunk-YDCUBUWH.js.map → chunk-SODC7T6L.js.map} +0 -0
- /package/dist/{chunk-TNYFHKVV.js.map → chunk-SQJIKMN3.js.map} +0 -0
- /package/dist/{chunk-DO74DQC7.js.map → chunk-SVINDKVW.js.map} +0 -0
- /package/dist/{chunk-CPYGO76Q.js.map → chunk-SYCDHPZF.js.map} +0 -0
- /package/dist/{chunk-UQ3IM6FY.js.map → chunk-T2QX3FDP.js.map} +0 -0
- /package/dist/{chunk-NWGNFN3N.js.map → chunk-T3OWFVMS.js.map} +0 -0
- /package/dist/{chunk-N3OARGH2.js.map → chunk-T6XI5FLY.js.map} +0 -0
- /package/dist/{chunk-MQG7RV3B.js.map → chunk-T7OXJZCX.js.map} +0 -0
- /package/dist/{chunk-2T7DX6KR.js.map → chunk-TAT5USZN.js.map} +0 -0
- /package/dist/{chunk-ICX64J4U.js.map → chunk-TPQTRNER.js.map} +0 -0
- /package/dist/{chunk-D2TOWEYH.js.map → chunk-TUIN4MB7.js.map} +0 -0
- /package/dist/{chunk-LQDUHU3Y.js.map → chunk-TX3VECZU.js.map} +0 -0
- /package/dist/{chunk-TG7DADJR.js.map → chunk-TXLIEOJX.js.map} +0 -0
- /package/dist/{chunk-2ZVRJRXC.js.map → chunk-U3DN4HEY.js.map} +0 -0
- /package/dist/{chunk-PSMAWRPL.js.map → chunk-U7XM7CB4.js.map} +0 -0
- /package/dist/{chunk-4TQL3WP2.js.map → chunk-UJK53QFL.js.map} +0 -0
- /package/dist/{chunk-RBRX5ZS3.js.map → chunk-UMTXA2TH.js.map} +0 -0
- /package/dist/{chunk-36MIDGAH.js.map → chunk-UPDSXFK5.js.map} +0 -0
- /package/dist/{chunk-OYXBFSGK.js.map → chunk-UTIAXH52.js.map} +0 -0
- /package/dist/{chunk-5WUN7XPD.js.map → chunk-UVN5TMHU.js.map} +0 -0
- /package/dist/{chunk-UYE47LO6.js.map → chunk-VGYXW3VG.js.map} +0 -0
- /package/dist/{chunk-IKUNOX7F.js.map → chunk-VS7AHPCZ.js.map} +0 -0
- /package/dist/{chunk-MYUFMVCH.js.map → chunk-VTTAJOQ7.js.map} +0 -0
- /package/dist/{chunk-K63HGHZX.js.map → chunk-VWPOLUAO.js.map} +0 -0
- /package/dist/{chunk-GA4YEAMX.js.map → chunk-X3MWB2QU.js.map} +0 -0
- /package/dist/{chunk-I36GSRUJ.js.map → chunk-X6KAJI3V.js.map} +0 -0
- /package/dist/{chunk-IKMUFDVS.js.map → chunk-XBLRHV5R.js.map} +0 -0
- /package/dist/{chunk-XOSQP3YA.js.map → chunk-XDFP2LMW.js.map} +0 -0
- /package/dist/{chunk-MW7Y3T55.js.map → chunk-XEQMZB3C.js.map} +0 -0
- /package/dist/{chunk-B3LMRTRF.js.map → chunk-XEYLT5VA.js.map} +0 -0
- /package/dist/{chunk-UI4HI5QK.js.map → chunk-XHIQ5I6N.js.map} +0 -0
- /package/dist/{chunk-U6M4LS3M.js.map → chunk-XLH7QY2R.js.map} +0 -0
- /package/dist/{chunk-OSA5EQG5.js.map → chunk-XWFAMUZQ.js.map} +0 -0
- /package/dist/{chunk-6MT3HHUB.js.map → chunk-Y4OBB2VN.js.map} +0 -0
- /package/dist/{chunk-CZP5QXNB.js.map → chunk-YCVD6CI3.js.map} +0 -0
- /package/dist/{chunk-APW4T4SW.js.map → chunk-YENLNISG.js.map} +0 -0
- /package/dist/{chunk-JWPA6ZPZ.js.map → chunk-YIRVLKAX.js.map} +0 -0
- /package/dist/{chunk-LQ62ECE6.js.map → chunk-YL73CVNK.js.map} +0 -0
- /package/dist/{chunk-ILKDYBON.js.map → chunk-YLS6QE5G.js.map} +0 -0
- /package/dist/{chunk-YBKVGLQR.js.map → chunk-YPWU5KPE.js.map} +0 -0
- /package/dist/{chunk-IKJLSBUI.js.map → chunk-YQXTDZSU.js.map} +0 -0
- /package/dist/{chunk-TPMZBOFH.js.map → chunk-YSJEAAOL.js.map} +0 -0
- /package/dist/{chunk-W3BFRR2G.js.map → chunk-YWIFM7D7.js.map} +0 -0
- /package/dist/{chunk-WTJ4PLMU.js.map → chunk-YWVI6ZMK.js.map} +0 -0
- /package/dist/{chunk-5KWMYPJV.js.map → chunk-Z4FMAFNH.js.map} +0 -0
- /package/dist/{chunk-W5OWKVZG.js.map → chunk-Z654FWNU.js.map} +0 -0
- /package/dist/{chunk-5FH5LQVS.js.map → chunk-Z7Y523PS.js.map} +0 -0
- /package/dist/{chunk-HLL4PBO7.js.map → chunk-ZD67RM6G.js.map} +0 -0
- /package/dist/{chunk-IVYJX3OY.js.map → chunk-ZEG4VPBL.js.map} +0 -0
- /package/dist/{chunk-K6R5T44I.js.map → chunk-ZLYCOBHW.js.map} +0 -0
- /package/dist/{chunk-VADHIT26.js.map → chunk-ZNJ5MTXV.js.map} +0 -0
- /package/dist/{chunk-2KYQC4T5.js.map → chunk-ZSGY3H53.js.map} +0 -0
- /package/dist/{chunk-BKP43KK4.js.map → chunk-ZTPXACWB.js.map} +0 -0
- /package/dist/{chunk-JCY4CMDH.js.map → chunk-ZUA3JMI6.js.map} +0 -0
- /package/dist/{chunk-IGVVXLKJ.js.map → chunk-ZYAZUPPV.js.map} +0 -0
- /package/dist/{computer-viewer-LPZ763KF.js.map → computer-viewer-TDDO25AV.js.map} +0 -0
- /package/dist/{embedded-new-voice-YVMKSLKJ.js.map → embedded-new-voice-2G3VLPVQ.js.map} +0 -0
- /package/dist/{embedded-voice-BJPQFXSU.js.map → embedded-voice-T5IWOWGD.js.map} +0 -0
- /package/dist/{fleet-decision-row-AA4H5CDT.js.map → fleet-decision-row-WM64KXP3.js.map} +0 -0
- /package/dist/{model-policy-picker-menu-HSMWVO4P.js.map → model-policy-picker-menu-SMC6J6QN.js.map} +0 -0
- /package/dist/{payment-page-card-3LTSFJGN.js.map → payment-page-card-G4U63KUV.js.map} +0 -0
- /package/dist/{platform-activity-row-5VYV6TX4.js.map → platform-activity-row-BUZGZAKZ.js.map} +0 -0
- /package/dist/{queue-surface-implementation-NXHZUKD2.js.map → queue-surface-implementation-4KUZ4PJV.js.map} +0 -0
- /package/dist/{sandbox-files-YCMLQUFU.js.map → sandbox-files-ESDMOFSD.js.map} +0 -0
- /package/dist/{session-connect-cards-KSQLMRM5.js.map → session-connect-cards-Q53KMMYY.js.map} +0 -0
- /package/dist/{session-realtime-ZR6JLG3Y.js.map → session-realtime-CF3I35WJ.js.map} +0 -0
- /package/dist/{timeline-annotation-markers-YAHDPWVG.js.map → timeline-annotation-markers-CJK4RYZ4.js.map} +0 -0
- /package/dist/{timeline-annotation-selection-KHXNCEJP.js.map → timeline-annotation-selection-67GF5H26.js.map} +0 -0
- /package/dist/{timeline-annotations-dialog-Y4XD3N7B.js.map → timeline-annotations-dialog-ONJPQDJQ.js.map} +0 -0
package/dist/chunk-LRJIYTZW.js
DELETED
|
@@ -1,4157 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import {
|
|
3
|
-
useThemeType
|
|
4
|
-
} from "./chunk-B27E3V37.js";
|
|
5
|
-
import {
|
|
6
|
-
useEntranceAnimation,
|
|
7
|
-
useEntranceAnimationLive
|
|
8
|
-
} from "./chunk-EAG6A27Q.js";
|
|
9
|
-
import {
|
|
10
|
-
GENIE_PREPARING_PHRASES,
|
|
11
|
-
GENIE_WAITING_PHRASES,
|
|
12
|
-
applyPatchPresentation,
|
|
13
|
-
askPresentation,
|
|
14
|
-
createToolRegistry,
|
|
15
|
-
createTurnSummaryContext,
|
|
16
|
-
execPresentation,
|
|
17
|
-
formatElapsed,
|
|
18
|
-
genericToolIconKind,
|
|
19
|
-
machinePresentation,
|
|
20
|
-
parseDisclosedTools,
|
|
21
|
-
parseSearchHits,
|
|
22
|
-
pathBasename,
|
|
23
|
-
pathDirname,
|
|
24
|
-
plainToolRow,
|
|
25
|
-
presentedToolKind,
|
|
26
|
-
presentsToolOutputPreview,
|
|
27
|
-
resolveTurnSummaryFacets,
|
|
28
|
-
runOnPresentation,
|
|
29
|
-
selectTurnSummaryFacets,
|
|
30
|
-
toolRowPresentation,
|
|
31
|
-
toolSearchPreview,
|
|
32
|
-
toolSearchQuery,
|
|
33
|
-
truncatePreview,
|
|
34
|
-
turnSummaryFallbackLabel,
|
|
35
|
-
webSearchPresentation,
|
|
36
|
-
writeStdinPresentation
|
|
37
|
-
} from "./chunk-IZXHMZQ6.js";
|
|
38
|
-
import {
|
|
39
|
-
reviewFacts
|
|
40
|
-
} from "./chunk-TZIACM2P.js";
|
|
41
|
-
import {
|
|
42
|
-
approvalsFromRequiresAction
|
|
43
|
-
} from "./chunk-VXORMNU4.js";
|
|
44
|
-
import {
|
|
45
|
-
learningRefusalBody,
|
|
46
|
-
learningRefusalPlace,
|
|
47
|
-
learningRefusalPlaceLabel,
|
|
48
|
-
learningRefusalTitle
|
|
49
|
-
} from "./chunk-4YCA2Y73.js";
|
|
50
|
-
import {
|
|
51
|
-
invokedToolCall
|
|
52
|
-
} from "./chunk-XXSOHN35.js";
|
|
53
|
-
import {
|
|
54
|
-
workerRowTitleParts
|
|
55
|
-
} from "./chunk-D4GJ52OS.js";
|
|
56
|
-
import {
|
|
57
|
-
CopyButton,
|
|
58
|
-
DecisionActions,
|
|
59
|
-
DecisionButton,
|
|
60
|
-
DecisionMark,
|
|
61
|
-
LazyPart,
|
|
62
|
-
MOTION_INSPECT_SCALE,
|
|
63
|
-
Markdown,
|
|
64
|
-
decisionCardClass,
|
|
65
|
-
decisionCardPad
|
|
66
|
-
} from "./chunk-VIEFJ2DM.js";
|
|
67
|
-
import {
|
|
68
|
-
ActivityDisclosure,
|
|
69
|
-
BodyNote,
|
|
70
|
-
CompactActivityContext,
|
|
71
|
-
MediaEmpty,
|
|
72
|
-
MediaSkeleton,
|
|
73
|
-
PayloadBlock,
|
|
74
|
-
ScreenshotFigure,
|
|
75
|
-
SecretRefText,
|
|
76
|
-
TermBlock,
|
|
77
|
-
Thumbnail,
|
|
78
|
-
ToolCallTruncationProvider,
|
|
79
|
-
ToolOutputPreviewProvider,
|
|
80
|
-
useForcedDefaultOpen,
|
|
81
|
-
useTimelineSearchReveal
|
|
82
|
-
} from "./chunk-PW4IMTYR.js";
|
|
83
|
-
import {
|
|
84
|
-
useToolDetails
|
|
85
|
-
} from "./chunk-RZLBICR5.js";
|
|
86
|
-
import {
|
|
87
|
-
LoadFailureNotice,
|
|
88
|
-
isChunkLoadError
|
|
89
|
-
} from "./chunk-6H4SJBPE.js";
|
|
90
|
-
import {
|
|
91
|
-
redactDeep,
|
|
92
|
-
redactToolCall,
|
|
93
|
-
signedValuesDeep
|
|
94
|
-
} from "./chunk-YM45PLD6.js";
|
|
95
|
-
import {
|
|
96
|
-
PatchApplyCommand,
|
|
97
|
-
useRetainedImageObjectUrl
|
|
98
|
-
} from "./chunk-2XNG2KNT.js";
|
|
99
|
-
import {
|
|
100
|
-
isPatchFilename,
|
|
101
|
-
isRetainedImageContentType,
|
|
102
|
-
paymentPageOf
|
|
103
|
-
} from "./chunk-3SOIESJM.js";
|
|
104
|
-
import {
|
|
105
|
-
generatedImageReceipt,
|
|
106
|
-
mediaPreviewFact,
|
|
107
|
-
parseToolArgs,
|
|
108
|
-
retainedScreenshotMetadata,
|
|
109
|
-
retainedToolResultImages,
|
|
110
|
-
screenshotDataUrl,
|
|
111
|
-
unwrapMcpOutput
|
|
112
|
-
} from "./chunk-4NQHXYMW.js";
|
|
113
|
-
import {
|
|
114
|
-
mcpToolLeaf,
|
|
115
|
-
toolDisplayName
|
|
116
|
-
} from "./chunk-VDPUG6LH.js";
|
|
117
|
-
import {
|
|
118
|
-
useOpenGeniLinkResolver
|
|
119
|
-
} from "./chunk-NPNX7LTL.js";
|
|
120
|
-
import {
|
|
121
|
-
ShimmerText
|
|
122
|
-
} from "./chunk-UI4HI5QK.js";
|
|
123
|
-
import {
|
|
124
|
-
formatBytes,
|
|
125
|
-
truncate,
|
|
126
|
-
tryParseJson
|
|
127
|
-
} from "./chunk-5MOJZORA.js";
|
|
128
|
-
import {
|
|
129
|
-
loadPierreDiffs,
|
|
130
|
-
pierreDiffsRevision,
|
|
131
|
-
subscribePierreDiffs
|
|
132
|
-
} from "./chunk-YSRBFJMQ.js";
|
|
133
|
-
import {
|
|
134
|
-
cn
|
|
135
|
-
} from "./chunk-TXS65BB2.js";
|
|
136
|
-
import {
|
|
137
|
-
useOpenGeniText
|
|
138
|
-
} from "./chunk-TNUSPXPW.js";
|
|
139
|
-
|
|
140
|
-
// src/components/tool-action-review.tsx
|
|
141
|
-
import {
|
|
142
|
-
ArrowLeftIcon,
|
|
143
|
-
CheckIcon,
|
|
144
|
-
ChevronRightIcon,
|
|
145
|
-
CircleAlertIcon,
|
|
146
|
-
CircleSlashIcon,
|
|
147
|
-
LoaderCircleIcon,
|
|
148
|
-
ShieldCheckIcon
|
|
149
|
-
} from "lucide-react";
|
|
150
|
-
import { useEffect, useId, useRef, useState } from "react";
|
|
151
|
-
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
152
|
-
var statusText = (t) => ({
|
|
153
|
-
pending: t("toolActionReview.approvalNeeded"),
|
|
154
|
-
approved: t("toolActionReview.approved"),
|
|
155
|
-
executing: t("toolActionReview.approvedRunning"),
|
|
156
|
-
completed: t("toolActionReview.approvedDone"),
|
|
157
|
-
partial: t("toolActionReview.partlyDone"),
|
|
158
|
-
unknown: t("toolActionReview.outcomeUnknown"),
|
|
159
|
-
rejected: t("toolActionReview.declined"),
|
|
160
|
-
cancelled: t("toolActionReview.cancelled"),
|
|
161
|
-
expired: t("toolActionReview.expired"),
|
|
162
|
-
revoked: t("toolActionReview.accessUnavailable"),
|
|
163
|
-
blocked: t("toolActionReview.blocked"),
|
|
164
|
-
stale: t("toolActionReview.noLongerValid"),
|
|
165
|
-
failed: t("toolActionReview.failed"),
|
|
166
|
-
unavailable: t("toolActionReview.detailsUnavailable")
|
|
167
|
-
});
|
|
168
|
-
var statusDetail = (t) => ({
|
|
169
|
-
unknown: t("toolActionReview.itMayHaveRunCheck"),
|
|
170
|
-
rejected: t("toolActionReview.thisActionDidNotRun"),
|
|
171
|
-
cancelled: t("toolActionReview.thisActionDidNotRun"),
|
|
172
|
-
expired: t("toolActionReview.thisActionDidNotRun2"),
|
|
173
|
-
revoked: t("toolActionReview.thisActionDidNotRun3"),
|
|
174
|
-
stale: t("toolActionReview.theToolOrAccountChanged"),
|
|
175
|
-
partial: t("toolActionReview.someOfItRanCheck"),
|
|
176
|
-
failed: t("toolActionReview.theActionRanButReturned")
|
|
177
|
-
});
|
|
178
|
-
var statusTone = {
|
|
179
|
-
pending: "waiting",
|
|
180
|
-
approved: "ok",
|
|
181
|
-
executing: "ok",
|
|
182
|
-
completed: "ok",
|
|
183
|
-
partial: "failed",
|
|
184
|
-
unknown: "failed",
|
|
185
|
-
rejected: "muted",
|
|
186
|
-
cancelled: "muted",
|
|
187
|
-
expired: "muted",
|
|
188
|
-
revoked: "muted",
|
|
189
|
-
blocked: "muted",
|
|
190
|
-
stale: "muted",
|
|
191
|
-
failed: "failed",
|
|
192
|
-
unavailable: "muted"
|
|
193
|
-
};
|
|
194
|
-
var headerPart = "before:inline-block before:w-3 before:text-center before:text-og-fg-muted before:content-['\xB7'_/_'']";
|
|
195
|
-
var toneText = {
|
|
196
|
-
waiting: "text-og-fg-muted",
|
|
197
|
-
ok: "text-og-fg-muted",
|
|
198
|
-
failed: "text-og-status-failed",
|
|
199
|
-
muted: "text-og-fg-muted"
|
|
200
|
-
};
|
|
201
|
-
var UNRECOVERABLE_TEXT = (t) => t("toolActionReview.theDetailsOfThisOlder");
|
|
202
|
-
function StatusIcon({ status, busy }) {
|
|
203
|
-
const className = "size-4";
|
|
204
|
-
if (busy || status === "executing" || status === "approved")
|
|
205
|
-
return /* @__PURE__ */ jsx(LoaderCircleIcon, { "aria-hidden": "true", className: cn(className, "animate-spin") });
|
|
206
|
-
if (status === "pending") return /* @__PURE__ */ jsx(ShieldCheckIcon, { "aria-hidden": "true", className });
|
|
207
|
-
if (status === "completed") return /* @__PURE__ */ jsx(CheckIcon, { "aria-hidden": "true", className });
|
|
208
|
-
if (statusTone[status] === "failed")
|
|
209
|
-
return /* @__PURE__ */ jsx(CircleAlertIcon, { "aria-hidden": "true", className });
|
|
210
|
-
return /* @__PURE__ */ jsx(CircleSlashIcon, { "aria-hidden": "true", className });
|
|
211
|
-
}
|
|
212
|
-
function ToolReviewFrame({
|
|
213
|
-
tone,
|
|
214
|
-
icon,
|
|
215
|
-
eyebrow,
|
|
216
|
-
title,
|
|
217
|
-
titleId,
|
|
218
|
-
subtitle,
|
|
219
|
-
children,
|
|
220
|
-
footer,
|
|
221
|
-
bare = false,
|
|
222
|
-
...rest
|
|
223
|
-
}) {
|
|
224
|
-
const waiting = tone === "waiting";
|
|
225
|
-
return /* @__PURE__ */ jsxs(
|
|
226
|
-
"article",
|
|
227
|
-
{
|
|
228
|
-
"aria-labelledby": titleId,
|
|
229
|
-
...rest,
|
|
230
|
-
className: cn(
|
|
231
|
-
"min-w-0 text-og-fg",
|
|
232
|
-
!bare && (waiting ? decisionCardClass : "og-root @container/decision overflow-hidden rounded-og-lg border border-og-border bg-og-surface-1"),
|
|
233
|
-
rest.className
|
|
234
|
-
),
|
|
235
|
-
children: [
|
|
236
|
-
/* @__PURE__ */ jsxs(
|
|
237
|
-
"header",
|
|
238
|
-
{
|
|
239
|
-
className: cn(
|
|
240
|
-
"flex min-w-0 items-start gap-3",
|
|
241
|
-
bare ? "pb-1" : cn(decisionCardPad, "pt-4", !children && !footer && "pb-4")
|
|
242
|
-
),
|
|
243
|
-
children: [
|
|
244
|
-
/* @__PURE__ */ jsx(DecisionMark, { tone: tone === "failed" ? "danger" : "neutral", children: icon }),
|
|
245
|
-
/* @__PURE__ */ jsxs("div", { className: "min-w-0 flex-1 pt-px", children: [
|
|
246
|
-
/* @__PURE__ */ jsx(
|
|
247
|
-
"h3",
|
|
248
|
-
{
|
|
249
|
-
tabIndex: -1,
|
|
250
|
-
id: titleId,
|
|
251
|
-
className: "m-0 break-words text-og-md font-semibold leading-snug text-balance text-og-fg outline-hidden [overflow-wrap:anywhere]",
|
|
252
|
-
children: title
|
|
253
|
-
}
|
|
254
|
-
),
|
|
255
|
-
/* @__PURE__ */ jsx("p", { className: "m-0 mt-0.5 min-w-0 overflow-hidden text-og-xs leading-5 text-og-fg-muted", children: /* @__PURE__ */ jsxs("span", { className: "-ml-3 flex min-w-0 flex-wrap items-center", children: [
|
|
256
|
-
/* @__PURE__ */ jsx("span", { className: headerPart, children: /* @__PURE__ */ jsxs(
|
|
257
|
-
"span",
|
|
258
|
-
{
|
|
259
|
-
className: cn("inline-flex items-center gap-1.5", toneText[tone]),
|
|
260
|
-
role: "status",
|
|
261
|
-
"aria-live": "polite",
|
|
262
|
-
children: [
|
|
263
|
-
waiting ? /* @__PURE__ */ jsx(
|
|
264
|
-
"span",
|
|
265
|
-
{
|
|
266
|
-
"aria-hidden": "true",
|
|
267
|
-
className: "size-1.5 shrink-0 rounded-full bg-og-status-waiting"
|
|
268
|
-
}
|
|
269
|
-
) : null,
|
|
270
|
-
eyebrow
|
|
271
|
-
]
|
|
272
|
-
}
|
|
273
|
-
) }),
|
|
274
|
-
subtitle ? /* @__PURE__ */ jsx("span", { className: cn(headerPart, "min-w-0 break-words [overflow-wrap:anywhere]"), children: subtitle }) : null
|
|
275
|
-
] }) })
|
|
276
|
-
] })
|
|
277
|
-
]
|
|
278
|
-
}
|
|
279
|
-
),
|
|
280
|
-
children ? /* @__PURE__ */ jsx(
|
|
281
|
-
"div",
|
|
282
|
-
{
|
|
283
|
-
className: cn("min-w-0", bare ? "pt-2" : cn(decisionCardPad, "pt-3", !footer && "pb-4")),
|
|
284
|
-
children
|
|
285
|
-
}
|
|
286
|
-
) : null,
|
|
287
|
-
footer ? /* @__PURE__ */ jsx("footer", { className: cn("min-w-0", bare ? "pt-3" : cn(decisionCardPad, "pb-4 pt-4")), children: footer }) : null
|
|
288
|
-
]
|
|
289
|
-
}
|
|
290
|
-
);
|
|
291
|
-
}
|
|
292
|
-
var linkButton = "focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-og-accent/40 inline-flex min-h-8 items-center gap-1 rounded-og-sm text-left text-og-sm text-og-fg underline decoration-og-border-strong underline-offset-4 hover:decoration-current [@media(pointer:coarse)]:min-h-11";
|
|
293
|
-
function ReviewFacts({
|
|
294
|
-
review,
|
|
295
|
-
onViewDetails,
|
|
296
|
-
showStatusDetail
|
|
297
|
-
}) {
|
|
298
|
-
const t = useOpenGeniText();
|
|
299
|
-
const canOpen = Boolean(onViewDetails && review.detailsAvailable);
|
|
300
|
-
const { selection, shown, hiddenFields, effects } = reviewFacts(review);
|
|
301
|
-
const note = (showStatusDetail ? review.status === "blocked" ? t("toolActionReview.reasonItDidNotRun", {
|
|
302
|
-
reason: review.reason || t("toolActionReview.yourPermissionSettingsBlockThis")
|
|
303
|
-
}) : statusDetail(t)[review.status] : void 0) ?? review.consequence;
|
|
304
|
-
const samples = review.samples ?? [];
|
|
305
|
-
const count = review.selectionCount ?? 0;
|
|
306
|
-
const noun = review.selectionKind === "threads" ? count === 1 ? "conversation" : "conversations" : count === 1 ? "message" : "messages";
|
|
307
|
-
const hasContent = note || effects.length || selection || shown.length || hiddenFields > 0 || samples.length;
|
|
308
|
-
if (!hasContent) return null;
|
|
309
|
-
return /* @__PURE__ */ jsxs("div", { className: "flex min-w-0 flex-col gap-3 text-og-sm", children: [
|
|
310
|
-
note ? /* @__PURE__ */ jsx("p", { className: "m-0 leading-relaxed text-og-fg-muted", children: note }) : null,
|
|
311
|
-
effects.length > 0 ? /* @__PURE__ */ jsx("ul", { className: "m-0 list-none space-y-1 p-0", "aria-label": t("toolActionReview.alsoChanges"), children: effects.map((effect) => /* @__PURE__ */ jsxs("li", { className: "flex items-start gap-2 text-og-fg", children: [
|
|
312
|
-
/* @__PURE__ */ jsx(
|
|
313
|
-
"span",
|
|
314
|
-
{
|
|
315
|
-
"aria-hidden": "true",
|
|
316
|
-
className: "mt-[0.55em] size-1 shrink-0 rounded-full bg-og-fg-muted"
|
|
317
|
-
}
|
|
318
|
-
),
|
|
319
|
-
/* @__PURE__ */ jsx("span", { className: "min-w-0 break-words", children: effect })
|
|
320
|
-
] }, effect)) }) : null,
|
|
321
|
-
selection ? /* @__PURE__ */ jsxs("div", { className: "min-w-0", children: [
|
|
322
|
-
samples.length > 0 ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
323
|
-
/* @__PURE__ */ jsx("p", { className: "m-0 mb-1 text-og-xs text-og-fg-muted", children: t("toolActionReview.includes") }),
|
|
324
|
-
/* @__PURE__ */ jsxs("ul", { className: "m-0 list-none divide-y divide-og-border rounded-og-md border border-og-border bg-og-surface-1 p-0", children: [
|
|
325
|
-
samples.map((sample) => /* @__PURE__ */ jsxs("li", { className: "min-w-0 px-3 py-2", children: [
|
|
326
|
-
/* @__PURE__ */ jsx("p", { className: "m-0 truncate text-og-sm text-og-fg", children: sample.title }),
|
|
327
|
-
sample.subtitle ? /* @__PURE__ */ jsx("p", { className: "m-0 mt-0.5 truncate text-og-xs text-og-fg-muted", children: sample.subtitle }) : null
|
|
328
|
-
] }, sample.id)),
|
|
329
|
-
count > samples.length ? /* @__PURE__ */ jsxs("li", { className: "px-3 py-2 text-og-xs text-og-fg-muted", children: [
|
|
330
|
-
t("toolActionReview.and"),
|
|
331
|
-
" ",
|
|
332
|
-
(count - samples.length).toLocaleString(t.locale),
|
|
333
|
-
" ",
|
|
334
|
-
t("toolActionReview.more")
|
|
335
|
-
] }) : null
|
|
336
|
-
] })
|
|
337
|
-
] }) : null,
|
|
338
|
-
canOpen && count > 0 ? /* @__PURE__ */ jsxs(
|
|
339
|
-
"button",
|
|
340
|
-
{
|
|
341
|
-
type: "button",
|
|
342
|
-
className: cn(linkButton, samples.length > 0 && "mt-1"),
|
|
343
|
-
"data-review-path": selection.path,
|
|
344
|
-
onClick: () => onViewDetails(selection.path),
|
|
345
|
-
children: [
|
|
346
|
-
count === 1 ? t("toolActionReview.viewTheNoun", { noun }) : t("toolActionReview.viewAllLocalestringNoun", {
|
|
347
|
-
localeString: count.toLocaleString(t.locale),
|
|
348
|
-
noun
|
|
349
|
-
}),
|
|
350
|
-
/* @__PURE__ */ jsx(ChevronRightIcon, { className: "size-3.5 shrink-0", "aria-hidden": "true" })
|
|
351
|
-
]
|
|
352
|
-
}
|
|
353
|
-
) : null
|
|
354
|
-
] }) : null,
|
|
355
|
-
shown.length > 0 ? /* @__PURE__ */ jsx("dl", { className: "m-0 min-w-0 space-y-2.5 rounded-og-md bg-og-fg/[0.035] px-3.5 py-3", children: shown.map((field) => /* @__PURE__ */ jsxs(
|
|
356
|
-
"div",
|
|
357
|
-
{
|
|
358
|
-
className: "grid min-w-0 gap-x-4 gap-y-0.5 @[30rem]/decision:grid-cols-[minmax(0,7.5rem)_minmax(0,1fr)]",
|
|
359
|
-
children: [
|
|
360
|
-
/* @__PURE__ */ jsx("dt", { className: "m-0 break-words text-og-xs text-og-fg-muted @[30rem]/decision:pt-px @[30rem]/decision:text-og-sm", children: field.label }),
|
|
361
|
-
/* @__PURE__ */ jsx("dd", { className: "m-0 min-w-0 whitespace-pre-wrap break-words text-og-fg [overflow-wrap:anywhere]", children: field.protected ? /* @__PURE__ */ jsx("span", { className: "text-og-fg-muted", children: t("toolActionReview.hidden") }) : field.truncated && canOpen ? /* @__PURE__ */ jsxs(
|
|
362
|
-
"button",
|
|
363
|
-
{
|
|
364
|
-
type: "button",
|
|
365
|
-
"data-review-path": field.path,
|
|
366
|
-
"aria-label": t("toolActionReview.viewLabelPreview", {
|
|
367
|
-
label: field.label,
|
|
368
|
-
preview: field.preview
|
|
369
|
-
}),
|
|
370
|
-
onClick: () => onViewDetails(field.path),
|
|
371
|
-
className: cn(linkButton, "max-w-full"),
|
|
372
|
-
children: [
|
|
373
|
-
/* @__PURE__ */ jsx("span", { className: "line-clamp-4 min-w-0 break-words [overflow-wrap:anywhere]", children: /* @__PURE__ */ jsx(SecretRefText, { text: field.preview, linkable: false }) }),
|
|
374
|
-
/* @__PURE__ */ jsx(ChevronRightIcon, { className: "size-3.5 shrink-0", "aria-hidden": "true" })
|
|
375
|
-
]
|
|
376
|
-
}
|
|
377
|
-
) : /* @__PURE__ */ jsx(SecretRefText, { text: field.preview }) })
|
|
378
|
-
]
|
|
379
|
-
},
|
|
380
|
-
field.path
|
|
381
|
-
)) }) : null,
|
|
382
|
-
hiddenFields > 0 ? /* @__PURE__ */ jsxs("p", { className: "m-0 text-og-xs text-og-fg-muted", children: [
|
|
383
|
-
hiddenFields === 1 ? t("toolActionReview.n1MoreValue") : t("toolActionReview.hiddenfieldsMoreValues", { hiddenFields }),
|
|
384
|
-
" ",
|
|
385
|
-
t("toolActionReview.inDetails")
|
|
386
|
-
] }) : null
|
|
387
|
-
] });
|
|
388
|
-
}
|
|
389
|
-
function DeclineButton({
|
|
390
|
-
busy,
|
|
391
|
-
submitting,
|
|
392
|
-
label,
|
|
393
|
-
onClick
|
|
394
|
-
}) {
|
|
395
|
-
const t = useOpenGeniText();
|
|
396
|
-
return /* @__PURE__ */ jsx(DecisionButton, { kind: "secondary", disabled: busy, busy: submitting, onClick, children: submitting ? t("toolActionReview.declining") : label ?? t("toolActionReview.decline") });
|
|
397
|
-
}
|
|
398
|
-
function ToolActionReviewCard({
|
|
399
|
-
review,
|
|
400
|
-
onApprove,
|
|
401
|
-
onReject,
|
|
402
|
-
submitting,
|
|
403
|
-
disabled,
|
|
404
|
-
onViewDetails,
|
|
405
|
-
pendingLabel,
|
|
406
|
-
rejectLabel,
|
|
407
|
-
bare
|
|
408
|
-
}) {
|
|
409
|
-
const t = useOpenGeniText();
|
|
410
|
-
const titleId = useId();
|
|
411
|
-
const canApprove = review.availableActions.includes("approve") && !!onApprove;
|
|
412
|
-
const canReject = review.availableActions.includes("reject") && !!onReject;
|
|
413
|
-
const actionable = review.status === "pending" && (canApprove || canReject);
|
|
414
|
-
const busy = Boolean(disabled || submitting);
|
|
415
|
-
const tone = statusTone[review.status];
|
|
416
|
-
const eyebrow = submitting ? submitting === "approve" ? t("toolActionReview.approving") : t("toolActionReview.declining") : review.status === "pending" ? pendingLabel ?? statusText(t).pending : statusText(t)[review.status];
|
|
417
|
-
const detailsLink = review.detailsAvailable && onViewDetails ? /* @__PURE__ */ jsx(
|
|
418
|
-
"button",
|
|
419
|
-
{
|
|
420
|
-
type: "button",
|
|
421
|
-
className: "inline-flex min-h-8 items-center rounded-og-sm text-og-sm text-og-fg-muted underline decoration-og-border-strong underline-offset-4 hover:text-og-fg hover:decoration-current [@media(pointer:coarse)]:min-h-11 focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-og-accent/40",
|
|
422
|
-
"data-review-path": "",
|
|
423
|
-
onClick: () => onViewDetails(""),
|
|
424
|
-
children: t("toolActionReview.details")
|
|
425
|
-
}
|
|
426
|
-
) : null;
|
|
427
|
-
const reason = review.reason.trim();
|
|
428
|
-
return /* @__PURE__ */ jsxs(
|
|
429
|
-
ToolReviewFrame,
|
|
430
|
-
{
|
|
431
|
-
tone,
|
|
432
|
-
icon: /* @__PURE__ */ jsx(StatusIcon, { status: review.status, busy: Boolean(submitting) }),
|
|
433
|
-
eyebrow,
|
|
434
|
-
title: review.title,
|
|
435
|
-
titleId,
|
|
436
|
-
subtitle: review.accountLabel,
|
|
437
|
-
bare,
|
|
438
|
-
"aria-busy": Boolean(submitting),
|
|
439
|
-
"data-og-tool-review": "",
|
|
440
|
-
"data-review-status": review.status,
|
|
441
|
-
footer: actionable ? /* @__PURE__ */ jsxs(
|
|
442
|
-
DecisionActions,
|
|
443
|
-
{
|
|
444
|
-
lead: detailsLink || reason ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
445
|
-
detailsLink,
|
|
446
|
-
reason ? /* @__PURE__ */ jsx("span", { className: "min-w-0 text-og-xs leading-relaxed text-og-fg-subtle", children: reason }) : null
|
|
447
|
-
] }) : null,
|
|
448
|
-
children: [
|
|
449
|
-
canReject ? /* @__PURE__ */ jsx(
|
|
450
|
-
DeclineButton,
|
|
451
|
-
{
|
|
452
|
-
busy,
|
|
453
|
-
submitting: submitting === "reject",
|
|
454
|
-
label: rejectLabel,
|
|
455
|
-
onClick: onReject
|
|
456
|
-
}
|
|
457
|
-
) : null,
|
|
458
|
-
canApprove ? /* @__PURE__ */ jsx(
|
|
459
|
-
DecisionButton,
|
|
460
|
-
{
|
|
461
|
-
kind: "primary",
|
|
462
|
-
disabled: busy,
|
|
463
|
-
busy: submitting === "approve",
|
|
464
|
-
onClick: onApprove,
|
|
465
|
-
children: submitting === "approve" ? t("toolActionReview.approving") : review.approveLabel
|
|
466
|
-
}
|
|
467
|
-
) : null
|
|
468
|
-
]
|
|
469
|
-
}
|
|
470
|
-
) : void 0,
|
|
471
|
-
children: [
|
|
472
|
-
actionable && !canApprove ? /* @__PURE__ */ jsx("p", { className: "m-0 mb-3 text-og-sm leading-relaxed text-og-fg", children: UNRECOVERABLE_TEXT(t) }) : null,
|
|
473
|
-
/* @__PURE__ */ jsx(
|
|
474
|
-
ReviewFacts,
|
|
475
|
-
{
|
|
476
|
-
review,
|
|
477
|
-
onViewDetails,
|
|
478
|
-
showStatusDetail: review.status !== "pending"
|
|
479
|
-
}
|
|
480
|
-
),
|
|
481
|
-
!actionable && detailsLink ? /* @__PURE__ */ jsx("div", { className: "mt-2", children: detailsLink }) : null
|
|
482
|
-
]
|
|
483
|
-
}
|
|
484
|
-
);
|
|
485
|
-
}
|
|
486
|
-
function ToolActionReviewDetails({
|
|
487
|
-
review,
|
|
488
|
-
path: initialPath = "",
|
|
489
|
-
load,
|
|
490
|
-
onBack,
|
|
491
|
-
manageFocus = true
|
|
492
|
-
}) {
|
|
493
|
-
const t = useOpenGeniText();
|
|
494
|
-
const [path, setPath] = useState(initialPath);
|
|
495
|
-
const [trail, setTrail] = useState([]);
|
|
496
|
-
const [offset, setOffset] = useState(0);
|
|
497
|
-
const [page, setPage] = useState(null);
|
|
498
|
-
const [error, setError] = useState(false);
|
|
499
|
-
const [retry, setRetry] = useState(0);
|
|
500
|
-
const heading = useRef(null);
|
|
501
|
-
const focusedOnce = useRef(false);
|
|
502
|
-
useEffect(() => {
|
|
503
|
-
if (page && manageFocus && !focusedOnce.current) {
|
|
504
|
-
focusedOnce.current = true;
|
|
505
|
-
heading.current?.focus({ preventScroll: true });
|
|
506
|
-
heading.current?.scrollIntoView({ block: "start" });
|
|
507
|
-
}
|
|
508
|
-
}, [page, manageFocus]);
|
|
509
|
-
useEffect(() => {
|
|
510
|
-
let active = true;
|
|
511
|
-
setPage(null);
|
|
512
|
-
setError(false);
|
|
513
|
-
void load(review, path, offset).then(
|
|
514
|
-
(value) => {
|
|
515
|
-
if (!active) return;
|
|
516
|
-
if (value.actionDigest !== review.actionDigest || value.id !== review.id || value.path !== path) {
|
|
517
|
-
setError(true);
|
|
518
|
-
return;
|
|
519
|
-
}
|
|
520
|
-
setPage(value);
|
|
521
|
-
},
|
|
522
|
-
() => {
|
|
523
|
-
if (active) setError(true);
|
|
524
|
-
}
|
|
525
|
-
);
|
|
526
|
-
return () => {
|
|
527
|
-
active = false;
|
|
528
|
-
};
|
|
529
|
-
}, [review, path, offset, load, retry]);
|
|
530
|
-
const open = (next, label) => {
|
|
531
|
-
setTrail((value) => [...value, { path, label }]);
|
|
532
|
-
setPath(next);
|
|
533
|
-
setOffset(0);
|
|
534
|
-
};
|
|
535
|
-
const up = () => {
|
|
536
|
-
const previous = trail.at(-1);
|
|
537
|
-
setTrail((value) => value.slice(0, -1));
|
|
538
|
-
setPath(previous?.path ?? initialPath);
|
|
539
|
-
setOffset(0);
|
|
540
|
-
};
|
|
541
|
-
return /* @__PURE__ */ jsxs(
|
|
542
|
-
"section",
|
|
543
|
-
{
|
|
544
|
-
className: "og-root mx-auto w-full max-w-3xl px-4 py-5 text-og-fg sm:px-6",
|
|
545
|
-
"data-og-review-details": "",
|
|
546
|
-
children: [
|
|
547
|
-
/* @__PURE__ */ jsxs(
|
|
548
|
-
"button",
|
|
549
|
-
{
|
|
550
|
-
type: "button",
|
|
551
|
-
onClick: onBack,
|
|
552
|
-
className: "mb-4 inline-flex min-h-11 items-center gap-2 rounded-og-md pr-2 text-og-sm text-og-fg-muted hover:text-og-fg focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-og-accent/40",
|
|
553
|
-
children: [
|
|
554
|
-
/* @__PURE__ */ jsx(ArrowLeftIcon, { className: "size-4", "aria-hidden": "true" }),
|
|
555
|
-
t("toolActionReview.backToReview")
|
|
556
|
-
]
|
|
557
|
-
}
|
|
558
|
-
),
|
|
559
|
-
/* @__PURE__ */ jsx(
|
|
560
|
-
"h2",
|
|
561
|
-
{
|
|
562
|
-
ref: heading,
|
|
563
|
-
tabIndex: -1,
|
|
564
|
-
className: "m-0 break-words text-og-md font-semibold outline-hidden [overflow-wrap:anywhere]",
|
|
565
|
-
children: review.title
|
|
566
|
-
}
|
|
567
|
-
),
|
|
568
|
-
review.accountLabel ? /* @__PURE__ */ jsx("p", { className: "m-0 mt-1 text-og-sm text-og-fg-muted", children: review.accountLabel }) : null,
|
|
569
|
-
/* @__PURE__ */ jsx("p", { className: "m-0 mt-2 text-og-xs text-og-fg-subtle", children: t("toolActionReview.theExactValuesSavedFor") }),
|
|
570
|
-
trail.length > 0 ? /* @__PURE__ */ jsxs(
|
|
571
|
-
"button",
|
|
572
|
-
{
|
|
573
|
-
type: "button",
|
|
574
|
-
className: "mt-3 inline-flex min-h-11 items-center gap-1.5 text-og-sm text-og-fg-muted underline underline-offset-4 hover:text-og-fg focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-og-accent/40",
|
|
575
|
-
onClick: up,
|
|
576
|
-
children: [
|
|
577
|
-
/* @__PURE__ */ jsx(ArrowLeftIcon, { className: "size-3.5", "aria-hidden": "true" }),
|
|
578
|
-
t("toolActionReview.backTo"),
|
|
579
|
-
" ",
|
|
580
|
-
trail.at(-1)?.label ?? t("toolActionReview.allValues")
|
|
581
|
-
]
|
|
582
|
-
}
|
|
583
|
-
) : null,
|
|
584
|
-
error ? /* @__PURE__ */ jsxs("div", { role: "alert", className: "mt-4 py-4 text-og-sm", children: [
|
|
585
|
-
t("toolActionReview.couldnTLoadTheseDetails"),
|
|
586
|
-
" ",
|
|
587
|
-
/* @__PURE__ */ jsx(
|
|
588
|
-
"button",
|
|
589
|
-
{
|
|
590
|
-
type: "button",
|
|
591
|
-
onClick: () => setRetry((value) => value + 1),
|
|
592
|
-
className: "min-h-11 underline underline-offset-4 focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-og-accent/40",
|
|
593
|
-
children: t("toolActionReview.tryAgain")
|
|
594
|
-
}
|
|
595
|
-
)
|
|
596
|
-
] }) : !page ? /* @__PURE__ */ jsx("p", { role: "status", className: "mt-4 py-4 text-og-sm text-og-fg-muted", children: t("toolActionReview.loadingDetails") }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
597
|
-
/* @__PURE__ */ jsx("dl", { className: "m-0 mt-4 divide-y divide-og-border border-y border-og-border", children: page.items.map((item) => /* @__PURE__ */ jsxs("div", { className: "py-3", children: [
|
|
598
|
-
/* @__PURE__ */ jsx("dt", { className: "m-0 text-og-xs text-og-fg-muted", children: item.label }),
|
|
599
|
-
/* @__PURE__ */ jsxs("dd", { className: "m-0 mt-1 whitespace-pre-wrap break-words text-og-sm leading-relaxed [overflow-wrap:anywhere]", children: [
|
|
600
|
-
item.truncated && item.path ? /* @__PURE__ */ jsxs(
|
|
601
|
-
"button",
|
|
602
|
-
{
|
|
603
|
-
type: "button",
|
|
604
|
-
"aria-label": t("toolActionReview.openLabel", { label: item.label }),
|
|
605
|
-
className: cn(linkButton, "max-w-full"),
|
|
606
|
-
onClick: () => open(item.path, item.label),
|
|
607
|
-
children: [
|
|
608
|
-
/* @__PURE__ */ jsx("span", { className: "min-w-0 break-words focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-og-accent/40", children: /* @__PURE__ */ jsx(SecretRefText, { text: item.value, linkable: false }) }),
|
|
609
|
-
/* @__PURE__ */ jsx(ChevronRightIcon, { className: "size-3.5 shrink-0", "aria-hidden": "true" })
|
|
610
|
-
]
|
|
611
|
-
}
|
|
612
|
-
) : /* @__PURE__ */ jsx(SecretRefText, { text: item.value }),
|
|
613
|
-
item.detail ? /* @__PURE__ */ jsx("span", { className: "mt-0.5 block text-og-xs text-og-fg-muted", children: /* @__PURE__ */ jsx(SecretRefText, { text: item.detail, linkable: false }) }) : null
|
|
614
|
-
] })
|
|
615
|
-
] }, `${page.path}:${item.label}`)) }),
|
|
616
|
-
page.total > page.items.length || offset > 0 ? /* @__PURE__ */ jsxs(
|
|
617
|
-
"nav",
|
|
618
|
-
{
|
|
619
|
-
"aria-label": t("toolActionReview.detailPages"),
|
|
620
|
-
className: "mt-4 flex flex-wrap items-center justify-between gap-3 text-og-sm",
|
|
621
|
-
children: [
|
|
622
|
-
/* @__PURE__ */ jsx(
|
|
623
|
-
"button",
|
|
624
|
-
{
|
|
625
|
-
type: "button",
|
|
626
|
-
disabled: offset === 0,
|
|
627
|
-
onClick: () => setOffset(Math.max(0, offset - 25)),
|
|
628
|
-
className: "min-h-11 rounded-og-md border border-og-border px-3 hover:bg-og-hover disabled:opacity-40 focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-og-accent/40",
|
|
629
|
-
children: t("toolActionReview.previous")
|
|
630
|
-
}
|
|
631
|
-
),
|
|
632
|
-
/* @__PURE__ */ jsx("span", { className: "text-og-fg-muted tabular-nums", children: page.total === 0 ? t("toolActionReview.noItems") : `${(offset + 1).toLocaleString(t.locale)}\u2013${(offset + page.items.length).toLocaleString(t.locale)} of ${page.total.toLocaleString(t.locale)}` }),
|
|
633
|
-
/* @__PURE__ */ jsx(
|
|
634
|
-
"button",
|
|
635
|
-
{
|
|
636
|
-
type: "button",
|
|
637
|
-
disabled: page.nextOffset === null,
|
|
638
|
-
onClick: () => setOffset(page.nextOffset ?? offset),
|
|
639
|
-
className: "min-h-11 rounded-og-md border border-og-border px-3 hover:bg-og-hover disabled:opacity-40 focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-og-accent/40",
|
|
640
|
-
children: t("toolActionReview.next")
|
|
641
|
-
}
|
|
642
|
-
)
|
|
643
|
-
]
|
|
644
|
-
}
|
|
645
|
-
) : null
|
|
646
|
-
] })
|
|
647
|
-
]
|
|
648
|
-
}
|
|
649
|
-
);
|
|
650
|
-
}
|
|
651
|
-
|
|
652
|
-
// src/timeline/retained-loaders.ts
|
|
653
|
-
function createWorkspaceRetainedArtifactLoader(client, workspaceId) {
|
|
654
|
-
return async (artifact, signal, options) => {
|
|
655
|
-
if (artifact.kind === "file" && options?.prefer !== "url") {
|
|
656
|
-
const download2 = await client.downloadRetainedArtifact(workspaceId, artifact, { signal });
|
|
657
|
-
return download2.bytes;
|
|
658
|
-
}
|
|
659
|
-
const download = await client.createRetainedArtifactDownloadUrl(workspaceId, artifact, {
|
|
660
|
-
signal
|
|
661
|
-
});
|
|
662
|
-
return { url: download.url, expiresAt: download.expiresAt };
|
|
663
|
-
};
|
|
664
|
-
}
|
|
665
|
-
function createSessionRetainedScreenshotLoader(client, workspaceId, sessionId) {
|
|
666
|
-
return async (artifact, signal) => {
|
|
667
|
-
const download = await client.downloadRetainedScreenshot(
|
|
668
|
-
workspaceId,
|
|
669
|
-
sessionId,
|
|
670
|
-
artifact.artifactId,
|
|
671
|
-
{ signal }
|
|
672
|
-
);
|
|
673
|
-
if (!download.metadata.available || !download.bytes) return null;
|
|
674
|
-
if (download.metadata.artifactId !== artifact.artifactId || download.metadata.kind !== artifact.kind || download.metadata.contentType !== artifact.contentType || download.metadata.originalBytes !== artifact.originalBytes || download.metadata.sha256 !== artifact.sha256 || download.metadata.dimensions?.width !== artifact.dimensions?.width || download.metadata.dimensions?.height !== artifact.dimensions?.height) {
|
|
675
|
-
throw new Error("Retained screenshot receipt verification failed");
|
|
676
|
-
}
|
|
677
|
-
return download.bytes;
|
|
678
|
-
};
|
|
679
|
-
}
|
|
680
|
-
function createWorkspaceRetainedVideoLoader(client, workspaceId) {
|
|
681
|
-
return async (artifactId, signal) => await client.createVideoArtifactPlaybackSource(workspaceId, artifactId, { signal });
|
|
682
|
-
}
|
|
683
|
-
|
|
684
|
-
// src/components/tool-review-history.tsx
|
|
685
|
-
import { createContext, useContext, useEffect as useEffect2, useMemo, useState as useState2 } from "react";
|
|
686
|
-
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
687
|
-
var History = createContext(null);
|
|
688
|
-
function ToolReviewHistoryProvider({
|
|
689
|
-
events,
|
|
690
|
-
load,
|
|
691
|
-
onViewDetails,
|
|
692
|
-
children
|
|
693
|
-
}) {
|
|
694
|
-
const value = useMemo(
|
|
695
|
-
() => ({
|
|
696
|
-
approvalIds: new Set(
|
|
697
|
-
events.flatMap(
|
|
698
|
-
(event) => event.type === "session.requiresAction" ? approvalsFromRequiresAction(event.payload).map((approval) => approval.id) : []
|
|
699
|
-
)
|
|
700
|
-
),
|
|
701
|
-
revision: [...events].reverse().find(
|
|
702
|
-
(event) => event.type === "session.requiresAction" || event.type === "agent.toolCall.output" || event.type.startsWith("turn.") || event.type === "user.approvalDecision" || event.type.startsWith("session.control.")
|
|
703
|
-
)?.sequence ?? 0,
|
|
704
|
-
load,
|
|
705
|
-
onViewDetails
|
|
706
|
-
}),
|
|
707
|
-
[events, load, onViewDetails]
|
|
708
|
-
);
|
|
709
|
-
return /* @__PURE__ */ jsx2(History.Provider, { value, children });
|
|
710
|
-
}
|
|
711
|
-
function useHasToolReview(approvalId) {
|
|
712
|
-
const history = useContext(History);
|
|
713
|
-
return Boolean(approvalId && history?.approvalIds.has(approvalId));
|
|
714
|
-
}
|
|
715
|
-
function useRecordedToolReview(approvalId) {
|
|
716
|
-
const history = useContext(History);
|
|
717
|
-
const [review, setReview] = useState2(null);
|
|
718
|
-
const load = history?.load;
|
|
719
|
-
const revision = history?.revision;
|
|
720
|
-
useEffect2(() => {
|
|
721
|
-
if (!load || !approvalId) return;
|
|
722
|
-
let active = true;
|
|
723
|
-
void load(approvalId).then(
|
|
724
|
-
(value) => {
|
|
725
|
-
if (active && value.id === approvalId) setReview(value);
|
|
726
|
-
},
|
|
727
|
-
() => void 0
|
|
728
|
-
);
|
|
729
|
-
return () => {
|
|
730
|
-
active = false;
|
|
731
|
-
};
|
|
732
|
-
}, [approvalId, load, revision]);
|
|
733
|
-
const onViewDetails = history?.onViewDetails;
|
|
734
|
-
return {
|
|
735
|
-
review: review && review.id === approvalId ? review : null,
|
|
736
|
-
onViewDetails: review && onViewDetails ? (path) => onViewDetails(review, path) : void 0
|
|
737
|
-
};
|
|
738
|
-
}
|
|
739
|
-
|
|
740
|
-
// src/timeline/knowledge-receipt.tsx
|
|
741
|
-
import { createContext as createContext2, useContext as useContext2, useState as useState3 } from "react";
|
|
742
|
-
import { BrainCircuitIcon } from "lucide-react";
|
|
743
|
-
import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
744
|
-
var KnowledgeActions = createContext2({});
|
|
745
|
-
function KnowledgeActivityProvider({
|
|
746
|
-
children,
|
|
747
|
-
...actions
|
|
748
|
-
}) {
|
|
749
|
-
return /* @__PURE__ */ jsx3(KnowledgeActions.Provider, { value: actions, children });
|
|
750
|
-
}
|
|
751
|
-
function KnowledgeReceiptRow(props) {
|
|
752
|
-
const t = useOpenGeniText();
|
|
753
|
-
const actions = useContext2(KnowledgeActions);
|
|
754
|
-
const [retrying, setRetrying] = useState3(false);
|
|
755
|
-
const [retrySent, setRetrySent] = useState3(false);
|
|
756
|
-
const [error, setError] = useState3(null);
|
|
757
|
-
const label = props.outcome === "pending" ? t("timeline.knowledgeReceipt.knowledgeSavedForReview") : props.outcome === "failed" ? t("timeline.knowledgeReceipt.sourcePreparationFailed") : props.outcome === "rejected" ? t("timeline.knowledgeReceipt.sourceRemainsRejected") : props.outcome === "archived" ? t("timeline.knowledgeReceipt.knowledgeArchived") : props.source ? t("timeline.knowledgeReceipt.sourceSavedToKnowledge") : t("timeline.knowledgeReceipt.savedToKnowledge");
|
|
758
|
-
const actionClass = "rounded-og-sm px-1 py-0.5 text-og-sm text-og-fg-muted hover:text-og-fg focus-visible:outline-2 focus-visible:outline-og-accent disabled:opacity-50";
|
|
759
|
-
return /* @__PURE__ */ jsxs2(
|
|
760
|
-
ActivityDisclosure,
|
|
761
|
-
{
|
|
762
|
-
icon: /* @__PURE__ */ jsx3(BrainCircuitIcon, { className: "size-3.5" }),
|
|
763
|
-
iconTone: "muted",
|
|
764
|
-
title: label,
|
|
765
|
-
preview: props.title,
|
|
766
|
-
children: [
|
|
767
|
-
props.outcome === "pending" ? /* @__PURE__ */ jsx3(BodyNote, { children: t("timeline.knowledgeReceipt.savedInNeedsReviewThis") }) : null,
|
|
768
|
-
props.outcome === "failed" ? /* @__PURE__ */ jsx3(BodyNote, { children: t("timeline.knowledgeReceipt.theOriginalFileRemainsAttached") }) : null,
|
|
769
|
-
props.outcome === "rejected" ? /* @__PURE__ */ jsx3(BodyNote, { children: t("timeline.knowledgeReceipt.processingTheFileAgainLeaves") }) : null,
|
|
770
|
-
props.entryId && actions.onInspect ? /* @__PURE__ */ jsx3(
|
|
771
|
-
"button",
|
|
772
|
-
{
|
|
773
|
-
className: actionClass,
|
|
774
|
-
type: "button",
|
|
775
|
-
onClick: () => actions.onInspect?.(props.entryId),
|
|
776
|
-
children: props.outcome === "pending" ? t("timeline.knowledgeReceipt.reviewInKnowledge") : t("timeline.knowledgeReceipt.viewInKnowledge")
|
|
777
|
-
}
|
|
778
|
-
) : null,
|
|
779
|
-
props.outcome === "failed" && props.fileId && actions.onRetryFile ? /* @__PURE__ */ jsx3(
|
|
780
|
-
"button",
|
|
781
|
-
{
|
|
782
|
-
className: actionClass,
|
|
783
|
-
type: "button",
|
|
784
|
-
disabled: retrying || retrySent || actions.retryDisabled,
|
|
785
|
-
onClick: () => {
|
|
786
|
-
setRetrying(true);
|
|
787
|
-
setError(null);
|
|
788
|
-
void actions.onRetryFile(props.fileId).then((sent) => {
|
|
789
|
-
if (sent !== false) setRetrySent(true);
|
|
790
|
-
else setError(t("timeline.knowledgeReceipt.couldNotStartTheRetry"));
|
|
791
|
-
}).catch(() => setError(t("timeline.knowledgeReceipt.couldNotStartTheRetry2"))).finally(() => setRetrying(false));
|
|
792
|
-
},
|
|
793
|
-
children: retrying ? t("timeline.knowledgeReceipt.startingRetry") : retrySent ? t("timeline.knowledgeReceipt.retryRequested") : t("timeline.knowledgeReceipt.retryPreparation")
|
|
794
|
-
}
|
|
795
|
-
) : null,
|
|
796
|
-
error ? /* @__PURE__ */ jsx3("p", { role: "alert", className: "text-og-sm", children: error }) : null
|
|
797
|
-
]
|
|
798
|
-
}
|
|
799
|
-
);
|
|
800
|
-
}
|
|
801
|
-
|
|
802
|
-
// src/lib/git-patch.ts
|
|
803
|
-
function gitFileDiffToPatch(file) {
|
|
804
|
-
const oldPath = file.oldPath ?? file.path;
|
|
805
|
-
const newPath = file.path;
|
|
806
|
-
const lines = [];
|
|
807
|
-
lines.push(`diff --git a/${oldPath} b/${newPath}`);
|
|
808
|
-
if (file.status === "deleted") {
|
|
809
|
-
lines.push(`--- a/${oldPath}`);
|
|
810
|
-
lines.push(`+++ /dev/null`);
|
|
811
|
-
} else if (file.status === "added" || file.status === "untracked") {
|
|
812
|
-
lines.push(`--- /dev/null`);
|
|
813
|
-
lines.push(`+++ b/${newPath}`);
|
|
814
|
-
} else {
|
|
815
|
-
lines.push(`--- a/${oldPath}`);
|
|
816
|
-
lines.push(`+++ b/${newPath}`);
|
|
817
|
-
}
|
|
818
|
-
for (const hunk of file.hunks) {
|
|
819
|
-
const headerIsValid = /^@@ -\d+(?:,\d+)? \+\d+(?:,\d+)? @@/.test(hunk.header ?? "");
|
|
820
|
-
const header = headerIsValid ? hunk.header : `@@ -${hunk.oldStart},${hunk.oldLines} +${hunk.newStart},${hunk.newLines} @@`;
|
|
821
|
-
lines.push(header);
|
|
822
|
-
for (const line of hunk.lines) {
|
|
823
|
-
if (line.type === "meta") continue;
|
|
824
|
-
const prefix = line.type === "add" ? "+" : line.type === "del" ? "-" : " ";
|
|
825
|
-
lines.push(`${prefix}${line.text}`);
|
|
826
|
-
}
|
|
827
|
-
}
|
|
828
|
-
return lines.join("\n") + "\n";
|
|
829
|
-
}
|
|
830
|
-
|
|
831
|
-
// src/components/pierre-diff.tsx
|
|
832
|
-
import {
|
|
833
|
-
lazy,
|
|
834
|
-
Suspense,
|
|
835
|
-
useEffect as useEffect3,
|
|
836
|
-
useState as useState4,
|
|
837
|
-
useSyncExternalStore
|
|
838
|
-
} from "react";
|
|
839
|
-
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
840
|
-
var LazyPatchDiff = lazy(async () => {
|
|
841
|
-
const mod = await loadPierreDiffs();
|
|
842
|
-
return { default: mod.PatchDiff };
|
|
843
|
-
});
|
|
844
|
-
function PierreDiff({
|
|
845
|
-
diff,
|
|
846
|
-
layout = "unified",
|
|
847
|
-
themeType,
|
|
848
|
-
theme,
|
|
849
|
-
disableWorkerPool,
|
|
850
|
-
loading,
|
|
851
|
-
fallback: fallback2,
|
|
852
|
-
plain,
|
|
853
|
-
overflow = "wrap",
|
|
854
|
-
className
|
|
855
|
-
}) {
|
|
856
|
-
const [failed, setFailed] = useState4(false);
|
|
857
|
-
const [ready, setReady] = useState4(false);
|
|
858
|
-
const [forcedColors, setForcedColors] = useState4(false);
|
|
859
|
-
useEffect3(() => {
|
|
860
|
-
if (typeof window === "undefined" || typeof window.matchMedia !== "function") return;
|
|
861
|
-
const query = window.matchMedia("(forced-colors: active)");
|
|
862
|
-
const update = () => setForcedColors(query.matches);
|
|
863
|
-
update();
|
|
864
|
-
query.addEventListener?.("change", update);
|
|
865
|
-
return () => query.removeEventListener?.("change", update);
|
|
866
|
-
}, []);
|
|
867
|
-
const loaderRevision = useSyncExternalStore(
|
|
868
|
-
subscribePierreDiffs,
|
|
869
|
-
pierreDiffsRevision,
|
|
870
|
-
pierreDiffsRevision
|
|
871
|
-
);
|
|
872
|
-
useEffect3(() => {
|
|
873
|
-
if (plain) return;
|
|
874
|
-
let cancelled = false;
|
|
875
|
-
setFailed(false);
|
|
876
|
-
loadPierreDiffs().then(
|
|
877
|
-
() => {
|
|
878
|
-
if (!cancelled) setReady(true);
|
|
879
|
-
},
|
|
880
|
-
() => {
|
|
881
|
-
if (!cancelled) setFailed(true);
|
|
882
|
-
}
|
|
883
|
-
);
|
|
884
|
-
return () => {
|
|
885
|
-
cancelled = true;
|
|
886
|
-
};
|
|
887
|
-
}, [plain, loaderRevision]);
|
|
888
|
-
if (plain || failed || forcedColors) {
|
|
889
|
-
return /* @__PURE__ */ jsx4(
|
|
890
|
-
"div",
|
|
891
|
-
{
|
|
892
|
-
className,
|
|
893
|
-
"data-opengeni-plain-diff": forcedColors ? "forced-colors" : "fallback",
|
|
894
|
-
children: fallback2 ?? /* @__PURE__ */ jsx4(PlainPatch, { diff })
|
|
895
|
-
}
|
|
896
|
-
);
|
|
897
|
-
}
|
|
898
|
-
const options = {
|
|
899
|
-
diffStyle: layout,
|
|
900
|
-
overflow,
|
|
901
|
-
stickyHeader: true,
|
|
902
|
-
...theme ? { theme } : {
|
|
903
|
-
theme: {
|
|
904
|
-
dark: "github-dark-high-contrast",
|
|
905
|
-
light: "github-light-high-contrast"
|
|
906
|
-
}
|
|
907
|
-
},
|
|
908
|
-
themeType: themeType ?? "dark"
|
|
909
|
-
};
|
|
910
|
-
const pierreVars = {
|
|
911
|
-
"--diffs-dark-bg": "var(--og-color-bg)",
|
|
912
|
-
"--diffs-light-bg": "var(--og-color-bg)",
|
|
913
|
-
"--diffs-bg-buffer-override": "var(--og-color-surface-1)",
|
|
914
|
-
"--diffs-bg-separator-override": "var(--og-color-surface-1)",
|
|
915
|
-
// Pierre's default (fg mixed 65% into bg) falls under 4.5:1 on the lifted
|
|
916
|
-
// graphite separator; quiet meta text keeps AA on every diff surface.
|
|
917
|
-
"--diffs-fg-number-override": "var(--og-color-fg-subtle)",
|
|
918
|
-
"--diffs-addition-color-override": "var(--og-color-status-idle)",
|
|
919
|
-
"--diffs-deletion-color-override": "var(--og-color-status-failed)",
|
|
920
|
-
"--diffs-fg-number-addition-override": "var(--og-color-status-idle)",
|
|
921
|
-
"--diffs-fg-number-deletion-override": "var(--og-color-status-failed)",
|
|
922
|
-
"--diffs-bg-addition-override": "color-mix(in oklab, var(--og-color-status-idle) 12%, var(--og-color-bg))",
|
|
923
|
-
"--diffs-bg-deletion-override": "color-mix(in oklab, var(--og-color-status-failed) 12%, var(--og-color-bg))",
|
|
924
|
-
"--diffs-bg-addition-emphasis-override": "color-mix(in oklab, var(--og-color-status-idle) 22%, var(--og-color-bg))",
|
|
925
|
-
"--diffs-bg-deletion-emphasis-override": "color-mix(in oklab, var(--og-color-status-failed) 22%, var(--og-color-bg))",
|
|
926
|
-
"--diffs-header-font-family": "var(--og-font-sans)",
|
|
927
|
-
"--diffs-font-family": "var(--og-font-mono)",
|
|
928
|
-
"--diffs-font-size": "var(--og-code-font-size)",
|
|
929
|
-
"--diffs-line-height": "var(--og-code-line-height)"
|
|
930
|
-
};
|
|
931
|
-
return /* @__PURE__ */ jsx4("div", { className: cn("min-w-0", className), "data-opengeni-pierre-diff": true, style: pierreVars, children: /* @__PURE__ */ jsx4(Suspense, { fallback: loading ?? /* @__PURE__ */ jsx4(DiffSkeleton, {}), children: ready ? diff.map((file) => /* @__PURE__ */ jsx4("div", { className: "mb-2", children: /* @__PURE__ */ jsx4(
|
|
932
|
-
LazyPatchDiff,
|
|
933
|
-
{
|
|
934
|
-
patch: gitFileDiffToPatch(file),
|
|
935
|
-
options,
|
|
936
|
-
...disableWorkerPool !== void 0 ? { disableWorkerPool } : {}
|
|
937
|
-
}
|
|
938
|
-
) }, file.path)) : loading ?? /* @__PURE__ */ jsx4(DiffSkeleton, {}) }) });
|
|
939
|
-
}
|
|
940
|
-
function DiffSkeleton() {
|
|
941
|
-
const t = useOpenGeniText();
|
|
942
|
-
return /* @__PURE__ */ jsx4("div", { className: "p-3 text-og-sm text-og-fg-subtle", children: t("pierreDiff.loadingDiff") });
|
|
943
|
-
}
|
|
944
|
-
function PlainPatch({ diff }) {
|
|
945
|
-
const t = useOpenGeniText();
|
|
946
|
-
if (diff.length === 0) {
|
|
947
|
-
return /* @__PURE__ */ jsx4("div", { className: "p-3 text-og-sm text-og-fg-subtle", children: t("pierreDiff.noChanges") });
|
|
948
|
-
}
|
|
949
|
-
return /* @__PURE__ */ jsx4("div", { className: "min-w-0", children: diff.map((file) => /* @__PURE__ */ jsx4(
|
|
950
|
-
"pre",
|
|
951
|
-
{
|
|
952
|
-
"aria-label": t("pierreDiff.diffForPath", { path: file.path }),
|
|
953
|
-
className: "mb-2 overflow-auto whitespace-pre rounded-og-sm border border-og-border bg-og-bg/60 p-2.5 font-og-mono text-og-xs leading-5",
|
|
954
|
-
role: "region",
|
|
955
|
-
tabIndex: 0,
|
|
956
|
-
children: gitFileDiffToPatch(file).split("\n").map((line, index) => /* @__PURE__ */ jsx4(
|
|
957
|
-
"span",
|
|
958
|
-
{
|
|
959
|
-
className: cn(
|
|
960
|
-
"block",
|
|
961
|
-
line.startsWith("@@") ? "text-og-accent" : line.startsWith("+") ? "text-og-status-idle" : line.startsWith("-") ? "text-og-status-failed" : "text-og-fg-muted"
|
|
962
|
-
),
|
|
963
|
-
children: line || " "
|
|
964
|
-
},
|
|
965
|
-
index
|
|
966
|
-
))
|
|
967
|
-
},
|
|
968
|
-
file.path
|
|
969
|
-
)) });
|
|
970
|
-
}
|
|
971
|
-
|
|
972
|
-
// src/timeline/tool-renderers.tsx
|
|
973
|
-
import { defaultUrlTransform } from "react-markdown";
|
|
974
|
-
import { parseSandboxFileArtifactReceipt } from "@opengeni/sdk";
|
|
975
|
-
import {
|
|
976
|
-
BrainCircuitIcon as BrainCircuitIcon3,
|
|
977
|
-
CameraIcon,
|
|
978
|
-
CameraOffIcon,
|
|
979
|
-
DownloadIcon as DownloadIcon2,
|
|
980
|
-
FileSearchIcon as FileSearchIcon2,
|
|
981
|
-
GlobeIcon as GlobeIcon2,
|
|
982
|
-
ImageIcon as ImageIcon2,
|
|
983
|
-
KeyRoundIcon as KeyRoundIcon2,
|
|
984
|
-
LockIcon,
|
|
985
|
-
MessagesSquareIcon as MessagesSquareIcon2,
|
|
986
|
-
MousePointer2Icon,
|
|
987
|
-
PackageSearchIcon as PackageSearchIcon2,
|
|
988
|
-
PanelsTopLeftIcon as PanelsTopLeftIcon2,
|
|
989
|
-
VideoIcon as VideoIcon2
|
|
990
|
-
} from "lucide-react";
|
|
991
|
-
import { lazy as lazy2, useContext as useContext5, useMemo as useMemo2, useState as useState7 } from "react";
|
|
992
|
-
|
|
993
|
-
// src/timeline/compute-label.tsx
|
|
994
|
-
import { createContext as createContext3, useContext as useContext3 } from "react";
|
|
995
|
-
var TimelineComputeLabelContext = createContext3(null);
|
|
996
|
-
var TimelineComputeLabelProvider = TimelineComputeLabelContext.Provider;
|
|
997
|
-
function useTimelineComputeLabel() {
|
|
998
|
-
return useContext3(TimelineComputeLabelContext);
|
|
999
|
-
}
|
|
1000
|
-
|
|
1001
|
-
// src/timeline/provider-logo.tsx
|
|
1002
|
-
import { createContext as createContext4, useContext as useContext4, useEffect as useEffect4, useState as useState5 } from "react";
|
|
1003
|
-
import { Fragment as Fragment2, jsx as jsx5 } from "react/jsx-runtime";
|
|
1004
|
-
var ProviderLogoContext = createContext4(void 0);
|
|
1005
|
-
var ProviderLogoProvider = ProviderLogoContext.Provider;
|
|
1006
|
-
function useToolConnectorLogo(display) {
|
|
1007
|
-
const resolve = useContext4(ProviderLogoContext);
|
|
1008
|
-
if (!resolve || !display?.providerDomain) return null;
|
|
1009
|
-
return resolve(display.providerDomain) ?? null;
|
|
1010
|
-
}
|
|
1011
|
-
function ConnectorLogoIcon({
|
|
1012
|
-
src,
|
|
1013
|
-
fallback: fallback2,
|
|
1014
|
-
className
|
|
1015
|
-
}) {
|
|
1016
|
-
const [failed, setFailed] = useState5(false);
|
|
1017
|
-
useEffect4(() => setFailed(false), [src]);
|
|
1018
|
-
if (!src || failed) return /* @__PURE__ */ jsx5(Fragment2, { children: fallback2 });
|
|
1019
|
-
return /* @__PURE__ */ jsx5(
|
|
1020
|
-
"img",
|
|
1021
|
-
{
|
|
1022
|
-
src,
|
|
1023
|
-
alt: "",
|
|
1024
|
-
"aria-hidden": "true",
|
|
1025
|
-
loading: "lazy",
|
|
1026
|
-
decoding: "async",
|
|
1027
|
-
"data-og-connector-logo": "",
|
|
1028
|
-
className: className ?? "size-3.5 shrink-0 rounded-[3px] object-contain",
|
|
1029
|
-
onError: () => setFailed(true)
|
|
1030
|
-
}
|
|
1031
|
-
);
|
|
1032
|
-
}
|
|
1033
|
-
|
|
1034
|
-
// src/timeline/tool-icon.tsx
|
|
1035
|
-
import {
|
|
1036
|
-
ActivityIcon,
|
|
1037
|
-
AppWindowIcon,
|
|
1038
|
-
ArchiveIcon,
|
|
1039
|
-
BellIcon,
|
|
1040
|
-
BotIcon,
|
|
1041
|
-
BoxIcon,
|
|
1042
|
-
BrainCircuitIcon as BrainCircuitIcon2,
|
|
1043
|
-
CalendarClockIcon,
|
|
1044
|
-
CircleDotIcon,
|
|
1045
|
-
ClipboardIcon,
|
|
1046
|
-
CodeIcon,
|
|
1047
|
-
DownloadIcon,
|
|
1048
|
-
FileDiffIcon,
|
|
1049
|
-
FileIcon,
|
|
1050
|
-
FileSearchIcon,
|
|
1051
|
-
FileSpreadsheetIcon,
|
|
1052
|
-
FileTextIcon,
|
|
1053
|
-
FolderGitIcon,
|
|
1054
|
-
FolderIcon,
|
|
1055
|
-
GlobeIcon,
|
|
1056
|
-
GraduationCapIcon,
|
|
1057
|
-
HandIcon,
|
|
1058
|
-
HourglassIcon,
|
|
1059
|
-
ImageIcon,
|
|
1060
|
-
InboxIcon,
|
|
1061
|
-
KeyboardIcon,
|
|
1062
|
-
KeyRoundIcon,
|
|
1063
|
-
LogInIcon,
|
|
1064
|
-
MessageCircleQuestionIcon,
|
|
1065
|
-
MessagesSquareIcon,
|
|
1066
|
-
MessageSquareIcon,
|
|
1067
|
-
MonitorIcon,
|
|
1068
|
-
PackageSearchIcon,
|
|
1069
|
-
PanelsTopLeftIcon,
|
|
1070
|
-
PaperclipIcon,
|
|
1071
|
-
PencilIcon,
|
|
1072
|
-
PhoneIcon,
|
|
1073
|
-
PlugIcon,
|
|
1074
|
-
ReceiptIcon,
|
|
1075
|
-
SearchIcon,
|
|
1076
|
-
ServerCogIcon,
|
|
1077
|
-
ServerIcon,
|
|
1078
|
-
SettingsIcon,
|
|
1079
|
-
Share2Icon,
|
|
1080
|
-
SparklesIcon,
|
|
1081
|
-
TargetIcon,
|
|
1082
|
-
TerminalIcon,
|
|
1083
|
-
VideoIcon,
|
|
1084
|
-
WrenchIcon
|
|
1085
|
-
} from "lucide-react";
|
|
1086
|
-
import { jsx as jsx6 } from "react/jsx-runtime";
|
|
1087
|
-
function toolIcon(kind) {
|
|
1088
|
-
switch (kind) {
|
|
1089
|
-
case "terminal":
|
|
1090
|
-
return TerminalIcon;
|
|
1091
|
-
case "keyboard":
|
|
1092
|
-
return KeyboardIcon;
|
|
1093
|
-
case "file-diff":
|
|
1094
|
-
return FileDiffIcon;
|
|
1095
|
-
case "search":
|
|
1096
|
-
return SearchIcon;
|
|
1097
|
-
case "question":
|
|
1098
|
-
return MessageCircleQuestionIcon;
|
|
1099
|
-
case "target":
|
|
1100
|
-
return TargetIcon;
|
|
1101
|
-
case "brain":
|
|
1102
|
-
return BrainCircuitIcon2;
|
|
1103
|
-
case "sessions":
|
|
1104
|
-
return MessagesSquareIcon;
|
|
1105
|
-
case "server":
|
|
1106
|
-
return ServerIcon;
|
|
1107
|
-
case "server-cog":
|
|
1108
|
-
return ServerCogIcon;
|
|
1109
|
-
case "calendar":
|
|
1110
|
-
return CalendarClockIcon;
|
|
1111
|
-
case "panels":
|
|
1112
|
-
return PanelsTopLeftIcon;
|
|
1113
|
-
case "share":
|
|
1114
|
-
return Share2Icon;
|
|
1115
|
-
case "message":
|
|
1116
|
-
return MessageSquareIcon;
|
|
1117
|
-
case "git":
|
|
1118
|
-
return FolderGitIcon;
|
|
1119
|
-
case "box":
|
|
1120
|
-
return BoxIcon;
|
|
1121
|
-
case "key":
|
|
1122
|
-
return KeyRoundIcon;
|
|
1123
|
-
case "file-search":
|
|
1124
|
-
return FileSearchIcon;
|
|
1125
|
-
case "package-search":
|
|
1126
|
-
return PackageSearchIcon;
|
|
1127
|
-
case "plug":
|
|
1128
|
-
return PlugIcon;
|
|
1129
|
-
case "browser":
|
|
1130
|
-
return GlobeIcon;
|
|
1131
|
-
case "screen":
|
|
1132
|
-
return MonitorIcon;
|
|
1133
|
-
case "spreadsheet":
|
|
1134
|
-
return FileSpreadsheetIcon;
|
|
1135
|
-
case "wait":
|
|
1136
|
-
return HourglassIcon;
|
|
1137
|
-
case "download":
|
|
1138
|
-
return DownloadIcon;
|
|
1139
|
-
case "clipboard":
|
|
1140
|
-
return ClipboardIcon;
|
|
1141
|
-
case "image":
|
|
1142
|
-
return ImageIcon;
|
|
1143
|
-
case "video":
|
|
1144
|
-
return VideoIcon;
|
|
1145
|
-
case "record":
|
|
1146
|
-
return CircleDotIcon;
|
|
1147
|
-
case "document":
|
|
1148
|
-
return FileTextIcon;
|
|
1149
|
-
case "file":
|
|
1150
|
-
return FileIcon;
|
|
1151
|
-
case "attachment":
|
|
1152
|
-
return PaperclipIcon;
|
|
1153
|
-
case "archive":
|
|
1154
|
-
return ArchiveIcon;
|
|
1155
|
-
case "folder":
|
|
1156
|
-
return FolderIcon;
|
|
1157
|
-
case "site":
|
|
1158
|
-
return AppWindowIcon;
|
|
1159
|
-
case "skill":
|
|
1160
|
-
return GraduationCapIcon;
|
|
1161
|
-
case "settings":
|
|
1162
|
-
return SettingsIcon;
|
|
1163
|
-
case "bell":
|
|
1164
|
-
return BellIcon;
|
|
1165
|
-
case "phone":
|
|
1166
|
-
return PhoneIcon;
|
|
1167
|
-
case "inbox":
|
|
1168
|
-
return InboxIcon;
|
|
1169
|
-
case "help":
|
|
1170
|
-
return HandIcon;
|
|
1171
|
-
case "model":
|
|
1172
|
-
return SparklesIcon;
|
|
1173
|
-
case "progress":
|
|
1174
|
-
return ActivityIcon;
|
|
1175
|
-
case "helper":
|
|
1176
|
-
return BotIcon;
|
|
1177
|
-
case "sign-in":
|
|
1178
|
-
return LogInIcon;
|
|
1179
|
-
case "code":
|
|
1180
|
-
return CodeIcon;
|
|
1181
|
-
case "accounting":
|
|
1182
|
-
return ReceiptIcon;
|
|
1183
|
-
case "rename":
|
|
1184
|
-
return PencilIcon;
|
|
1185
|
-
case "wrench":
|
|
1186
|
-
return WrenchIcon;
|
|
1187
|
-
}
|
|
1188
|
-
}
|
|
1189
|
-
function ToolKindIcon({ kind, className }) {
|
|
1190
|
-
const Icon = toolIcon(kind);
|
|
1191
|
-
return /* @__PURE__ */ jsx6(Icon, { className });
|
|
1192
|
-
}
|
|
1193
|
-
|
|
1194
|
-
// src/timeline/tool-diff.tsx
|
|
1195
|
-
import { useState as useState6 } from "react";
|
|
1196
|
-
import { jsx as jsx7, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
1197
|
-
function ToolDiff({ files }) {
|
|
1198
|
-
const [layout, setLayout] = useState6("unified");
|
|
1199
|
-
const themeType = useThemeType(void 0);
|
|
1200
|
-
return /* @__PURE__ */ jsxs3("div", { className: "min-w-0", children: [
|
|
1201
|
-
/* @__PURE__ */ jsx7("div", { className: "mb-1.5 flex justify-end", children: /* @__PURE__ */ jsx7(LayoutToggle, { layout, onChange: setLayout }) }),
|
|
1202
|
-
/* @__PURE__ */ jsx7(PierreDiff, { diff: files, layout, themeType })
|
|
1203
|
-
] });
|
|
1204
|
-
}
|
|
1205
|
-
function LayoutToggle({
|
|
1206
|
-
layout,
|
|
1207
|
-
onChange
|
|
1208
|
-
}) {
|
|
1209
|
-
return /* @__PURE__ */ jsx7("div", { className: "inline-flex items-center gap-px rounded-og-xs border border-og-border p-px", children: ["unified", "split"].map((value) => /* @__PURE__ */ jsx7(
|
|
1210
|
-
"button",
|
|
1211
|
-
{
|
|
1212
|
-
type: "button",
|
|
1213
|
-
onClick: () => onChange(value),
|
|
1214
|
-
className: cn(
|
|
1215
|
-
"rounded-og-xs px-2 py-[3px] text-og-xs font-medium capitalize transition-colors",
|
|
1216
|
-
layout === value ? "bg-og-surface-2 text-og-fg" : "text-og-fg-subtle hover:text-og-fg-muted"
|
|
1217
|
-
),
|
|
1218
|
-
children: value
|
|
1219
|
-
},
|
|
1220
|
-
value
|
|
1221
|
-
)) });
|
|
1222
|
-
}
|
|
1223
|
-
function RawPatch({ diff }) {
|
|
1224
|
-
const t = useOpenGeniText();
|
|
1225
|
-
const occurrences = /* @__PURE__ */ new Map();
|
|
1226
|
-
const lines = diff.split("\n").map((line) => {
|
|
1227
|
-
const occurrence = (occurrences.get(line) ?? 0) + 1;
|
|
1228
|
-
occurrences.set(line, occurrence);
|
|
1229
|
-
return { key: `${line}\0${occurrence}`, line };
|
|
1230
|
-
});
|
|
1231
|
-
return /* @__PURE__ */ jsxs3("div", { className: "min-w-0", children: [
|
|
1232
|
-
/* @__PURE__ */ jsx7("p", { className: "mb-1 text-og-xs font-medium uppercase tracking-[0.08em] text-og-fg-subtle", children: t("timeline.toolDiff.rawPatchCouldNotParse") }),
|
|
1233
|
-
/* @__PURE__ */ jsx7("pre", { className: "max-h-72 overflow-auto border-l-2 border-og-border pl-3 font-og-mono text-og-xs leading-5", children: lines.map(({ key, line }) => /* @__PURE__ */ jsx7(
|
|
1234
|
-
"span",
|
|
1235
|
-
{
|
|
1236
|
-
className: cn(
|
|
1237
|
-
"block",
|
|
1238
|
-
line.startsWith("@@") ? "text-og-accent" : line.startsWith("+") ? "text-og-status-idle" : line.startsWith("-") ? "text-og-status-failed" : "text-og-fg-muted"
|
|
1239
|
-
),
|
|
1240
|
-
children: line || " "
|
|
1241
|
-
},
|
|
1242
|
-
key
|
|
1243
|
-
)) })
|
|
1244
|
-
] });
|
|
1245
|
-
}
|
|
1246
|
-
|
|
1247
|
-
// src/timeline/tool-renderers.tsx
|
|
1248
|
-
import { Fragment as Fragment3, jsx as jsx8, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
1249
|
-
var ICON_SIZE = "size-3.5";
|
|
1250
|
-
function RunningPreview({ children }) {
|
|
1251
|
-
const compact = useContext5(CompactActivityContext);
|
|
1252
|
-
return /* @__PURE__ */ jsxs4("span", { className: "inline-flex items-center gap-1.5", children: [
|
|
1253
|
-
!compact && /* @__PURE__ */ jsx8("span", { className: "size-1.5 shrink-0 animate-og-pulse rounded-full bg-og-status-running" }),
|
|
1254
|
-
/* @__PURE__ */ jsx8("span", { className: "min-w-0 truncate", children })
|
|
1255
|
-
] });
|
|
1256
|
-
}
|
|
1257
|
-
function PathPreview({
|
|
1258
|
-
path,
|
|
1259
|
-
add,
|
|
1260
|
-
del
|
|
1261
|
-
}) {
|
|
1262
|
-
return /* @__PURE__ */ jsxs4("span", { className: "inline-flex items-center gap-2 truncate font-og-mono", children: [
|
|
1263
|
-
/* @__PURE__ */ jsxs4("span", { className: "truncate", children: [
|
|
1264
|
-
/* @__PURE__ */ jsx8("span", { className: "text-og-fg-subtle", children: pathDirname(path) }),
|
|
1265
|
-
/* @__PURE__ */ jsx8("span", { className: "text-og-fg-muted", children: pathBasename(path) })
|
|
1266
|
-
] }),
|
|
1267
|
-
add != null || del != null ? /* @__PURE__ */ jsxs4("span", { className: "shrink-0 text-og-fg-subtle", children: [
|
|
1268
|
-
add != null ? `+${add}` : "",
|
|
1269
|
-
add != null && del != null ? " " : "",
|
|
1270
|
-
del != null ? `\u2212${del}` : ""
|
|
1271
|
-
] }) : null
|
|
1272
|
-
] });
|
|
1273
|
-
}
|
|
1274
|
-
function presentedPreviewNode(msg, preview) {
|
|
1275
|
-
switch (preview.kind) {
|
|
1276
|
-
case "text":
|
|
1277
|
-
return preview.running ? /* @__PURE__ */ jsx8(RunningPreview, { children: preview.text }) : preview.text;
|
|
1278
|
-
case "path":
|
|
1279
|
-
return /* @__PURE__ */ jsx8(PathPreview, { path: preview.path, add: preview.add, del: preview.del });
|
|
1280
|
-
case "files":
|
|
1281
|
-
return /* @__PURE__ */ jsxs4("span", { className: "inline-flex items-center gap-2 font-og-mono", children: [
|
|
1282
|
-
/* @__PURE__ */ jsx8("span", { className: "text-og-fg-muted", children: msg("timeline.toolRenderers.filesCount", { count: preview.count }) }),
|
|
1283
|
-
/* @__PURE__ */ jsxs4("span", { className: "text-og-fg-subtle", children: [
|
|
1284
|
-
"+",
|
|
1285
|
-
preview.add,
|
|
1286
|
-
" \u2212",
|
|
1287
|
-
preview.del
|
|
1288
|
-
] })
|
|
1289
|
-
] });
|
|
1290
|
-
case "malformed":
|
|
1291
|
-
return /* @__PURE__ */ jsxs4("span", { className: "inline-flex items-center gap-2 font-og-mono", children: [
|
|
1292
|
-
/* @__PURE__ */ jsx8("span", { className: "text-og-fg-muted", children: preview.name }),
|
|
1293
|
-
/* @__PURE__ */ jsx8("span", { className: "text-og-fg-subtle", children: msg("timeline.toolRenderers.malformedPatch") })
|
|
1294
|
-
] });
|
|
1295
|
-
}
|
|
1296
|
-
}
|
|
1297
|
-
function PresentedBody({ body }) {
|
|
1298
|
-
switch (body.kind) {
|
|
1299
|
-
case "term":
|
|
1300
|
-
return /* @__PURE__ */ jsxs4(Fragment3, { children: [
|
|
1301
|
-
/* @__PURE__ */ jsx8(
|
|
1302
|
-
TermBlock,
|
|
1303
|
-
{
|
|
1304
|
-
command: body.command,
|
|
1305
|
-
...body.workdir !== null || body.command === null ? { workdir: body.workdir } : {},
|
|
1306
|
-
output: body.output,
|
|
1307
|
-
...body.live ? { live: true } : {},
|
|
1308
|
-
...body.failed !== void 0 ? { failed: body.failed } : {}
|
|
1309
|
-
}
|
|
1310
|
-
),
|
|
1311
|
-
body.note ? /* @__PURE__ */ jsx8(BodyNote, { children: body.note }) : null
|
|
1312
|
-
] });
|
|
1313
|
-
case "note":
|
|
1314
|
-
return body.tone ? /* @__PURE__ */ jsx8(BodyNote, { tone: body.tone, children: body.text }) : /* @__PURE__ */ jsx8(BodyNote, { children: body.text });
|
|
1315
|
-
case "payloads":
|
|
1316
|
-
return /* @__PURE__ */ jsxs4(Fragment3, { children: [
|
|
1317
|
-
body.note ? /* @__PURE__ */ jsx8("p", { className: "m-0 py-1 text-og-sm text-og-fg-muted", children: body.note }) : null,
|
|
1318
|
-
body.blocks.map(
|
|
1319
|
-
(block) => block.failed ? /* @__PURE__ */ jsx8(PayloadBlock, { label: block.label, value: block.value, failed: true }, block.label) : /* @__PURE__ */ jsx8(PayloadBlock, { label: block.label, value: block.value }, block.label)
|
|
1320
|
-
)
|
|
1321
|
-
] });
|
|
1322
|
-
case "patch":
|
|
1323
|
-
if (body.bare) {
|
|
1324
|
-
return /* @__PURE__ */ jsx8(RawPatch, { diff: body.files[0]?.diff ?? "" });
|
|
1325
|
-
}
|
|
1326
|
-
return /* @__PURE__ */ jsx8(Fragment3, { children: body.files.map(
|
|
1327
|
-
(entry) => entry.file ? /* @__PURE__ */ jsx8(ToolDiff, { files: [entry.file] }, entry.key) : /* @__PURE__ */ jsxs4("div", { children: [
|
|
1328
|
-
/* @__PURE__ */ jsx8("p", { className: "mb-1 font-og-mono text-og-xs text-og-fg-muted", children: entry.path }),
|
|
1329
|
-
/* @__PURE__ */ jsx8(RawPatch, { diff: entry.diff })
|
|
1330
|
-
] }, entry.key)
|
|
1331
|
-
) });
|
|
1332
|
-
case "web-results":
|
|
1333
|
-
return /* @__PURE__ */ jsx8(WebSearchResults, { results: body.results });
|
|
1334
|
-
case "none":
|
|
1335
|
-
return null;
|
|
1336
|
-
}
|
|
1337
|
-
}
|
|
1338
|
-
function WebSearchResults({ results }) {
|
|
1339
|
-
const msg = useOpenGeniText();
|
|
1340
|
-
const resultOccurrences = /* @__PURE__ */ new Map();
|
|
1341
|
-
const keyedResults = results?.map((result) => {
|
|
1342
|
-
const contentKey = `${result.domain}\0${result.title}\0${result.snippet}`;
|
|
1343
|
-
const occurrence = (resultOccurrences.get(contentKey) ?? 0) + 1;
|
|
1344
|
-
resultOccurrences.set(contentKey, occurrence);
|
|
1345
|
-
return { key: `${contentKey}\0${occurrence}`, result };
|
|
1346
|
-
});
|
|
1347
|
-
if (!keyedResults || !keyedResults.length) {
|
|
1348
|
-
return /* @__PURE__ */ jsx8(BodyNote, { children: msg("timeline.toolRenderers.resultsFoldedIntoModelContext") });
|
|
1349
|
-
}
|
|
1350
|
-
return /* @__PURE__ */ jsx8("ul", { className: "flex flex-col gap-2", children: keyedResults.map(({ key, result }) => /* @__PURE__ */ jsxs4("li", { className: "flex gap-2.5", children: [
|
|
1351
|
-
/* @__PURE__ */ jsx8(GlobeIcon2, { className: "mt-0.5 size-3.5 shrink-0 text-og-fg-subtle" }),
|
|
1352
|
-
/* @__PURE__ */ jsxs4("div", { className: "min-w-0", children: [
|
|
1353
|
-
/* @__PURE__ */ jsxs4("p", { className: "truncate text-og-base text-og-fg", children: [
|
|
1354
|
-
result.title,
|
|
1355
|
-
" ",
|
|
1356
|
-
/* @__PURE__ */ jsx8("span", { className: "text-og-fg-subtle", children: result.domain })
|
|
1357
|
-
] }),
|
|
1358
|
-
/* @__PURE__ */ jsx8("p", { className: "text-og-sm leading-5 text-og-fg-muted", children: result.snippet })
|
|
1359
|
-
] })
|
|
1360
|
-
] }, key)) });
|
|
1361
|
-
}
|
|
1362
|
-
function PresentedToolRow({
|
|
1363
|
-
presentation,
|
|
1364
|
-
item,
|
|
1365
|
-
logo = null
|
|
1366
|
-
}) {
|
|
1367
|
-
const msg = useOpenGeniText();
|
|
1368
|
-
const computeLabel = useTimelineComputeLabel();
|
|
1369
|
-
const p = useToolDetails() === "plain" ? plainToolRow(msg, item, presentation, { computeLabel }) : presentation;
|
|
1370
|
-
const Icon = toolIcon(p.icon);
|
|
1371
|
-
return /* @__PURE__ */ jsx8(
|
|
1372
|
-
ActivityDisclosure,
|
|
1373
|
-
{
|
|
1374
|
-
icon: /* @__PURE__ */ jsx8(ConnectorLogoIcon, { src: logo, fallback: /* @__PURE__ */ jsx8(Icon, { className: ICON_SIZE }) }),
|
|
1375
|
-
iconTone: p.iconTone,
|
|
1376
|
-
title: /* @__PURE__ */ jsx8(SecretRefText, { text: p.title, linkable: false }),
|
|
1377
|
-
...p.titleMono ? { titleMono: true } : {},
|
|
1378
|
-
...p.running ? { running: true } : {},
|
|
1379
|
-
...p.chip ? { chip: p.chip } : {},
|
|
1380
|
-
...p.failed !== void 0 ? { failed: p.failed } : {},
|
|
1381
|
-
...p.cancelled !== void 0 ? { cancelled: p.cancelled } : {},
|
|
1382
|
-
preview: p.preview ? presentedPreviewNode(msg, p.preview) : void 0,
|
|
1383
|
-
expandable: p.body.kind !== "none",
|
|
1384
|
-
children: /* @__PURE__ */ jsx8(PresentedBody, { body: p.body })
|
|
1385
|
-
}
|
|
1386
|
-
);
|
|
1387
|
-
}
|
|
1388
|
-
function ExecRenderer({ item }) {
|
|
1389
|
-
const msg = useOpenGeniText();
|
|
1390
|
-
const computeLabel = useTimelineComputeLabel();
|
|
1391
|
-
return /* @__PURE__ */ jsx8(PresentedToolRow, { presentation: execPresentation(msg, item, { computeLabel }), item });
|
|
1392
|
-
}
|
|
1393
|
-
function WriteStdinRenderer({ item }) {
|
|
1394
|
-
const msg = useOpenGeniText();
|
|
1395
|
-
return /* @__PURE__ */ jsx8(PresentedToolRow, { presentation: writeStdinPresentation(msg, item), item });
|
|
1396
|
-
}
|
|
1397
|
-
function ApplyPatchRenderer({ item }) {
|
|
1398
|
-
const msg = useOpenGeniText();
|
|
1399
|
-
const presentation = applyPatchPresentation(msg, item);
|
|
1400
|
-
return presentation ? /* @__PURE__ */ jsx8(PresentedToolRow, { presentation, item }) : /* @__PURE__ */ jsx8(GenericRenderer, { item });
|
|
1401
|
-
}
|
|
1402
|
-
function WebSearchRenderer({ item }) {
|
|
1403
|
-
const msg = useOpenGeniText();
|
|
1404
|
-
return /* @__PURE__ */ jsx8(PresentedToolRow, { presentation: webSearchPresentation(msg, item), item });
|
|
1405
|
-
}
|
|
1406
|
-
function AskRenderer({ item }) {
|
|
1407
|
-
const msg = useOpenGeniText();
|
|
1408
|
-
return /* @__PURE__ */ jsx8(PresentedToolRow, { presentation: askPresentation(msg, item), item });
|
|
1409
|
-
}
|
|
1410
|
-
function RunOnRenderer({ item }) {
|
|
1411
|
-
const msg = useOpenGeniText();
|
|
1412
|
-
return /* @__PURE__ */ jsx8(PresentedToolRow, { presentation: runOnPresentation(msg, item), item });
|
|
1413
|
-
}
|
|
1414
|
-
function MachineRenderer({ item, loadRetainedScreenshot }) {
|
|
1415
|
-
const msg = useOpenGeniText();
|
|
1416
|
-
const presentation = machinePresentation(msg, item);
|
|
1417
|
-
const retained = mcpToolLeaf(item.name).startsWith("computer_") ? retainedScreenshotMetadata(item.output) : null;
|
|
1418
|
-
if (!retained?.available) return /* @__PURE__ */ jsx8(PresentedToolRow, { presentation, item });
|
|
1419
|
-
return /* @__PURE__ */ jsx8(
|
|
1420
|
-
RetainedSessionImageDisclosure,
|
|
1421
|
-
{
|
|
1422
|
-
artifact: retained,
|
|
1423
|
-
load: loadRetainedScreenshot,
|
|
1424
|
-
title: presentation.title,
|
|
1425
|
-
caption: presentation.title,
|
|
1426
|
-
noun: "screenshot",
|
|
1427
|
-
icon: /* @__PURE__ */ jsx8(CameraIcon, { className: ICON_SIZE }),
|
|
1428
|
-
lightboxLabel: msg("timeline.toolRenderers.screenshot"),
|
|
1429
|
-
batched: null,
|
|
1430
|
-
failed: item.status === "failed",
|
|
1431
|
-
cancelled: item.status === "cancelled"
|
|
1432
|
-
}
|
|
1433
|
-
);
|
|
1434
|
-
}
|
|
1435
|
-
function UnreviewedGenericRenderer({ item, loadRetainedScreenshot }) {
|
|
1436
|
-
const msg = useOpenGeniText();
|
|
1437
|
-
const details = useToolDetails();
|
|
1438
|
-
const logo = useToolConnectorLogo(item.display);
|
|
1439
|
-
const { images, output } = retainedToolResultImages(item.output);
|
|
1440
|
-
if (images.length === 0 || item.status === "running") {
|
|
1441
|
-
return /* @__PURE__ */ jsx8(PresentedToolRow, { presentation: toolRowPresentation(msg, item), item, logo });
|
|
1442
|
-
}
|
|
1443
|
-
const presentation = toolRowPresentation(msg, { ...item, output }, { details });
|
|
1444
|
-
const Icon = toolIcon(presentation.icon);
|
|
1445
|
-
const [first, ...rest] = images;
|
|
1446
|
-
return /* @__PURE__ */ jsxs4(
|
|
1447
|
-
RetainedSessionImageDisclosure,
|
|
1448
|
-
{
|
|
1449
|
-
artifact: first,
|
|
1450
|
-
load: loadRetainedScreenshot,
|
|
1451
|
-
title: presentation.title,
|
|
1452
|
-
caption: presentation.title,
|
|
1453
|
-
noun: "image",
|
|
1454
|
-
icon: /* @__PURE__ */ jsx8(ConnectorLogoIcon, { src: logo, fallback: /* @__PURE__ */ jsx8(Icon, { className: ICON_SIZE }) }),
|
|
1455
|
-
lightboxLabel: presentation.title,
|
|
1456
|
-
batched: null,
|
|
1457
|
-
failed: presentation.failed ?? false,
|
|
1458
|
-
cancelled: presentation.cancelled ?? false,
|
|
1459
|
-
children: [
|
|
1460
|
-
/* @__PURE__ */ jsx8(PresentedBody, { body: presentation.body }),
|
|
1461
|
-
rest.map((image, index) => /* @__PURE__ */ jsx8(
|
|
1462
|
-
RetainedSessionImageDisclosure,
|
|
1463
|
-
{
|
|
1464
|
-
artifact: image,
|
|
1465
|
-
load: loadRetainedScreenshot,
|
|
1466
|
-
title: msg("timeline.toolRenderers.imageIndex", { index: index + 2 }),
|
|
1467
|
-
caption: `${presentation.title}, image ${index + 2}`,
|
|
1468
|
-
noun: "image",
|
|
1469
|
-
icon: /* @__PURE__ */ jsx8(ImageIcon2, { className: ICON_SIZE }),
|
|
1470
|
-
lightboxLabel: presentation.title,
|
|
1471
|
-
batched: null,
|
|
1472
|
-
failed: false,
|
|
1473
|
-
cancelled: false
|
|
1474
|
-
},
|
|
1475
|
-
image.artifactId
|
|
1476
|
-
))
|
|
1477
|
-
]
|
|
1478
|
-
}
|
|
1479
|
-
);
|
|
1480
|
-
}
|
|
1481
|
-
function computerVerb(msg, action) {
|
|
1482
|
-
if (!action || !action.type) {
|
|
1483
|
-
return msg("timeline.toolRenderers.acted");
|
|
1484
|
-
}
|
|
1485
|
-
switch (action.type) {
|
|
1486
|
-
case "screenshot":
|
|
1487
|
-
return msg("timeline.toolRenderers.screenshot");
|
|
1488
|
-
case "click":
|
|
1489
|
-
return msg("timeline.toolRenderers.clickedXY", { x: action.x, y: action.y });
|
|
1490
|
-
case "double_click":
|
|
1491
|
-
return msg("timeline.toolRenderers.doubleClickedXY", { x: action.x, y: action.y });
|
|
1492
|
-
case "move":
|
|
1493
|
-
return msg("timeline.toolRenderers.movedXY", { x: action.x, y: action.y });
|
|
1494
|
-
case "scroll":
|
|
1495
|
-
return msg("timeline.toolRenderers.scrolled");
|
|
1496
|
-
case "type": {
|
|
1497
|
-
const t = action.text ?? "";
|
|
1498
|
-
return msg("timeline.toolRenderers.typedSliceValue", {
|
|
1499
|
-
slice: t.slice(0, 28),
|
|
1500
|
-
value: t.length > 28 ? "\u2026" : ""
|
|
1501
|
-
});
|
|
1502
|
-
}
|
|
1503
|
-
case "keypress":
|
|
1504
|
-
return msg("timeline.toolRenderers.pressedJoin", { join: (action.keys ?? []).join("+") });
|
|
1505
|
-
case "drag":
|
|
1506
|
-
return msg("timeline.toolRenderers.dragged");
|
|
1507
|
-
case "wait":
|
|
1508
|
-
return msg("timeline.toolRenderers.waited");
|
|
1509
|
-
default:
|
|
1510
|
-
return action.type;
|
|
1511
|
-
}
|
|
1512
|
-
}
|
|
1513
|
-
function asComputerArgs(args) {
|
|
1514
|
-
if (!args) {
|
|
1515
|
-
return {};
|
|
1516
|
-
}
|
|
1517
|
-
const parsed = typeof args === "string" ? tryParseJson(args) : args;
|
|
1518
|
-
if (!parsed || typeof parsed !== "object") {
|
|
1519
|
-
return {};
|
|
1520
|
-
}
|
|
1521
|
-
const record = parsed;
|
|
1522
|
-
return {
|
|
1523
|
-
...typeof record.x === "number" ? { x: record.x } : {},
|
|
1524
|
-
...typeof record.y === "number" ? { y: record.y } : {},
|
|
1525
|
-
...typeof record.text === "string" ? { text: record.text } : {},
|
|
1526
|
-
...Array.isArray(record.keys) ? { keys: record.keys } : {},
|
|
1527
|
-
...typeof record.button === "string" ? { button: record.button } : {}
|
|
1528
|
-
};
|
|
1529
|
-
}
|
|
1530
|
-
function ComputerCallRenderer({ item, loadRetainedScreenshot }) {
|
|
1531
|
-
const msg = useOpenGeniText();
|
|
1532
|
-
const raw = item.raw ?? {};
|
|
1533
|
-
const functionAction = !raw.action && item.name.startsWith("computer_") && item.name !== "computer_call" ? {
|
|
1534
|
-
type: item.name.slice("computer_".length),
|
|
1535
|
-
...asComputerArgs(item.arguments)
|
|
1536
|
-
} : void 0;
|
|
1537
|
-
const action = raw.action ?? functionAction;
|
|
1538
|
-
const actions = raw.actions ?? (action ? [action] : []);
|
|
1539
|
-
const verb = computerVerb(msg, action);
|
|
1540
|
-
const out = item.output;
|
|
1541
|
-
const running = item.status === "running";
|
|
1542
|
-
const rejected = raw.providerData?.approvalStatus === "rejected";
|
|
1543
|
-
const readOnly = typeof out === "string" && out.includes("read-only");
|
|
1544
|
-
const shotUrl = screenshotDataUrl(out);
|
|
1545
|
-
const retained = retainedScreenshotMetadata(out);
|
|
1546
|
-
const omittedMedia = mediaPreviewFact(out);
|
|
1547
|
-
const empty = out === "" || out == null;
|
|
1548
|
-
const batched = actions.length > 1 ? actions.map((a) => computerVerb(msg, a)).join(" \xB7 ") : null;
|
|
1549
|
-
const countSuffix = actions.length > 1 ? ` \xB7${actions.length}` : "";
|
|
1550
|
-
const isShot = action?.type === "screenshot";
|
|
1551
|
-
if (running) {
|
|
1552
|
-
return /* @__PURE__ */ jsx8(
|
|
1553
|
-
ActivityDisclosure,
|
|
1554
|
-
{
|
|
1555
|
-
icon: isShot ? /* @__PURE__ */ jsx8(CameraIcon, { className: ICON_SIZE }) : /* @__PURE__ */ jsx8(MousePointer2Icon, { className: ICON_SIZE }),
|
|
1556
|
-
iconTone: "running",
|
|
1557
|
-
title: verb,
|
|
1558
|
-
running: true,
|
|
1559
|
-
media: /* @__PURE__ */ jsx8(MediaSkeleton, {}),
|
|
1560
|
-
children: /* @__PURE__ */ jsx8(BodyNote, { children: msg("timeline.toolRenderers.capturingFrame") })
|
|
1561
|
-
}
|
|
1562
|
-
);
|
|
1563
|
-
}
|
|
1564
|
-
if (readOnly) {
|
|
1565
|
-
return /* @__PURE__ */ jsx8(
|
|
1566
|
-
ActivityDisclosure,
|
|
1567
|
-
{
|
|
1568
|
-
icon: /* @__PURE__ */ jsx8(MousePointer2Icon, { className: ICON_SIZE }),
|
|
1569
|
-
iconTone: "failed",
|
|
1570
|
-
title: verb,
|
|
1571
|
-
chip: { tone: "bad", text: "read-only" },
|
|
1572
|
-
preview: "write actions disabled",
|
|
1573
|
-
children: /* @__PURE__ */ jsx8(BodyNote, { tone: "error", children: msg("timeline.toolRenderers.computerUseIsReadOnly") })
|
|
1574
|
-
}
|
|
1575
|
-
);
|
|
1576
|
-
}
|
|
1577
|
-
if (rejected) {
|
|
1578
|
-
return /* @__PURE__ */ jsx8(
|
|
1579
|
-
ActivityDisclosure,
|
|
1580
|
-
{
|
|
1581
|
-
icon: /* @__PURE__ */ jsx8(LockIcon, { className: ICON_SIZE }),
|
|
1582
|
-
iconTone: "muted",
|
|
1583
|
-
title: verb,
|
|
1584
|
-
preview: msg("timeline.toolRenderers.approvalRejectedThisActionDid2"),
|
|
1585
|
-
children: /* @__PURE__ */ jsx8(BodyNote, { children: msg("timeline.toolRenderers.approvalRejectedThisActionDid") })
|
|
1586
|
-
}
|
|
1587
|
-
);
|
|
1588
|
-
}
|
|
1589
|
-
const isFailed = item.status === "failed";
|
|
1590
|
-
const isCancelled = item.status === "cancelled";
|
|
1591
|
-
if (retained) {
|
|
1592
|
-
if (!retained.available) {
|
|
1593
|
-
const state = retained.reason === "expired" || retained.reason === "deleted" ? retained.reason : "unavailable";
|
|
1594
|
-
return /* @__PURE__ */ jsx8(
|
|
1595
|
-
ActivityDisclosure,
|
|
1596
|
-
{
|
|
1597
|
-
icon: /* @__PURE__ */ jsx8(CameraOffIcon, { className: ICON_SIZE }),
|
|
1598
|
-
iconTone: isFailed ? "failed" : "muted",
|
|
1599
|
-
title: `${verb}${countSuffix} \xB7 ${state}`,
|
|
1600
|
-
failed: isFailed,
|
|
1601
|
-
cancelled: isCancelled,
|
|
1602
|
-
preview: `screenshot ${state}`,
|
|
1603
|
-
media: /* @__PURE__ */ jsx8(MediaEmpty, {}),
|
|
1604
|
-
children: /* @__PURE__ */ jsx8(BodyNote, { tone: isFailed ? "error" : void 0, children: msg("timeline.toolRenderers.screenshotStateReplaceall", {
|
|
1605
|
-
state,
|
|
1606
|
-
replaceAll: retained.reason.replaceAll("_", " ")
|
|
1607
|
-
}) })
|
|
1608
|
-
}
|
|
1609
|
-
);
|
|
1610
|
-
}
|
|
1611
|
-
return /* @__PURE__ */ jsx8(
|
|
1612
|
-
RetainedSessionImageDisclosure,
|
|
1613
|
-
{
|
|
1614
|
-
artifact: retained,
|
|
1615
|
-
load: loadRetainedScreenshot,
|
|
1616
|
-
title: `${verb}${countSuffix}`,
|
|
1617
|
-
caption: `${verb}${countSuffix}`,
|
|
1618
|
-
noun: "screenshot",
|
|
1619
|
-
icon: /* @__PURE__ */ jsx8(CameraIcon, { className: ICON_SIZE }),
|
|
1620
|
-
lightboxLabel: msg("timeline.toolRenderers.screenshot"),
|
|
1621
|
-
batched,
|
|
1622
|
-
failed: isFailed,
|
|
1623
|
-
cancelled: isCancelled
|
|
1624
|
-
}
|
|
1625
|
-
);
|
|
1626
|
-
}
|
|
1627
|
-
if (shotUrl) {
|
|
1628
|
-
const caption = `${verb}${actions.length > 1 ? ` (+${actions.length - 1} more)` : ""}`;
|
|
1629
|
-
return /* @__PURE__ */ jsxs4(
|
|
1630
|
-
ActivityDisclosure,
|
|
1631
|
-
{
|
|
1632
|
-
icon: isShot ? /* @__PURE__ */ jsx8(CameraIcon, { className: ICON_SIZE }) : /* @__PURE__ */ jsx8(MousePointer2Icon, { className: ICON_SIZE }),
|
|
1633
|
-
iconTone: isFailed ? "failed" : "accent",
|
|
1634
|
-
title: `${verb}${countSuffix}`,
|
|
1635
|
-
failed: isFailed,
|
|
1636
|
-
cancelled: isCancelled,
|
|
1637
|
-
media: /* @__PURE__ */ jsx8(Thumbnail, { src: shotUrl, caption }),
|
|
1638
|
-
children: [
|
|
1639
|
-
/* @__PURE__ */ jsx8(ScreenshotFigure, { src: shotUrl, caption }),
|
|
1640
|
-
batched ? /* @__PURE__ */ jsx8(BodyNote, { children: msg("timeline.toolRenderers.batchedBatched", { batched }) }) : null
|
|
1641
|
-
]
|
|
1642
|
-
}
|
|
1643
|
-
);
|
|
1644
|
-
}
|
|
1645
|
-
if (omittedMedia) {
|
|
1646
|
-
return /* @__PURE__ */ jsxs4(
|
|
1647
|
-
ActivityDisclosure,
|
|
1648
|
-
{
|
|
1649
|
-
icon: /* @__PURE__ */ jsx8(CameraOffIcon, { className: ICON_SIZE }),
|
|
1650
|
-
iconTone: isFailed ? "failed" : "muted",
|
|
1651
|
-
title: msg("timeline.toolRenderers.verbCountsuffixImageOmittedNot", { verb, countSuffix }),
|
|
1652
|
-
failed: isFailed,
|
|
1653
|
-
cancelled: isCancelled,
|
|
1654
|
-
preview: msg("timeline.toolRenderers.inlineImageOmittedNotRetained"),
|
|
1655
|
-
media: /* @__PURE__ */ jsx8(MediaEmpty, {}),
|
|
1656
|
-
children: [
|
|
1657
|
-
/* @__PURE__ */ jsx8(BodyNote, { children: msg("timeline.toolRenderers.theInlineMediatypeOutputWas", {
|
|
1658
|
-
mediaType: omittedMedia.mediaType
|
|
1659
|
-
}) }),
|
|
1660
|
-
batched ? /* @__PURE__ */ jsx8(BodyNote, { children: msg("timeline.toolRenderers.batchedBatched", { batched }) }) : null
|
|
1661
|
-
]
|
|
1662
|
-
}
|
|
1663
|
-
);
|
|
1664
|
-
}
|
|
1665
|
-
if (empty) {
|
|
1666
|
-
return /* @__PURE__ */ jsx8(
|
|
1667
|
-
ActivityDisclosure,
|
|
1668
|
-
{
|
|
1669
|
-
icon: /* @__PURE__ */ jsx8(CameraOffIcon, { className: ICON_SIZE }),
|
|
1670
|
-
iconTone: isFailed ? "failed" : "muted",
|
|
1671
|
-
title: verb,
|
|
1672
|
-
failed: isFailed,
|
|
1673
|
-
cancelled: isCancelled,
|
|
1674
|
-
media: /* @__PURE__ */ jsx8(MediaEmpty, {}),
|
|
1675
|
-
children: /* @__PURE__ */ jsx8(BodyNote, { children: isFailed ? msg("timeline.toolRenderers.computerCallFailedNoImage") : isCancelled ? msg("timeline.toolRenderers.computerCallInterruptedNoImage") : msg("timeline.toolRenderers.noImageTheSessionReturned") })
|
|
1676
|
-
}
|
|
1677
|
-
);
|
|
1678
|
-
}
|
|
1679
|
-
return /* @__PURE__ */ jsx8(
|
|
1680
|
-
ActivityDisclosure,
|
|
1681
|
-
{
|
|
1682
|
-
icon: /* @__PURE__ */ jsx8(MousePointer2Icon, { className: ICON_SIZE }),
|
|
1683
|
-
iconTone: isFailed ? "failed" : "accent",
|
|
1684
|
-
title: verb,
|
|
1685
|
-
failed: isFailed,
|
|
1686
|
-
cancelled: isCancelled,
|
|
1687
|
-
preview: batched ?? void 0,
|
|
1688
|
-
expandable: batched != null,
|
|
1689
|
-
children: batched ? /* @__PURE__ */ jsx8(BodyNote, { children: batched }) : null
|
|
1690
|
-
}
|
|
1691
|
-
);
|
|
1692
|
-
}
|
|
1693
|
-
function BrowserScreenshotRenderer(props) {
|
|
1694
|
-
const msg = useOpenGeniText();
|
|
1695
|
-
const { item, loadRetainedScreenshot } = props;
|
|
1696
|
-
const leaf = mcpToolLeaf(item.name);
|
|
1697
|
-
const title = leaf === "browser_observe" ? msg("timeline.toolRenderers.observedBrowser") : leaf === "browser_act" ? msg("timeline.toolRenderers.usedBrowser") : msg("timeline.toolRenderers.browserScreenshot");
|
|
1698
|
-
const retained = retainedScreenshotMetadata(item.output);
|
|
1699
|
-
const isFailed = item.status === "failed";
|
|
1700
|
-
const isCancelled = item.status === "cancelled";
|
|
1701
|
-
if (item.status === "running" && leaf === "browser_screenshot") {
|
|
1702
|
-
return /* @__PURE__ */ jsx8(
|
|
1703
|
-
ActivityDisclosure,
|
|
1704
|
-
{
|
|
1705
|
-
icon: /* @__PURE__ */ jsx8(CameraIcon, { className: ICON_SIZE }),
|
|
1706
|
-
iconTone: "running",
|
|
1707
|
-
title,
|
|
1708
|
-
running: true,
|
|
1709
|
-
media: /* @__PURE__ */ jsx8(MediaSkeleton, {}),
|
|
1710
|
-
children: /* @__PURE__ */ jsx8(BodyNote, { children: msg("timeline.toolRenderers.capturingFrame") })
|
|
1711
|
-
}
|
|
1712
|
-
);
|
|
1713
|
-
}
|
|
1714
|
-
if (!retained) return /* @__PURE__ */ jsx8(GenericRenderer, { ...props });
|
|
1715
|
-
if (!retained.available) {
|
|
1716
|
-
const state = retained.reason === "expired" || retained.reason === "deleted" ? retained.reason : "unavailable";
|
|
1717
|
-
return /* @__PURE__ */ jsx8(
|
|
1718
|
-
ActivityDisclosure,
|
|
1719
|
-
{
|
|
1720
|
-
icon: /* @__PURE__ */ jsx8(CameraOffIcon, { className: ICON_SIZE }),
|
|
1721
|
-
iconTone: isFailed ? "failed" : "muted",
|
|
1722
|
-
title: `${title} \xB7 ${state}`,
|
|
1723
|
-
failed: isFailed,
|
|
1724
|
-
cancelled: isCancelled,
|
|
1725
|
-
preview: `screenshot ${state}`,
|
|
1726
|
-
media: /* @__PURE__ */ jsx8(MediaEmpty, {}),
|
|
1727
|
-
children: /* @__PURE__ */ jsx8(BodyNote, { tone: isFailed ? "error" : void 0, children: msg("timeline.toolRenderers.screenshotStateReplaceall", {
|
|
1728
|
-
state,
|
|
1729
|
-
replaceAll: retained.reason.replaceAll("_", " ")
|
|
1730
|
-
}) })
|
|
1731
|
-
}
|
|
1732
|
-
);
|
|
1733
|
-
}
|
|
1734
|
-
return /* @__PURE__ */ jsx8(
|
|
1735
|
-
RetainedSessionImageDisclosure,
|
|
1736
|
-
{
|
|
1737
|
-
artifact: retained,
|
|
1738
|
-
load: loadRetainedScreenshot,
|
|
1739
|
-
title,
|
|
1740
|
-
caption: title,
|
|
1741
|
-
noun: "screenshot",
|
|
1742
|
-
icon: /* @__PURE__ */ jsx8(CameraIcon, { className: ICON_SIZE }),
|
|
1743
|
-
lightboxLabel: msg("timeline.toolRenderers.browserScreenshot"),
|
|
1744
|
-
batched: null,
|
|
1745
|
-
failed: isFailed,
|
|
1746
|
-
cancelled: isCancelled
|
|
1747
|
-
}
|
|
1748
|
-
);
|
|
1749
|
-
}
|
|
1750
|
-
function RetainedSessionImageDisclosure(props) {
|
|
1751
|
-
const compact = useContext5(CompactActivityContext);
|
|
1752
|
-
if (compact) {
|
|
1753
|
-
return /* @__PURE__ */ jsx8(
|
|
1754
|
-
ActivityDisclosure,
|
|
1755
|
-
{
|
|
1756
|
-
icon: props.icon,
|
|
1757
|
-
title: props.title,
|
|
1758
|
-
compactPreview: null,
|
|
1759
|
-
failed: props.failed,
|
|
1760
|
-
cancelled: props.cancelled
|
|
1761
|
-
}
|
|
1762
|
-
);
|
|
1763
|
-
}
|
|
1764
|
-
return /* @__PURE__ */ jsx8(LoadedRetainedSessionImageDisclosure, { ...props });
|
|
1765
|
-
}
|
|
1766
|
-
function LoadedRetainedSessionImageDisclosure({
|
|
1767
|
-
artifact,
|
|
1768
|
-
load,
|
|
1769
|
-
title,
|
|
1770
|
-
caption,
|
|
1771
|
-
noun,
|
|
1772
|
-
icon,
|
|
1773
|
-
lightboxLabel,
|
|
1774
|
-
batched,
|
|
1775
|
-
failed,
|
|
1776
|
-
cancelled,
|
|
1777
|
-
filename,
|
|
1778
|
-
defaultOpen,
|
|
1779
|
-
children
|
|
1780
|
-
}) {
|
|
1781
|
-
const msg = useOpenGeniText();
|
|
1782
|
-
const state = useRetainedImageObjectUrl(artifact, load);
|
|
1783
|
-
const downloadFilename = filename ?? retainedImageFilename(artifact);
|
|
1784
|
-
const figure = {
|
|
1785
|
-
src: state.kind === "ready" ? state.url : "",
|
|
1786
|
-
caption,
|
|
1787
|
-
alt: caption,
|
|
1788
|
-
expandLabel: msg("timeline.toolRenderers.expandNoun", { noun }),
|
|
1789
|
-
lightboxLabel,
|
|
1790
|
-
downloadFilename
|
|
1791
|
-
};
|
|
1792
|
-
return /* @__PURE__ */ jsxs4(
|
|
1793
|
-
ActivityDisclosure,
|
|
1794
|
-
{
|
|
1795
|
-
icon,
|
|
1796
|
-
iconTone: failed ? "failed" : state.kind === "ready" ? "accent" : "muted",
|
|
1797
|
-
title,
|
|
1798
|
-
defaultOpen,
|
|
1799
|
-
failed,
|
|
1800
|
-
cancelled,
|
|
1801
|
-
preview: state.kind === "loading" ? msg("timeline.toolRenderers.loadingRetainedNoun", { noun }) : state.kind === "error" ? msg("timeline.toolRenderers.nounRetrievalFailed", { noun }) : state.kind === "unavailable" ? `${noun} ${state.label}` : void 0,
|
|
1802
|
-
media: state.kind === "ready" ? /* @__PURE__ */ jsx8(Thumbnail, { ...figure }) : state.kind === "loading" ? /* @__PURE__ */ jsx8(MediaSkeleton, {}) : /* @__PURE__ */ jsx8(MediaEmpty, {}),
|
|
1803
|
-
children: [
|
|
1804
|
-
state.kind === "ready" ? /* @__PURE__ */ jsx8(ScreenshotFigure, { ...figure, showCaption: caption !== title }) : state.kind === "loading" ? /* @__PURE__ */ jsx8(BodyNote, { children: msg("timeline.toolRenderers.loadingTheRetainedNoun", { noun }) }) : state.kind === "unavailable" ? /* @__PURE__ */ jsxs4(BodyNote, { children: [
|
|
1805
|
-
noun === "screenshot" ? msg("timeline.toolRenderers.screenshot") : msg("timeline.toolRenderers.image"),
|
|
1806
|
-
" ",
|
|
1807
|
-
state.label,
|
|
1808
|
-
"."
|
|
1809
|
-
] }) : /* @__PURE__ */ jsx8(ImageRetrievalError, { noun, retry: state.retry }),
|
|
1810
|
-
batched ? /* @__PURE__ */ jsx8(BodyNote, { children: msg("timeline.toolRenderers.batchedBatched", { batched }) }) : null,
|
|
1811
|
-
children
|
|
1812
|
-
]
|
|
1813
|
-
}
|
|
1814
|
-
);
|
|
1815
|
-
}
|
|
1816
|
-
function ImageRetrievalError({ noun = "image", retry }) {
|
|
1817
|
-
const msg = useOpenGeniText();
|
|
1818
|
-
return /* @__PURE__ */ jsxs4(BodyNote, { tone: "error", children: [
|
|
1819
|
-
noun === "screenshot" ? msg("timeline.toolRenderers.screenshot") : msg("timeline.toolRenderers.image"),
|
|
1820
|
-
" ",
|
|
1821
|
-
msg("timeline.toolRenderers.retrievalFailed"),
|
|
1822
|
-
" ",
|
|
1823
|
-
/* @__PURE__ */ jsx8(
|
|
1824
|
-
"button",
|
|
1825
|
-
{
|
|
1826
|
-
type: "button",
|
|
1827
|
-
"aria-label": msg("timeline.toolRenderers.retryNounRetrieval", { noun }),
|
|
1828
|
-
onClick: retry,
|
|
1829
|
-
className: "underline underline-offset-2",
|
|
1830
|
-
children: msg("timeline.toolRenderers.retry")
|
|
1831
|
-
}
|
|
1832
|
-
)
|
|
1833
|
-
] });
|
|
1834
|
-
}
|
|
1835
|
-
function GeneratedImageRenderer({ item, loadRetainedArtifact }) {
|
|
1836
|
-
const msg = useOpenGeniText();
|
|
1837
|
-
const args = parseToolArgs(item.arguments);
|
|
1838
|
-
const prompt = typeof args.prompt === "string" ? args.prompt : "";
|
|
1839
|
-
const raw = item.raw && typeof item.raw === "object" && !Array.isArray(item.raw) ? item.raw : null;
|
|
1840
|
-
const receipt = generatedImageReceipt(item.output) ?? generatedImageReceipt(raw?.output);
|
|
1841
|
-
if (item.status === "running") {
|
|
1842
|
-
return /* @__PURE__ */ jsx8(
|
|
1843
|
-
ActivityDisclosure,
|
|
1844
|
-
{
|
|
1845
|
-
icon: /* @__PURE__ */ jsx8(ImageIcon2, { className: ICON_SIZE }),
|
|
1846
|
-
iconTone: "running",
|
|
1847
|
-
title: msg("timeline.toolRenderers.generatingImage"),
|
|
1848
|
-
running: true,
|
|
1849
|
-
preview: /* @__PURE__ */ jsx8(RunningPreview, { children: truncatePreview(prompt, 72) || msg("timeline.toolRenderers.creating") }),
|
|
1850
|
-
media: /* @__PURE__ */ jsx8(MediaSkeleton, {}),
|
|
1851
|
-
children: prompt ? /* @__PURE__ */ jsx8(BodyNote, { children: prompt }) : null
|
|
1852
|
-
}
|
|
1853
|
-
);
|
|
1854
|
-
}
|
|
1855
|
-
if (!receipt) return /* @__PURE__ */ jsx8(GenericRenderer, { item });
|
|
1856
|
-
return /* @__PURE__ */ jsx8(
|
|
1857
|
-
GeneratedImageDisclosure,
|
|
1858
|
-
{
|
|
1859
|
-
receipt,
|
|
1860
|
-
load: loadRetainedArtifact,
|
|
1861
|
-
prompt,
|
|
1862
|
-
failed: item.status === "failed",
|
|
1863
|
-
cancelled: item.status === "cancelled"
|
|
1864
|
-
}
|
|
1865
|
-
);
|
|
1866
|
-
}
|
|
1867
|
-
function GeneratedVideoRenderer({ item }) {
|
|
1868
|
-
const msg = useOpenGeniText();
|
|
1869
|
-
const args = parseToolArgs(item.arguments);
|
|
1870
|
-
const prompt = typeof args.prompt === "string" ? args.prompt : "";
|
|
1871
|
-
const parsedOutput = typeof item.output === "string" ? tryParseJson(item.output) : item.output;
|
|
1872
|
-
const accepted = parsedOutput && typeof parsedOutput === "object" && !Array.isArray(parsedOutput) && parsedOutput.status === "accepted";
|
|
1873
|
-
const failed = item.status === "failed";
|
|
1874
|
-
const cancelled = item.status === "cancelled";
|
|
1875
|
-
const running = item.status === "running";
|
|
1876
|
-
return /* @__PURE__ */ jsxs4(
|
|
1877
|
-
ActivityDisclosure,
|
|
1878
|
-
{
|
|
1879
|
-
icon: /* @__PURE__ */ jsx8(VideoIcon2, { className: ICON_SIZE }),
|
|
1880
|
-
iconTone: failed ? "failed" : running ? "running" : accepted ? "accent" : "muted",
|
|
1881
|
-
title: running ? msg("timeline.toolRenderers.startingVideoGeneration") : accepted ? msg("timeline.toolRenderers.generatingVideo") : msg("timeline.toolRenderers.generateVideo"),
|
|
1882
|
-
running,
|
|
1883
|
-
failed,
|
|
1884
|
-
cancelled,
|
|
1885
|
-
preview: truncatePreview(prompt, 88) || (accepted ? msg("timeline.toolRenderers.requestAccepted") : void 0),
|
|
1886
|
-
children: [
|
|
1887
|
-
prompt ? /* @__PURE__ */ jsx8(BodyNote, { children: prompt }) : null,
|
|
1888
|
-
accepted ? /* @__PURE__ */ jsx8(BodyNote, { children: msg("timeline.toolRenderers.theVideoWillAppearHere") }) : item.output !== void 0 ? /* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.output"), value: item.output }) : null
|
|
1889
|
-
]
|
|
1890
|
-
}
|
|
1891
|
-
);
|
|
1892
|
-
}
|
|
1893
|
-
function SandboxFilePublishRenderer({ item, loadRetainedArtifact }) {
|
|
1894
|
-
const msg = useOpenGeniText();
|
|
1895
|
-
const plain = useToolDetails() === "plain";
|
|
1896
|
-
const { text: output, isError } = unwrapMcpOutput(item.output);
|
|
1897
|
-
const receipt = parseSandboxFileArtifactReceipt(output);
|
|
1898
|
-
const [downloadState, setDownloadState] = useState7("idle");
|
|
1899
|
-
if (item.status === "running") {
|
|
1900
|
-
return /* @__PURE__ */ jsx8(
|
|
1901
|
-
ActivityDisclosure,
|
|
1902
|
-
{
|
|
1903
|
-
icon: /* @__PURE__ */ jsx8(DownloadIcon2, { className: ICON_SIZE }),
|
|
1904
|
-
iconTone: "running",
|
|
1905
|
-
title: msg("timeline.toolRenderers.publishingFile"),
|
|
1906
|
-
running: true,
|
|
1907
|
-
preview: /* @__PURE__ */ jsx8(RunningPreview, { children: msg("timeline.toolRenderers.retainingWorkspaceBytes") })
|
|
1908
|
-
}
|
|
1909
|
-
);
|
|
1910
|
-
}
|
|
1911
|
-
if (!receipt || isError || item.status === "failed") {
|
|
1912
|
-
return /* @__PURE__ */ jsx8(GenericRenderer, { item });
|
|
1913
|
-
}
|
|
1914
|
-
const workspaceId = /^\/v1\/workspaces\/([0-9a-f-]+)\/artifacts\//.exec(
|
|
1915
|
-
receipt.artifact.retrieval.path
|
|
1916
|
-
)?.[1];
|
|
1917
|
-
const openLink = workspaceId ? /* @__PURE__ */ jsx8(
|
|
1918
|
-
"a",
|
|
1919
|
-
{
|
|
1920
|
-
href: `/workspaces/${workspaceId}/artifacts/files/${receipt.artifact.artifactId}`,
|
|
1921
|
-
"aria-label": msg("timeline.toolRenderers.openFilenameInArtifacts", {
|
|
1922
|
-
filename: receipt.filename
|
|
1923
|
-
}),
|
|
1924
|
-
className: "inline-flex min-h-7 items-center rounded-og-sm px-2 text-og-sm font-medium text-og-accent-strong hover:bg-og-surface-2 hover:underline focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-og-accent pointer-coarse:min-h-10",
|
|
1925
|
-
onClick: (event) => event.stopPropagation(),
|
|
1926
|
-
onKeyDown: (event) => event.stopPropagation(),
|
|
1927
|
-
children: msg("timeline.toolRenderers.openInArtifacts")
|
|
1928
|
-
}
|
|
1929
|
-
) : null;
|
|
1930
|
-
const download = async () => {
|
|
1931
|
-
if (!loadRetainedArtifact) {
|
|
1932
|
-
setDownloadState("error");
|
|
1933
|
-
return;
|
|
1934
|
-
}
|
|
1935
|
-
setDownloadState("loading");
|
|
1936
|
-
let objectUrl = null;
|
|
1937
|
-
try {
|
|
1938
|
-
const source = await loadRetainedArtifact(receipt.artifact, new AbortController().signal);
|
|
1939
|
-
if (!source) throw new Error("artifact unavailable");
|
|
1940
|
-
const url = source instanceof Uint8Array ? objectUrl = URL.createObjectURL(
|
|
1941
|
-
new Blob([source], {
|
|
1942
|
-
type: receipt.artifact.contentType
|
|
1943
|
-
})
|
|
1944
|
-
) : source.url;
|
|
1945
|
-
const anchor = document.createElement("a");
|
|
1946
|
-
anchor.href = url;
|
|
1947
|
-
anchor.download = receipt.filename;
|
|
1948
|
-
anchor.rel = "noopener";
|
|
1949
|
-
anchor.click();
|
|
1950
|
-
setDownloadState("idle");
|
|
1951
|
-
} catch {
|
|
1952
|
-
setDownloadState("error");
|
|
1953
|
-
} finally {
|
|
1954
|
-
const urlToRevoke = objectUrl;
|
|
1955
|
-
if (urlToRevoke) setTimeout(() => URL.revokeObjectURL(urlToRevoke), 0);
|
|
1956
|
-
}
|
|
1957
|
-
};
|
|
1958
|
-
const downloadButton = /* @__PURE__ */ jsxs4(
|
|
1959
|
-
"button",
|
|
1960
|
-
{
|
|
1961
|
-
type: "button",
|
|
1962
|
-
onClick: () => void download(),
|
|
1963
|
-
disabled: downloadState === "loading",
|
|
1964
|
-
className: "inline-flex items-center gap-1.5 rounded-og-sm border border-og-border px-2.5 py-1.5 text-og-sm font-medium text-og-fg transition-colors hover:border-og-border-strong hover:bg-og-surface-2 disabled:cursor-wait disabled:opacity-60",
|
|
1965
|
-
children: [
|
|
1966
|
-
/* @__PURE__ */ jsx8(DownloadIcon2, { className: "size-3.5" }),
|
|
1967
|
-
downloadState === "loading" ? msg("timeline.toolRenderers.preparing") : downloadState === "error" ? msg("timeline.toolRenderers.retryDownload") : msg("timeline.toolRenderers.download")
|
|
1968
|
-
]
|
|
1969
|
-
}
|
|
1970
|
-
);
|
|
1971
|
-
if (isRetainedImageContentType(receipt.artifact.contentType)) {
|
|
1972
|
-
return /* @__PURE__ */ jsxs4(
|
|
1973
|
-
RetainedSessionImageDisclosure,
|
|
1974
|
-
{
|
|
1975
|
-
artifact: receipt.artifact,
|
|
1976
|
-
load: loadRetainedArtifact,
|
|
1977
|
-
title: msg("timeline.toolRenderers.publishedFilename", { filename: receipt.filename }),
|
|
1978
|
-
caption: receipt.filename,
|
|
1979
|
-
noun: "image",
|
|
1980
|
-
icon: /* @__PURE__ */ jsx8(ImageIcon2, { className: ICON_SIZE }),
|
|
1981
|
-
lightboxLabel: msg("timeline.toolRenderers.image"),
|
|
1982
|
-
batched: null,
|
|
1983
|
-
failed: false,
|
|
1984
|
-
cancelled: false,
|
|
1985
|
-
filename: receipt.filename,
|
|
1986
|
-
defaultOpen: true,
|
|
1987
|
-
children: [
|
|
1988
|
-
downloadButton,
|
|
1989
|
-
openLink
|
|
1990
|
-
]
|
|
1991
|
-
}
|
|
1992
|
-
);
|
|
1993
|
-
}
|
|
1994
|
-
return /* @__PURE__ */ jsxs4(
|
|
1995
|
-
ActivityDisclosure,
|
|
1996
|
-
{
|
|
1997
|
-
icon: /* @__PURE__ */ jsx8(DownloadIcon2, { className: ICON_SIZE }),
|
|
1998
|
-
iconTone: "accent",
|
|
1999
|
-
title: msg("timeline.toolRenderers.publishedFilename", { filename: receipt.filename }),
|
|
2000
|
-
defaultOpen: true,
|
|
2001
|
-
preview: formatBytes(receipt.artifact.originalBytes),
|
|
2002
|
-
children: [
|
|
2003
|
-
downloadButton,
|
|
2004
|
-
openLink,
|
|
2005
|
-
plain ? null : isPatchFilename(receipt.filename) ? /* @__PURE__ */ jsx8(
|
|
2006
|
-
PatchApplyCommand,
|
|
2007
|
-
{
|
|
2008
|
-
artifact: receipt.artifact,
|
|
2009
|
-
filename: receipt.filename,
|
|
2010
|
-
load: loadRetainedArtifact
|
|
2011
|
-
}
|
|
2012
|
-
) : null
|
|
2013
|
-
]
|
|
2014
|
-
}
|
|
2015
|
-
);
|
|
2016
|
-
}
|
|
2017
|
-
function publishedSiteReceipt(output) {
|
|
2018
|
-
const { text, isError } = unwrapMcpOutput(output);
|
|
2019
|
-
if (isError) return null;
|
|
2020
|
-
const parsed = tryParseJson(text);
|
|
2021
|
-
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) return null;
|
|
2022
|
-
const artifact = parsed.artifact;
|
|
2023
|
-
const version = parsed.version;
|
|
2024
|
-
if (!artifact || typeof artifact !== "object" || Array.isArray(artifact) || !version || typeof version !== "object" || Array.isArray(version)) {
|
|
2025
|
-
return null;
|
|
2026
|
-
}
|
|
2027
|
-
const artifactRecord = artifact;
|
|
2028
|
-
const versionRecord = version;
|
|
2029
|
-
if (typeof artifactRecord.workspaceId !== "string" || typeof artifactRecord.id !== "string" || typeof artifactRecord.title !== "string" || typeof versionRecord.revision !== "number" || !Number.isInteger(versionRecord.revision) || versionRecord.revision < 1) {
|
|
2030
|
-
return null;
|
|
2031
|
-
}
|
|
2032
|
-
return {
|
|
2033
|
-
workspaceId: artifactRecord.workspaceId,
|
|
2034
|
-
artifactId: artifactRecord.id,
|
|
2035
|
-
title: artifactRecord.title,
|
|
2036
|
-
revision: versionRecord.revision,
|
|
2037
|
-
replayed: parsed.replayed === true
|
|
2038
|
-
};
|
|
2039
|
-
}
|
|
2040
|
-
var SITE_OPEN_CLASS = "inline-flex min-h-7 items-center rounded-og-sm px-2 text-og-sm font-medium text-og-accent-strong hover:bg-og-surface-2 hover:underline focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-og-accent pointer-coarse:min-h-10";
|
|
2041
|
-
function SiteOpenLink({ receipt }) {
|
|
2042
|
-
const msg = useOpenGeniText();
|
|
2043
|
-
const [pending, setPending] = useState7(false);
|
|
2044
|
-
const [failed, setFailed] = useState7(false);
|
|
2045
|
-
const resolution = useOpenGeniLinkResolver()?.({
|
|
2046
|
-
kind: "site",
|
|
2047
|
-
artifactId: receipt.artifactId,
|
|
2048
|
-
workspaceId: receipt.workspaceId
|
|
2049
|
-
});
|
|
2050
|
-
const destination = resolution?.href ? defaultUrlTransform(resolution.href) : "";
|
|
2051
|
-
if (destination) {
|
|
2052
|
-
return /* @__PURE__ */ jsx8(
|
|
2053
|
-
"a",
|
|
2054
|
-
{
|
|
2055
|
-
href: destination,
|
|
2056
|
-
"aria-label": msg("timeline.toolRenderers.openTitle", { title: receipt.title }),
|
|
2057
|
-
className: SITE_OPEN_CLASS,
|
|
2058
|
-
onClick: (event) => event.stopPropagation(),
|
|
2059
|
-
onKeyDown: (event) => event.stopPropagation(),
|
|
2060
|
-
children: msg("timeline.toolRenderers.open")
|
|
2061
|
-
}
|
|
2062
|
-
);
|
|
2063
|
-
}
|
|
2064
|
-
if (resolution?.open) {
|
|
2065
|
-
const open = resolution.open;
|
|
2066
|
-
return /* @__PURE__ */ jsx8(
|
|
2067
|
-
"button",
|
|
2068
|
-
{
|
|
2069
|
-
type: "button",
|
|
2070
|
-
"aria-label": msg("timeline.toolRenderers.openTitle", { title: receipt.title }),
|
|
2071
|
-
"aria-busy": pending,
|
|
2072
|
-
disabled: pending,
|
|
2073
|
-
className: SITE_OPEN_CLASS,
|
|
2074
|
-
onClick: (event) => {
|
|
2075
|
-
event.stopPropagation();
|
|
2076
|
-
if (pending) return;
|
|
2077
|
-
setPending(true);
|
|
2078
|
-
setFailed(false);
|
|
2079
|
-
void Promise.resolve().then(open).catch(() => setFailed(true)).finally(() => setPending(false));
|
|
2080
|
-
},
|
|
2081
|
-
onKeyDown: (event) => event.stopPropagation(),
|
|
2082
|
-
children: pending ? msg("timeline.toolRenderers.opening") : failed ? msg("timeline.toolRenderers.retryOpen") : msg("timeline.toolRenderers.open")
|
|
2083
|
-
}
|
|
2084
|
-
);
|
|
2085
|
-
}
|
|
2086
|
-
return null;
|
|
2087
|
-
}
|
|
2088
|
-
function SiteArtifactRenderer({ item }) {
|
|
2089
|
-
const msg = useOpenGeniText();
|
|
2090
|
-
const leaf = mcpToolLeaf(item.name);
|
|
2091
|
-
const publishingExisting = leaf === "artifacts_publish";
|
|
2092
|
-
if (item.status === "running") {
|
|
2093
|
-
return /* @__PURE__ */ jsx8(
|
|
2094
|
-
ActivityDisclosure,
|
|
2095
|
-
{
|
|
2096
|
-
icon: /* @__PURE__ */ jsx8(PanelsTopLeftIcon2, { className: ICON_SIZE }),
|
|
2097
|
-
iconTone: "running",
|
|
2098
|
-
title: publishingExisting ? msg("timeline.toolRenderers.publishingSiteUpdate") : msg("timeline.toolRenderers.publishingSite"),
|
|
2099
|
-
running: true,
|
|
2100
|
-
preview: /* @__PURE__ */ jsx8(RunningPreview, { children: msg("timeline.toolRenderers.retainingSourceAndCompiledHtml") })
|
|
2101
|
-
}
|
|
2102
|
-
);
|
|
2103
|
-
}
|
|
2104
|
-
const receipt = publishedSiteReceipt(item.output);
|
|
2105
|
-
if (!receipt || item.status === "failed") return /* @__PURE__ */ jsx8(GenericRenderer, { item });
|
|
2106
|
-
return /* @__PURE__ */ jsx8(
|
|
2107
|
-
ActivityDisclosure,
|
|
2108
|
-
{
|
|
2109
|
-
icon: /* @__PURE__ */ jsx8(PanelsTopLeftIcon2, { className: ICON_SIZE }),
|
|
2110
|
-
iconTone: "accent",
|
|
2111
|
-
title: publishingExisting ? msg("timeline.toolRenderers.updatedTitle", { title: receipt.title }) : msg("timeline.toolRenderers.publishedTitle", { title: receipt.title }),
|
|
2112
|
-
media: /* @__PURE__ */ jsx8(SiteOpenLink, { receipt }),
|
|
2113
|
-
children: /* @__PURE__ */ jsxs4(BodyNote, { children: [
|
|
2114
|
-
msg("timeline.toolRenderers.versionRevisionIsLive", { revision: receipt.revision }),
|
|
2115
|
-
receipt.replayed ? ` ${msg("timeline.toolRenderers.replayedFromTheOriginalPublication")}` : "."
|
|
2116
|
-
] })
|
|
2117
|
-
}
|
|
2118
|
-
);
|
|
2119
|
-
}
|
|
2120
|
-
function GeneratedImageDisclosure({
|
|
2121
|
-
receipt,
|
|
2122
|
-
load,
|
|
2123
|
-
prompt,
|
|
2124
|
-
failed,
|
|
2125
|
-
cancelled
|
|
2126
|
-
}) {
|
|
2127
|
-
const msg = useOpenGeniText();
|
|
2128
|
-
const state = useRetainedImageObjectUrl(receipt.artifact, load);
|
|
2129
|
-
const dimensions = receipt.artifact.dimensions;
|
|
2130
|
-
const title = failed ? msg("timeline.toolRenderers.imageGenerationFailed") : msg("timeline.toolRenderers.generatedImage");
|
|
2131
|
-
const caption = prompt || msg("timeline.toolRenderers.generatedImageWidthHeight", {
|
|
2132
|
-
width: dimensions.width,
|
|
2133
|
-
height: dimensions.height
|
|
2134
|
-
});
|
|
2135
|
-
return /* @__PURE__ */ jsxs4(
|
|
2136
|
-
ActivityDisclosure,
|
|
2137
|
-
{
|
|
2138
|
-
icon: /* @__PURE__ */ jsx8(ImageIcon2, { className: ICON_SIZE }),
|
|
2139
|
-
iconTone: failed ? "failed" : state.kind === "ready" ? "accent" : "muted",
|
|
2140
|
-
title,
|
|
2141
|
-
defaultOpen: !failed && !cancelled,
|
|
2142
|
-
failed,
|
|
2143
|
-
cancelled,
|
|
2144
|
-
preview: state.kind === "loading" ? msg("timeline.toolRenderers.loadingImage") : state.kind === "error" ? msg("timeline.toolRenderers.imageRetrievalFailed") : state.kind === "unavailable" ? `image ${state.label}` : truncatePreview(prompt, 88) || `${dimensions.width}\xD7${dimensions.height}`,
|
|
2145
|
-
media: state.kind === "ready" ? /* @__PURE__ */ jsx8(
|
|
2146
|
-
Thumbnail,
|
|
2147
|
-
{
|
|
2148
|
-
src: state.url,
|
|
2149
|
-
caption,
|
|
2150
|
-
alt: caption,
|
|
2151
|
-
expandLabel: msg("timeline.toolRenderers.expandGeneratedImage"),
|
|
2152
|
-
lightboxLabel: msg("timeline.toolRenderers.generatedImage")
|
|
2153
|
-
}
|
|
2154
|
-
) : state.kind === "loading" ? /* @__PURE__ */ jsx8(MediaSkeleton, {}) : /* @__PURE__ */ jsx8(MediaEmpty, {}),
|
|
2155
|
-
children: [
|
|
2156
|
-
state.kind === "ready" ? /* @__PURE__ */ jsx8(
|
|
2157
|
-
ScreenshotFigure,
|
|
2158
|
-
{
|
|
2159
|
-
src: state.url,
|
|
2160
|
-
caption,
|
|
2161
|
-
alt: caption,
|
|
2162
|
-
expandLabel: msg("timeline.toolRenderers.expandGeneratedImage"),
|
|
2163
|
-
lightboxLabel: msg("timeline.toolRenderers.generatedImage")
|
|
2164
|
-
}
|
|
2165
|
-
) : state.kind === "loading" ? /* @__PURE__ */ jsx8(BodyNote, { children: msg("timeline.toolRenderers.loadingTheGeneratedImage") }) : state.kind === "unavailable" ? /* @__PURE__ */ jsx8(BodyNote, { children: msg("timeline.toolRenderers.imageLabel", { label: state.label }) }) : /* @__PURE__ */ jsx8(ImageRetrievalError, { retry: state.retry }),
|
|
2166
|
-
/* @__PURE__ */ jsxs4(BodyNote, { children: [
|
|
2167
|
-
dimensions.width,
|
|
2168
|
-
"\xD7",
|
|
2169
|
-
dimensions.height,
|
|
2170
|
-
" \xB7 ",
|
|
2171
|
-
receipt.sandboxPath
|
|
2172
|
-
] })
|
|
2173
|
-
]
|
|
2174
|
-
}
|
|
2175
|
-
);
|
|
2176
|
-
}
|
|
2177
|
-
function retainedImageFilename(artifact) {
|
|
2178
|
-
const extension = artifact.contentType === "image/jpeg" ? "jpg" : artifact.contentType === "image/webp" ? "webp" : "png";
|
|
2179
|
-
return `${artifact.kind}-${artifact.artifactId}.${extension}`;
|
|
2180
|
-
}
|
|
2181
|
-
var VIEW_IMAGE_ERRORS = (msg) => [
|
|
2182
|
-
msg("timeline.toolRenderers.wasNotFound"),
|
|
2183
|
-
msg("timeline.toolRenderers.isNotAFile"),
|
|
2184
|
-
msg("timeline.toolRenderers.exceededTheAllowedSize"),
|
|
2185
|
-
msg("timeline.toolRenderers.isNotASupportedImage"),
|
|
2186
|
-
msg("timeline.toolRenderers.unableToReadImage")
|
|
2187
|
-
];
|
|
2188
|
-
function ViewImageRenderer({ item, loadRetainedScreenshot }) {
|
|
2189
|
-
const msg = useOpenGeniText();
|
|
2190
|
-
const args = parseToolArgs(item.arguments);
|
|
2191
|
-
const path = typeof args.path === "string" ? args.path : "";
|
|
2192
|
-
const out = item.output;
|
|
2193
|
-
const text = typeof out === "string" ? out : "";
|
|
2194
|
-
const retained = retainedScreenshotMetadata(out);
|
|
2195
|
-
const omittedMedia = mediaPreviewFact(out);
|
|
2196
|
-
if (item.status === "running") {
|
|
2197
|
-
return /* @__PURE__ */ jsx8(
|
|
2198
|
-
ActivityDisclosure,
|
|
2199
|
-
{
|
|
2200
|
-
icon: /* @__PURE__ */ jsx8(ImageIcon2, { className: ICON_SIZE }),
|
|
2201
|
-
iconTone: "running",
|
|
2202
|
-
title: msg("timeline.toolRenderers.viewPathbasename", { pathBasename: pathBasename(path) }),
|
|
2203
|
-
running: true,
|
|
2204
|
-
preview: /* @__PURE__ */ jsx8(RunningPreview, { children: msg("timeline.toolRenderers.reading") }),
|
|
2205
|
-
media: /* @__PURE__ */ jsx8(MediaSkeleton, {}),
|
|
2206
|
-
children: /* @__PURE__ */ jsx8(BodyNote, { children: msg("timeline.toolRenderers.readingImage") })
|
|
2207
|
-
}
|
|
2208
|
-
);
|
|
2209
|
-
}
|
|
2210
|
-
const viewFailed = item.status === "failed";
|
|
2211
|
-
const viewCancelled = item.status === "cancelled";
|
|
2212
|
-
if (retained) {
|
|
2213
|
-
const title = msg("timeline.toolRenderers.viewedPathbasename", {
|
|
2214
|
-
pathBasename: pathBasename(path)
|
|
2215
|
-
});
|
|
2216
|
-
if (!retained.available) {
|
|
2217
|
-
const state = retained.reason === "expired" || retained.reason === "deleted" ? retained.reason : "unavailable";
|
|
2218
|
-
return /* @__PURE__ */ jsx8(
|
|
2219
|
-
ActivityDisclosure,
|
|
2220
|
-
{
|
|
2221
|
-
icon: /* @__PURE__ */ jsx8(ImageIcon2, { className: ICON_SIZE }),
|
|
2222
|
-
iconTone: viewFailed ? "failed" : "muted",
|
|
2223
|
-
title: `${title} \xB7 ${state}`,
|
|
2224
|
-
failed: viewFailed,
|
|
2225
|
-
cancelled: viewCancelled,
|
|
2226
|
-
preview: `image ${state}`,
|
|
2227
|
-
media: /* @__PURE__ */ jsx8(MediaEmpty, {}),
|
|
2228
|
-
children: /* @__PURE__ */ jsx8(BodyNote, { tone: viewFailed ? "error" : void 0, children: msg("timeline.toolRenderers.imageStateReplaceall", {
|
|
2229
|
-
state,
|
|
2230
|
-
replaceAll: retained.reason.replaceAll("_", " ")
|
|
2231
|
-
}) })
|
|
2232
|
-
}
|
|
2233
|
-
);
|
|
2234
|
-
}
|
|
2235
|
-
return /* @__PURE__ */ jsx8(
|
|
2236
|
-
RetainedSessionImageDisclosure,
|
|
2237
|
-
{
|
|
2238
|
-
artifact: retained,
|
|
2239
|
-
load: loadRetainedScreenshot,
|
|
2240
|
-
title,
|
|
2241
|
-
caption: path || title,
|
|
2242
|
-
noun: "image",
|
|
2243
|
-
icon: /* @__PURE__ */ jsx8(ImageIcon2, { className: ICON_SIZE }),
|
|
2244
|
-
lightboxLabel: msg("timeline.toolRenderers.image"),
|
|
2245
|
-
batched: null,
|
|
2246
|
-
failed: viewFailed,
|
|
2247
|
-
cancelled: viewCancelled
|
|
2248
|
-
}
|
|
2249
|
-
);
|
|
2250
|
-
}
|
|
2251
|
-
const errMatch = VIEW_IMAGE_ERRORS(msg).find((p) => text.includes(p));
|
|
2252
|
-
if (errMatch) {
|
|
2253
|
-
const tooBig = text.includes("exceeded the allowed size");
|
|
2254
|
-
return /* @__PURE__ */ jsx8(
|
|
2255
|
-
ActivityDisclosure,
|
|
2256
|
-
{
|
|
2257
|
-
icon: /* @__PURE__ */ jsx8(ImageIcon2, { className: ICON_SIZE }),
|
|
2258
|
-
iconTone: "failed",
|
|
2259
|
-
title: msg("timeline.toolRenderers.viewPathbasename", { pathBasename: pathBasename(path) }),
|
|
2260
|
-
chip: {
|
|
2261
|
-
tone: "bad",
|
|
2262
|
-
text: tooBig ? msg("timeline.toolRenderers.tooLarge") : msg("timeline.chip.error")
|
|
2263
|
-
},
|
|
2264
|
-
preview: text,
|
|
2265
|
-
children: /* @__PURE__ */ jsx8(BodyNote, { tone: "error", children: text })
|
|
2266
|
-
}
|
|
2267
|
-
);
|
|
2268
|
-
}
|
|
2269
|
-
if (text.startsWith("OpenAI file reference:")) {
|
|
2270
|
-
return /* @__PURE__ */ jsx8(
|
|
2271
|
-
ActivityDisclosure,
|
|
2272
|
-
{
|
|
2273
|
-
icon: /* @__PURE__ */ jsx8(ImageIcon2, { className: ICON_SIZE }),
|
|
2274
|
-
iconTone: viewFailed ? "failed" : "muted",
|
|
2275
|
-
title: msg("timeline.toolRenderers.viewedPathbasename", {
|
|
2276
|
-
pathBasename: pathBasename(path)
|
|
2277
|
-
}),
|
|
2278
|
-
failed: viewFailed,
|
|
2279
|
-
cancelled: viewCancelled,
|
|
2280
|
-
preview: path,
|
|
2281
|
-
children: /* @__PURE__ */ jsx8(BodyNote, { children: text })
|
|
2282
|
-
}
|
|
2283
|
-
);
|
|
2284
|
-
}
|
|
2285
|
-
if (omittedMedia) {
|
|
2286
|
-
return /* @__PURE__ */ jsx8(
|
|
2287
|
-
ActivityDisclosure,
|
|
2288
|
-
{
|
|
2289
|
-
icon: /* @__PURE__ */ jsx8(ImageIcon2, { className: ICON_SIZE }),
|
|
2290
|
-
iconTone: viewFailed ? "failed" : "muted",
|
|
2291
|
-
title: msg("timeline.toolRenderers.viewedPathbasenameImageOmittedNot", {
|
|
2292
|
-
pathBasename: pathBasename(path)
|
|
2293
|
-
}),
|
|
2294
|
-
failed: viewFailed,
|
|
2295
|
-
cancelled: viewCancelled,
|
|
2296
|
-
preview: msg("timeline.toolRenderers.inlineImageOmittedNotRetained"),
|
|
2297
|
-
media: /* @__PURE__ */ jsx8(MediaEmpty, {}),
|
|
2298
|
-
children: /* @__PURE__ */ jsx8(BodyNote, { children: msg("timeline.toolRenderers.theInlineMediatypeOutputWas", {
|
|
2299
|
-
mediaType: omittedMedia.mediaType
|
|
2300
|
-
}) })
|
|
2301
|
-
}
|
|
2302
|
-
);
|
|
2303
|
-
}
|
|
2304
|
-
if (text.includes("No image data")) {
|
|
2305
|
-
return /* @__PURE__ */ jsx8(
|
|
2306
|
-
ActivityDisclosure,
|
|
2307
|
-
{
|
|
2308
|
-
icon: /* @__PURE__ */ jsx8(ImageIcon2, { className: ICON_SIZE }),
|
|
2309
|
-
iconTone: viewFailed ? "failed" : "muted",
|
|
2310
|
-
title: msg("timeline.toolRenderers.viewedPathbasename", {
|
|
2311
|
-
pathBasename: pathBasename(path)
|
|
2312
|
-
}),
|
|
2313
|
-
failed: viewFailed,
|
|
2314
|
-
cancelled: viewCancelled,
|
|
2315
|
-
preview: msg("timeline.toolRenderers.noImage"),
|
|
2316
|
-
children: /* @__PURE__ */ jsx8(BodyNote, { children: viewFailed ? msg("timeline.toolRenderers.viewImageFailedNoImage") : viewCancelled ? msg("timeline.toolRenderers.viewImageInterrupted") : msg("timeline.toolRenderers.noImageTheSandboxSession") })
|
|
2317
|
-
}
|
|
2318
|
-
);
|
|
2319
|
-
}
|
|
2320
|
-
if (text.startsWith("data:")) {
|
|
2321
|
-
return /* @__PURE__ */ jsx8(
|
|
2322
|
-
ActivityDisclosure,
|
|
2323
|
-
{
|
|
2324
|
-
icon: /* @__PURE__ */ jsx8(ImageIcon2, { className: ICON_SIZE }),
|
|
2325
|
-
iconTone: viewFailed ? "failed" : "accent",
|
|
2326
|
-
title: msg("timeline.toolRenderers.viewedPathbasename", {
|
|
2327
|
-
pathBasename: pathBasename(path)
|
|
2328
|
-
}),
|
|
2329
|
-
failed: viewFailed,
|
|
2330
|
-
cancelled: viewCancelled,
|
|
2331
|
-
media: /* @__PURE__ */ jsx8(Thumbnail, { src: text, caption: path, alt: path }),
|
|
2332
|
-
children: /* @__PURE__ */ jsx8(ScreenshotFigure, { src: text, caption: path, alt: path })
|
|
2333
|
-
}
|
|
2334
|
-
);
|
|
2335
|
-
}
|
|
2336
|
-
return /* @__PURE__ */ jsx8(GenericRenderer, { item });
|
|
2337
|
-
}
|
|
2338
|
-
function SecretSetRenderer(props) {
|
|
2339
|
-
return useToolDetails() === "plain" ? /* @__PURE__ */ jsx8(UnreviewedGenericRenderer, { ...props }) : /* @__PURE__ */ jsx8(FullSecretSetRenderer, { ...props });
|
|
2340
|
-
}
|
|
2341
|
-
function FullSecretSetRenderer({ item }) {
|
|
2342
|
-
const msg = useOpenGeniText();
|
|
2343
|
-
const args = parseToolArgs(item.arguments);
|
|
2344
|
-
const name = typeof args.name === "string" ? args.name : "variable";
|
|
2345
|
-
if (item.status === "running") {
|
|
2346
|
-
return /* @__PURE__ */ jsx8(
|
|
2347
|
-
ActivityDisclosure,
|
|
2348
|
-
{
|
|
2349
|
-
icon: /* @__PURE__ */ jsx8(KeyRoundIcon2, { className: ICON_SIZE }),
|
|
2350
|
-
iconTone: "running",
|
|
2351
|
-
title: msg("timeline.toolRenderers.setName", { name }),
|
|
2352
|
-
running: true,
|
|
2353
|
-
preview: /* @__PURE__ */ jsx8(RunningPreview, { children: msg("timeline.toolRenderers.setting") }),
|
|
2354
|
-
children: /* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.arguments"), value: args })
|
|
2355
|
-
}
|
|
2356
|
-
);
|
|
2357
|
-
}
|
|
2358
|
-
if (item.status === "failed") {
|
|
2359
|
-
const errorText = typeof item.output === "string" ? item.output : null;
|
|
2360
|
-
return /* @__PURE__ */ jsxs4(
|
|
2361
|
-
ActivityDisclosure,
|
|
2362
|
-
{
|
|
2363
|
-
icon: /* @__PURE__ */ jsx8(KeyRoundIcon2, { className: ICON_SIZE }),
|
|
2364
|
-
iconTone: "failed",
|
|
2365
|
-
title: msg("timeline.toolRenderers.setName", { name }),
|
|
2366
|
-
failed: true,
|
|
2367
|
-
preview: errorText ?? msg("timeline.toolRenderers.variableWriteFailed"),
|
|
2368
|
-
children: [
|
|
2369
|
-
/* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.arguments"), value: args }),
|
|
2370
|
-
errorText ? /* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.error"), value: errorText, failed: true }) : /* @__PURE__ */ jsx8(BodyNote, { tone: "error", children: msg("timeline.toolRenderers.theToolCallFailedWith") })
|
|
2371
|
-
]
|
|
2372
|
-
}
|
|
2373
|
-
);
|
|
2374
|
-
}
|
|
2375
|
-
return /* @__PURE__ */ jsxs4(
|
|
2376
|
-
ActivityDisclosure,
|
|
2377
|
-
{
|
|
2378
|
-
icon: /* @__PURE__ */ jsx8(KeyRoundIcon2, { className: ICON_SIZE }),
|
|
2379
|
-
iconTone: "muted",
|
|
2380
|
-
title: msg("timeline.toolRenderers.setName", { name }),
|
|
2381
|
-
cancelled: item.status === "cancelled",
|
|
2382
|
-
preview: "exact value preserved",
|
|
2383
|
-
children: [
|
|
2384
|
-
/* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.arguments"), value: args }),
|
|
2385
|
-
/* @__PURE__ */ jsx8(BodyNote, { children: msg("timeline.toolRenderers.theConfiguredValueIsPreserved") })
|
|
2386
|
-
]
|
|
2387
|
-
}
|
|
2388
|
-
);
|
|
2389
|
-
}
|
|
2390
|
-
function ToolSearchRenderer(props) {
|
|
2391
|
-
return useToolDetails() === "plain" ? /* @__PURE__ */ jsx8(UnreviewedGenericRenderer, { ...props }) : /* @__PURE__ */ jsx8(FullToolSearchRenderer, { ...props });
|
|
2392
|
-
}
|
|
2393
|
-
function FullToolSearchRenderer({ item }) {
|
|
2394
|
-
const msg = useOpenGeniText();
|
|
2395
|
-
const query = toolSearchQuery(item);
|
|
2396
|
-
const icon = /* @__PURE__ */ jsx8(PackageSearchIcon2, { className: ICON_SIZE });
|
|
2397
|
-
const running = item.status === "running";
|
|
2398
|
-
const queryPreview = query ? truncatePreview(query, 64) : "";
|
|
2399
|
-
if (running) {
|
|
2400
|
-
return /* @__PURE__ */ jsxs4(
|
|
2401
|
-
ActivityDisclosure,
|
|
2402
|
-
{
|
|
2403
|
-
icon,
|
|
2404
|
-
iconTone: "running",
|
|
2405
|
-
title: msg("timeline.toolRenderers.lookingUpTools"),
|
|
2406
|
-
running: true,
|
|
2407
|
-
preview: queryPreview ? /* @__PURE__ */ jsx8(RunningPreview, { children: queryPreview }) : /* @__PURE__ */ jsx8(RunningPreview, { children: msg("timeline.toolRenderers.matchingCapabilities") }),
|
|
2408
|
-
children: [
|
|
2409
|
-
query ? /* @__PURE__ */ jsx8(BodyNote, { children: msg("timeline.toolRenderers.capabilityQueryQuery", { query }) }) : null,
|
|
2410
|
-
/* @__PURE__ */ jsx8(
|
|
2411
|
-
PayloadBlock,
|
|
2412
|
-
{
|
|
2413
|
-
label: msg("timeline.toolRenderers.arguments"),
|
|
2414
|
-
value: parseToolArgs(item.arguments)
|
|
2415
|
-
}
|
|
2416
|
-
)
|
|
2417
|
-
]
|
|
2418
|
-
}
|
|
2419
|
-
);
|
|
2420
|
-
}
|
|
2421
|
-
const { text: outText, isError } = unwrapMcpOutput(item.output);
|
|
2422
|
-
if ((isError || item.status === "failed") && item.status !== "cancelled") {
|
|
2423
|
-
return /* @__PURE__ */ jsxs4(
|
|
2424
|
-
ActivityDisclosure,
|
|
2425
|
-
{
|
|
2426
|
-
icon,
|
|
2427
|
-
iconTone: "failed",
|
|
2428
|
-
title: msg("timeline.toolRenderers.toolLookupFailed"),
|
|
2429
|
-
failed: true,
|
|
2430
|
-
preview: truncatePreview(outText, 80) || queryPreview || msg("timeline.toolRenderers.lookupFailed"),
|
|
2431
|
-
children: [
|
|
2432
|
-
query ? /* @__PURE__ */ jsx8(BodyNote, { children: msg("timeline.toolRenderers.capabilityQueryQuery", { query }) }) : null,
|
|
2433
|
-
/* @__PURE__ */ jsx8(
|
|
2434
|
-
PayloadBlock,
|
|
2435
|
-
{
|
|
2436
|
-
label: msg("timeline.toolRenderers.arguments"),
|
|
2437
|
-
value: parseToolArgs(item.arguments)
|
|
2438
|
-
}
|
|
2439
|
-
),
|
|
2440
|
-
/* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.error"), value: outText, failed: true })
|
|
2441
|
-
]
|
|
2442
|
-
}
|
|
2443
|
-
);
|
|
2444
|
-
}
|
|
2445
|
-
const tools = parseDisclosedTools(item.output);
|
|
2446
|
-
const preview = toolSearchPreview(msg, tools, item.status === "cancelled");
|
|
2447
|
-
return /* @__PURE__ */ jsxs4(
|
|
2448
|
-
ActivityDisclosure,
|
|
2449
|
-
{
|
|
2450
|
-
icon,
|
|
2451
|
-
iconTone: "muted",
|
|
2452
|
-
title: msg("timeline.toolRenderers.lookedUpTools"),
|
|
2453
|
-
cancelled: item.status === "cancelled",
|
|
2454
|
-
preview,
|
|
2455
|
-
children: [
|
|
2456
|
-
query ? /* @__PURE__ */ jsx8(BodyNote, { children: msg("timeline.toolRenderers.capabilityQueryQuery", { query }) }) : null,
|
|
2457
|
-
tools && tools.length > 0 ? /* @__PURE__ */ jsxs4("ul", { className: "grid gap-1.5", children: [
|
|
2458
|
-
tools.slice(0, 12).map((tool) => /* @__PURE__ */ jsxs4("li", { className: "flex min-w-0 items-baseline gap-2", children: [
|
|
2459
|
-
tool.source ? /* @__PURE__ */ jsx8("span", { className: "shrink-0 text-og-xs text-og-fg-subtle", children: tool.source }) : null,
|
|
2460
|
-
/* @__PURE__ */ jsx8("span", { className: "truncate font-mono text-og-sm text-og-fg", children: tool.leaf })
|
|
2461
|
-
] }, tool.name)),
|
|
2462
|
-
tools.length > 12 ? /* @__PURE__ */ jsxs4("li", { className: "text-og-xs text-og-fg-muted", children: [
|
|
2463
|
-
"+",
|
|
2464
|
-
tools.length - 12,
|
|
2465
|
-
" ",
|
|
2466
|
-
msg("timeline.toolRenderers.more")
|
|
2467
|
-
] }) : null
|
|
2468
|
-
] }) : tools && tools.length === 0 ? /* @__PURE__ */ jsx8(BodyNote, { children: msg("timeline.toolRenderers.noDeferredToolsMatchedThis") }) : null,
|
|
2469
|
-
/* @__PURE__ */ jsx8(
|
|
2470
|
-
PayloadBlock,
|
|
2471
|
-
{
|
|
2472
|
-
label: msg("timeline.toolRenderers.arguments"),
|
|
2473
|
-
value: parseToolArgs(item.arguments)
|
|
2474
|
-
}
|
|
2475
|
-
),
|
|
2476
|
-
tools == null && outText ? /* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.result"), value: outText }) : null
|
|
2477
|
-
]
|
|
2478
|
-
}
|
|
2479
|
-
);
|
|
2480
|
-
}
|
|
2481
|
-
function DocsSearchRenderer(props) {
|
|
2482
|
-
return useToolDetails() === "plain" ? /* @__PURE__ */ jsx8(UnreviewedGenericRenderer, { ...props }) : /* @__PURE__ */ jsx8(FullDocsSearchRenderer, { ...props });
|
|
2483
|
-
}
|
|
2484
|
-
function FullDocsSearchRenderer({ item }) {
|
|
2485
|
-
const msg = useOpenGeniText();
|
|
2486
|
-
const args = parseToolArgs(item.arguments);
|
|
2487
|
-
const query = typeof args.query === "string" ? args.query.trim() : "";
|
|
2488
|
-
const title = query ? msg("timeline.toolRenderers.searchTruncatepreview", {
|
|
2489
|
-
truncatePreview: truncatePreview(query, 48)
|
|
2490
|
-
}) : toolDisplayName(msg, item.name, item.display);
|
|
2491
|
-
const running = item.status === "running";
|
|
2492
|
-
if (running) {
|
|
2493
|
-
return /* @__PURE__ */ jsx8(
|
|
2494
|
-
ActivityDisclosure,
|
|
2495
|
-
{
|
|
2496
|
-
icon: /* @__PURE__ */ jsx8(FileSearchIcon2, { className: ICON_SIZE }),
|
|
2497
|
-
iconTone: "running",
|
|
2498
|
-
title,
|
|
2499
|
-
running: true,
|
|
2500
|
-
preview: /* @__PURE__ */ jsx8(RunningPreview, { children: msg("timeline.toolRenderers.searching") }),
|
|
2501
|
-
children: /* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.arguments"), value: args })
|
|
2502
|
-
}
|
|
2503
|
-
);
|
|
2504
|
-
}
|
|
2505
|
-
const { text: outText, isError } = unwrapMcpOutput(item.output);
|
|
2506
|
-
if ((isError || item.status === "failed") && item.status !== "cancelled") {
|
|
2507
|
-
return /* @__PURE__ */ jsxs4(
|
|
2508
|
-
ActivityDisclosure,
|
|
2509
|
-
{
|
|
2510
|
-
icon: /* @__PURE__ */ jsx8(FileSearchIcon2, { className: ICON_SIZE }),
|
|
2511
|
-
iconTone: "failed",
|
|
2512
|
-
title,
|
|
2513
|
-
failed: true,
|
|
2514
|
-
preview: truncatePreview(outText, 80) || msg("timeline.toolRenderers.searchFailed"),
|
|
2515
|
-
children: [
|
|
2516
|
-
/* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.arguments"), value: args }),
|
|
2517
|
-
/* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.error"), value: outText, failed: true })
|
|
2518
|
-
]
|
|
2519
|
-
}
|
|
2520
|
-
);
|
|
2521
|
-
}
|
|
2522
|
-
const hits = parseSearchHits(msg, outText);
|
|
2523
|
-
const preview = item.status === "cancelled" ? void 0 : hits ? hits.length === 0 ? msg("timeline.toolRenderers.noHits") : msg("counts.hits", { count: hits.length }) : msg("timeline.toolRenderers.done");
|
|
2524
|
-
return /* @__PURE__ */ jsxs4(
|
|
2525
|
-
ActivityDisclosure,
|
|
2526
|
-
{
|
|
2527
|
-
icon: /* @__PURE__ */ jsx8(FileSearchIcon2, { className: ICON_SIZE }),
|
|
2528
|
-
iconTone: "muted",
|
|
2529
|
-
title,
|
|
2530
|
-
cancelled: item.status === "cancelled",
|
|
2531
|
-
preview,
|
|
2532
|
-
children: [
|
|
2533
|
-
hits && hits.length > 0 ? /* @__PURE__ */ jsx8("ul", { className: "grid gap-2", children: hits.slice(0, 8).map((hit) => /* @__PURE__ */ jsxs4("li", { className: "min-w-0", children: [
|
|
2534
|
-
/* @__PURE__ */ jsx8("div", { className: "truncate text-og-sm font-medium text-og-fg", children: hit.title }),
|
|
2535
|
-
hit.snippet ? /* @__PURE__ */ jsx8("div", { className: "mt-0.5 line-clamp-2 text-og-xs text-og-fg-muted", children: hit.snippet }) : null
|
|
2536
|
-
] }, `${hit.title}\0${hit.snippet}`)) }) : null,
|
|
2537
|
-
/* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.arguments"), value: args }),
|
|
2538
|
-
/* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.result"), value: outText })
|
|
2539
|
-
]
|
|
2540
|
-
}
|
|
2541
|
-
);
|
|
2542
|
-
}
|
|
2543
|
-
function SetSessionTitleRenderer(props) {
|
|
2544
|
-
return useToolDetails() === "plain" ? /* @__PURE__ */ jsx8(UnreviewedGenericRenderer, { ...props }) : /* @__PURE__ */ jsx8(FullSetSessionTitleRenderer, { ...props });
|
|
2545
|
-
}
|
|
2546
|
-
function FullSetSessionTitleRenderer({ item }) {
|
|
2547
|
-
const msg = useOpenGeniText();
|
|
2548
|
-
const args = parseToolArgs(item.arguments);
|
|
2549
|
-
const titleArg = typeof args.title === "string" ? args.title.trim() : "";
|
|
2550
|
-
const display = toolDisplayName(msg, item.name, item.display);
|
|
2551
|
-
const previewTitle = titleArg ? truncatePreview(titleArg, 72) : "";
|
|
2552
|
-
const icon = /* @__PURE__ */ jsx8(MessagesSquareIcon2, { className: ICON_SIZE });
|
|
2553
|
-
if (item.status === "running") {
|
|
2554
|
-
return /* @__PURE__ */ jsx8(
|
|
2555
|
-
ActivityDisclosure,
|
|
2556
|
-
{
|
|
2557
|
-
icon,
|
|
2558
|
-
iconTone: "running",
|
|
2559
|
-
title: display,
|
|
2560
|
-
running: true,
|
|
2561
|
-
preview: previewTitle ? /* @__PURE__ */ jsx8(RunningPreview, { children: previewTitle }) : /* @__PURE__ */ jsx8(RunningPreview, { children: msg("timeline.toolRenderers.settingTitle") }),
|
|
2562
|
-
children: /* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.arguments"), value: args })
|
|
2563
|
-
}
|
|
2564
|
-
);
|
|
2565
|
-
}
|
|
2566
|
-
const { text: outText, isError } = unwrapMcpOutput(item.output);
|
|
2567
|
-
if ((isError || item.status === "failed") && item.status !== "cancelled") {
|
|
2568
|
-
return /* @__PURE__ */ jsxs4(
|
|
2569
|
-
ActivityDisclosure,
|
|
2570
|
-
{
|
|
2571
|
-
icon,
|
|
2572
|
-
iconTone: "failed",
|
|
2573
|
-
title: display,
|
|
2574
|
-
failed: true,
|
|
2575
|
-
preview: truncatePreview(outText, 80) || msg("timeline.toolRenderers.renameFailed"),
|
|
2576
|
-
children: [
|
|
2577
|
-
/* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.arguments"), value: args }),
|
|
2578
|
-
/* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.error"), value: outText, failed: true })
|
|
2579
|
-
]
|
|
2580
|
-
}
|
|
2581
|
-
);
|
|
2582
|
-
}
|
|
2583
|
-
let settledTitle = previewTitle;
|
|
2584
|
-
if (!settledTitle) {
|
|
2585
|
-
const parsed = tryParseJson(outText);
|
|
2586
|
-
if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
|
|
2587
|
-
const fromResult = parsed.title;
|
|
2588
|
-
if (typeof fromResult === "string" && fromResult.trim()) {
|
|
2589
|
-
settledTitle = truncatePreview(fromResult.trim(), 72);
|
|
2590
|
-
}
|
|
2591
|
-
}
|
|
2592
|
-
}
|
|
2593
|
-
return /* @__PURE__ */ jsxs4(
|
|
2594
|
-
ActivityDisclosure,
|
|
2595
|
-
{
|
|
2596
|
-
icon,
|
|
2597
|
-
iconTone: "muted",
|
|
2598
|
-
title: display,
|
|
2599
|
-
cancelled: item.status === "cancelled",
|
|
2600
|
-
preview: item.status === "cancelled" ? void 0 : settledTitle || void 0,
|
|
2601
|
-
children: [
|
|
2602
|
-
/* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.arguments"), value: args }),
|
|
2603
|
-
outText ? /* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.result"), value: outText }) : null
|
|
2604
|
-
]
|
|
2605
|
-
}
|
|
2606
|
-
);
|
|
2607
|
-
}
|
|
2608
|
-
function MemoryProposeRenderer(props) {
|
|
2609
|
-
return useToolDetails() === "plain" ? /* @__PURE__ */ jsx8(UnreviewedGenericRenderer, { ...props }) : /* @__PURE__ */ jsx8(FullMemoryProposeRenderer, { ...props });
|
|
2610
|
-
}
|
|
2611
|
-
function FullMemoryProposeRenderer({ item }) {
|
|
2612
|
-
const msg = useOpenGeniText();
|
|
2613
|
-
const args = parseToolArgs(item.arguments);
|
|
2614
|
-
const text = typeof args.text === "string" ? args.text.trim() : "";
|
|
2615
|
-
const title = msg("timeline.toolRenderers.proposeMemory");
|
|
2616
|
-
const running = item.status === "running";
|
|
2617
|
-
if (running) {
|
|
2618
|
-
return /* @__PURE__ */ jsx8(
|
|
2619
|
-
ActivityDisclosure,
|
|
2620
|
-
{
|
|
2621
|
-
icon: /* @__PURE__ */ jsx8(BrainCircuitIcon3, { className: ICON_SIZE }),
|
|
2622
|
-
iconTone: "running",
|
|
2623
|
-
title,
|
|
2624
|
-
running: true,
|
|
2625
|
-
preview: /* @__PURE__ */ jsx8(RunningPreview, { children: msg("timeline.toolRenderers.proposing") }),
|
|
2626
|
-
children: /* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.arguments"), value: args })
|
|
2627
|
-
}
|
|
2628
|
-
);
|
|
2629
|
-
}
|
|
2630
|
-
const { text: outText, isError } = unwrapMcpOutput(item.output);
|
|
2631
|
-
if ((isError || item.status === "failed") && item.status !== "cancelled") {
|
|
2632
|
-
return /* @__PURE__ */ jsxs4(
|
|
2633
|
-
ActivityDisclosure,
|
|
2634
|
-
{
|
|
2635
|
-
icon: /* @__PURE__ */ jsx8(BrainCircuitIcon3, { className: ICON_SIZE }),
|
|
2636
|
-
iconTone: "failed",
|
|
2637
|
-
title,
|
|
2638
|
-
failed: true,
|
|
2639
|
-
preview: truncatePreview(outText, 80) || msg("timeline.toolRenderers.proposeFailed"),
|
|
2640
|
-
children: [
|
|
2641
|
-
text ? /* @__PURE__ */ jsx8(BodyNote, { children: text }) : null,
|
|
2642
|
-
/* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.error"), value: outText, failed: true })
|
|
2643
|
-
]
|
|
2644
|
-
}
|
|
2645
|
-
);
|
|
2646
|
-
}
|
|
2647
|
-
return /* @__PURE__ */ jsxs4(
|
|
2648
|
-
ActivityDisclosure,
|
|
2649
|
-
{
|
|
2650
|
-
icon: /* @__PURE__ */ jsx8(BrainCircuitIcon3, { className: ICON_SIZE }),
|
|
2651
|
-
iconTone: "muted",
|
|
2652
|
-
title,
|
|
2653
|
-
cancelled: item.status === "cancelled",
|
|
2654
|
-
preview: text ? truncatePreview(text, 90) : msg("timeline.toolRenderers.done"),
|
|
2655
|
-
children: [
|
|
2656
|
-
text ? /* @__PURE__ */ jsx8(BodyNote, { children: text }) : null,
|
|
2657
|
-
/* @__PURE__ */ jsx8(PayloadBlock, { label: msg("timeline.toolRenderers.result"), value: outText })
|
|
2658
|
-
]
|
|
2659
|
-
}
|
|
2660
|
-
);
|
|
2661
|
-
}
|
|
2662
|
-
function GenericRenderer(props) {
|
|
2663
|
-
const reviewed = useHasToolReview(props.item.callId);
|
|
2664
|
-
if (reviewed && props.item.callId) return /* @__PURE__ */ jsx8(ReviewedGenericRenderer, { ...props });
|
|
2665
|
-
return /* @__PURE__ */ jsx8(UnreviewedGenericRenderer, { ...props });
|
|
2666
|
-
}
|
|
2667
|
-
var REVIEW_CHIP = (msg) => ({
|
|
2668
|
-
rejected: { tone: "interrupted", text: msg("timeline.chip.declined") },
|
|
2669
|
-
cancelled: { tone: "interrupted", text: msg("timeline.toolRenderers.notRun") },
|
|
2670
|
-
expired: { tone: "interrupted", text: msg("timeline.chip.expired") },
|
|
2671
|
-
stale: { tone: "interrupted", text: msg("timeline.toolRenderers.notRun") },
|
|
2672
|
-
revoked: { tone: "interrupted", text: msg("timeline.toolRenderers.notRun") },
|
|
2673
|
-
blocked: { tone: "interrupted", text: msg("timeline.chip.blocked") },
|
|
2674
|
-
unknown: { tone: "bad", text: msg("timeline.toolRenderers.outcomeUnknown") },
|
|
2675
|
-
partial: { tone: "bad", text: msg("timeline.toolRenderers.partlyDone") },
|
|
2676
|
-
failed: { tone: "bad", text: msg("timeline.chip.failed") }
|
|
2677
|
-
});
|
|
2678
|
-
function ReviewedGenericRenderer(props) {
|
|
2679
|
-
const msg = useOpenGeniText();
|
|
2680
|
-
const { item } = props;
|
|
2681
|
-
const { review: savedReview, onViewDetails } = useRecordedToolReview(item.callId);
|
|
2682
|
-
const review = useMemo2(
|
|
2683
|
-
() => savedReview ? redactDeep(
|
|
2684
|
-
savedReview,
|
|
2685
|
-
signedValuesDeep([savedReview, item.arguments, item.output, item.raw])
|
|
2686
|
-
) : null,
|
|
2687
|
-
[savedReview, item.arguments, item.output, item.raw]
|
|
2688
|
-
);
|
|
2689
|
-
const logo = useToolConnectorLogo(item.display);
|
|
2690
|
-
if (!review) return /* @__PURE__ */ jsx8(UnreviewedGenericRenderer, { ...props });
|
|
2691
|
-
const ReviewIcon = toolIcon(genericToolIconKind(item.name));
|
|
2692
|
-
const icon = /* @__PURE__ */ jsx8(ConnectorLogoIcon, { src: logo, fallback: /* @__PURE__ */ jsx8(ReviewIcon, { className: ICON_SIZE }) });
|
|
2693
|
-
const waiting = review.status === "pending";
|
|
2694
|
-
const running = !waiting && (review.status === "executing" || review.status === "approved") && item.status === "running";
|
|
2695
|
-
const { text: outText, isError } = unwrapMcpOutput(retainedToolResultImages(item.output).output);
|
|
2696
|
-
const chip = REVIEW_CHIP(msg)[review.status] ?? (isError && !running && !waiting ? { tone: "bad", text: msg("timeline.chip.error") } : void 0);
|
|
2697
|
-
return /* @__PURE__ */ jsxs4(
|
|
2698
|
-
ActivityDisclosure,
|
|
2699
|
-
{
|
|
2700
|
-
icon,
|
|
2701
|
-
iconTone: chip?.tone === "bad" ? "failed" : waiting ? "accent" : "muted",
|
|
2702
|
-
title: review.title,
|
|
2703
|
-
running,
|
|
2704
|
-
chip,
|
|
2705
|
-
preview: waiting ? msg("timeline.toolRenderers.waitingForYourApproval") : running ? /* @__PURE__ */ jsx8(RunningPreview, { children: msg("timeline.toolRenderers.running") }) : item.display?.connector ? (
|
|
2706
|
-
// The logo names the connector; only a second account needs words.
|
|
2707
|
-
item.display.accountLabel ?? void 0
|
|
2708
|
-
) : review.accountLabel ?? void 0,
|
|
2709
|
-
children: [
|
|
2710
|
-
/* @__PURE__ */ jsx8("div", { className: "py-1", "data-approval-id": item.callId, "data-review-origin": "history", children: /* @__PURE__ */ jsx8(
|
|
2711
|
-
ToolActionReviewCard,
|
|
2712
|
-
{
|
|
2713
|
-
bare: true,
|
|
2714
|
-
review: { ...review, availableActions: [] },
|
|
2715
|
-
onViewDetails
|
|
2716
|
-
}
|
|
2717
|
-
) }),
|
|
2718
|
-
outText ? /* @__PURE__ */ jsx8(
|
|
2719
|
-
PayloadBlock,
|
|
2720
|
-
{
|
|
2721
|
-
label: msg("timeline.toolRenderers.result"),
|
|
2722
|
-
value: outText,
|
|
2723
|
-
failed: isError
|
|
2724
|
-
}
|
|
2725
|
-
) : null
|
|
2726
|
-
]
|
|
2727
|
-
}
|
|
2728
|
-
);
|
|
2729
|
-
}
|
|
2730
|
-
var LazyPaymentPageCard = lazy2(
|
|
2731
|
-
() => import("./payment-page-card-3LTSFJGN.js").then((module) => ({ default: module.PaymentPageCard }))
|
|
2732
|
-
);
|
|
2733
|
-
function AppActionCallRenderer(props) {
|
|
2734
|
-
const page = paymentPageOf(props.item);
|
|
2735
|
-
return page ? /* @__PURE__ */ jsx8(LazyPart, { children: /* @__PURE__ */ jsx8(LazyPaymentPageCard, { page }) }) : /* @__PURE__ */ jsx8(GenericRenderer, { ...props });
|
|
2736
|
-
}
|
|
2737
|
-
function KnowledgeSaveRenderer({ item }) {
|
|
2738
|
-
const output = unwrapMcpOutput(item.output);
|
|
2739
|
-
const parsed = tryParseJson(output.text);
|
|
2740
|
-
if (item.status === "running" || output.isError || !parsed || typeof parsed !== "object")
|
|
2741
|
-
return /* @__PURE__ */ jsx8(GenericRenderer, { item });
|
|
2742
|
-
const value = parsed;
|
|
2743
|
-
const receipt = value.status === "retained" ? value.receipt : value;
|
|
2744
|
-
if (!receipt || typeof receipt.entryId !== "string" || !["published", "pending", "rejected", "archived"].includes(String(receipt.outcome)))
|
|
2745
|
-
return /* @__PURE__ */ jsx8(GenericRenderer, { item });
|
|
2746
|
-
const args = parseToolArgs(item.arguments);
|
|
2747
|
-
const entry = args.entry;
|
|
2748
|
-
return /* @__PURE__ */ jsx8(
|
|
2749
|
-
KnowledgeReceiptRow,
|
|
2750
|
-
{
|
|
2751
|
-
outcome: receipt.outcome,
|
|
2752
|
-
entryId: receipt.entryId,
|
|
2753
|
-
title: typeof entry?.title === "string" ? entry.title : typeof value.filename === "string" ? value.filename : void 0,
|
|
2754
|
-
source: value.status === "retained" || value.retained === true
|
|
2755
|
-
}
|
|
2756
|
-
);
|
|
2757
|
-
}
|
|
2758
|
-
var BASE_ENTRIES = [
|
|
2759
|
-
...[
|
|
2760
|
-
"knowledge_save",
|
|
2761
|
-
"knowledge_archive",
|
|
2762
|
-
"knowledge_retain_file",
|
|
2763
|
-
"knowledge_retain_message",
|
|
2764
|
-
"task_note_promote_knowledge"
|
|
2765
|
-
].flatMap(
|
|
2766
|
-
(name) => [name, `opengeni__${name}`, `mcp__opengeni__${name}`].map((trustedName) => ({
|
|
2767
|
-
match: "name",
|
|
2768
|
-
name: trustedName,
|
|
2769
|
-
matchPrefixedLeaf: false,
|
|
2770
|
-
render: KnowledgeSaveRenderer
|
|
2771
|
-
}))
|
|
2772
|
-
),
|
|
2773
|
-
// Only the Opengeni server's own app actions: a page another server returns
|
|
2774
|
-
// is never drawn as a payment button. Spelled out here, like the knowledge
|
|
2775
|
-
// tools above, because this registry is built while its chunk loads and the
|
|
2776
|
-
// payment-page parser lives in a lazily shared chunk (the same names as its
|
|
2777
|
-
// TRUSTED_APP_ACTION_CALL_NAMES, which a test keeps equal).
|
|
2778
|
-
...["admin_action_call", "opengeni__admin_action_call", "mcp__opengeni__admin_action_call"].map(
|
|
2779
|
-
(trustedName) => ({
|
|
2780
|
-
match: "name",
|
|
2781
|
-
name: trustedName,
|
|
2782
|
-
matchPrefixedLeaf: false,
|
|
2783
|
-
render: AppActionCallRenderer
|
|
2784
|
-
})
|
|
2785
|
-
),
|
|
2786
|
-
// Provider-native items carry `raw.type` on the wire — this is their source of
|
|
2787
|
-
// truth and is consulted first by the registry.
|
|
2788
|
-
{ match: "rawType", type: "apply_patch_call", render: ApplyPatchRenderer },
|
|
2789
|
-
{ match: "rawType", type: "computer_call", render: ComputerCallRenderer },
|
|
2790
|
-
{ match: "rawType", type: "tool_search_call", render: ToolSearchRenderer },
|
|
2791
|
-
// First-party sandbox + MCP tools resolve by name (exact or MCP leaf).
|
|
2792
|
-
{ match: "name", name: "exec_command", render: ExecRenderer },
|
|
2793
|
-
{ match: "name", name: "request_human_input", render: AskRenderer },
|
|
2794
|
-
{ match: "name", name: "run_on", render: RunOnRenderer },
|
|
2795
|
-
{ match: "name", name: "sandboxes_list", render: MachineRenderer },
|
|
2796
|
-
{ match: "name", name: "sandbox_swap", render: MachineRenderer },
|
|
2797
|
-
{ match: "name", name: "computer_open", render: MachineRenderer },
|
|
2798
|
-
{ match: "name", name: "computer_observe", render: MachineRenderer },
|
|
2799
|
-
{ match: "name", name: "computer_act", render: MachineRenderer },
|
|
2800
|
-
{ match: "name", name: "write_stdin", render: WriteStdinRenderer },
|
|
2801
|
-
{ match: "name", name: "apply_patch_call", render: ApplyPatchRenderer },
|
|
2802
|
-
{ match: "name", name: "apply_patch", render: ApplyPatchRenderer },
|
|
2803
|
-
{ match: "name", name: "computer_call", render: ComputerCallRenderer },
|
|
2804
|
-
{
|
|
2805
|
-
match: "name",
|
|
2806
|
-
name: "browser_screenshot",
|
|
2807
|
-
render: BrowserScreenshotRenderer
|
|
2808
|
-
},
|
|
2809
|
-
{ match: "name", name: "browser_observe", render: BrowserScreenshotRenderer },
|
|
2810
|
-
{ match: "name", name: "browser_act", render: BrowserScreenshotRenderer },
|
|
2811
|
-
// Function-mode computer tools (codex / chat-wire transports).
|
|
2812
|
-
{ match: "name", name: "computer_screenshot", render: ComputerCallRenderer },
|
|
2813
|
-
{ match: "name", name: "computer_click", render: ComputerCallRenderer },
|
|
2814
|
-
{
|
|
2815
|
-
match: "name",
|
|
2816
|
-
name: "computer_double_click",
|
|
2817
|
-
render: ComputerCallRenderer
|
|
2818
|
-
},
|
|
2819
|
-
{ match: "name", name: "computer_move", render: ComputerCallRenderer },
|
|
2820
|
-
{ match: "name", name: "computer_scroll", render: ComputerCallRenderer },
|
|
2821
|
-
{ match: "name", name: "computer_type", render: ComputerCallRenderer },
|
|
2822
|
-
{ match: "name", name: "computer_keypress", render: ComputerCallRenderer },
|
|
2823
|
-
{ match: "name", name: "computer_drag", render: ComputerCallRenderer },
|
|
2824
|
-
{ match: "name", name: "web_search_call", render: WebSearchRenderer },
|
|
2825
|
-
{
|
|
2826
|
-
match: "name",
|
|
2827
|
-
name: "image_generation_call",
|
|
2828
|
-
render: GeneratedImageRenderer
|
|
2829
|
-
},
|
|
2830
|
-
{ match: "name", name: "generate_image", render: GeneratedImageRenderer },
|
|
2831
|
-
{ match: "name", name: "generate_video", render: GeneratedVideoRenderer },
|
|
2832
|
-
{ match: "name", name: "tool_search", render: ToolSearchRenderer },
|
|
2833
|
-
{ match: "name", name: "view_image", render: ViewImageRenderer },
|
|
2834
|
-
{
|
|
2835
|
-
match: "name",
|
|
2836
|
-
name: "sandbox_file_publish",
|
|
2837
|
-
render: SandboxFilePublishRenderer
|
|
2838
|
-
},
|
|
2839
|
-
{
|
|
2840
|
-
match: "name",
|
|
2841
|
-
name: "artifacts_create",
|
|
2842
|
-
render: SiteArtifactRenderer,
|
|
2843
|
-
matchPrefixedLeaf: false
|
|
2844
|
-
},
|
|
2845
|
-
{
|
|
2846
|
-
match: "name",
|
|
2847
|
-
name: "artifacts_publish",
|
|
2848
|
-
render: SiteArtifactRenderer,
|
|
2849
|
-
matchPrefixedLeaf: false
|
|
2850
|
-
},
|
|
2851
|
-
{
|
|
2852
|
-
match: "name",
|
|
2853
|
-
name: "opengeni__artifacts_create",
|
|
2854
|
-
render: SiteArtifactRenderer,
|
|
2855
|
-
matchPrefixedLeaf: false
|
|
2856
|
-
},
|
|
2857
|
-
{
|
|
2858
|
-
match: "name",
|
|
2859
|
-
name: "opengeni__artifacts_publish",
|
|
2860
|
-
render: SiteArtifactRenderer,
|
|
2861
|
-
matchPrefixedLeaf: false
|
|
2862
|
-
},
|
|
2863
|
-
{
|
|
2864
|
-
match: "name",
|
|
2865
|
-
name: "environment_set_variable",
|
|
2866
|
-
render: SecretSetRenderer
|
|
2867
|
-
},
|
|
2868
|
-
{
|
|
2869
|
-
match: "name",
|
|
2870
|
-
name: "variable_set_set_variable",
|
|
2871
|
-
render: SecretSetRenderer
|
|
2872
|
-
},
|
|
2873
|
-
{ match: "name", name: "search_documents", render: DocsSearchRenderer },
|
|
2874
|
-
{ match: "name", name: "knowledge_search", render: DocsSearchRenderer },
|
|
2875
|
-
{ match: "name", name: "memory_propose", render: MemoryProposeRenderer },
|
|
2876
|
-
{ match: "name", name: "set_session_title", render: SetSessionTitleRenderer },
|
|
2877
|
-
{
|
|
2878
|
-
match: "name",
|
|
2879
|
-
name: "set_other_session_title",
|
|
2880
|
-
render: SetSessionTitleRenderer
|
|
2881
|
-
}
|
|
2882
|
-
];
|
|
2883
|
-
var PRESENTATION_RENDERERS = /* @__PURE__ */ new Map([
|
|
2884
|
-
[ExecRenderer, "exec"],
|
|
2885
|
-
[WriteStdinRenderer, "write_stdin"],
|
|
2886
|
-
[ApplyPatchRenderer, "apply_patch"],
|
|
2887
|
-
[GenericRenderer, "generic"],
|
|
2888
|
-
[AppActionCallRenderer, "generic"]
|
|
2889
|
-
]);
|
|
2890
|
-
function rendersToolOutputPreview(renderer, item) {
|
|
2891
|
-
if (!item.outputPreview) return true;
|
|
2892
|
-
return PRESENTATION_RENDERERS.get(renderer) === presentedToolKind(item) && presentsToolOutputPreview(item);
|
|
2893
|
-
}
|
|
2894
|
-
var defaultToolRegistry = createToolRegistry(BASE_ENTRIES, GenericRenderer);
|
|
2895
|
-
function createDefaultToolRegistry(options = {}) {
|
|
2896
|
-
return createToolRegistry(BASE_ENTRIES, GenericRenderer, options);
|
|
2897
|
-
}
|
|
2898
|
-
|
|
2899
|
-
// src/timeline/startup-preference.ts
|
|
2900
|
-
import { useSyncExternalStore as useSyncExternalStore2 } from "react";
|
|
2901
|
-
var KEY = "opengeni:startup-details:v1";
|
|
2902
|
-
var EVENT = "opengeni:startup-details-changed";
|
|
2903
|
-
var fallback = false;
|
|
2904
|
-
function snapshot() {
|
|
2905
|
-
try {
|
|
2906
|
-
return window.localStorage.getItem(KEY) === "true";
|
|
2907
|
-
} catch {
|
|
2908
|
-
return fallback;
|
|
2909
|
-
}
|
|
2910
|
-
}
|
|
2911
|
-
function subscribe(listener) {
|
|
2912
|
-
window.addEventListener(EVENT, listener);
|
|
2913
|
-
window.addEventListener("storage", listener);
|
|
2914
|
-
return () => {
|
|
2915
|
-
window.removeEventListener(EVENT, listener);
|
|
2916
|
-
window.removeEventListener("storage", listener);
|
|
2917
|
-
};
|
|
2918
|
-
}
|
|
2919
|
-
function setStartupDetails(value) {
|
|
2920
|
-
fallback = value;
|
|
2921
|
-
try {
|
|
2922
|
-
window.localStorage.setItem(KEY, String(value));
|
|
2923
|
-
} catch {
|
|
2924
|
-
}
|
|
2925
|
-
window.dispatchEvent(new Event(EVENT));
|
|
2926
|
-
}
|
|
2927
|
-
function useStartupDetails() {
|
|
2928
|
-
return useSyncExternalStore2(subscribe, snapshot, () => false);
|
|
2929
|
-
}
|
|
2930
|
-
|
|
2931
|
-
// src/timeline/agent-row.tsx
|
|
2932
|
-
import { ArrowUpRightIcon, ChevronRightIcon as ChevronRightIcon2 } from "lucide-react";
|
|
2933
|
-
import { useContext as useContext6, useState as useState8 } from "react";
|
|
2934
|
-
import { Fragment as Fragment4, jsx as jsx9, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
2935
|
-
function AgentRow({
|
|
2936
|
-
icon,
|
|
2937
|
-
title,
|
|
2938
|
-
preview,
|
|
2939
|
-
previewLines = 1,
|
|
2940
|
-
meta,
|
|
2941
|
-
sessionId,
|
|
2942
|
-
onOpenSession,
|
|
2943
|
-
running,
|
|
2944
|
-
failed,
|
|
2945
|
-
cancelled,
|
|
2946
|
-
children
|
|
2947
|
-
}) {
|
|
2948
|
-
const t = useOpenGeniText();
|
|
2949
|
-
const compact = useContext6(CompactActivityContext);
|
|
2950
|
-
const forcedDefaultOpen = useForcedDefaultOpen();
|
|
2951
|
-
const [open, setOpen] = useState8(forcedDefaultOpen ?? false);
|
|
2952
|
-
if (compact) {
|
|
2953
|
-
return /* @__PURE__ */ jsx9(
|
|
2954
|
-
ActivityDisclosure,
|
|
2955
|
-
{
|
|
2956
|
-
icon,
|
|
2957
|
-
title: title.text,
|
|
2958
|
-
preview: preview ?? void 0,
|
|
2959
|
-
running,
|
|
2960
|
-
failed,
|
|
2961
|
-
cancelled
|
|
2962
|
-
}
|
|
2963
|
-
);
|
|
2964
|
-
}
|
|
2965
|
-
const hasBody = children != null;
|
|
2966
|
-
const canOpen = Boolean(sessionId && onOpenSession);
|
|
2967
|
-
const openLabel = title.name ? t("timeline.agentRow.openName", { name: title.name }) : t("timeline.agentRow.openAgentSession");
|
|
2968
|
-
const status = failed ? "failed" : cancelled ? "cancelled" : running ? "running" : void 0;
|
|
2969
|
-
const inner = /* @__PURE__ */ jsxs5(Fragment4, { children: [
|
|
2970
|
-
hasBody ? /* @__PURE__ */ jsx9(
|
|
2971
|
-
ChevronRightIcon2,
|
|
2972
|
-
{
|
|
2973
|
-
"aria-hidden": true,
|
|
2974
|
-
className: "mt-[3px] size-3.5 shrink-0 text-og-fg-subtle transition-transform duration-[var(--_og-duration-disclose)] ease-og-in-out group-data-[state=open]/agent:rotate-90"
|
|
2975
|
-
}
|
|
2976
|
-
) : /* @__PURE__ */ jsx9("span", { className: "size-3.5 shrink-0", "aria-hidden": true }),
|
|
2977
|
-
/* @__PURE__ */ jsx9(
|
|
2978
|
-
"span",
|
|
2979
|
-
{
|
|
2980
|
-
"aria-hidden": true,
|
|
2981
|
-
className: cn(
|
|
2982
|
-
"mt-[3px] shrink-0 [&_svg]:size-3.5",
|
|
2983
|
-
failed ? "text-og-status-failed" : "text-og-fg-subtle"
|
|
2984
|
-
),
|
|
2985
|
-
children: icon
|
|
2986
|
-
}
|
|
2987
|
-
),
|
|
2988
|
-
/* @__PURE__ */ jsxs5("span", { className: "min-w-0 flex-1", children: [
|
|
2989
|
-
/* @__PURE__ */ jsxs5("span", { className: "flex min-w-0 items-baseline gap-2", children: [
|
|
2990
|
-
/* @__PURE__ */ jsx9(
|
|
2991
|
-
ShimmerText,
|
|
2992
|
-
{
|
|
2993
|
-
active: Boolean(running),
|
|
2994
|
-
className: cn(
|
|
2995
|
-
"min-w-0 truncate text-og-base leading-5",
|
|
2996
|
-
failed && "text-og-status-failed"
|
|
2997
|
-
),
|
|
2998
|
-
children: title.name ? /* @__PURE__ */ jsxs5(Fragment4, { children: [
|
|
2999
|
-
title.before ? /* @__PURE__ */ jsx9("span", { className: "text-og-fg-muted", children: title.before }) : null,
|
|
3000
|
-
/* @__PURE__ */ jsx9("span", { className: cn("font-medium", failed ? void 0 : "text-og-fg"), children: title.name }),
|
|
3001
|
-
title.after ? /* @__PURE__ */ jsx9("span", { className: "text-og-fg-muted", children: title.after }) : null
|
|
3002
|
-
] }) : /* @__PURE__ */ jsx9("span", { className: cn("font-medium", failed ? void 0 : "text-og-fg"), children: title.text })
|
|
3003
|
-
}
|
|
3004
|
-
),
|
|
3005
|
-
meta ? /* @__PURE__ */ jsx9("span", { className: "shrink-0 text-og-xs text-og-fg-subtle tabular-nums", children: meta }) : null
|
|
3006
|
-
] }),
|
|
3007
|
-
preview && !open ? /* @__PURE__ */ jsx9(
|
|
3008
|
-
"span",
|
|
3009
|
-
{
|
|
3010
|
-
"data-og-agent-preview": "",
|
|
3011
|
-
className: cn(
|
|
3012
|
-
"mt-0.5 block text-og-sm leading-5 text-og-fg-muted",
|
|
3013
|
-
previewLines === 2 ? "line-clamp-2 break-words" : "truncate"
|
|
3014
|
-
),
|
|
3015
|
-
children: preview
|
|
3016
|
-
}
|
|
3017
|
-
) : null
|
|
3018
|
-
] }),
|
|
3019
|
-
failed ? /* @__PURE__ */ jsxs5("span", { className: "inline-flex shrink-0 items-center gap-1.5 self-center font-og-mono text-og-xs leading-none text-og-status-failed", children: [
|
|
3020
|
-
/* @__PURE__ */ jsx9("span", { className: "size-1.5 rounded-full bg-og-status-failed" }),
|
|
3021
|
-
t("timeline.agentRow.failed")
|
|
3022
|
-
] }) : cancelled ? /* @__PURE__ */ jsx9("span", { className: "og-cancelled-chip shrink-0 self-center font-og-mono text-og-xs leading-none text-og-fg-subtle", children: t("timeline.agentRow.interrupted") }) : null,
|
|
3023
|
-
canOpen && sessionId && onOpenSession ? /* @__PURE__ */ jsx9(
|
|
3024
|
-
"button",
|
|
3025
|
-
{
|
|
3026
|
-
type: "button",
|
|
3027
|
-
"aria-label": openLabel,
|
|
3028
|
-
title: openLabel,
|
|
3029
|
-
onClick: (event) => {
|
|
3030
|
-
event.stopPropagation();
|
|
3031
|
-
onOpenSession(sessionId);
|
|
3032
|
-
},
|
|
3033
|
-
onKeyDown: (event) => event.stopPropagation(),
|
|
3034
|
-
className: cn(
|
|
3035
|
-
"-my-0.5 inline-grid size-6 shrink-0 place-items-center rounded-og-sm text-og-fg-subtle",
|
|
3036
|
-
"outline-hidden transition-colors duration-150 hover:bg-og-surface-2 hover:text-og-fg focus-visible:ring-2 focus-visible:ring-og-accent",
|
|
3037
|
-
"pointer-coarse:size-10"
|
|
3038
|
-
),
|
|
3039
|
-
children: /* @__PURE__ */ jsx9(ArrowUpRightIcon, { "aria-hidden": true, className: "size-3.5" })
|
|
3040
|
-
}
|
|
3041
|
-
) : null
|
|
3042
|
-
] });
|
|
3043
|
-
const rowClass = cn(
|
|
3044
|
-
"group/agent flex w-full min-w-0 items-start gap-2 rounded-og-sm px-1.5 py-1.5 text-left",
|
|
3045
|
-
"pointer-coarse:min-h-11 pointer-coarse:py-2.5"
|
|
3046
|
-
);
|
|
3047
|
-
if (!hasBody) {
|
|
3048
|
-
return /* @__PURE__ */ jsx9("div", { "data-og-agent-row": "", "data-status": status, className: rowClass, children: inner });
|
|
3049
|
-
}
|
|
3050
|
-
return /* @__PURE__ */ jsxs5("div", { "data-og-agent-row": "", "data-status": status, children: [
|
|
3051
|
-
/* @__PURE__ */ jsx9(
|
|
3052
|
-
"div",
|
|
3053
|
-
{
|
|
3054
|
-
role: "button",
|
|
3055
|
-
tabIndex: 0,
|
|
3056
|
-
"aria-expanded": open,
|
|
3057
|
-
"data-state": open ? "open" : "closed",
|
|
3058
|
-
onClick: () => setOpen((previous) => !previous),
|
|
3059
|
-
onKeyDown: (event) => {
|
|
3060
|
-
if (event.key === "Enter" || event.key === " ") {
|
|
3061
|
-
event.preventDefault();
|
|
3062
|
-
setOpen((previous) => !previous);
|
|
3063
|
-
}
|
|
3064
|
-
},
|
|
3065
|
-
className: cn(
|
|
3066
|
-
rowClass,
|
|
3067
|
-
"cursor-pointer outline-hidden transition-colors duration-150 hover:bg-og-surface-1",
|
|
3068
|
-
"focus-visible:ring-2 focus-visible:ring-og-accent"
|
|
3069
|
-
),
|
|
3070
|
-
children: inner
|
|
3071
|
-
}
|
|
3072
|
-
),
|
|
3073
|
-
open ? /* @__PURE__ */ jsx9("div", { className: "mb-2 ml-[2.125rem] mr-1.5 mt-0.5 flex flex-col gap-2 border-l border-og-border pl-4 text-og-sm leading-6 text-og-fg animate-og-expand", children }) : null
|
|
3074
|
-
] });
|
|
3075
|
-
}
|
|
3076
|
-
function AgentRowText({ children }) {
|
|
3077
|
-
return /* @__PURE__ */ jsx9("p", { className: "whitespace-pre-wrap break-words", children });
|
|
3078
|
-
}
|
|
3079
|
-
function AgentRowSection({
|
|
3080
|
-
label,
|
|
3081
|
-
children,
|
|
3082
|
-
muted
|
|
3083
|
-
}) {
|
|
3084
|
-
return /* @__PURE__ */ jsxs5("div", { className: "min-w-0", children: [
|
|
3085
|
-
/* @__PURE__ */ jsx9("p", { className: "text-og-xs font-medium text-og-fg-subtle", children: label }),
|
|
3086
|
-
/* @__PURE__ */ jsx9(
|
|
3087
|
-
"p",
|
|
3088
|
-
{
|
|
3089
|
-
className: cn("whitespace-pre-wrap break-words", muted ? "text-og-fg-muted" : "text-og-fg"),
|
|
3090
|
-
children
|
|
3091
|
-
}
|
|
3092
|
-
)
|
|
3093
|
-
] });
|
|
3094
|
-
}
|
|
3095
|
-
|
|
3096
|
-
// src/timeline/agent-identity.tsx
|
|
3097
|
-
import { createContext as createContext5, useContext as useContext7, useMemo as useMemo3 } from "react";
|
|
3098
|
-
import { jsx as jsx10 } from "react/jsx-runtime";
|
|
3099
|
-
var SESSION_ID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
3100
|
-
var AGENT_TITLE_MAX_LENGTH = 80;
|
|
3101
|
-
function isSessionId(value) {
|
|
3102
|
-
return typeof value === "string" && SESSION_ID.test(value);
|
|
3103
|
-
}
|
|
3104
|
-
function displayAgentTitle(value) {
|
|
3105
|
-
if (typeof value !== "string") return null;
|
|
3106
|
-
const title = value.replace(/\s+/g, " ").trim();
|
|
3107
|
-
if (!title) return null;
|
|
3108
|
-
return title.length > AGENT_TITLE_MAX_LENGTH ? `${title.slice(0, AGENT_TITLE_MAX_LENGTH - 1).trimEnd()}\u2026` : title;
|
|
3109
|
-
}
|
|
3110
|
-
var AgentIdentityContext = createContext5({ titleFor: () => null });
|
|
3111
|
-
function useAgentIdentity() {
|
|
3112
|
-
return useContext7(AgentIdentityContext);
|
|
3113
|
-
}
|
|
3114
|
-
function AgentIdentityProvider({
|
|
3115
|
-
items,
|
|
3116
|
-
resolveSessionTitle,
|
|
3117
|
-
onOpenSession,
|
|
3118
|
-
children
|
|
3119
|
-
}) {
|
|
3120
|
-
const spawnTitleKey = JSON.stringify(
|
|
3121
|
-
items.flatMap(
|
|
3122
|
-
(item) => item.kind === "worker" && item.action === "spawn" && isSessionId(item.workerSessionId) && item.title ? [[item.workerSessionId.toLowerCase(), item.title]] : []
|
|
3123
|
-
)
|
|
3124
|
-
);
|
|
3125
|
-
const value = useMemo3(() => {
|
|
3126
|
-
const spawnTitles = new Map(JSON.parse(spawnTitleKey));
|
|
3127
|
-
return {
|
|
3128
|
-
titleFor: (sessionId) => {
|
|
3129
|
-
if (!isSessionId(sessionId)) return null;
|
|
3130
|
-
return displayAgentTitle(resolveSessionTitle?.(sessionId)) ?? displayAgentTitle(spawnTitles.get(sessionId.toLowerCase())) ?? null;
|
|
3131
|
-
},
|
|
3132
|
-
onOpenSession
|
|
3133
|
-
};
|
|
3134
|
-
}, [spawnTitleKey, resolveSessionTitle, onOpenSession]);
|
|
3135
|
-
return /* @__PURE__ */ jsx10(AgentIdentityContext.Provider, { value, children });
|
|
3136
|
-
}
|
|
3137
|
-
|
|
3138
|
-
// src/timeline/activity-rail.tsx
|
|
3139
|
-
import { AnimatePresence, motion, useReducedMotion } from "motion/react";
|
|
3140
|
-
|
|
3141
|
-
// src/timeline/genie-loading.tsx
|
|
3142
|
-
import { ThinkingOrb } from "thinking-orbs";
|
|
3143
|
-
import { createContext as createContext6, useContext as useContext8, useEffect as useEffect5, useState as useState9 } from "react";
|
|
3144
|
-
import { jsx as jsx11, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
3145
|
-
var GenieLoadingOptionsContext = createContext6(void 0);
|
|
3146
|
-
var EMBEDDED_GENIE_LOADING = (t) => ({
|
|
3147
|
-
phrases: [t("timeline.genieLoading.thinking")],
|
|
3148
|
-
messages: { showDetails: t("timeline.genieLoading.showDetails") }
|
|
3149
|
-
});
|
|
3150
|
-
function GenieLoading({
|
|
3151
|
-
startedAt,
|
|
3152
|
-
phase = "preparing",
|
|
3153
|
-
onShowDetails,
|
|
3154
|
-
detailsOpen = false,
|
|
3155
|
-
notice
|
|
3156
|
-
}) {
|
|
3157
|
-
const t = useOpenGeniText();
|
|
3158
|
-
const options = useContext8(GenieLoadingOptionsContext);
|
|
3159
|
-
const waiting = phase === "waiting";
|
|
3160
|
-
const phrases = options?.phrases?.length ? options.phrases : waiting ? GENIE_WAITING_PHRASES(t) : GENIE_PREPARING_PHRASES(t);
|
|
3161
|
-
const theme = useThemeType(void 0);
|
|
3162
|
-
const [phrase, setPhrase] = useState9(0);
|
|
3163
|
-
const [showDetails, setShowDetails] = useState9(false);
|
|
3164
|
-
const [slow, setSlow] = useState9(false);
|
|
3165
|
-
const phraseCount = phrases.length;
|
|
3166
|
-
useEffect5(() => {
|
|
3167
|
-
const update = () => {
|
|
3168
|
-
setShowDetails(Date.now() - Date.parse(startedAt) >= 3e4);
|
|
3169
|
-
setSlow(Date.now() - Date.parse(startedAt) >= 6e4);
|
|
3170
|
-
if (!document.hidden) setPhrase(Math.floor(Math.random() * phraseCount));
|
|
3171
|
-
};
|
|
3172
|
-
update();
|
|
3173
|
-
const timer = window.setInterval(update, 5e3);
|
|
3174
|
-
return () => window.clearInterval(timer);
|
|
3175
|
-
}, [startedAt, phraseCount]);
|
|
3176
|
-
if (options?.render && !notice)
|
|
3177
|
-
return options.render({ startedAt, phase, detailsOpen, onShowDetails });
|
|
3178
|
-
return /* @__PURE__ */ jsxs6("div", { className: "og-genie-loading", children: [
|
|
3179
|
-
/* @__PURE__ */ jsx11(
|
|
3180
|
-
"div",
|
|
3181
|
-
{
|
|
3182
|
-
className: "og-genie-orb",
|
|
3183
|
-
"aria-hidden": "true",
|
|
3184
|
-
style: {
|
|
3185
|
-
width: options?.orb?.size ?? 64,
|
|
3186
|
-
height: options?.orb?.size ?? 64,
|
|
3187
|
-
flexBasis: options?.orb?.size ?? 64
|
|
3188
|
-
},
|
|
3189
|
-
children: /* @__PURE__ */ jsx11(ThinkingOrb, { state: "searching", size: 64, theme, speed: 0.8, ...options?.orb })
|
|
3190
|
-
}
|
|
3191
|
-
),
|
|
3192
|
-
/* @__PURE__ */ jsxs6("div", { className: "og-genie-copy", children: [
|
|
3193
|
-
/* @__PURE__ */ jsx11("span", { className: "sr-only", role: "status", children: notice ?? (slow ? options?.messages?.slowStatus ?? (waiting ? t("timeline.genieLoading.waitingForAResponseTaking") : t("timeline.genieLoading.preparingYourTaskTakingLonger")) : options?.messages?.status ?? (waiting ? t("timeline.genieLoading.waitingForAResponse") : t("timeline.genieLoading.preparingYourTask"))) }),
|
|
3194
|
-
/* @__PURE__ */ jsx11(
|
|
3195
|
-
"span",
|
|
3196
|
-
{
|
|
3197
|
-
className: "og-genie-phrase",
|
|
3198
|
-
style: notice ? { animation: "none" } : void 0,
|
|
3199
|
-
"aria-hidden": "true",
|
|
3200
|
-
children: notice ?? (slow ? options?.messages?.slowText ?? (waiting ? t("timeline.genieLoading.stillWaitingForAResponse") : t("timeline.genieLoading.aLittleLongerThanUsual")) : phrases[phrase % phrases.length])
|
|
3201
|
-
},
|
|
3202
|
-
notice ?? (slow ? "slow" : phrase)
|
|
3203
|
-
),
|
|
3204
|
-
showDetails || detailsOpen || notice ? /* @__PURE__ */ jsxs6(
|
|
3205
|
-
"button",
|
|
3206
|
-
{
|
|
3207
|
-
type: "button",
|
|
3208
|
-
className: "og-genie-details",
|
|
3209
|
-
"aria-expanded": detailsOpen,
|
|
3210
|
-
onClick: onShowDetails,
|
|
3211
|
-
children: [
|
|
3212
|
-
detailsOpen ? options?.messages?.hideDetails ?? t("timeline.genieLoading.hideDetails") : options?.messages?.showDetails ?? (waiting ? t("timeline.genieLoading.showDetails") : t("timeline.genieLoading.behindTheMagic")),
|
|
3213
|
-
/* @__PURE__ */ jsx11("span", { "aria-hidden": "true", children: " \u2197" })
|
|
3214
|
-
]
|
|
3215
|
-
}
|
|
3216
|
-
) : null
|
|
3217
|
-
] })
|
|
3218
|
-
] });
|
|
3219
|
-
}
|
|
3220
|
-
|
|
3221
|
-
// src/timeline/startup-dispatch-details.tsx
|
|
3222
|
-
import { useEffect as useEffect6, useState as useState10 } from "react";
|
|
3223
|
-
import { jsx as jsx12, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
3224
|
-
function StartupDispatchDetails({ wait }) {
|
|
3225
|
-
const t = useOpenGeniText();
|
|
3226
|
-
const [now, setNow] = useState10(Date.now);
|
|
3227
|
-
useEffect6(() => {
|
|
3228
|
-
const timer = setInterval(() => setNow(Date.now()), 15e3);
|
|
3229
|
-
return () => clearInterval(timer);
|
|
3230
|
-
}, []);
|
|
3231
|
-
const next = wait?.nextAttemptAt ? new Date(wait.nextAttemptAt) : null;
|
|
3232
|
-
return /* @__PURE__ */ jsxs7("div", { className: "text-og-xs text-og-fg-muted", "data-og-startup-dispatch-details": "", children: [
|
|
3233
|
-
/* @__PURE__ */ jsx12("p", { children: t("timeline.startupDispatchDetails.yourMessagesAreSavedNo") }),
|
|
3234
|
-
/* @__PURE__ */ jsx12("p", { children: wait?.state === "pending" && next ? next.getTime() <= now ? t("timeline.startupDispatchDetails.automaticStartRetryIsDue") : t("timeline.startupDispatchDetails.automaticStartRetryAtLocaletimestring", {
|
|
3235
|
-
localeTimeString: next.toLocaleTimeString(t.locale, {
|
|
3236
|
-
hour: "2-digit",
|
|
3237
|
-
minute: "2-digit"
|
|
3238
|
-
})
|
|
3239
|
-
}) : wait?.state === "acknowledged" ? t("timeline.startupDispatchDetails.theStartRequestWasAccepted") : t("timeline.startupDispatchDetails.startConfirmationIsUnavailable") }),
|
|
3240
|
-
wait && wait.attempts > 0 ? /* @__PURE__ */ jsx12("p", { children: t("timeline.startupDispatchDetails.dispatchAttempts", { count: wait.attempts }) }) : null,
|
|
3241
|
-
wait?.lastError ? /* @__PURE__ */ jsx12("p", { className: "max-h-32 overflow-y-auto whitespace-pre-wrap break-words", children: t("timeline.startupDispatchDetails.lastRecordedDispatchErrorLasterror", {
|
|
3242
|
-
lastError: wait.lastError
|
|
3243
|
-
}) }) : null
|
|
3244
|
-
] });
|
|
3245
|
-
}
|
|
3246
|
-
|
|
3247
|
-
// src/timeline/activity-rail.tsx
|
|
3248
|
-
import {
|
|
3249
|
-
ArrowRightIcon,
|
|
3250
|
-
BotIcon as BotIcon2,
|
|
3251
|
-
BrainCircuitIcon as BrainCircuitIcon4,
|
|
3252
|
-
MessageSquareTextIcon,
|
|
3253
|
-
SendIcon
|
|
3254
|
-
} from "lucide-react";
|
|
3255
|
-
import {
|
|
3256
|
-
Component,
|
|
3257
|
-
createContext as createContext8,
|
|
3258
|
-
lazy as lazy3,
|
|
3259
|
-
useContext as useContext10,
|
|
3260
|
-
useEffect as useEffect7,
|
|
3261
|
-
useLayoutEffect,
|
|
3262
|
-
useRef as useRef2,
|
|
3263
|
-
useState as useState11
|
|
3264
|
-
} from "react";
|
|
3265
|
-
import { jsx as rowJsx, jsxs as rowJsxs } from "react/jsx-runtime";
|
|
3266
|
-
|
|
3267
|
-
// src/timeline/seen-activity-ids.ts
|
|
3268
|
-
import { createContext as createContext7, useContext as useContext9 } from "react";
|
|
3269
|
-
var SeenActivityIdsContext = createContext7(null);
|
|
3270
|
-
var SeenActivityIdsProvider = SeenActivityIdsContext.Provider;
|
|
3271
|
-
function useSeenActivityIds() {
|
|
3272
|
-
return useContext9(SeenActivityIdsContext);
|
|
3273
|
-
}
|
|
3274
|
-
|
|
3275
|
-
// src/timeline/activity-rail.tsx
|
|
3276
|
-
import { Fragment as Fragment5, jsx as jsx13, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
3277
|
-
var LazyFleetDecisionRow = lazy3(() => import("./fleet-decision-row-AA4H5CDT.js"));
|
|
3278
|
-
var LazyPlatformActivityRow = lazy3(() => import("./platform-activity-row-5VYV6TX4.js"));
|
|
3279
|
-
function familyOf(item) {
|
|
3280
|
-
if (item.kind === "tool-call") {
|
|
3281
|
-
return item.name === "exec_command" || item.name === "write_stdin" ? "terminal" : item.name;
|
|
3282
|
-
}
|
|
3283
|
-
return item.kind;
|
|
3284
|
-
}
|
|
3285
|
-
function ActivityRail({
|
|
3286
|
-
items,
|
|
3287
|
-
startupActive,
|
|
3288
|
-
toolRegistry = defaultToolRegistry,
|
|
3289
|
-
onOpenSession,
|
|
3290
|
-
onMemoryClick,
|
|
3291
|
-
loadRetainedScreenshot,
|
|
3292
|
-
loadRetainedArtifact,
|
|
3293
|
-
bare,
|
|
3294
|
-
className
|
|
3295
|
-
}) {
|
|
3296
|
-
const msg = useOpenGeniText();
|
|
3297
|
-
const debug = useStartupDetails();
|
|
3298
|
-
const reducedMotion = useReducedMotion();
|
|
3299
|
-
const [detailsOpen, setDetailsOpen] = useState11(false);
|
|
3300
|
-
const phases = items.filter((item) => item.kind === "startup-phase");
|
|
3301
|
-
const dispatch = phases.find((item) => item.dispatchWait !== void 0);
|
|
3302
|
-
const hasWork = items.some(
|
|
3303
|
-
(item) => item.kind !== "startup-phase" && (item.kind !== "reasoning" || item.text.trim().length > 0)
|
|
3304
|
-
);
|
|
3305
|
-
const interrupted = phases.some(
|
|
3306
|
-
(item) => item.status === "failed" || item.status === "cancelled"
|
|
3307
|
-
);
|
|
3308
|
-
const providerResponded = phases.some(
|
|
3309
|
-
(item) => item.phase === "provider_first_byte" && item.status === "complete"
|
|
3310
|
-
);
|
|
3311
|
-
const responsePending = phases.some((item) => item.phase === "provider_first_byte");
|
|
3312
|
-
const loading = !hasWork && !interrupted && (startupActive ?? (!providerResponded && phases.some((item) => item.status === "running")));
|
|
3313
|
-
const visibleItems = debug || detailsOpen ? items : items.filter(
|
|
3314
|
-
(item) => item.kind === "startup-phase" ? item.status === "failed" || item.status === "cancelled" : item.kind !== "reasoning" || item.text.trim().length > 0
|
|
3315
|
-
);
|
|
3316
|
-
const startedAt = phases.reduce((first, item) => {
|
|
3317
|
-
const start = item.loadingStartedAt ?? item.startedAt;
|
|
3318
|
-
return start < first ? start : first;
|
|
3319
|
-
}, phases[0]?.startedAt ?? "");
|
|
3320
|
-
const enterMounted = useEntranceAnimation();
|
|
3321
|
-
const enterLive = useEntranceAnimationLive();
|
|
3322
|
-
const seenIds = useSeenActivityIds();
|
|
3323
|
-
const enter = seenIds ? enterLive : enterMounted;
|
|
3324
|
-
const previousIdsRef = useRef2(null);
|
|
3325
|
-
const enteringIds = /* @__PURE__ */ new Set();
|
|
3326
|
-
if (enter) {
|
|
3327
|
-
for (const item of items) {
|
|
3328
|
-
if (seenIds) {
|
|
3329
|
-
if (!seenIds.has(item.id)) {
|
|
3330
|
-
enteringIds.add(item.id);
|
|
3331
|
-
}
|
|
3332
|
-
} else if (previousIdsRef.current !== null && !previousIdsRef.current.has(item.id)) {
|
|
3333
|
-
enteringIds.add(item.id);
|
|
3334
|
-
}
|
|
3335
|
-
}
|
|
3336
|
-
}
|
|
3337
|
-
useLayoutEffect(() => {
|
|
3338
|
-
previousIdsRef.current = new Set(items.map((item) => item.id));
|
|
3339
|
-
if (seenIds) {
|
|
3340
|
-
for (const item of items) {
|
|
3341
|
-
seenIds.add(item.id);
|
|
3342
|
-
}
|
|
3343
|
-
}
|
|
3344
|
-
});
|
|
3345
|
-
return /* @__PURE__ */ jsxs8(
|
|
3346
|
-
"div",
|
|
3347
|
-
{
|
|
3348
|
-
className: cn(
|
|
3349
|
-
// Rows sit TIGHT by default (gap-0.5) so a same-family run reads as one
|
|
3350
|
-
// calm cluster; a family change opens real breathing room (mt-3) below,
|
|
3351
|
-
// so a long rail reads as a few clusters, not a metronome of rows.
|
|
3352
|
-
"relative flex flex-col gap-0.5",
|
|
3353
|
-
!bare && "border-l-2 border-og-border pl-3 sm:pl-4",
|
|
3354
|
-
// Whole-rail enter: standalone rails only (no seen-id map). Inside
|
|
3355
|
-
// MessageTimeline, unknown ids take per-row enter — remounts stay quiet.
|
|
3356
|
-
!bare && enter && !seenIds && previousIdsRef.current === null && "animate-og-enter",
|
|
3357
|
-
className
|
|
3358
|
-
),
|
|
3359
|
-
children: [
|
|
3360
|
-
/* @__PURE__ */ jsx13(AnimatePresence, { initial: false, children: loading && !debug ? /* @__PURE__ */ jsx13(
|
|
3361
|
-
motion.div,
|
|
3362
|
-
{
|
|
3363
|
-
initial: { opacity: 0 },
|
|
3364
|
-
animate: { opacity: 1, height: "auto" },
|
|
3365
|
-
exit: {
|
|
3366
|
-
opacity: 0,
|
|
3367
|
-
height: 0,
|
|
3368
|
-
pointerEvents: "none"
|
|
3369
|
-
},
|
|
3370
|
-
transition: {
|
|
3371
|
-
height: { duration: reducedMotion ? 0 : 0.32, ease: [0.22, 1, 0.36, 1] },
|
|
3372
|
-
opacity: { duration: reducedMotion ? 0 : 0.16 }
|
|
3373
|
-
},
|
|
3374
|
-
style: { overflow: "hidden" },
|
|
3375
|
-
children: /* @__PURE__ */ jsx13(
|
|
3376
|
-
GenieLoading,
|
|
3377
|
-
{
|
|
3378
|
-
startedAt,
|
|
3379
|
-
notice: dispatch?.dispatchWait?.lastError ? msg("timeline.activityRail.unableToStartYetYour") : void 0,
|
|
3380
|
-
phase: responsePending ? "waiting" : "preparing",
|
|
3381
|
-
detailsOpen,
|
|
3382
|
-
onShowDetails: () => setDetailsOpen((open) => !open)
|
|
3383
|
-
}
|
|
3384
|
-
)
|
|
3385
|
-
},
|
|
3386
|
-
"startup"
|
|
3387
|
-
) : null }),
|
|
3388
|
-
detailsOpen && !debug && !loading ? /* @__PURE__ */ jsx13(
|
|
3389
|
-
"button",
|
|
3390
|
-
{
|
|
3391
|
-
type: "button",
|
|
3392
|
-
className: "og-genie-details self-start",
|
|
3393
|
-
onClick: () => setDetailsOpen(false),
|
|
3394
|
-
children: msg("timeline.activityRail.hideStartupDetails")
|
|
3395
|
-
}
|
|
3396
|
-
) : null,
|
|
3397
|
-
dispatch && (detailsOpen || debug) ? /* @__PURE__ */ jsx13(StartupDispatchDetails, { wait: dispatch.dispatchWait ?? null }) : null,
|
|
3398
|
-
visibleItems.map((item, index) => {
|
|
3399
|
-
const newFamily = index > 0 && familyOf(item) !== familyOf(visibleItems[index - 1]);
|
|
3400
|
-
const row = renderActivity(
|
|
3401
|
-
msg,
|
|
3402
|
-
item,
|
|
3403
|
-
toolRegistry,
|
|
3404
|
-
onOpenSession,
|
|
3405
|
-
onMemoryClick,
|
|
3406
|
-
loadRetainedScreenshot,
|
|
3407
|
-
loadRetainedArtifact
|
|
3408
|
-
);
|
|
3409
|
-
return /* @__PURE__ */ jsx13(
|
|
3410
|
-
"div",
|
|
3411
|
-
{
|
|
3412
|
-
"data-og-timeline-row-anchor": "",
|
|
3413
|
-
"data-og-item": item.id,
|
|
3414
|
-
"data-og-annotation-source-key": item.kind === "tool-call" ? item.annotationSource?.eventId : void 0,
|
|
3415
|
-
className: cn(newFamily && "mt-3", enteringIds.has(item.id) && "animate-og-row-enter"),
|
|
3416
|
-
children: row
|
|
3417
|
-
},
|
|
3418
|
-
item.id
|
|
3419
|
-
);
|
|
3420
|
-
})
|
|
3421
|
-
]
|
|
3422
|
-
}
|
|
3423
|
-
);
|
|
3424
|
-
}
|
|
3425
|
-
var ActivityNoteTextContext = createContext8(null);
|
|
3426
|
-
function ActivityNoteRow({ item }) {
|
|
3427
|
-
const renderText = useContext10(ActivityNoteTextContext);
|
|
3428
|
-
if (!item.text.trim()) return null;
|
|
3429
|
-
return /* @__PURE__ */ jsxs8("div", { className: "flex items-start gap-2 px-1.5 py-1.5", "data-og-activity-note": "", children: [
|
|
3430
|
-
/* @__PURE__ */ jsx13("span", { className: "size-3.5 shrink-0", "aria-hidden": true }),
|
|
3431
|
-
/* @__PURE__ */ jsx13(MessageSquareTextIcon, { "aria-hidden": true, className: "mt-1 size-3.5 shrink-0 text-og-fg-subtle" }),
|
|
3432
|
-
/* @__PURE__ */ jsx13(
|
|
3433
|
-
"div",
|
|
3434
|
-
{
|
|
3435
|
-
className: "min-w-0 flex-1 text-og-sm text-og-fg-muted",
|
|
3436
|
-
"data-og-search-item": item.id,
|
|
3437
|
-
"data-og-annotation-source-key": item.annotationSource?.eventId,
|
|
3438
|
-
children: renderText ? renderText(item.text, item) : /* @__PURE__ */ jsx13(Markdown, { softLineBreaks: true, streaming: item.streaming, children: item.text })
|
|
3439
|
-
}
|
|
3440
|
-
)
|
|
3441
|
-
] });
|
|
3442
|
-
}
|
|
3443
|
-
function assertNever(item) {
|
|
3444
|
-
throw new Error(`ActivityRail: unhandled activity item ${JSON.stringify(item)}`);
|
|
3445
|
-
}
|
|
3446
|
-
function renderActivity(msg, item, toolRegistry, onOpenSession, onMemoryClick, loadRetainedScreenshot, loadRetainedArtifact) {
|
|
3447
|
-
switch (item.kind) {
|
|
3448
|
-
case "reasoning":
|
|
3449
|
-
case "sandbox":
|
|
3450
|
-
case "startup-phase":
|
|
3451
|
-
return /* @__PURE__ */ jsx13(LazyPart, { fallback: null, children: /* @__PURE__ */ jsx13(
|
|
3452
|
-
LazyPlatformActivityRow,
|
|
3453
|
-
{
|
|
3454
|
-
item,
|
|
3455
|
-
d: ActivityDisclosure,
|
|
3456
|
-
p: PayloadBlock,
|
|
3457
|
-
t: (name) => toolDisplayName(msg, name),
|
|
3458
|
-
b: BotIcon2,
|
|
3459
|
-
m: Markdown,
|
|
3460
|
-
j: rowJsx,
|
|
3461
|
-
s: rowJsxs
|
|
3462
|
-
}
|
|
3463
|
-
) });
|
|
3464
|
-
case "tool-call": {
|
|
3465
|
-
const shown = invokedToolCall(redactToolCall(item));
|
|
3466
|
-
const Renderer = toolRegistry.resolve(shown);
|
|
3467
|
-
const outputPreview = item.outputPreview ?? null;
|
|
3468
|
-
const exactFirst = outputPreview !== null && !rendersToolOutputPreview(Renderer, shown);
|
|
3469
|
-
const Shown = exactFirst && (outputPreview.state === "error" || !outputPreview.load) ? toolRegistry.fallback : Renderer;
|
|
3470
|
-
return /* @__PURE__ */ jsx13(ToolRowBoundary, { name: toolDisplayName(msg, shown.name), resetKeys: [item.status, Shown], children: /* @__PURE__ */ jsx13(ToolCallTruncationProvider, { value: item.truncation ?? null, children: /* @__PURE__ */ jsx13(ToolOutputPreviewProvider, { value: outputPreview, children: exactFirst && outputPreview.load && outputPreview.state !== "error" ? /* @__PURE__ */ jsx13(ToolOutputExactRow, { item: shown, preview: outputPreview }) : /* @__PURE__ */ jsx13(
|
|
3471
|
-
Shown,
|
|
3472
|
-
{
|
|
3473
|
-
item: shown,
|
|
3474
|
-
loadRetainedScreenshot,
|
|
3475
|
-
loadRetainedArtifact
|
|
3476
|
-
}
|
|
3477
|
-
) }) }) });
|
|
3478
|
-
}
|
|
3479
|
-
case "worker":
|
|
3480
|
-
return /* @__PURE__ */ jsx13(WorkerRow, { item, onOpenSession });
|
|
3481
|
-
case "knowledge":
|
|
3482
|
-
return /* @__PURE__ */ jsx13(
|
|
3483
|
-
KnowledgeReceiptRow,
|
|
3484
|
-
{
|
|
3485
|
-
outcome: item.outcome,
|
|
3486
|
-
entryId: item.entryId,
|
|
3487
|
-
fileId: item.fileId,
|
|
3488
|
-
title: item.filename,
|
|
3489
|
-
source: Boolean(item.fileId)
|
|
3490
|
-
}
|
|
3491
|
-
);
|
|
3492
|
-
case "memory":
|
|
3493
|
-
return /* @__PURE__ */ jsx13(MemoryRow, { item, onMemoryClick });
|
|
3494
|
-
case "agent-message":
|
|
3495
|
-
return /* @__PURE__ */ jsx13(ActivityNoteRow, { item });
|
|
3496
|
-
case "fleet-decision":
|
|
3497
|
-
return /* @__PURE__ */ jsx13(LazyPart, { fallback: null, children: /* @__PURE__ */ jsx13(
|
|
3498
|
-
LazyFleetDecisionRow,
|
|
3499
|
-
{
|
|
3500
|
-
item,
|
|
3501
|
-
d: ActivityDisclosure,
|
|
3502
|
-
b: BodyNote,
|
|
3503
|
-
j: rowJsx,
|
|
3504
|
-
s: rowJsxs
|
|
3505
|
-
}
|
|
3506
|
-
) });
|
|
3507
|
-
default:
|
|
3508
|
-
return assertNever(item);
|
|
3509
|
-
}
|
|
3510
|
-
}
|
|
3511
|
-
function ToolOutputExactRow({
|
|
3512
|
-
item,
|
|
3513
|
-
preview
|
|
3514
|
-
}) {
|
|
3515
|
-
const msg = useOpenGeniText();
|
|
3516
|
-
const pending = preview.state === "preview";
|
|
3517
|
-
const load = preview.load;
|
|
3518
|
-
useEffect7(() => {
|
|
3519
|
-
if (pending) load?.();
|
|
3520
|
-
}, [pending, load]);
|
|
3521
|
-
return /* @__PURE__ */ jsx13("div", { "data-og-tool-output-loading": "", "aria-busy": "true", children: /* @__PURE__ */ jsx13(
|
|
3522
|
-
ActivityDisclosure,
|
|
3523
|
-
{
|
|
3524
|
-
icon: /* @__PURE__ */ jsx13(ToolKindIcon, { kind: genericToolIconKind(item.name), className: "size-3.5" }),
|
|
3525
|
-
title: toolDisplayName(msg, item.name, item.display),
|
|
3526
|
-
preview: msg("timeline.toolRenderers.loadingOutput"),
|
|
3527
|
-
expandable: false
|
|
3528
|
-
}
|
|
3529
|
-
) });
|
|
3530
|
-
}
|
|
3531
|
-
var MEMORY_KIND_LABEL = (msg) => ({
|
|
3532
|
-
preference: msg("timeline.activityRail.preference"),
|
|
3533
|
-
semantic: msg("timeline.activityRail.fact"),
|
|
3534
|
-
procedural: msg("timeline.activityRail.procedure"),
|
|
3535
|
-
decision: msg("timeline.activityRail.decision"),
|
|
3536
|
-
episodic: msg("timeline.activityRail.history")
|
|
3537
|
-
});
|
|
3538
|
-
function MemoryRow({
|
|
3539
|
-
item,
|
|
3540
|
-
onMemoryClick
|
|
3541
|
-
}) {
|
|
3542
|
-
const msg = useOpenGeniText();
|
|
3543
|
-
const corrected = item.variant === "corrected";
|
|
3544
|
-
const kindLabel = MEMORY_KIND_LABEL(msg)[item.memoryKind];
|
|
3545
|
-
const superseded = corrected && Boolean(item.replacementPreview);
|
|
3546
|
-
const targetId = corrected ? item.replacementMemoryId ?? item.memoryId : item.memoryId;
|
|
3547
|
-
const deepLink = Boolean(onMemoryClick);
|
|
3548
|
-
return /* @__PURE__ */ jsxs8(
|
|
3549
|
-
ActivityDisclosure,
|
|
3550
|
-
{
|
|
3551
|
-
icon: /* @__PURE__ */ jsx13(BrainCircuitIcon4, { className: "size-3.5" }),
|
|
3552
|
-
iconTone: "muted",
|
|
3553
|
-
title: /* @__PURE__ */ jsxs8("span", { className: "inline-flex min-w-0 items-center gap-2", children: [
|
|
3554
|
-
/* @__PURE__ */ jsx13("span", { className: "shrink-0", children: corrected ? msg("timeline.activityRail.updatedMemory") : msg("timeline.activityRail.savedToMemory") }),
|
|
3555
|
-
kindLabel ? /* @__PURE__ */ jsx13("span", { className: "shrink-0 rounded-og-xs bg-og-surface-2 px-1.5 py-px text-og-xs font-normal leading-tight text-og-fg-subtle", children: kindLabel }) : null
|
|
3556
|
-
] }),
|
|
3557
|
-
preview: superseded ? item.replacementPreview : item.preview,
|
|
3558
|
-
children: [
|
|
3559
|
-
superseded ? (
|
|
3560
|
-
// The correction as a before → after: the old memory struck through and
|
|
3561
|
-
// dimmed, the new text in the ordinary body weight below it.
|
|
3562
|
-
/* @__PURE__ */ jsxs8("div", { className: "flex flex-col gap-1.5", children: [
|
|
3563
|
-
/* @__PURE__ */ jsx13("p", { className: "whitespace-pre-wrap text-og-sm leading-6 text-og-fg-subtle line-through", children: item.preview }),
|
|
3564
|
-
/* @__PURE__ */ jsx13("p", { className: "whitespace-pre-wrap text-og-base leading-6 text-og-fg-muted", children: item.replacementPreview })
|
|
3565
|
-
] })
|
|
3566
|
-
) : corrected && item.action === "updated" ? (
|
|
3567
|
-
// Edited in place, no replacement record: the memory is still live, so
|
|
3568
|
-
// show its current text — NOT the archived treatment.
|
|
3569
|
-
/* @__PURE__ */ jsxs8(Fragment5, { children: [
|
|
3570
|
-
/* @__PURE__ */ jsx13("p", { className: "whitespace-pre-wrap text-og-base leading-6 text-og-fg-muted", children: item.preview }),
|
|
3571
|
-
/* @__PURE__ */ jsx13(BodyNote, { tone: "muted", children: msg("timeline.activityRail.updatedInPlace") })
|
|
3572
|
-
] })
|
|
3573
|
-
) : corrected ? (
|
|
3574
|
-
// A correction with no replacement (and not an in-place update) archived the record.
|
|
3575
|
-
/* @__PURE__ */ jsx13(BodyNote, { tone: "muted", children: msg("timeline.activityRail.archived") })
|
|
3576
|
-
) : /* @__PURE__ */ jsx13("p", { className: "whitespace-pre-wrap text-og-base leading-6 text-og-fg-muted", children: item.preview }),
|
|
3577
|
-
item.deduped ? /* @__PURE__ */ jsx13(BodyNote, { tone: "muted", children: msg("timeline.activityRail.mergedIntoAnExistingMemory") }) : null,
|
|
3578
|
-
deepLink ? /* @__PURE__ */ jsxs8(
|
|
3579
|
-
"button",
|
|
3580
|
-
{
|
|
3581
|
-
type: "button",
|
|
3582
|
-
onClick: () => onMemoryClick?.(targetId),
|
|
3583
|
-
className: cn(
|
|
3584
|
-
"group/memlink -mx-1 inline-flex w-fit items-center gap-1 rounded-og-sm px-1 py-0.5 text-left text-og-sm text-og-fg-subtle",
|
|
3585
|
-
"outline-hidden transition-colors duration-150 hover:text-og-fg focus-visible:ring-2 focus-visible:ring-og-accent"
|
|
3586
|
-
),
|
|
3587
|
-
children: [
|
|
3588
|
-
msg("timeline.activityRail.viewInMemory"),
|
|
3589
|
-
/* @__PURE__ */ jsx13(ArrowRightIcon, { className: "size-3.5 transition-transform duration-150 group-hover/memlink:translate-x-0.5" })
|
|
3590
|
-
]
|
|
3591
|
-
}
|
|
3592
|
-
) : null
|
|
3593
|
-
]
|
|
3594
|
-
}
|
|
3595
|
-
);
|
|
3596
|
-
}
|
|
3597
|
-
function WorkerRow({
|
|
3598
|
-
item,
|
|
3599
|
-
onOpenSession
|
|
3600
|
-
}) {
|
|
3601
|
-
const msg = useOpenGeniText();
|
|
3602
|
-
const identity = useAgentIdentity();
|
|
3603
|
-
const running = item.status === "running";
|
|
3604
|
-
const failed = item.status === "failed";
|
|
3605
|
-
const cancelled = item.status === "cancelled";
|
|
3606
|
-
const sessionId = item.workerSessionId;
|
|
3607
|
-
const name = identity.titleFor(sessionId) ?? (item.action === "spawn" ? item.title : null);
|
|
3608
|
-
const title = workerRowTitleParts(msg, item, name);
|
|
3609
|
-
const prompt = item.prompt?.trim() ? item.prompt.trim() : null;
|
|
3610
|
-
const failure = failed ? item.failure : null;
|
|
3611
|
-
const hasBody = Boolean(prompt) || Boolean(failure);
|
|
3612
|
-
return /* @__PURE__ */ jsx13(
|
|
3613
|
-
AgentRow,
|
|
3614
|
-
{
|
|
3615
|
-
icon: item.action === "spawn" ? /* @__PURE__ */ jsx13(BotIcon2, {}) : /* @__PURE__ */ jsx13(SendIcon, {}),
|
|
3616
|
-
title,
|
|
3617
|
-
preview: failure ? failure.message : prompt ? truncate(prompt.replace(/\s+/g, " "), 240) : null,
|
|
3618
|
-
sessionId: cancelled ? null : sessionId,
|
|
3619
|
-
onOpenSession: onOpenSession ?? identity.onOpenSession,
|
|
3620
|
-
running,
|
|
3621
|
-
failed,
|
|
3622
|
-
cancelled,
|
|
3623
|
-
children: hasBody ? /* @__PURE__ */ jsxs8(Fragment5, { children: [
|
|
3624
|
-
prompt ? /* @__PURE__ */ jsx13(
|
|
3625
|
-
AgentRowSection,
|
|
3626
|
-
{
|
|
3627
|
-
label: item.action === "spawn" ? msg("timeline.activityRail.brief") : msg("timeline.activityRail.message"),
|
|
3628
|
-
children: prompt
|
|
3629
|
-
}
|
|
3630
|
-
) : null,
|
|
3631
|
-
failure ? /* @__PURE__ */ jsx13(AgentRowSection, { label: failure.code, muted: true, children: failure.message }) : null
|
|
3632
|
-
] }) : void 0
|
|
3633
|
-
}
|
|
3634
|
-
);
|
|
3635
|
-
}
|
|
3636
|
-
function ToolRowRenderError({ name }) {
|
|
3637
|
-
const t = useOpenGeniText();
|
|
3638
|
-
return /* @__PURE__ */ jsx13(
|
|
3639
|
-
"div",
|
|
3640
|
-
{
|
|
3641
|
-
"data-testid": "tool-row-render-error",
|
|
3642
|
-
role: "status",
|
|
3643
|
-
className: "px-1.5 py-1.5 text-og-menu text-og-fg-subtle",
|
|
3644
|
-
children: t("timeline.activityRail.nameCouldNotBeDisplayed", { name })
|
|
3645
|
-
}
|
|
3646
|
-
);
|
|
3647
|
-
}
|
|
3648
|
-
var ToolRowBoundary = class extends Component {
|
|
3649
|
-
state = { failed: false, notLoaded: false, resetKeys: this.props.resetKeys };
|
|
3650
|
-
static getDerivedStateFromError(error) {
|
|
3651
|
-
return { failed: true, notLoaded: isChunkLoadError(error) };
|
|
3652
|
-
}
|
|
3653
|
-
/** A new status or renderer for the row gets a fresh attempt. */
|
|
3654
|
-
static getDerivedStateFromProps(props, state) {
|
|
3655
|
-
const same = props.resetKeys.length === state.resetKeys.length && props.resetKeys.every((key, index) => Object.is(key, state.resetKeys[index]));
|
|
3656
|
-
return same ? null : { failed: false, notLoaded: false, resetKeys: props.resetKeys };
|
|
3657
|
-
}
|
|
3658
|
-
render() {
|
|
3659
|
-
if (!this.state.failed) return this.props.children;
|
|
3660
|
-
return this.state.notLoaded ? /* @__PURE__ */ jsx13(LoadFailureNotice, {}) : /* @__PURE__ */ jsx13(ToolRowRenderError, { name: this.props.name });
|
|
3661
|
-
}
|
|
3662
|
-
};
|
|
3663
|
-
|
|
3664
|
-
// src/timeline/turn-summary.tsx
|
|
3665
|
-
import { ChevronRightIcon as ChevronRightIcon3, CircleSlashIcon as CircleSlashIcon2, ShrinkIcon, TriangleAlertIcon } from "lucide-react";
|
|
3666
|
-
import {
|
|
3667
|
-
Component as Component2,
|
|
3668
|
-
createContext as createContext10,
|
|
3669
|
-
useContext as useContext12,
|
|
3670
|
-
useEffect as useEffect8,
|
|
3671
|
-
useLayoutEffect as useLayoutEffect2,
|
|
3672
|
-
useMemo as useMemo4,
|
|
3673
|
-
useRef as useRef3,
|
|
3674
|
-
useState as useState12
|
|
3675
|
-
} from "react";
|
|
3676
|
-
import { Collapsible } from "radix-ui";
|
|
3677
|
-
|
|
3678
|
-
// src/timeline/fold-memory.ts
|
|
3679
|
-
import { createContext as createContext9, useContext as useContext11 } from "react";
|
|
3680
|
-
var FoldMemoryContext = createContext9(null);
|
|
3681
|
-
var FoldMemoryProvider = FoldMemoryContext.Provider;
|
|
3682
|
-
function useFoldMemory() {
|
|
3683
|
-
return useContext11(FoldMemoryContext);
|
|
3684
|
-
}
|
|
3685
|
-
function inheritFoldRestingState(memory, targetKey, sourceKeys) {
|
|
3686
|
-
if (memory.has(targetKey) || sourceKeys.length !== 1) {
|
|
3687
|
-
return;
|
|
3688
|
-
}
|
|
3689
|
-
const state = memory.get(sourceKeys[0]);
|
|
3690
|
-
if (state !== void 0) {
|
|
3691
|
-
memory.set(targetKey, state);
|
|
3692
|
-
}
|
|
3693
|
-
}
|
|
3694
|
-
|
|
3695
|
-
// src/timeline/turn-summary.tsx
|
|
3696
|
-
import { Fragment as Fragment6, jsx as jsx14, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
3697
|
-
var TurnSettleChromeContext = createContext10(false);
|
|
3698
|
-
function useTurnSettleOpen() {
|
|
3699
|
-
return useContext12(TurnSettleChromeContext);
|
|
3700
|
-
}
|
|
3701
|
-
var SETTLE_FOLD_BEAT_MS = 1100 * MOTION_INSPECT_SCALE;
|
|
3702
|
-
var SETTLE_COLLAPSE_MS = 820 * MOTION_INSPECT_SCALE;
|
|
3703
|
-
var DISCLOSE_MS = 120 * MOTION_INSPECT_SCALE;
|
|
3704
|
-
function TurnSummary({
|
|
3705
|
-
items,
|
|
3706
|
-
outcome,
|
|
3707
|
-
failureText,
|
|
3708
|
-
failureDetail,
|
|
3709
|
-
durationMs,
|
|
3710
|
-
defaultOpen,
|
|
3711
|
-
liveHeader,
|
|
3712
|
-
bare,
|
|
3713
|
-
facets: facetConfiguration,
|
|
3714
|
-
settleFold,
|
|
3715
|
-
foldKey,
|
|
3716
|
-
copyText,
|
|
3717
|
-
contextCompactionCount,
|
|
3718
|
-
status,
|
|
3719
|
-
expandable = true,
|
|
3720
|
-
unloadedSteps,
|
|
3721
|
-
onOpenStateChange,
|
|
3722
|
-
children
|
|
3723
|
-
}) {
|
|
3724
|
-
const t = useOpenGeniText();
|
|
3725
|
-
const forcedDefaultOpen = useForcedDefaultOpen();
|
|
3726
|
-
const searchReveal = useTimelineSearchReveal();
|
|
3727
|
-
const foldMemory = useFoldMemory();
|
|
3728
|
-
const remembered = foldKey !== void 0 ? foldMemory?.get(foldKey) : void 0;
|
|
3729
|
-
const restingOpen = remembered === "closed" ? false : remembered === "open" ? true : defaultOpen ?? forcedDefaultOpen ?? false;
|
|
3730
|
-
const initialSettle = Boolean(settleFold) && !restingOpen && remembered === void 0;
|
|
3731
|
-
const [settling, setSettling] = useState12(initialSettle);
|
|
3732
|
-
const [openState, setOpen] = useState12(initialSettle ? true : restingOpen);
|
|
3733
|
-
const open = expandable && openState;
|
|
3734
|
-
const reportOpen = useRef3(onOpenStateChange);
|
|
3735
|
-
reportOpen.current = onOpenStateChange;
|
|
3736
|
-
useLayoutEffect2(() => {
|
|
3737
|
-
reportOpen.current?.(open);
|
|
3738
|
-
}, [open]);
|
|
3739
|
-
const readerOwnsOpen = useRef3(remembered !== void 0);
|
|
3740
|
-
useEffect8(() => {
|
|
3741
|
-
if (status && defaultOpen && remembered === void 0 && !readerOwnsOpen.current) setOpen(true);
|
|
3742
|
-
}, [status, defaultOpen, remembered]);
|
|
3743
|
-
const [settlePhase, setSettlePhase] = useState12(initialSettle);
|
|
3744
|
-
const [nestSuppressLatch, setNestSuppressLatch] = useState12(initialSettle);
|
|
3745
|
-
const [expandReady, setExpandReady] = useState12(!initialSettle);
|
|
3746
|
-
const settleTimerRef = useRef3(null);
|
|
3747
|
-
const settleCloseDoneRef = useRef3(null);
|
|
3748
|
-
const nestLatchClearRef = useRef3(null);
|
|
3749
|
-
const settleFoldSeenRef = useRef3(Boolean(settleFold));
|
|
3750
|
-
const settleArmedRef = useRef3(false);
|
|
3751
|
-
const clearNestLatchTimer = () => {
|
|
3752
|
-
if (nestLatchClearRef.current !== null) {
|
|
3753
|
-
clearTimeout(nestLatchClearRef.current);
|
|
3754
|
-
nestLatchClearRef.current = null;
|
|
3755
|
-
}
|
|
3756
|
-
};
|
|
3757
|
-
const clearSettleTimers = () => {
|
|
3758
|
-
if (settleTimerRef.current !== null) {
|
|
3759
|
-
clearTimeout(settleTimerRef.current);
|
|
3760
|
-
settleTimerRef.current = null;
|
|
3761
|
-
}
|
|
3762
|
-
if (settleCloseDoneRef.current !== null) {
|
|
3763
|
-
clearTimeout(settleCloseDoneRef.current);
|
|
3764
|
-
settleCloseDoneRef.current = null;
|
|
3765
|
-
}
|
|
3766
|
-
clearNestLatchTimer();
|
|
3767
|
-
};
|
|
3768
|
-
const rememberResting = (state) => {
|
|
3769
|
-
if (foldKey !== void 0 && foldMemory) {
|
|
3770
|
-
foldMemory.set(foldKey, state);
|
|
3771
|
-
}
|
|
3772
|
-
};
|
|
3773
|
-
const armSettleCollapse = () => {
|
|
3774
|
-
if (settleArmedRef.current) {
|
|
3775
|
-
return;
|
|
3776
|
-
}
|
|
3777
|
-
settleArmedRef.current = true;
|
|
3778
|
-
setSettling(true);
|
|
3779
|
-
setSettlePhase(true);
|
|
3780
|
-
setNestSuppressLatch(true);
|
|
3781
|
-
setExpandReady(false);
|
|
3782
|
-
setOpen(true);
|
|
3783
|
-
clearSettleTimers();
|
|
3784
|
-
settleTimerRef.current = setTimeout(() => {
|
|
3785
|
-
settleTimerRef.current = null;
|
|
3786
|
-
setExpandReady(true);
|
|
3787
|
-
setOpen(false);
|
|
3788
|
-
rememberResting("closed");
|
|
3789
|
-
settleCloseDoneRef.current = setTimeout(() => {
|
|
3790
|
-
settleCloseDoneRef.current = null;
|
|
3791
|
-
settleArmedRef.current = false;
|
|
3792
|
-
setSettlePhase(false);
|
|
3793
|
-
setSettling(false);
|
|
3794
|
-
setNestSuppressLatch(false);
|
|
3795
|
-
}, SETTLE_COLLAPSE_MS);
|
|
3796
|
-
}, SETTLE_FOLD_BEAT_MS);
|
|
3797
|
-
};
|
|
3798
|
-
const mountSettleRef = useRef3(initialSettle);
|
|
3799
|
-
useEffect8(() => {
|
|
3800
|
-
if (mountSettleRef.current) {
|
|
3801
|
-
armSettleCollapse();
|
|
3802
|
-
}
|
|
3803
|
-
return () => {
|
|
3804
|
-
clearSettleTimers();
|
|
3805
|
-
settleArmedRef.current = false;
|
|
3806
|
-
};
|
|
3807
|
-
}, []);
|
|
3808
|
-
useEffect8(() => {
|
|
3809
|
-
const was = settleFoldSeenRef.current;
|
|
3810
|
-
settleFoldSeenRef.current = Boolean(settleFold);
|
|
3811
|
-
if (!was && settleFold) {
|
|
3812
|
-
if (foldKey !== void 0 && foldMemory?.get(foldKey) !== void 0) {
|
|
3813
|
-
return;
|
|
3814
|
-
}
|
|
3815
|
-
armSettleCollapse();
|
|
3816
|
-
}
|
|
3817
|
-
}, [settleFold]);
|
|
3818
|
-
useEffect8(() => {
|
|
3819
|
-
if (!searchReveal) return;
|
|
3820
|
-
clearSettleTimers();
|
|
3821
|
-
settleArmedRef.current = false;
|
|
3822
|
-
setSettling(false);
|
|
3823
|
-
setSettlePhase(false);
|
|
3824
|
-
setNestSuppressLatch(false);
|
|
3825
|
-
setOpen(true);
|
|
3826
|
-
rememberResting("open");
|
|
3827
|
-
}, [searchReveal]);
|
|
3828
|
-
const onOpenChange = (next) => {
|
|
3829
|
-
readerOwnsOpen.current = true;
|
|
3830
|
-
const wasNestFlat = settling || settlePhase || nestSuppressLatch;
|
|
3831
|
-
clearSettleTimers();
|
|
3832
|
-
settleArmedRef.current = false;
|
|
3833
|
-
rememberResting(next ? "open" : "closed");
|
|
3834
|
-
setExpandReady(true);
|
|
3835
|
-
setSettlePhase(false);
|
|
3836
|
-
setSettling(false);
|
|
3837
|
-
if (next) {
|
|
3838
|
-
setNestSuppressLatch(false);
|
|
3839
|
-
setOpen(true);
|
|
3840
|
-
return;
|
|
3841
|
-
}
|
|
3842
|
-
setOpen(false);
|
|
3843
|
-
if (wasNestFlat) {
|
|
3844
|
-
setNestSuppressLatch(true);
|
|
3845
|
-
nestLatchClearRef.current = setTimeout(() => {
|
|
3846
|
-
nestLatchClearRef.current = null;
|
|
3847
|
-
setNestSuppressLatch(false);
|
|
3848
|
-
}, DISCLOSE_MS);
|
|
3849
|
-
} else {
|
|
3850
|
-
setNestSuppressLatch(false);
|
|
3851
|
-
}
|
|
3852
|
-
};
|
|
3853
|
-
const enter = useEntranceAnimation();
|
|
3854
|
-
const [allowEnterAnimation] = useState12(
|
|
3855
|
-
() => Boolean(enter && !bare && !initialSettle && !restingOpen)
|
|
3856
|
-
);
|
|
3857
|
-
const context = useMemo4(
|
|
3858
|
-
() => createTurnSummaryContext(
|
|
3859
|
-
t,
|
|
3860
|
-
items,
|
|
3861
|
-
outcome,
|
|
3862
|
-
failureText,
|
|
3863
|
-
settling || settlePhase ? void 0 : durationMs,
|
|
3864
|
-
contextCompactionCount ?? 0
|
|
3865
|
-
),
|
|
3866
|
-
[items, outcome, failureText, durationMs, settling, settlePhase, contextCompactionCount, t]
|
|
3867
|
-
);
|
|
3868
|
-
const facetDefinitions = useMemo4(
|
|
3869
|
-
() => resolveTurnSummaryFacets(facetConfiguration),
|
|
3870
|
-
[facetConfiguration]
|
|
3871
|
-
);
|
|
3872
|
-
const statusKind = status?.kind;
|
|
3873
|
-
const facets = useMemo4(
|
|
3874
|
-
() => selectTurnSummaryFacets(facetDefinitions, context, statusKind),
|
|
3875
|
-
[context, facetDefinitions, statusKind]
|
|
3876
|
-
);
|
|
3877
|
-
const failure = outcome === "failed" ? failureText?.trim() || null : null;
|
|
3878
|
-
const liveShell = outcome === void 0 && open && !settlePhase && !bare;
|
|
3879
|
-
const settleChrome = settling || settlePhase || nestSuppressLatch;
|
|
3880
|
-
const statusLine = status ? turnSummaryStatusLine(t, status) : null;
|
|
3881
|
-
const copyable = Boolean(
|
|
3882
|
-
copyText && copyText.trim().length > 0 && !bare && !liveShell && !open && !settlePhase
|
|
3883
|
-
);
|
|
3884
|
-
const headerClassName = cn(
|
|
3885
|
-
// The section, not the viewport, bounds this sticky row. Content
|
|
3886
|
-
// is a sibling: its disclosure overflow never traps the header.
|
|
3887
|
-
// Nested rail folds must never stack additional sticky headers.
|
|
3888
|
-
!bare && open && "sticky top-[var(--og-work-header-top,0px)] z-10 bg-og-bg",
|
|
3889
|
-
settling && expandable && "animate-og-settle-chip",
|
|
3890
|
-
// Top-level turn fold and (when used) nested cluster folds render as
|
|
3891
|
-
// FLAT rail rows — chevron + glyph + facets on the page background, no
|
|
3892
|
-
// border, no fill. Only a hover tint hints the row is expandable, so a
|
|
3893
|
-
// collapsed turn never reads as a boxed card. The top-level row is a
|
|
3894
|
-
// touch larger (base text, size-5 glyph, wider gap) so it still reads
|
|
3895
|
-
// as a turn landmark above any nested cluster rows it groups.
|
|
3896
|
-
"group flex w-full items-center rounded-og-sm text-left transition-colors",
|
|
3897
|
-
// A folded turn is a touch target on coarse pointers: grow the row so it
|
|
3898
|
-
// clears the 44px minimum without disturbing the calm desktop rhythm.
|
|
3899
|
-
expandable && "pointer-coarse:min-h-11 pointer-coarse:py-2.5",
|
|
3900
|
-
bare ? "gap-2 px-1.5 py-1.5 text-og-sm text-og-fg-muted" : "-mx-2 gap-2.5 px-2 py-1.5 text-og-base text-og-fg-muted",
|
|
3901
|
-
// A failed fold keeps its red accent (glyph + inline reason below) and a
|
|
3902
|
-
// faint red hover wash so attention still lands there; every other
|
|
3903
|
-
// outcome gets the neutral surface hover. A row with nothing to reveal
|
|
3904
|
-
// is not a control and gets no hover.
|
|
3905
|
-
!expandable ? void 0 : outcome === "failed" ? "hover:bg-og-status-failed/[0.06] hover:text-og-fg" : "hover:bg-og-surface-1 hover:text-og-fg",
|
|
3906
|
-
liveShell && "text-og-fg-subtle",
|
|
3907
|
-
// Phones hide the hint, so keep the copy control clear of the separator.
|
|
3908
|
-
status && copyable && "max-sm:pr-10"
|
|
3909
|
-
);
|
|
3910
|
-
const headerContent = /* @__PURE__ */ jsxs9(Fragment6, { children: [
|
|
3911
|
-
expandable ? /* @__PURE__ */ jsx14(
|
|
3912
|
-
ChevronRightIcon3,
|
|
3913
|
-
{
|
|
3914
|
-
className: cn(
|
|
3915
|
-
"size-3.5 shrink-0 text-og-fg-subtle transition-transform ease-og-in-out group-data-[state=open]:rotate-90",
|
|
3916
|
-
settlePhase ? "duration-[var(--_og-duration-disclose-settle)]" : "duration-[var(--_og-duration-disclose)]"
|
|
3917
|
-
)
|
|
3918
|
-
}
|
|
3919
|
-
) : /* @__PURE__ */ jsx14("span", { "aria-hidden": true, className: "size-3.5 shrink-0" }),
|
|
3920
|
-
status || outcome === "complete" || !outcome && (liveHeader || context.settled) ? null : /* @__PURE__ */ jsx14(
|
|
3921
|
-
"span",
|
|
3922
|
-
{
|
|
3923
|
-
className: cn(
|
|
3924
|
-
"inline-flex shrink-0 items-center justify-center",
|
|
3925
|
-
bare ? "size-3.5" : "size-5",
|
|
3926
|
-
outcome === "failed" ? "text-og-status-failed" : "text-og-fg-subtle"
|
|
3927
|
-
),
|
|
3928
|
-
children: outcome === "failed" ? /* @__PURE__ */ jsx14(TriangleAlertIcon, { className: "size-3" }) : outcome === "cancelled" ? /* @__PURE__ */ jsx14(CircleSlashIcon2, { className: "size-3" }) : /* @__PURE__ */ jsx14("span", { className: "size-1.5 animate-og-pulse rounded-full bg-og-fg-subtle" })
|
|
3929
|
-
}
|
|
3930
|
-
),
|
|
3931
|
-
/* @__PURE__ */ jsxs9(
|
|
3932
|
-
"span",
|
|
3933
|
-
{
|
|
3934
|
-
className: cn(
|
|
3935
|
-
"min-w-0 truncate",
|
|
3936
|
-
status?.kind === "worked" ? "shrink" : "flex-1",
|
|
3937
|
-
bare ? "text-og-sm" : "text-og-fg-muted"
|
|
3938
|
-
),
|
|
3939
|
-
children: [
|
|
3940
|
-
statusLine,
|
|
3941
|
-
liveHeader && !open && !status ? liveHeader : !statusLine && facets.length === 0 && !failure && outcome !== "cancelled" ? turnSummaryFallbackLabel(t, context.items, unloadedSteps) : facets.map(({ facet, result }, index) => /* @__PURE__ */ jsx14(FacetRenderBoundary, { children: /* @__PURE__ */ jsxs9(Fragment6, { children: [
|
|
3942
|
-
index > 0 || statusLine ? " \xB7 " : null,
|
|
3943
|
-
/* @__PURE__ */ jsxs9("span", { "aria-label": result.ariaLabel, title: result.title, children: [
|
|
3944
|
-
result.icon ? /* @__PURE__ */ jsx14("span", { "aria-hidden": true, className: "mr-1 inline-flex align-[-0.125em]", children: result.icon }) : null,
|
|
3945
|
-
result.content
|
|
3946
|
-
] })
|
|
3947
|
-
] }) }, facet.id)),
|
|
3948
|
-
failure ? /* @__PURE__ */ jsxs9("span", { className: "text-og-status-failed", title: failureDetail, children: [
|
|
3949
|
-
" ",
|
|
3950
|
-
"\xB7 ",
|
|
3951
|
-
failure
|
|
3952
|
-
] }) : null,
|
|
3953
|
-
outcome === "cancelled" ? /* @__PURE__ */ jsxs9("span", { className: "text-og-fg-subtle", children: [
|
|
3954
|
-
" ",
|
|
3955
|
-
t("timeline.turnSummary.interrupted")
|
|
3956
|
-
] }) : null
|
|
3957
|
-
]
|
|
3958
|
-
}
|
|
3959
|
-
),
|
|
3960
|
-
status?.kind === "worked" ? /* @__PURE__ */ jsx14("span", { "aria-hidden": true, className: "ml-1 h-px min-w-0 flex-1 bg-og-border" }) : null,
|
|
3961
|
-
status && status.kind !== "worked" && (contextCompactionCount ?? 0) > 0 ? /* @__PURE__ */ jsx14(
|
|
3962
|
-
ShrinkIcon,
|
|
3963
|
-
{
|
|
3964
|
-
className: "size-3.5 shrink-0",
|
|
3965
|
-
"aria-label": t("timeline.turnSummary.contextCompactedExpandForDetails")
|
|
3966
|
-
}
|
|
3967
|
-
) : null
|
|
3968
|
-
] });
|
|
3969
|
-
return /* @__PURE__ */ jsx14(TurnSettleChromeContext.Provider, { value: settleChrome, children: /* @__PURE__ */ jsxs9("div", { className: cn(copyable && "group/copy relative"), children: [
|
|
3970
|
-
/* @__PURE__ */ jsxs9(
|
|
3971
|
-
Collapsible.Root,
|
|
3972
|
-
{
|
|
3973
|
-
"data-og-work-section": bare ? void 0 : "",
|
|
3974
|
-
open,
|
|
3975
|
-
onOpenChange,
|
|
3976
|
-
className: allowEnterAnimation && !liveShell ? "animate-og-enter" : void 0,
|
|
3977
|
-
children: [
|
|
3978
|
-
expandable ? /* @__PURE__ */ jsx14(
|
|
3979
|
-
Collapsible.Trigger,
|
|
3980
|
-
{
|
|
3981
|
-
"data-og-work-header": bare ? "nested" : "outer",
|
|
3982
|
-
className: headerClassName,
|
|
3983
|
-
children: headerContent
|
|
3984
|
-
}
|
|
3985
|
-
) : (
|
|
3986
|
-
// Nothing to reveal: a plain status row, not a disclosure control.
|
|
3987
|
-
/* @__PURE__ */ jsx14("div", { "data-og-work-header": bare ? "nested" : "outer", className: headerClassName, children: headerContent })
|
|
3988
|
-
),
|
|
3989
|
-
status?.guidance ? (
|
|
3990
|
-
// Guidance the reader needs stays visible in both fold states.
|
|
3991
|
-
/* @__PURE__ */ jsx14("div", { "data-og-exchange-guidance": "", className: "min-w-0 pb-1 pl-6", children: status.guidance })
|
|
3992
|
-
) : null,
|
|
3993
|
-
status && !open && status.preview ? (
|
|
3994
|
-
// Readable progress under the status line; the line above stays
|
|
3995
|
-
// the one disclosure control, so a click here is a mouse shortcut.
|
|
3996
|
-
/* @__PURE__ */ jsx14(
|
|
3997
|
-
"div",
|
|
3998
|
-
{
|
|
3999
|
-
"data-og-exchange-preview": "",
|
|
4000
|
-
className: cn(
|
|
4001
|
-
"flex min-w-0 flex-col gap-0.5 pb-1 pl-6",
|
|
4002
|
-
expandable && "cursor-pointer"
|
|
4003
|
-
),
|
|
4004
|
-
onClick: expandable ? () => onOpenChange(true) : void 0,
|
|
4005
|
-
children: status.preview ? /* @__PURE__ */ jsx14("div", { className: "min-w-0", children: status.preview }) : null
|
|
4006
|
-
}
|
|
4007
|
-
)
|
|
4008
|
-
) : null,
|
|
4009
|
-
expandable ? /* @__PURE__ */ jsx14(
|
|
4010
|
-
Collapsible.Content,
|
|
4011
|
-
{
|
|
4012
|
-
...nestSuppressLatch ? { forceMount: true } : {},
|
|
4013
|
-
"data-og-fold-content": "",
|
|
4014
|
-
className: cn(
|
|
4015
|
-
"overflow-hidden",
|
|
4016
|
-
expandReady && "data-[state=open]:animate-og-expand",
|
|
4017
|
-
// Auto-close: slow settle. Manual close (settlePhase cleared): fast.
|
|
4018
|
-
settlePhase ? "data-[state=closed]:animate-og-settle-collapse" : "data-[state=closed]:animate-og-collapse"
|
|
4019
|
-
),
|
|
4020
|
-
children: /* @__PURE__ */ jsx14("div", { className: bare ? "pt-1 pl-5" : "pt-2", children })
|
|
4021
|
-
}
|
|
4022
|
-
) : null
|
|
4023
|
-
]
|
|
4024
|
-
}
|
|
4025
|
-
),
|
|
4026
|
-
copyable ? /* @__PURE__ */ jsx14("div", { className: "pointer-events-none absolute top-1.5 right-0 z-10", children: /* @__PURE__ */ jsx14("div", { className: "pointer-events-auto", children: /* @__PURE__ */ jsx14(
|
|
4027
|
-
CopyButton,
|
|
4028
|
-
{
|
|
4029
|
-
text: copyText,
|
|
4030
|
-
label: t("timeline.turnSummary.copyTurn"),
|
|
4031
|
-
reveal: "group-hover"
|
|
4032
|
-
}
|
|
4033
|
-
) }) }) : null
|
|
4034
|
-
] }) });
|
|
4035
|
-
}
|
|
4036
|
-
function turnSummaryStatusLine(t, status) {
|
|
4037
|
-
if (status.kind === "worked") {
|
|
4038
|
-
return status.durationMs !== void 0 && Number.isFinite(status.durationMs) && status.durationMs >= 1e3 ? /* @__PURE__ */ jsxs9("span", { "data-og-exchange-status": "worked", children: [
|
|
4039
|
-
status.label ?? t("timeline.turnSummary.workedFor"),
|
|
4040
|
-
" ",
|
|
4041
|
-
formatElapsed(t, status.durationMs)
|
|
4042
|
-
] }) : null;
|
|
4043
|
-
}
|
|
4044
|
-
const label = status.label ?? (status.kind === "working" ? t("timeline.turnSummary.working") : t("timeline.turnSummary.waiting"));
|
|
4045
|
-
return /* @__PURE__ */ jsxs9("span", { "data-og-exchange-status": status.kind, children: [
|
|
4046
|
-
status.kind === "working" ? /* @__PURE__ */ jsx14(ShimmerText, { children: label }) : /* @__PURE__ */ jsx14("span", { children: label }),
|
|
4047
|
-
status.since ? /* @__PURE__ */ jsx14(LiveElapsed, { since: status.since }) : null
|
|
4048
|
-
] });
|
|
4049
|
-
}
|
|
4050
|
-
function LiveElapsed({ since }) {
|
|
4051
|
-
const t = useOpenGeniText();
|
|
4052
|
-
const startedAt = Date.parse(since);
|
|
4053
|
-
const [now, setNow] = useState12(() => Date.now());
|
|
4054
|
-
useEffect8(() => {
|
|
4055
|
-
const timer = setInterval(() => setNow(Date.now()), 1e3);
|
|
4056
|
-
return () => clearInterval(timer);
|
|
4057
|
-
}, []);
|
|
4058
|
-
if (!Number.isFinite(startedAt)) return null;
|
|
4059
|
-
return /* @__PURE__ */ jsx14("span", { className: "tabular-nums", children: ` \xB7 ${formatElapsed(t, Math.max(0, now - startedAt))}` });
|
|
4060
|
-
}
|
|
4061
|
-
var FacetRenderBoundary = class extends Component2 {
|
|
4062
|
-
state = { failed: false, notLoaded: false };
|
|
4063
|
-
static getDerivedStateFromError(error) {
|
|
4064
|
-
return { failed: true, notLoaded: isChunkLoadError(error) };
|
|
4065
|
-
}
|
|
4066
|
-
render() {
|
|
4067
|
-
if (!this.state.failed) return this.props.children;
|
|
4068
|
-
return this.state.notLoaded ? /* @__PURE__ */ jsx14(LoadFailureNotice, {}) : null;
|
|
4069
|
-
}
|
|
4070
|
-
};
|
|
4071
|
-
|
|
4072
|
-
// src/timeline/learning-refusal-row.tsx
|
|
4073
|
-
import { BrainCircuitIcon as BrainCircuitIcon5 } from "lucide-react";
|
|
4074
|
-
import { createContext as createContext11, useContext as useContext13 } from "react";
|
|
4075
|
-
import { jsx as jsx15, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
4076
|
-
var LearningRefusalActionsContext = createContext11({});
|
|
4077
|
-
function LearningRefusalActionsProvider({
|
|
4078
|
-
children,
|
|
4079
|
-
...actions
|
|
4080
|
-
}) {
|
|
4081
|
-
return /* @__PURE__ */ jsx15(LearningRefusalActionsContext.Provider, { value: actions, children });
|
|
4082
|
-
}
|
|
4083
|
-
function LearningRefusalRow({ refusal }) {
|
|
4084
|
-
const t = useOpenGeniText();
|
|
4085
|
-
const enter = useEntranceAnimation();
|
|
4086
|
-
const { onOpen } = useContext13(LearningRefusalActionsContext);
|
|
4087
|
-
const place = learningRefusalPlace(refusal);
|
|
4088
|
-
return /* @__PURE__ */ jsxs10(
|
|
4089
|
-
"div",
|
|
4090
|
-
{
|
|
4091
|
-
className: cn(
|
|
4092
|
-
enter && "animate-og-enter",
|
|
4093
|
-
"flex items-start gap-2.5 rounded-og-md border border-og-status-waiting/35 bg-og-status-waiting/8 px-3.5 py-2.5 text-og-menu text-og-fg"
|
|
4094
|
-
),
|
|
4095
|
-
role: "status",
|
|
4096
|
-
"data-og-learning-refusal": refusal.reason,
|
|
4097
|
-
children: [
|
|
4098
|
-
/* @__PURE__ */ jsx15(BrainCircuitIcon5, { "aria-hidden": true, className: "mt-0.5 size-4 shrink-0 text-og-status-waiting" }),
|
|
4099
|
-
/* @__PURE__ */ jsxs10("div", { className: "min-w-0 flex-1", children: [
|
|
4100
|
-
/* @__PURE__ */ jsx15("p", { className: "font-medium", children: learningRefusalTitle(t, refusal) }),
|
|
4101
|
-
/* @__PURE__ */ jsx15("p", { className: "mt-0.5 text-og-fg-muted", children: learningRefusalBody(t, refusal) }),
|
|
4102
|
-
place && onOpen ? /* @__PURE__ */ jsx15(
|
|
4103
|
-
"button",
|
|
4104
|
-
{
|
|
4105
|
-
type: "button",
|
|
4106
|
-
className: "mt-1.5 -ml-1 rounded-og-sm px-1 py-0.5 font-medium text-og-fg underline-offset-2 hover:underline focus-visible:outline-2 focus-visible:outline-og-accent",
|
|
4107
|
-
onClick: () => onOpen(place),
|
|
4108
|
-
children: learningRefusalPlaceLabel(t, place)
|
|
4109
|
-
}
|
|
4110
|
-
) : null
|
|
4111
|
-
] })
|
|
4112
|
-
]
|
|
4113
|
-
}
|
|
4114
|
-
);
|
|
4115
|
-
}
|
|
4116
|
-
|
|
4117
|
-
export {
|
|
4118
|
-
isSessionId,
|
|
4119
|
-
useAgentIdentity,
|
|
4120
|
-
AgentIdentityProvider,
|
|
4121
|
-
UNRECOVERABLE_TEXT,
|
|
4122
|
-
ToolReviewFrame,
|
|
4123
|
-
DeclineButton,
|
|
4124
|
-
ToolActionReviewCard,
|
|
4125
|
-
ToolActionReviewDetails,
|
|
4126
|
-
createWorkspaceRetainedArtifactLoader,
|
|
4127
|
-
createSessionRetainedScreenshotLoader,
|
|
4128
|
-
createWorkspaceRetainedVideoLoader,
|
|
4129
|
-
ToolReviewHistoryProvider,
|
|
4130
|
-
KnowledgeActivityProvider,
|
|
4131
|
-
TimelineComputeLabelProvider,
|
|
4132
|
-
ProviderLogoProvider,
|
|
4133
|
-
ToolKindIcon,
|
|
4134
|
-
gitFileDiffToPatch,
|
|
4135
|
-
PierreDiff,
|
|
4136
|
-
defaultToolRegistry,
|
|
4137
|
-
createDefaultToolRegistry,
|
|
4138
|
-
AgentRow,
|
|
4139
|
-
AgentRowText,
|
|
4140
|
-
AgentRowSection,
|
|
4141
|
-
GenieLoadingOptionsContext,
|
|
4142
|
-
EMBEDDED_GENIE_LOADING,
|
|
4143
|
-
setStartupDetails,
|
|
4144
|
-
useStartupDetails,
|
|
4145
|
-
SeenActivityIdsProvider,
|
|
4146
|
-
ActivityRail,
|
|
4147
|
-
ActivityNoteTextContext,
|
|
4148
|
-
renderActivity,
|
|
4149
|
-
FoldMemoryProvider,
|
|
4150
|
-
useFoldMemory,
|
|
4151
|
-
inheritFoldRestingState,
|
|
4152
|
-
useTurnSettleOpen,
|
|
4153
|
-
TurnSummary,
|
|
4154
|
-
LearningRefusalActionsProvider,
|
|
4155
|
-
LearningRefusalRow
|
|
4156
|
-
};
|
|
4157
|
-
//# sourceMappingURL=chunk-LRJIYTZW.js.map
|