@opengeni/react 1.0.1 → 1.0.2-canary.37191796234001
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/README.md +651 -21
- package/dist/accounts.d.ts +64 -0
- package/dist/accounts.js +822 -0
- package/dist/accounts.js.map +1 -0
- package/dist/approvals.d.ts +2 -1
- package/dist/artifacts-document.js +3 -2
- package/dist/artifacts-presentation.js +3 -2
- package/dist/artifacts-spreadsheet.js +2 -2
- package/dist/artifacts.d.ts +4 -1
- package/dist/artifacts.js +518 -42
- package/dist/artifacts.js.map +1 -1
- package/dist/browser-viewer-GTR5XQ7X.js +16 -0
- package/dist/capability-catalog-row.d.ts +20 -0
- package/dist/capability-logo-fallback.d.ts +3 -0
- package/dist/chat-interactive-block-UGBTNB3L.js +11 -0
- package/dist/chat-interactive-block-UGBTNB3L.js.map +1 -0
- package/dist/{chunk-5UQPNLIO.js → chunk-23J2ZNXT.js} +4117 -3896
- package/dist/chunk-23J2ZNXT.js.map +1 -0
- package/dist/chunk-447JLCBU.js +209 -0
- package/dist/chunk-447JLCBU.js.map +1 -0
- package/dist/chunk-4RVYOY4O.js +379 -0
- package/dist/chunk-4RVYOY4O.js.map +1 -0
- package/dist/chunk-5CVXZA3Y.js +292 -0
- package/dist/chunk-5CVXZA3Y.js.map +1 -0
- package/dist/chunk-5J4FOW6Q.js +108 -0
- package/dist/chunk-5J4FOW6Q.js.map +1 -0
- package/dist/chunk-A2PI6UMY.js +41 -0
- package/dist/chunk-A2PI6UMY.js.map +1 -0
- package/dist/{chunk-7WCLAEFV.js → chunk-A4UJB2MM.js} +37 -27
- package/dist/chunk-A4UJB2MM.js.map +1 -0
- package/dist/chunk-B3V6TG77.js +41 -0
- package/dist/chunk-B3V6TG77.js.map +1 -0
- package/dist/chunk-BRM6FVZA.js +302 -0
- package/dist/chunk-BRM6FVZA.js.map +1 -0
- package/dist/chunk-C5X5AJXK.js +182 -0
- package/dist/chunk-C5X5AJXK.js.map +1 -0
- package/dist/chunk-CR7U7HAR.js +453 -0
- package/dist/chunk-CR7U7HAR.js.map +1 -0
- package/dist/{chunk-R3AZOAB5.js → chunk-DYWBUX5Q.js} +29 -123
- package/dist/chunk-DYWBUX5Q.js.map +1 -0
- package/dist/chunk-E3G7SAYZ.js +3124 -0
- package/dist/chunk-E3G7SAYZ.js.map +1 -0
- package/dist/chunk-ELCE5SXV.js +359 -0
- package/dist/chunk-ELCE5SXV.js.map +1 -0
- package/dist/chunk-ERGYJIBB.js +21 -0
- package/dist/chunk-ERGYJIBB.js.map +1 -0
- package/dist/chunk-FFA2OVOV.js +319 -0
- package/dist/chunk-FFA2OVOV.js.map +1 -0
- package/dist/chunk-FZCP527Y.js +116 -0
- package/dist/chunk-FZCP527Y.js.map +1 -0
- package/dist/chunk-GIMRELBW.js +14 -0
- package/dist/chunk-GIMRELBW.js.map +1 -0
- package/dist/{chunk-6KLX2RH5.js → chunk-H2NJQORO.js} +1069 -79
- package/dist/chunk-H2NJQORO.js.map +1 -0
- package/dist/chunk-I7IWRQLN.js +1608 -0
- package/dist/chunk-I7IWRQLN.js.map +1 -0
- package/dist/{chunk-HA46CYQK.js → chunk-IQUCRAT7.js} +792 -537
- package/dist/chunk-IQUCRAT7.js.map +1 -0
- package/dist/chunk-IWIDV7SB.js +1 -0
- package/dist/chunk-IWIDV7SB.js.map +1 -0
- package/dist/chunk-J2QWVSQY.js +312 -0
- package/dist/chunk-J2QWVSQY.js.map +1 -0
- package/dist/chunk-JFNEV4LU.js +2733 -0
- package/dist/chunk-JFNEV4LU.js.map +1 -0
- package/dist/chunk-JT4JW7BC.js +54 -0
- package/dist/chunk-JT4JW7BC.js.map +1 -0
- package/dist/chunk-K3HQAKQX.js +24 -0
- package/dist/chunk-K3HQAKQX.js.map +1 -0
- package/dist/{chunk-C5ZPSSS5.js → chunk-NEXLLTP4.js} +2 -1
- package/dist/{chunk-C5ZPSSS5.js.map → chunk-NEXLLTP4.js.map} +1 -1
- package/dist/chunk-NZUI76EM.js +371 -0
- package/dist/chunk-NZUI76EM.js.map +1 -0
- package/dist/{chunk-PEI6RANI.js → chunk-PNY3JKBJ.js} +309 -74
- package/dist/chunk-PNY3JKBJ.js.map +1 -0
- package/dist/{chunk-IGC6A2ZI.js → chunk-Q5QBEZIQ.js} +777 -246
- package/dist/chunk-Q5QBEZIQ.js.map +1 -0
- package/dist/chunk-RHREZ7BO.js +11 -0
- package/dist/chunk-RHREZ7BO.js.map +1 -0
- package/dist/chunk-SCOTPE2I.js +589 -0
- package/dist/chunk-SCOTPE2I.js.map +1 -0
- package/dist/{chunk-B6WPZSTT.js → chunk-SJZDKVW2.js} +1331 -1163
- package/dist/chunk-SJZDKVW2.js.map +1 -0
- package/dist/chunk-TMJRG4YC.js +12803 -0
- package/dist/chunk-TMJRG4YC.js.map +1 -0
- package/dist/chunk-TMYGL6X5.js +742 -0
- package/dist/chunk-TMYGL6X5.js.map +1 -0
- package/dist/chunk-UGLEYEMP.js +33 -0
- package/dist/chunk-UGLEYEMP.js.map +1 -0
- package/dist/chunk-UK4TINKT.js +27 -0
- package/dist/chunk-UK4TINKT.js.map +1 -0
- package/dist/chunk-UTRTG6LH.js +220 -0
- package/dist/chunk-UTRTG6LH.js.map +1 -0
- package/dist/chunk-WEHMPOXK.js +39 -0
- package/dist/chunk-WEHMPOXK.js.map +1 -0
- package/dist/chunk-WRHIZYZF.js +988 -0
- package/dist/chunk-WRHIZYZF.js.map +1 -0
- package/dist/{chunk-HUIKIDM5.js → chunk-WUISZ3WU.js} +223 -115
- package/dist/chunk-WUISZ3WU.js.map +1 -0
- package/dist/chunk-XCHWDJ22.js +107 -0
- package/dist/chunk-XCHWDJ22.js.map +1 -0
- package/dist/chunk-XOAMRDDK.js +481 -0
- package/dist/chunk-XOAMRDDK.js.map +1 -0
- package/dist/chunk-XUW2UWQM.js +299 -0
- package/dist/chunk-XUW2UWQM.js.map +1 -0
- package/dist/{chunk-KCGXPP5V.js → chunk-Y2PRMYLC.js} +11 -6
- package/dist/chunk-Y2PRMYLC.js.map +1 -0
- package/dist/chunk-YBXQDQFX.js +1772 -0
- package/dist/chunk-YBXQDQFX.js.map +1 -0
- package/dist/{chunk-KZ73RL76.js → chunk-YQEAA6LT.js} +7 -3
- package/dist/chunk-YQEAA6LT.js.map +1 -0
- package/dist/chunk-YV4L3ILF.js +9 -0
- package/dist/chunk-YV4L3ILF.js.map +1 -0
- package/dist/{chunk-LLOLUHVG.js → chunk-YWFG7ZX7.js} +1358 -2746
- package/dist/chunk-YWFG7ZX7.js.map +1 -0
- package/dist/chunk-ZYRGEKWS.js +216 -0
- package/dist/chunk-ZYRGEKWS.js.map +1 -0
- package/dist/client.d.ts +7 -4
- package/dist/clipboard.js +1 -0
- package/dist/commands/types.d.ts +2 -0
- package/dist/components/anthropic-mark.d.ts +3 -0
- package/dist/components/approval-surface.d.ts +15 -0
- package/dist/components/artifacts/artifact-chrome.d.ts +120 -0
- package/dist/components/artifacts/artifact-sandbox.d.ts +27 -0
- package/dist/components/artifacts/artifact-surface.d.ts +3 -1
- package/dist/components/artifacts/chat-interactive-block.d.ts +29 -0
- package/dist/components/artifacts/deferred-chat-media.d.ts +15 -0
- package/dist/components/artifacts/document-editor.d.ts +4 -2
- package/dist/components/artifacts/editable-artifact-ui.d.ts +2 -1
- package/dist/components/artifacts/editable-artifact-view.d.ts +46 -0
- package/dist/components/artifacts/editable-document.d.ts +1 -1
- package/dist/components/artifacts/editable-presentation.d.ts +2 -2
- package/dist/components/artifacts/editable-spreadsheet.d.ts +2 -1
- package/dist/components/artifacts/index.d.ts +8 -1
- package/dist/components/artifacts/inline-html-document.d.ts +2 -0
- package/dist/components/artifacts/latest-task-runner.d.ts +15 -0
- package/dist/components/artifacts/presentation-editor.d.ts +6 -2
- package/dist/components/artifacts/published-html-artifact-frame.d.ts +48 -3
- package/dist/components/artifacts/session-artifact-viewer.d.ts +39 -0
- package/dist/components/artifacts/site-view.d.ts +23 -0
- package/dist/components/artifacts/spreadsheet-general-display.d.ts +24 -0
- package/dist/components/artifacts/visualization-assets.gen.d.ts +2 -0
- package/dist/components/browser-select-control.d.ts +16 -0
- package/dist/components/browser-viewer.d.ts +10 -1
- package/dist/components/chat-composer.d.ts +21 -3
- package/dist/components/child-session-link.d.ts +5 -0
- package/dist/components/claude-mark.d.ts +3 -0
- package/dist/components/code-editor.d.ts +1 -4
- package/dist/components/composer.d.ts +45 -4
- package/dist/components/computer-viewer.d.ts +4 -1
- package/dist/components/copy-button.d.ts +3 -1
- package/dist/components/desktop-viewer.d.ts +1 -1
- package/dist/components/enrollment-consent.d.ts +6 -3
- package/dist/components/file-browser.d.ts +10 -1
- package/dist/components/fleet-tile.d.ts +2 -2
- package/dist/components/grok-mark.d.ts +26 -0
- package/dist/components/human-input-form.d.ts +21 -2
- package/dist/components/human-input-surface.d.ts +6 -3
- package/dist/components/machine-card.d.ts +4 -1
- package/dist/components/machines/machine-detail.d.ts +4 -1
- package/dist/components/machines/machine-operation-policy.d.ts +11 -0
- package/dist/components/machines-dashboard.d.ts +3 -1
- package/dist/components/markdown-table-layout.d.ts +12 -0
- package/dist/components/markdown.d.ts +47 -3
- package/dist/components/message-timeline.d.ts +72 -9
- package/dist/components/model-mark.d.ts +29 -0
- package/dist/components/model-policy-picker-menu.d.ts +9 -0
- package/dist/components/model-policy-picker.d.ts +62 -13
- package/dist/components/open-geni-chat.d.ts +55 -0
- package/dist/components/open-geni-links.d.ts +68 -0
- package/dist/components/openrouter-mark.d.ts +6 -0
- package/dist/components/pierre-file.d.ts +1 -1
- package/dist/components/preview-loading.d.ts +2 -0
- package/dist/components/queue-item-content.d.ts +9 -0
- package/dist/components/sandbox-files.d.ts +13 -2
- package/dist/components/sandbox-workspace.d.ts +43 -3
- package/dist/components/session-capability-frame.d.ts +35 -0
- package/dist/components/session-chrome.d.ts +66 -8
- package/dist/components/session-commands-panel.d.ts +6 -0
- package/dist/components/session-commands.d.ts +6 -0
- package/dist/components/session-connection-request.d.ts +8 -0
- package/dist/components/session-conversation.d.ts +86 -0
- package/dist/components/session-list.d.ts +36 -0
- package/dist/components/session-mcp-capability-card.d.ts +41 -0
- package/dist/components/timeline-anchor.d.ts +24 -0
- package/dist/components/timeline-annotation-chrome.d.ts +25 -0
- package/dist/components/timeline-annotation-layout.d.ts +42 -0
- package/dist/components/timeline-annotation-markers.d.ts +8 -0
- package/dist/components/timeline-annotation-reveal-context.d.ts +4 -0
- package/dist/components/timeline-annotation-shared.d.ts +31 -0
- package/dist/components/timeline-annotations-dialog.d.ts +3 -2
- package/dist/components/timeline-annotations.d.ts +13 -3
- package/dist/components/timeline-reading-progress.d.ts +11 -0
- package/dist/components/timeline-search.d.ts +34 -0
- package/dist/components/timeline-settlement.d.ts +16 -0
- package/dist/components/tip-follow.d.ts +16 -0
- package/dist/components/usage-limit-notice.d.ts +49 -0
- package/dist/components/usage-member-list.d.ts +91 -0
- package/dist/components/usage-meter.d.ts +73 -0
- package/dist/components/use-viewer-menu-dismiss.d.ts +2 -0
- package/dist/components/user-message-body.d.ts +10 -1
- package/dist/components/workspace-dock.d.ts +6 -2
- package/dist/composer.d.ts +5 -4
- package/dist/composer.js +15 -9
- package/dist/computer-viewer-ENHVAZ2Q.js +19 -0
- package/dist/computer-viewer-ENHVAZ2Q.js.map +1 -0
- package/dist/connect-account-identity.d.ts +8 -0
- package/dist/connect-accounts.d.ts +15 -0
- package/dist/connect-chooser.d.ts +18 -0
- package/dist/connect-panel.d.ts +18 -0
- package/dist/connect-setup.d.ts +16 -0
- package/dist/connect.d.ts +21 -0
- package/dist/connect.js +2129 -0
- package/dist/connect.js.map +1 -0
- package/dist/connection-catalog.d.ts +38 -0
- package/dist/connection-discovery.d.ts +12 -0
- package/dist/connection-installed.d.ts +17 -0
- package/dist/connection-logo.d.ts +9 -0
- package/dist/connection-service-logo.d.ts +8 -0
- package/dist/connection-service-presentation.d.ts +13 -0
- package/dist/connection-skeleton.d.ts +5 -0
- package/dist/connection-type-picker.d.ts +6 -0
- package/dist/conversation-timeline.d.ts +5 -0
- package/dist/desktop.d.ts +7 -0
- package/dist/desktop.js +26 -0
- package/dist/desktop.js.map +1 -0
- package/dist/device-authorization.d.ts +23 -0
- package/dist/diffs.d.ts +8 -0
- package/dist/diffs.js +14 -0
- package/dist/diffs.js.map +1 -0
- package/dist/discovery-cache.d.ts +5 -0
- package/dist/editor.d.ts +7 -0
- package/dist/editor.js +21 -0
- package/dist/editor.js.map +1 -0
- package/dist/embedded-session-client.d.ts +23 -0
- package/dist/file-node-visibility.d.ts +15 -0
- package/dist/{fleet-decision-row-GGCAT4E4.js → fleet-decision-row-YZ3ZKWMM.js} +2 -1
- package/dist/fleet-decision-row-YZ3ZKWMM.js.map +1 -0
- package/dist/hooks/channel-cache.d.ts +23 -0
- package/dist/hooks/latest-question.d.ts +25 -0
- package/dist/hooks/shared-machines-list.d.ts +14 -0
- package/dist/hooks/use-attached-browsers.d.ts +2 -1
- package/dist/hooks/use-browser-frame-stream.d.ts +1 -1
- package/dist/hooks/use-browser-session.d.ts +12 -1
- package/dist/hooks/use-channels.d.ts +1 -0
- package/dist/hooks/use-codex-accounts.d.ts +25 -7
- package/dist/hooks/use-composer.d.ts +45 -9
- package/dist/hooks/use-computer-frame-stream.d.ts +1 -1
- package/dist/hooks/use-computer-input-posture.d.ts +13 -0
- package/dist/hooks/use-computer-session.d.ts +2 -0
- package/dist/hooks/use-connect.d.ts +22 -0
- package/dist/hooks/use-desktop-stream.d.ts +1 -1
- package/dist/hooks/use-file-attachments.d.ts +21 -2
- package/dist/hooks/use-machine-chip.d.ts +3 -3
- package/dist/hooks/use-machines.d.ts +19 -1
- package/dist/hooks/use-sandbox-files.d.ts +5 -1
- package/dist/hooks/use-session-background-commands.d.ts +14 -0
- package/dist/hooks/use-session-events.d.ts +30 -8
- package/dist/hooks/use-session-lineage.d.ts +4 -0
- package/dist/hooks/use-session-mcp-approval-policy.d.ts +2 -2
- package/dist/hooks/use-session.d.ts +6 -0
- package/dist/hooks/use-turn-queue.d.ts +12 -0
- package/dist/hooks/use-usage.d.ts +40 -0
- package/dist/hooks/use-workspace-edit.d.ts +4 -0
- package/dist/hooks/use-workspace-sessions.d.ts +27 -5
- package/dist/human-input.d.ts +3 -1
- package/dist/identity-link-accounts.d.ts +11 -0
- package/dist/identity-link-consent.d.ts +18 -0
- package/dist/index.d.ts +60 -17
- package/dist/index.js +2237 -6200
- package/dist/index.js.map +1 -1
- package/dist/interaction.d.ts +1 -1
- package/dist/interaction.js +35 -184
- package/dist/interaction.js.map +1 -1
- package/dist/latest-question-755OW5DS.js +117 -0
- package/dist/latest-question-755OW5DS.js.map +1 -0
- package/dist/lib/error-message.d.ts +7 -0
- package/dist/lib/format.d.ts +36 -2
- package/dist/lib/host-theme.d.ts +70 -0
- package/dist/lib/interaction-errors.d.ts +6 -0
- package/dist/lib/menu-styles.d.ts +22 -0
- package/dist/lib/pierre-diffs-loader.d.ts +20 -0
- package/dist/lib/workbench-peers.d.ts +36 -0
- package/dist/lib/xterm-theme.d.ts +7 -5
- package/dist/machines.d.ts +4 -2
- package/dist/machines.js +14 -4
- package/dist/markdown-table-layout-QXSLK4BY.js +106 -0
- package/dist/markdown-table-layout-QXSLK4BY.js.map +1 -0
- package/dist/mcp-connection-status.d.ts +14 -0
- package/dist/model-policy-picker-menu-PWRI7R2X.js +14 -0
- package/dist/model-policy-picker-menu-PWRI7R2X.js.map +1 -0
- package/dist/model-policy.d.ts +19 -3
- package/dist/model-policy.js +9 -1
- package/dist/older-history.d.ts +30 -0
- package/dist/platform-activity-row-627BFZ46.js +182 -0
- package/dist/platform-activity-row-627BFZ46.js.map +1 -0
- package/dist/plugin-details.d.ts +14 -0
- package/dist/plugin-discovery.d.ts +25 -0
- package/dist/provider.d.ts +13 -1
- package/dist/{queue-surface-implementation-2KVJTYXH.js → queue-surface-implementation-ZHFI5JBP.js} +131 -44
- package/dist/queue-surface-implementation-ZHFI5JBP.js.map +1 -0
- package/dist/realtime/realtime-control.d.ts +6 -3
- package/dist/realtime.js +133 -74
- package/dist/realtime.js.map +1 -1
- package/dist/sandbox-files-BBC47SLD.js +20 -0
- package/dist/sandbox-files-BBC47SLD.js.map +1 -0
- package/dist/session-auth-recommendation.d.ts +5 -0
- package/dist/session-capability-policy.d.ts +12 -0
- package/dist/session-ui.d.ts +30 -2
- package/dist/session-ui.js +85 -7
- package/dist/session-ui.js.map +1 -1
- package/dist/session.d.ts +8 -2
- package/dist/session.js +30 -19
- package/dist/sites-ui.d.ts +34 -0
- package/dist/sites.d.ts +3 -0
- package/dist/sites.js +11 -0
- package/dist/sites.js.map +1 -0
- package/dist/skill-discovery.d.ts +47 -0
- package/dist/terminal.d.ts +8 -0
- package/dist/terminal.js +31 -0
- package/dist/terminal.js.map +1 -0
- package/dist/timeline/activity-rail.d.ts +11 -2
- package/dist/timeline/allowance-exhausted-row.d.ts +24 -0
- package/dist/timeline/compaction-copy.d.ts +10 -0
- package/dist/timeline/entrance.d.ts +13 -1
- package/dist/timeline/genie-loading.d.ts +34 -0
- package/dist/timeline/index.d.ts +6 -2
- package/dist/timeline/knowledge-receipt.d.ts +17 -0
- package/dist/timeline/platform-activity-row.d.ts +14 -0
- package/dist/timeline/presented-image.d.ts +6 -0
- package/dist/timeline/projection.d.ts +31 -2
- package/dist/timeline/registry.d.ts +2 -0
- package/dist/timeline/retained-image.d.ts +18 -0
- package/dist/timeline/rolling-activity.d.ts +11 -0
- package/dist/timeline/screenshot-lightbox.d.ts +16 -1
- package/dist/timeline/shared.d.ts +8 -3
- package/dist/timeline/startup-preference.d.ts +3 -0
- package/dist/timeline/startup-timings.d.ts +4 -0
- package/dist/timeline/tool-display-name.d.ts +2 -1
- package/dist/timeline/turn-summary.d.ts +32 -3
- package/dist/timeline/types.d.ts +141 -7
- package/dist/timeline-annotation-markers-GNDHTGBD.js +165 -0
- package/dist/timeline-annotation-markers-GNDHTGBD.js.map +1 -0
- package/dist/timeline-annotation-selection-DMLMM2TX.js +241 -0
- package/dist/timeline-annotation-selection-DMLMM2TX.js.map +1 -0
- package/dist/timeline-annotations-dialog-ELRDBHTS.js +273 -0
- package/dist/timeline-annotations-dialog-ELRDBHTS.js.map +1 -0
- package/dist/types/machines.d.ts +2 -2
- package/dist/usage/allowance-copy.d.ts +25 -0
- package/dist/usage/summary.d.ts +35 -0
- package/dist/usage.d.ts +13 -0
- package/dist/usage.js +1074 -0
- package/dist/usage.js.map +1 -0
- package/package.json +44 -4
- package/src/accounts.tsx +1072 -0
- package/src/approvals.ts +8 -1
- package/src/artifacts.ts +42 -0
- package/src/assets/README.md +8 -0
- package/src/assets/gmail.ico +0 -0
- package/src/assets/outlook.ico +0 -0
- package/src/capability-catalog-row.tsx +94 -0
- package/src/capability-logo-fallback.ts +22 -0
- package/src/client.ts +22 -13
- package/src/commands/registry.ts +18 -15
- package/src/commands/types.ts +2 -0
- package/src/components/anthropic-mark.tsx +10 -0
- package/src/components/approval-surface.tsx +171 -37
- package/src/components/artifacts/artifact-chrome.tsx +413 -0
- package/src/components/artifacts/artifact-sandbox.tsx +185 -0
- package/src/components/artifacts/artifact-surface.tsx +39 -19
- package/src/components/artifacts/chat-interactive-block.tsx +260 -0
- package/src/components/artifacts/deferred-chat-media.tsx +67 -0
- package/src/components/artifacts/document-editor.tsx +141 -16
- package/src/components/artifacts/editable-artifact-ui.tsx +4 -2
- package/src/components/artifacts/editable-artifact-view.tsx +187 -0
- package/src/components/artifacts/editable-artifact-workbench.tsx +5 -2
- package/src/components/artifacts/editable-document.tsx +37 -36
- package/src/components/artifacts/editable-presentation.tsx +36 -18
- package/src/components/artifacts/editable-spreadsheet.tsx +5 -2
- package/src/components/artifacts/index.ts +44 -0
- package/src/components/artifacts/inline-html-document.ts +24 -0
- package/src/components/artifacts/latest-task-runner.ts +49 -0
- package/src/components/artifacts/presentation-editor.tsx +323 -67
- package/src/components/artifacts/published-html-artifact-frame.tsx +338 -5
- package/src/components/artifacts/session-artifact-viewer.tsx +376 -0
- package/src/components/artifacts/site-view.tsx +116 -0
- package/src/components/artifacts/spreadsheet-canvas.ts +5 -10
- package/src/components/artifacts/spreadsheet-general-display.ts +43 -0
- package/src/components/artifacts/spreadsheet-grid.tsx +12 -13
- package/src/components/artifacts/visualization-assets/base.css +1015 -0
- package/src/components/artifacts/visualization-assets/helpers.html +349 -0
- package/src/components/artifacts/visualization-assets.gen.ts +3 -0
- package/src/components/browser-select-control.tsx +312 -0
- package/src/components/browser-viewer.tsx +1054 -314
- package/src/components/chat-composer.tsx +131 -85
- package/src/components/child-session-link.tsx +27 -0
- package/src/components/claude-mark.tsx +10 -0
- package/src/components/code-editor.tsx +13 -16
- package/src/components/composer-transcription-control.tsx +7 -5
- package/src/components/composer.tsx +376 -49
- package/src/components/computer-viewer.tsx +1041 -329
- package/src/components/copy-button.tsx +13 -5
- package/src/components/desktop-viewer.tsx +1 -1
- package/src/components/enrollment-consent.tsx +65 -7
- package/src/components/enrollment-device-flow.tsx +1 -1
- package/src/components/file-browser.tsx +158 -34
- package/src/components/fleet-tile.tsx +8 -16
- package/src/components/generated-video-player.tsx +4 -2
- package/src/components/grok-mark.tsx +33 -0
- package/src/components/human-input-form.tsx +455 -114
- package/src/components/human-input-surface.tsx +18 -7
- package/src/components/interaction-intervention-banner.tsx +2 -2
- package/src/components/machine-card.tsx +119 -4
- package/src/components/machine-dock-bar.tsx +1 -1
- package/src/components/machine-input-display.ts +23 -2
- package/src/components/machines/machine-detail.tsx +52 -2
- package/src/components/machines/machine-operation-policy.tsx +179 -0
- package/src/components/machines-dashboard.tsx +8 -17
- package/src/components/markdown-table-layout.ts +132 -0
- package/src/components/markdown.tsx +473 -44
- package/src/components/message-timeline.tsx +2498 -663
- package/src/components/model-mark.tsx +90 -0
- package/src/components/model-picker.tsx +15 -4
- package/src/components/model-policy-picker-menu.tsx +424 -0
- package/src/components/model-policy-picker.tsx +337 -381
- package/src/components/open-geni-chat.tsx +319 -0
- package/src/components/open-geni-links.tsx +179 -0
- package/src/components/openrouter-mark.tsx +13 -0
- package/src/components/pierre-diff.tsx +41 -16
- package/src/components/pierre-file.tsx +36 -11
- package/src/components/preview-loading.tsx +154 -0
- package/src/components/queue-item-content.ts +14 -0
- package/src/components/queue-surface-implementation.tsx +132 -42
- package/src/components/queue-surface-state.tsx +3 -1
- package/src/components/sandbox-files.tsx +267 -35
- package/src/components/sandbox-terminal.tsx +48 -11
- package/src/components/sandbox-workspace.tsx +337 -135
- package/src/components/session-capability-frame.tsx +192 -0
- package/src/components/session-chrome.tsx +1027 -328
- package/src/components/session-commands-panel.tsx +126 -0
- package/src/components/session-commands.tsx +18 -0
- package/src/components/session-connection-request.tsx +97 -0
- package/src/components/session-conversation.tsx +512 -0
- package/src/components/session-list.tsx +250 -0
- package/src/components/session-mcp-capability-card.tsx +680 -0
- package/src/components/session-status.tsx +1 -1
- package/src/components/timeline-anchor.tsx +119 -0
- package/src/components/timeline-annotation-chrome.tsx +196 -0
- package/src/components/timeline-annotation-layout.ts +268 -0
- package/src/components/timeline-annotation-markers.tsx +185 -0
- package/src/components/timeline-annotation-reveal-context.ts +9 -0
- package/src/components/timeline-annotation-selection.tsx +106 -54
- package/src/components/timeline-annotation-shared.ts +245 -0
- package/src/components/timeline-annotations-dialog.tsx +185 -128
- package/src/components/timeline-annotations.tsx +189 -45
- package/src/components/timeline-reading-progress.ts +80 -0
- package/src/components/timeline-search.tsx +168 -0
- package/src/components/timeline-settlement.ts +60 -0
- package/src/components/tip-follow.ts +70 -7
- package/src/components/tooltip.tsx +38 -5
- package/src/components/usage-limit-notice.tsx +179 -0
- package/src/components/usage-member-list.tsx +792 -0
- package/src/components/usage-meter.tsx +382 -0
- package/src/components/use-viewer-menu-dismiss.ts +33 -0
- package/src/components/user-message-body.tsx +194 -49
- package/src/components/workspace-dock.tsx +141 -175
- package/src/composer.ts +6 -1
- package/src/connect-account-identity.tsx +34 -0
- package/src/connect-accounts.tsx +233 -0
- package/src/connect-chooser.tsx +336 -0
- package/src/connect-panel.tsx +99 -0
- package/src/connect-setup.tsx +307 -0
- package/src/connect.ts +60 -0
- package/src/connection-assets.d.ts +4 -0
- package/src/connection-catalog.tsx +162 -0
- package/src/connection-discovery.tsx +235 -0
- package/src/connection-installed.tsx +51 -0
- package/src/connection-logo.tsx +37 -0
- package/src/connection-service-logo.tsx +55 -0
- package/src/connection-service-presentation.ts +46 -0
- package/src/connection-skeleton.tsx +16 -0
- package/src/connection-type-picker.tsx +36 -0
- package/src/conversation-timeline.ts +92 -0
- package/src/desktop.ts +24 -0
- package/src/device-authorization.tsx +98 -0
- package/src/diffs.ts +16 -0
- package/src/discovery-cache.ts +42 -0
- package/src/editor.ts +13 -0
- package/src/embedded-session-client.ts +104 -0
- package/src/file-node-visibility.ts +66 -0
- package/src/hooks/channel-cache.ts +104 -0
- package/src/hooks/internal.ts +3 -2
- package/src/hooks/latest-question.ts +164 -0
- package/src/hooks/shared-machines-list.ts +239 -0
- package/src/hooks/use-attached-browsers.ts +5 -1
- package/src/hooks/use-available-models.ts +20 -14
- package/src/hooks/use-browser-frame-stream.ts +25 -3
- package/src/hooks/use-browser-session.ts +271 -71
- package/src/hooks/use-browser-sessions.ts +7 -1
- package/src/hooks/use-channels.ts +32 -10
- package/src/hooks/use-codex-accounts.ts +78 -21
- package/src/hooks/use-composer.ts +1034 -320
- package/src/hooks/use-computer-frame-stream.ts +39 -16
- package/src/hooks/use-computer-input-posture.ts +94 -0
- package/src/hooks/use-computer-session.ts +110 -32
- package/src/hooks/use-computer-sessions.ts +8 -1
- package/src/hooks/use-connect.ts +23 -0
- package/src/hooks/use-desktop-stream.ts +19 -28
- package/src/hooks/use-file-attachments.ts +118 -10
- package/src/hooks/use-goal.ts +36 -9
- package/src/hooks/use-human-input.ts +31 -4
- package/src/hooks/use-last-started-turn-policy.ts +15 -13
- package/src/hooks/use-machine-chip.ts +23 -6
- package/src/hooks/use-machines.ts +104 -6
- package/src/hooks/use-sandbox-files.ts +253 -150
- package/src/hooks/use-sandbox-git.ts +58 -29
- package/src/hooks/use-session-background-commands.ts +67 -0
- package/src/hooks/use-session-capabilities.ts +21 -2
- package/src/hooks/use-session-events.ts +759 -433
- package/src/hooks/use-session-lineage.ts +28 -6
- package/src/hooks/use-session-mcp-approval-policy.ts +13 -5
- package/src/hooks/use-session.ts +75 -16
- package/src/hooks/use-slash-commands.ts +6 -11
- package/src/hooks/use-turn-queue.ts +113 -13
- package/src/hooks/use-usage.ts +100 -0
- package/src/hooks/use-voice-input.ts +12 -1
- package/src/hooks/use-workspace-capture.ts +3 -2
- package/src/hooks/use-workspace-edit.ts +23 -5
- package/src/hooks/use-workspace-sessions.ts +99 -11
- package/src/human-input.ts +12 -1
- package/src/identity-link-accounts.tsx +148 -0
- package/src/identity-link-consent.tsx +192 -0
- package/src/index.ts +157 -12
- package/src/interaction.ts +1 -0
- package/src/lib/error-message.ts +37 -0
- package/src/lib/format.ts +150 -14
- package/src/lib/host-theme.ts +511 -0
- package/src/lib/interaction-errors.ts +33 -0
- package/src/lib/menu-styles.ts +44 -0
- package/src/lib/pierre-diffs-loader.ts +53 -0
- package/src/lib/workbench-peers.ts +62 -0
- package/src/lib/xterm-theme.ts +23 -21
- package/src/machines.ts +9 -1
- package/src/mcp-connection-status.ts +35 -0
- package/src/model-policy.ts +223 -69
- package/src/older-history.ts +87 -0
- package/src/plugin-details.tsx +185 -0
- package/src/plugin-discovery.tsx +196 -0
- package/src/provider.tsx +55 -14
- package/src/realtime/dropdown-menu.tsx +19 -12
- package/src/realtime/realtime-control.tsx +133 -46
- package/src/session-auth-recommendation.ts +48 -0
- package/src/session-capability-policy.ts +83 -0
- package/src/session-context.ts +1 -0
- package/src/session-ui.ts +66 -2
- package/src/session.ts +18 -1
- package/src/sites-ui.tsx +402 -0
- package/src/sites.ts +3 -0
- package/src/skill-discovery.tsx +208 -0
- package/src/terminal.ts +26 -0
- package/src/timeline/activity-rail.tsx +171 -80
- package/src/timeline/allowance-exhausted-row.tsx +86 -0
- package/src/timeline/compaction-copy.ts +42 -0
- package/src/timeline/entrance.tsx +28 -3
- package/src/timeline/fleet-decision-projection.ts +2 -1
- package/src/timeline/fleet-decision-row.tsx +1 -0
- package/src/timeline/genie-loading.tsx +136 -0
- package/src/timeline/index.ts +11 -0
- package/src/timeline/knowledge-receipt.tsx +100 -0
- package/src/timeline/parsers.ts +2 -2
- package/src/timeline/platform-activity-row.tsx +216 -0
- package/src/timeline/presented-image.ts +49 -0
- package/src/timeline/projection.ts +1600 -84
- package/src/timeline/registry.ts +15 -3
- package/src/timeline/retained-image.ts +97 -0
- package/src/timeline/rolling-activity.tsx +92 -0
- package/src/timeline/screenshot-lightbox.tsx +115 -17
- package/src/timeline/shared.tsx +47 -15
- package/src/timeline/startup-preference.ts +33 -0
- package/src/timeline/startup-timings.tsx +145 -0
- package/src/timeline/tool-display-name.ts +8 -6
- package/src/timeline/tool-renderers.tsx +497 -128
- package/src/timeline/turn-summary.tsx +208 -44
- package/src/timeline/types.ts +186 -7
- package/src/types/machines.ts +10 -0
- package/src/usage/allowance-copy.ts +64 -0
- package/src/usage/summary.ts +93 -0
- package/src/usage.ts +50 -0
- package/styles/compiled.css +2098 -757
- package/styles/connect.css +284 -0
- package/styles/connect.d.ts +1 -0
- package/styles/effective-tokens.css +1 -0
- package/styles/index.css +201 -9
- package/styles/responsive.css +27 -1
- package/styles/session-capability.css +44 -0
- package/styles/tokens.css +135 -65
- package/dist/chunk-5UQPNLIO.js.map +0 -1
- package/dist/chunk-6KLX2RH5.js.map +0 -1
- package/dist/chunk-7WCLAEFV.js.map +0 -1
- package/dist/chunk-B6WPZSTT.js.map +0 -1
- package/dist/chunk-FK6VG4LL.js +0 -90
- package/dist/chunk-FK6VG4LL.js.map +0 -1
- package/dist/chunk-HA46CYQK.js.map +0 -1
- package/dist/chunk-HUIKIDM5.js.map +0 -1
- package/dist/chunk-IGC6A2ZI.js.map +0 -1
- package/dist/chunk-KCGXPP5V.js.map +0 -1
- package/dist/chunk-KZ73RL76.js.map +0 -1
- package/dist/chunk-LAKLF4PA.js +0 -141
- package/dist/chunk-LAKLF4PA.js.map +0 -1
- package/dist/chunk-LLOLUHVG.js.map +0 -1
- package/dist/chunk-MKPIAGVL.js +0 -465
- package/dist/chunk-MKPIAGVL.js.map +0 -1
- package/dist/chunk-PEI6RANI.js.map +0 -1
- package/dist/chunk-R3AZOAB5.js.map +0 -1
- package/dist/chunk-WSK7G5LE.js +0 -170
- package/dist/chunk-WSK7G5LE.js.map +0 -1
- package/dist/chunk-XBZWOM2K.js +0 -218
- package/dist/chunk-XBZWOM2K.js.map +0 -1
- package/dist/chunk-Y7OEDUJ5.js +0 -8810
- package/dist/chunk-Y7OEDUJ5.js.map +0 -1
- package/dist/fleet-decision-row-GGCAT4E4.js.map +0 -1
- package/dist/hooks/use-packs.d.ts +0 -32
- package/dist/interactive-workbench-viewers-TOHBXJEE.js +0 -15
- package/dist/queue-surface-implementation-2KVJTYXH.js.map +0 -1
- package/dist/timeline-annotation-selection-3L7LHGG2.js +0 -187
- package/dist/timeline-annotation-selection-3L7LHGG2.js.map +0 -1
- package/dist/timeline-annotations-dialog-U7EVLR75.js +0 -196
- package/dist/timeline-annotations-dialog-U7EVLR75.js.map +0 -1
- package/src/hooks/use-packs.ts +0 -157
- /package/dist/{interactive-workbench-viewers-TOHBXJEE.js.map → browser-viewer-GTR5XQ7X.js.map} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChevronRightIcon, CircleSlashIcon, TriangleAlertIcon } from "lucide-react";
|
|
1
|
+
import { ChevronRightIcon, CircleSlashIcon, ShrinkIcon, TriangleAlertIcon } from "lucide-react";
|
|
2
2
|
import {
|
|
3
3
|
Component,
|
|
4
4
|
createContext,
|
|
@@ -14,15 +14,18 @@ import { CopyButton } from "../components/copy-button";
|
|
|
14
14
|
import { cn } from "../lib/cn";
|
|
15
15
|
import { MOTION_INSPECT_SCALE } from "../lib/motion-inspect";
|
|
16
16
|
import { useForcedDefaultOpen } from "./disclosure-context";
|
|
17
|
+
import { useTimelineSearchReveal } from "../components/timeline-search";
|
|
17
18
|
import { useEntranceAnimation } from "./entrance";
|
|
18
19
|
import { useFoldMemory, type FoldRestingState } from "./fold-memory";
|
|
19
20
|
import {
|
|
20
21
|
applyPatchOpsFromToolItem,
|
|
21
22
|
isApplyPatch,
|
|
22
23
|
mediaPreviewFact,
|
|
24
|
+
retainedScreenshotMetadata,
|
|
23
25
|
screenshotDataUrl,
|
|
24
26
|
} from "./parsers";
|
|
25
27
|
import { rawTypeOf } from "./registry";
|
|
28
|
+
import { mcpToolLeaf } from "./tool-display-name";
|
|
26
29
|
import type { ActivityItem, ToolCallItem, TurnOutcome } from "./types";
|
|
27
30
|
export type { TurnOutcome } from "./types";
|
|
28
31
|
|
|
@@ -115,16 +118,38 @@ type ReplaceTurnSummaryFacets = Readonly<{
|
|
|
115
118
|
export type TurnSummaryFacetConfiguration = ModifyTurnSummaryFacets | ReplaceTurnSummaryFacets;
|
|
116
119
|
|
|
117
120
|
export type TurnSummaryOptions = Readonly<{
|
|
121
|
+
/**
|
|
122
|
+
* Readable per-turn presentation. Assistant progress stays fully formatted;
|
|
123
|
+
* each turn has its own Working / Worked row and rolling latest step.
|
|
124
|
+
* Ordinary tip-follow and manual scrolling are unchanged.
|
|
125
|
+
*/
|
|
126
|
+
rolling?: boolean;
|
|
118
127
|
facets?: TurnSummaryFacetConfiguration;
|
|
119
128
|
}>;
|
|
120
129
|
|
|
130
|
+
/**
|
|
131
|
+
* Exchange status shown in place of the plain facet line. `working` and
|
|
132
|
+
* `waiting` run a live clock from `since`; `worked` shows the settled span.
|
|
133
|
+
*/
|
|
134
|
+
export type TurnSummaryStatus = Readonly<{
|
|
135
|
+
kind: "working" | "waiting" | "worked";
|
|
136
|
+
/** Replaces the default "Working" / "Waiting" wording. */
|
|
137
|
+
label?: string | undefined;
|
|
138
|
+
/** Live clock start for `working` and `waiting`. */
|
|
139
|
+
since?: string | undefined;
|
|
140
|
+
/** Settled span for `worked`. */
|
|
141
|
+
durationMs?: number | undefined;
|
|
142
|
+
/** Live step preview under the row while it is collapsed. */
|
|
143
|
+
preview?: ReactNode;
|
|
144
|
+
}>;
|
|
145
|
+
|
|
121
146
|
export type TurnSummaryProps = {
|
|
122
147
|
/** The activity items in the turn (used only to compute the facet counts). */
|
|
123
148
|
items: ActivityItem[];
|
|
124
149
|
/**
|
|
125
150
|
* The settled verdict — or absent for a completed CLUSTER of a still-running
|
|
126
|
-
* turn, which folds neutrally
|
|
127
|
-
*
|
|
151
|
+
* turn, which folds neutrally. Only unfinished activity inside this summary
|
|
152
|
+
* animates; the parent turn may still be composing a response elsewhere.
|
|
128
153
|
*/
|
|
129
154
|
outcome?: TurnOutcome | undefined;
|
|
130
155
|
/** A short failure reason shown inline on a failed chip (never hidden). */
|
|
@@ -133,6 +158,7 @@ export type TurnSummaryProps = {
|
|
|
133
158
|
durationMs?: number | undefined;
|
|
134
159
|
/** Start expanded. */
|
|
135
160
|
defaultOpen?: boolean | undefined;
|
|
161
|
+
liveHeader?: ReactNode;
|
|
136
162
|
/**
|
|
137
163
|
* A nested fold — a cluster or sub-turn INSIDE an already-expanded turn. It
|
|
138
164
|
* drops the bordered/filled chip and renders as a plain disclosure node on the
|
|
@@ -170,6 +196,11 @@ export type TurnSummaryProps = {
|
|
|
170
196
|
copyText?: string | undefined;
|
|
171
197
|
/** Adjacent compaction landmark count for the secondary chip facet. */
|
|
172
198
|
contextCompactionCount?: number | undefined;
|
|
199
|
+
/**
|
|
200
|
+
* Exchange status line (compact progress presentation). Replaces the state
|
|
201
|
+
* marker and the duration facet; a settled `worked` row reads as a separator.
|
|
202
|
+
*/
|
|
203
|
+
status?: TurnSummaryStatus | undefined;
|
|
173
204
|
/** The rendered activity rail revealed on expand. */
|
|
174
205
|
children: ReactNode;
|
|
175
206
|
};
|
|
@@ -187,17 +218,20 @@ export function TurnSummary({
|
|
|
187
218
|
failureText,
|
|
188
219
|
durationMs,
|
|
189
220
|
defaultOpen,
|
|
221
|
+
liveHeader,
|
|
190
222
|
bare,
|
|
191
223
|
facets: facetConfiguration,
|
|
192
224
|
settleFold,
|
|
193
225
|
foldKey,
|
|
194
226
|
copyText,
|
|
195
227
|
contextCompactionCount,
|
|
228
|
+
status,
|
|
196
229
|
children,
|
|
197
230
|
}: TurnSummaryProps) {
|
|
198
231
|
// An explicit `defaultOpen` always wins; otherwise an ancestor may seed it
|
|
199
232
|
// (screenshot instrumentation); otherwise the turn starts folded.
|
|
200
233
|
const forcedDefaultOpen = useForcedDefaultOpen();
|
|
234
|
+
const searchReveal = useTimelineSearchReveal();
|
|
201
235
|
const foldMemory = useFoldMemory();
|
|
202
236
|
// A remembered resting state outranks author defaults: a fold that already
|
|
203
237
|
// finished its settle collapse (or that the reader closed) mounts closed
|
|
@@ -213,6 +247,13 @@ export function TurnSummary({
|
|
|
213
247
|
const initialSettle = Boolean(settleFold) && !restingOpen && remembered === undefined;
|
|
214
248
|
const [settling, setSettling] = useState(initialSettle);
|
|
215
249
|
const [open, setOpen] = useState(initialSettle ? true : restingOpen);
|
|
250
|
+
const readerOwnsOpen = useRef(remembered !== undefined);
|
|
251
|
+
useEffect(() => {
|
|
252
|
+
// Readable work can produce primary media or fail after mounting. Reveal
|
|
253
|
+
// that output without remounting existing tool controls, while preserving
|
|
254
|
+
// every explicit reader-owned open/closed choice.
|
|
255
|
+
if (status && defaultOpen && remembered === undefined && !readerOwnsOpen.current) setOpen(true);
|
|
256
|
+
}, [status, defaultOpen, remembered]);
|
|
216
257
|
// While true, a close uses the slow settle collapse. Cleared after that
|
|
217
258
|
// auto-collapse finishes (or on first user interaction) so later manual
|
|
218
259
|
// closes are the fast disclose pair.
|
|
@@ -311,7 +352,20 @@ export function TurnSummary({
|
|
|
311
352
|
}
|
|
312
353
|
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
313
354
|
}, [settleFold]);
|
|
355
|
+
useEffect(() => {
|
|
356
|
+
if (!searchReveal) return;
|
|
357
|
+
clearSettleTimers();
|
|
358
|
+
settleArmedRef.current = false;
|
|
359
|
+
setSettling(false);
|
|
360
|
+
setSettlePhase(false);
|
|
361
|
+
setNestSuppressLatch(false);
|
|
362
|
+
setOpen(true);
|
|
363
|
+
rememberResting("open");
|
|
364
|
+
// Search is an explicit, persistent reader action, not a new fold default.
|
|
365
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
366
|
+
}, [searchReveal]);
|
|
314
367
|
const onOpenChange = (next: boolean) => {
|
|
368
|
+
readerOwnsOpen.current = true;
|
|
315
369
|
// The reader took over — cancel the pending auto-collapse for good.
|
|
316
370
|
// Clear settle CSS phase immediately (fast collapse) but keep nest latch
|
|
317
371
|
// through the disclose window so nested chips stay force-open mid-close
|
|
@@ -364,9 +418,25 @@ export function TurnSummary({
|
|
|
364
418
|
() => resolveTurnSummaryFacets(facetConfiguration),
|
|
365
419
|
[facetConfiguration],
|
|
366
420
|
);
|
|
421
|
+
const statusKind = status?.kind;
|
|
367
422
|
const facets = useMemo(
|
|
368
423
|
() =>
|
|
369
424
|
facetDefinitions.flatMap((facet) => {
|
|
425
|
+
// The status line owns elapsed time; a live line keeps only the step
|
|
426
|
+
// count (plus host facets) so it stays one short line.
|
|
427
|
+
if (
|
|
428
|
+
statusKind &&
|
|
429
|
+
(facet.id === "duration" ||
|
|
430
|
+
(facet === BUILT_IN_TURN_SUMMARY_FACETS[0] &&
|
|
431
|
+
context.items.every(
|
|
432
|
+
(item) => item.kind === "startup-phase" || item.kind === "agent-message",
|
|
433
|
+
)) ||
|
|
434
|
+
(statusKind !== "worked" &&
|
|
435
|
+
facet.id !== "steps" &&
|
|
436
|
+
BUILT_IN_TURN_SUMMARY_FACET_IDS.includes(facet.id as BuiltInTurnSummaryFacetId)))
|
|
437
|
+
) {
|
|
438
|
+
return [];
|
|
439
|
+
}
|
|
370
440
|
try {
|
|
371
441
|
const result = facet.summarize(context);
|
|
372
442
|
return result && hasFacetContent(result.content) ? [{ facet, result }] : [];
|
|
@@ -376,7 +446,7 @@ export function TurnSummary({
|
|
|
376
446
|
return [];
|
|
377
447
|
}
|
|
378
448
|
}),
|
|
379
|
-
[context, facetDefinitions],
|
|
449
|
+
[context, facetDefinitions, statusKind],
|
|
380
450
|
);
|
|
381
451
|
|
|
382
452
|
// Live open shell: keep the chip in-flow (so settle never inserts layout)
|
|
@@ -389,6 +459,8 @@ export function TurnSummary({
|
|
|
389
459
|
// Nested chips stay force-open for this window (stable height).
|
|
390
460
|
const settleChrome = settling || settlePhase || nestSuppressLatch;
|
|
391
461
|
|
|
462
|
+
const statusLine = status ? turnSummaryStatusLine(status) : null;
|
|
463
|
+
|
|
392
464
|
// Copy only on the collapsed chip — when open, per-message copy is enough
|
|
393
465
|
// and a second control on the summary row felt crowded / off.
|
|
394
466
|
const copyable = Boolean(
|
|
@@ -399,6 +471,7 @@ export function TurnSummary({
|
|
|
399
471
|
<TurnSettleChromeContext.Provider value={settleChrome}>
|
|
400
472
|
<div className={cn(copyable && "group/copy relative")}>
|
|
401
473
|
<Collapsible.Root
|
|
474
|
+
data-og-work-section={bare ? undefined : ""}
|
|
402
475
|
open={open}
|
|
403
476
|
onOpenChange={onOpenChange}
|
|
404
477
|
// History-only entrance. Never toggle this on after mount — see
|
|
@@ -406,7 +479,12 @@ export function TurnSummary({
|
|
|
406
479
|
className={allowEnterAnimation && !liveShell ? "animate-og-enter" : undefined}
|
|
407
480
|
>
|
|
408
481
|
<Collapsible.Trigger
|
|
482
|
+
data-og-work-header={bare ? "nested" : "outer"}
|
|
409
483
|
className={cn(
|
|
484
|
+
// The section, not the viewport, bounds this sticky row. Content
|
|
485
|
+
// is a sibling: its disclosure overflow never traps the header.
|
|
486
|
+
// Nested rail folds must never stack additional sticky headers.
|
|
487
|
+
!bare && open && "sticky top-[var(--og-work-header-top,0px)] z-10 bg-og-bg",
|
|
410
488
|
settling && "animate-og-settle-chip",
|
|
411
489
|
// Top-level turn fold and (when used) nested cluster folds render as
|
|
412
490
|
// FLAT rail rows — chevron + glyph + facets on the page background, no
|
|
@@ -428,6 +506,8 @@ export function TurnSummary({
|
|
|
428
506
|
? "hover:bg-og-status-failed/[0.06] hover:text-og-fg"
|
|
429
507
|
: "hover:bg-og-surface-1 hover:text-og-fg",
|
|
430
508
|
liveShell && "text-og-fg-subtle",
|
|
509
|
+
// Phones hide the hint, so keep the copy control clear of the separator.
|
|
510
|
+
status && copyable && "max-sm:pr-10",
|
|
431
511
|
)}
|
|
432
512
|
>
|
|
433
513
|
{/* Disclosure grammar matches the rows: chevron leads (far left), then any
|
|
@@ -443,7 +523,9 @@ export function TurnSummary({
|
|
|
443
523
|
/>
|
|
444
524
|
{/* Completion is the quiet default and needs no repeated glyph. Failed,
|
|
445
525
|
cancelled, and still-running folds retain a visible state marker. */}
|
|
446
|
-
{
|
|
526
|
+
{status ||
|
|
527
|
+
outcome === "complete" ||
|
|
528
|
+
(!outcome && (liveHeader || context.settled)) ? null : (
|
|
447
529
|
<span
|
|
448
530
|
className={cn(
|
|
449
531
|
"inline-flex shrink-0 items-center justify-center",
|
|
@@ -461,23 +543,30 @@ export function TurnSummary({
|
|
|
461
543
|
</span>
|
|
462
544
|
)}
|
|
463
545
|
<span
|
|
464
|
-
className={cn(
|
|
546
|
+
className={cn(
|
|
547
|
+
"min-w-0 truncate",
|
|
548
|
+
status?.kind === "worked" ? "shrink" : "flex-1",
|
|
549
|
+
bare ? "text-og-sm" : "text-og-fg-muted",
|
|
550
|
+
)}
|
|
465
551
|
>
|
|
466
|
-
{
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
<
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
552
|
+
{statusLine}
|
|
553
|
+
{liveHeader && !open && !status
|
|
554
|
+
? liveHeader
|
|
555
|
+
: facets.map(({ facet, result }, index) => (
|
|
556
|
+
<FacetRenderBoundary key={facet.id}>
|
|
557
|
+
<>
|
|
558
|
+
{index > 0 || statusLine ? " · " : null}
|
|
559
|
+
<span aria-label={result.ariaLabel} title={result.title}>
|
|
560
|
+
{result.icon ? (
|
|
561
|
+
<span aria-hidden className="mr-1 inline-flex align-[-0.125em]">
|
|
562
|
+
{result.icon}
|
|
563
|
+
</span>
|
|
564
|
+
) : null}
|
|
565
|
+
{result.content}
|
|
474
566
|
</span>
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
</>
|
|
479
|
-
</FacetRenderBoundary>
|
|
480
|
-
))}
|
|
567
|
+
</>
|
|
568
|
+
</FacetRenderBoundary>
|
|
569
|
+
))}
|
|
481
570
|
{outcome === "failed" && failureText ? (
|
|
482
571
|
<span className="text-og-status-failed"> · {failureText}</span>
|
|
483
572
|
) : null}
|
|
@@ -485,24 +574,28 @@ export function TurnSummary({
|
|
|
485
574
|
<span className="text-og-fg-subtle"> · interrupted</span>
|
|
486
575
|
) : null}
|
|
487
576
|
</span>
|
|
488
|
-
{/*
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
copyable ? "pr-8" : null,
|
|
499
|
-
"opacity-0 group-hover:opacity-100 group-focus-visible:opacity-100",
|
|
500
|
-
"pointer-coarse:opacity-100",
|
|
501
|
-
)}
|
|
502
|
-
>
|
|
503
|
-
{open ? "hide steps" : "show steps"}
|
|
504
|
-
</span>
|
|
577
|
+
{/* A settled exchange reads as a separator above its answer. */}
|
|
578
|
+
{status?.kind === "worked" ? (
|
|
579
|
+
<span aria-hidden className="ml-1 h-px min-w-0 flex-1 bg-og-border" />
|
|
580
|
+
) : null}
|
|
581
|
+
{status && status.kind !== "worked" && (contextCompactionCount ?? 0) > 0 ? (
|
|
582
|
+
<ShrinkIcon
|
|
583
|
+
className="size-3.5 shrink-0"
|
|
584
|
+
aria-label="Context compacted; expand for details"
|
|
585
|
+
/>
|
|
586
|
+
) : null}
|
|
505
587
|
</Collapsible.Trigger>
|
|
588
|
+
{status && !open && status.preview ? (
|
|
589
|
+
// Readable progress under the status line; the line above stays
|
|
590
|
+
// the one disclosure control, so a click here is a mouse shortcut.
|
|
591
|
+
<div
|
|
592
|
+
data-og-exchange-preview=""
|
|
593
|
+
className="flex min-w-0 cursor-pointer flex-col gap-0.5 pb-1 pl-6"
|
|
594
|
+
onClick={() => onOpenChange(true)}
|
|
595
|
+
>
|
|
596
|
+
{status.preview ? <div className="min-w-0">{status.preview}</div> : null}
|
|
597
|
+
</div>
|
|
598
|
+
) : null}
|
|
506
599
|
<Collapsible.Content
|
|
507
600
|
{...(nestSuppressLatch ? { forceMount: true as const } : {})}
|
|
508
601
|
data-og-fold-content=""
|
|
@@ -532,6 +625,58 @@ export function TurnSummary({
|
|
|
532
625
|
);
|
|
533
626
|
}
|
|
534
627
|
|
|
628
|
+
/**
|
|
629
|
+
* "Working · 2m 14s", "Waiting for 2 agents · 3m 5s", or "Worked for 4m 10s";
|
|
630
|
+
* null when a settled span is too short to state.
|
|
631
|
+
*/
|
|
632
|
+
function turnSummaryStatusLine(status: TurnSummaryStatus): ReactNode {
|
|
633
|
+
if (status.kind === "worked") {
|
|
634
|
+
return status.durationMs !== undefined &&
|
|
635
|
+
Number.isFinite(status.durationMs) &&
|
|
636
|
+
status.durationMs >= 1000 ? (
|
|
637
|
+
<span data-og-exchange-status="worked">
|
|
638
|
+
{status.label ?? "Worked for"} {formatElapsed(status.durationMs)}
|
|
639
|
+
</span>
|
|
640
|
+
) : null;
|
|
641
|
+
}
|
|
642
|
+
const label = status.label ?? (status.kind === "working" ? "Working" : "Waiting");
|
|
643
|
+
return (
|
|
644
|
+
<span data-og-exchange-status={status.kind}>
|
|
645
|
+
<span className={status.kind === "working" ? "og-shimmer-text" : undefined}>{label}</span>
|
|
646
|
+
{status.since ? <LiveElapsed since={status.since} /> : null}
|
|
647
|
+
</span>
|
|
648
|
+
);
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
/** A second-resolution clock; unmounts with the live row. */
|
|
652
|
+
function LiveElapsed({ since }: { since: string }) {
|
|
653
|
+
const startedAt = Date.parse(since);
|
|
654
|
+
const [now, setNow] = useState(() => Date.now());
|
|
655
|
+
useEffect(() => {
|
|
656
|
+
const timer = setInterval(() => setNow(Date.now()), 1000);
|
|
657
|
+
return () => clearInterval(timer);
|
|
658
|
+
}, []);
|
|
659
|
+
if (!Number.isFinite(startedAt)) return null;
|
|
660
|
+
return (
|
|
661
|
+
<span className="tabular-nums">{` · ${formatElapsed(Math.max(0, now - startedAt))}`}</span>
|
|
662
|
+
);
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
/** Elapsed wall time with seconds below an hour: "14s", "2m 14s", "1h 05m". */
|
|
666
|
+
export function formatElapsed(durationMs: number): string {
|
|
667
|
+
const totalSeconds = Math.max(0, Math.floor(durationMs / 1000));
|
|
668
|
+
if (totalSeconds < 60) {
|
|
669
|
+
return `${totalSeconds}s`;
|
|
670
|
+
}
|
|
671
|
+
const totalMinutes = Math.floor(totalSeconds / 60);
|
|
672
|
+
if (totalMinutes < 60) {
|
|
673
|
+
const seconds = totalSeconds % 60;
|
|
674
|
+
return seconds ? `${totalMinutes}m ${seconds}s` : `${totalMinutes}m`;
|
|
675
|
+
}
|
|
676
|
+
const hours = Math.floor(totalMinutes / 60);
|
|
677
|
+
return `${hours}h ${String(totalMinutes % 60).padStart(2, "0")}m`;
|
|
678
|
+
}
|
|
679
|
+
|
|
535
680
|
function createTurnSummaryContext(
|
|
536
681
|
items: ActivityItem[],
|
|
537
682
|
outcome: TurnOutcome | undefined,
|
|
@@ -544,10 +689,15 @@ function createTurnSummaryContext(
|
|
|
544
689
|
itemSnapshot.filter((item): item is ToolCallItem => item.kind === "tool-call"),
|
|
545
690
|
);
|
|
546
691
|
const settled = itemSnapshot.every((item) => {
|
|
547
|
-
if (item.kind === "reasoning") {
|
|
692
|
+
if (item.kind === "reasoning" || item.kind === "agent-message") {
|
|
548
693
|
return !item.streaming;
|
|
549
694
|
}
|
|
550
|
-
if (
|
|
695
|
+
if (
|
|
696
|
+
item.kind === "tool-call" ||
|
|
697
|
+
item.kind === "worker" ||
|
|
698
|
+
item.kind === "sandbox" ||
|
|
699
|
+
item.kind === "startup-phase"
|
|
700
|
+
) {
|
|
551
701
|
return item.status !== "running";
|
|
552
702
|
}
|
|
553
703
|
return true;
|
|
@@ -566,9 +716,17 @@ function createTurnSummaryContext(
|
|
|
566
716
|
const BUILT_IN_TURN_SUMMARY_FACETS: readonly TurnSummaryFacet[] = Object.freeze([
|
|
567
717
|
{
|
|
568
718
|
id: "steps",
|
|
569
|
-
summarize: ({ items }) =>
|
|
570
|
-
|
|
571
|
-
|
|
719
|
+
summarize: ({ items }) => {
|
|
720
|
+
// Progress notes narrate steps; they are not steps themselves.
|
|
721
|
+
const count = items.filter(
|
|
722
|
+
(item) => item.kind !== "startup-phase" && item.kind !== "agent-message",
|
|
723
|
+
).length;
|
|
724
|
+
return count
|
|
725
|
+
? { content: `${count} ${count === 1 ? "step" : "steps"}` }
|
|
726
|
+
: items.some((item) => item.kind === "startup-phase")
|
|
727
|
+
? { content: "Preparation" }
|
|
728
|
+
: null;
|
|
729
|
+
},
|
|
572
730
|
},
|
|
573
731
|
{
|
|
574
732
|
id: "files",
|
|
@@ -596,11 +754,17 @@ const BUILT_IN_TURN_SUMMARY_FACETS: readonly TurnSummaryFacet[] = Object.freeze(
|
|
|
596
754
|
summarize: ({ toolCalls }) => {
|
|
597
755
|
let screenshots = 0;
|
|
598
756
|
for (const item of toolCalls) {
|
|
757
|
+
const leaf = mcpToolLeaf(item.name);
|
|
599
758
|
if (
|
|
600
759
|
(rawTypeOf(item) === "computer_call" ||
|
|
601
760
|
item.name === "computer_call" ||
|
|
602
|
-
item.name === "computer_screenshot"
|
|
603
|
-
|
|
761
|
+
item.name === "computer_screenshot" ||
|
|
762
|
+
leaf === "browser_screenshot" ||
|
|
763
|
+
leaf === "browser_observe" ||
|
|
764
|
+
leaf === "browser_act") &&
|
|
765
|
+
(retainedScreenshotMetadata(item.output) !== null ||
|
|
766
|
+
screenshotDataUrl(item.output) !== null ||
|
|
767
|
+
mediaPreviewFact(item.output) !== null)
|
|
604
768
|
) {
|
|
605
769
|
screenshots += 1;
|
|
606
770
|
}
|