@opengeni/react 1.0.1 → 1.0.2-canary.37202341988001
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 +660 -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-SHYKQRNX.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-26ZNDDLZ.js +453 -0
- package/dist/chunk-26ZNDDLZ.js.map +1 -0
- package/dist/chunk-3CTRFMAK.js +359 -0
- package/dist/chunk-3CTRFMAK.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-742CZ3L3.js +481 -0
- package/dist/chunk-742CZ3L3.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-6KLX2RH5.js → chunk-DO544OSV.js} +1075 -79
- package/dist/chunk-DO544OSV.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-HA46CYQK.js → chunk-EESD3PY3.js} +792 -537
- package/dist/chunk-EESD3PY3.js.map +1 -0
- package/dist/{chunk-5UQPNLIO.js → chunk-EN3YTHKR.js} +4117 -3896
- package/dist/chunk-EN3YTHKR.js.map +1 -0
- package/dist/chunk-ERGYJIBB.js +21 -0
- package/dist/chunk-ERGYJIBB.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-GYVRFZDY.js +2733 -0
- package/dist/chunk-GYVRFZDY.js.map +1 -0
- package/dist/{chunk-LLOLUHVG.js → chunk-HDJWDK7W.js} +1358 -2746
- package/dist/chunk-HDJWDK7W.js.map +1 -0
- package/dist/chunk-I7IWRQLN.js +1608 -0
- package/dist/chunk-I7IWRQLN.js.map +1 -0
- package/dist/chunk-IT4BJUGF.js +13055 -0
- package/dist/chunk-IT4BJUGF.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-J6DBS4T3.js +371 -0
- package/dist/chunk-J6DBS4T3.js.map +1 -0
- package/dist/{chunk-B6WPZSTT.js → chunk-JIQYUGVL.js} +1331 -1163
- package/dist/chunk-JIQYUGVL.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-PEI6RANI.js → chunk-PNY3JKBJ.js} +309 -74
- package/dist/chunk-PNY3JKBJ.js.map +1 -0
- package/dist/chunk-RHREZ7BO.js +11 -0
- package/dist/chunk-RHREZ7BO.js.map +1 -0
- package/dist/chunk-RLUSC2WA.js +299 -0
- package/dist/chunk-RLUSC2WA.js.map +1 -0
- package/dist/{chunk-IGC6A2ZI.js → chunk-RSI7XYXL.js} +777 -246
- package/dist/chunk-RSI7XYXL.js.map +1 -0
- package/dist/chunk-SCOTPE2I.js +589 -0
- package/dist/chunk-SCOTPE2I.js.map +1 -0
- package/dist/{chunk-C5ZPSSS5.js → chunk-TKOTKRWY.js} +5 -4
- package/dist/{chunk-C5ZPSSS5.js.map → chunk-TKOTKRWY.js.map} +1 -1
- 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-WGXVEJO5.js +319 -0
- package/dist/chunk-WGXVEJO5.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-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-YM2DE7BQ.js +3124 -0
- package/dist/chunk-YM2DE7BQ.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-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 +58 -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 +89 -0
- package/dist/components/session-list.d.ts +36 -0
- package/dist/components/session-mcp-capability-card.d.ts +41 -0
- package/dist/components/session-proxy-scope.d.ts +21 -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-6SRGWRUX.js +19 -0
- package/dist/computer-viewer-6SRGWRUX.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 +2238 -6201
- 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-HTRIS4KJ.js +117 -0
- package/dist/latest-question-HTRIS4KJ.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-M54ISBMN.js +14 -0
- package/dist/model-policy-picker-menu-M54ISBMN.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-GORZOUUJ.js +20 -0
- package/dist/sandbox-files-GORZOUUJ.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 +34 -3
- package/dist/timeline/types.d.ts +147 -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 +2754 -665
- 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 +338 -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 +526 -0
- package/src/components/session-list.tsx +250 -0
- package/src/components/session-mcp-capability-card.tsx +680 -0
- package/src/components/session-proxy-scope.tsx +92 -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-video-artifact-playback.ts +1 -1
- 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 +4 -3
- 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 +1609 -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 +218 -44
- package/src/timeline/types.ts +192 -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-SHYKQRNX.js.map} +0 -0
|
@@ -1,9 +1,10 @@
|
|
|
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,
|
|
5
5
|
useContext,
|
|
6
6
|
useEffect,
|
|
7
|
+
useLayoutEffect,
|
|
7
8
|
useMemo,
|
|
8
9
|
useRef,
|
|
9
10
|
useState,
|
|
@@ -14,15 +15,18 @@ import { CopyButton } from "../components/copy-button";
|
|
|
14
15
|
import { cn } from "../lib/cn";
|
|
15
16
|
import { MOTION_INSPECT_SCALE } from "../lib/motion-inspect";
|
|
16
17
|
import { useForcedDefaultOpen } from "./disclosure-context";
|
|
18
|
+
import { useTimelineSearchReveal } from "../components/timeline-search";
|
|
17
19
|
import { useEntranceAnimation } from "./entrance";
|
|
18
20
|
import { useFoldMemory, type FoldRestingState } from "./fold-memory";
|
|
19
21
|
import {
|
|
20
22
|
applyPatchOpsFromToolItem,
|
|
21
23
|
isApplyPatch,
|
|
22
24
|
mediaPreviewFact,
|
|
25
|
+
retainedScreenshotMetadata,
|
|
23
26
|
screenshotDataUrl,
|
|
24
27
|
} from "./parsers";
|
|
25
28
|
import { rawTypeOf } from "./registry";
|
|
29
|
+
import { mcpToolLeaf } from "./tool-display-name";
|
|
26
30
|
import type { ActivityItem, ToolCallItem, TurnOutcome } from "./types";
|
|
27
31
|
export type { TurnOutcome } from "./types";
|
|
28
32
|
|
|
@@ -115,16 +119,40 @@ type ReplaceTurnSummaryFacets = Readonly<{
|
|
|
115
119
|
export type TurnSummaryFacetConfiguration = ModifyTurnSummaryFacets | ReplaceTurnSummaryFacets;
|
|
116
120
|
|
|
117
121
|
export type TurnSummaryOptions = Readonly<{
|
|
122
|
+
/**
|
|
123
|
+
* Readable per-turn presentation. Assistant progress stays fully formatted;
|
|
124
|
+
* each turn has its own Working / Worked row and rolling latest step.
|
|
125
|
+
* Ordinary tip-follow and manual scrolling are unchanged.
|
|
126
|
+
*/
|
|
127
|
+
rolling?: boolean;
|
|
118
128
|
facets?: TurnSummaryFacetConfiguration;
|
|
119
129
|
}>;
|
|
120
130
|
|
|
131
|
+
/**
|
|
132
|
+
* Exchange status shown in place of the plain facet line. `working` and
|
|
133
|
+
* `waiting` run a live clock from `since`; `worked` shows the settled span.
|
|
134
|
+
*/
|
|
135
|
+
export type TurnSummaryStatus = Readonly<{
|
|
136
|
+
kind: "working" | "waiting" | "worked";
|
|
137
|
+
/** Replaces the default "Working" / "Waiting" wording. */
|
|
138
|
+
label?: string | undefined;
|
|
139
|
+
/** Live clock start for `working` and `waiting`. */
|
|
140
|
+
since?: string | undefined;
|
|
141
|
+
/** Settled span for `worked`. */
|
|
142
|
+
durationMs?: number | undefined;
|
|
143
|
+
/** Live step preview under the row while it is collapsed. */
|
|
144
|
+
preview?: ReactNode;
|
|
145
|
+
}>;
|
|
146
|
+
|
|
121
147
|
export type TurnSummaryProps = {
|
|
148
|
+
/** Reports the disclosure's actual open state on mount and on every change. */
|
|
149
|
+
onOpenStateChange?: ((open: boolean) => void) | undefined;
|
|
122
150
|
/** The activity items in the turn (used only to compute the facet counts). */
|
|
123
151
|
items: ActivityItem[];
|
|
124
152
|
/**
|
|
125
153
|
* The settled verdict — or absent for a completed CLUSTER of a still-running
|
|
126
|
-
* turn, which folds neutrally
|
|
127
|
-
*
|
|
154
|
+
* turn, which folds neutrally. Only unfinished activity inside this summary
|
|
155
|
+
* animates; the parent turn may still be composing a response elsewhere.
|
|
128
156
|
*/
|
|
129
157
|
outcome?: TurnOutcome | undefined;
|
|
130
158
|
/** A short failure reason shown inline on a failed chip (never hidden). */
|
|
@@ -133,6 +161,7 @@ export type TurnSummaryProps = {
|
|
|
133
161
|
durationMs?: number | undefined;
|
|
134
162
|
/** Start expanded. */
|
|
135
163
|
defaultOpen?: boolean | undefined;
|
|
164
|
+
liveHeader?: ReactNode;
|
|
136
165
|
/**
|
|
137
166
|
* A nested fold — a cluster or sub-turn INSIDE an already-expanded turn. It
|
|
138
167
|
* drops the bordered/filled chip and renders as a plain disclosure node on the
|
|
@@ -170,6 +199,11 @@ export type TurnSummaryProps = {
|
|
|
170
199
|
copyText?: string | undefined;
|
|
171
200
|
/** Adjacent compaction landmark count for the secondary chip facet. */
|
|
172
201
|
contextCompactionCount?: number | undefined;
|
|
202
|
+
/**
|
|
203
|
+
* Exchange status line (compact progress presentation). Replaces the state
|
|
204
|
+
* marker and the duration facet; a settled `worked` row reads as a separator.
|
|
205
|
+
*/
|
|
206
|
+
status?: TurnSummaryStatus | undefined;
|
|
173
207
|
/** The rendered activity rail revealed on expand. */
|
|
174
208
|
children: ReactNode;
|
|
175
209
|
};
|
|
@@ -187,17 +221,21 @@ export function TurnSummary({
|
|
|
187
221
|
failureText,
|
|
188
222
|
durationMs,
|
|
189
223
|
defaultOpen,
|
|
224
|
+
liveHeader,
|
|
190
225
|
bare,
|
|
191
226
|
facets: facetConfiguration,
|
|
192
227
|
settleFold,
|
|
193
228
|
foldKey,
|
|
194
229
|
copyText,
|
|
195
230
|
contextCompactionCount,
|
|
231
|
+
status,
|
|
232
|
+
onOpenStateChange,
|
|
196
233
|
children,
|
|
197
234
|
}: TurnSummaryProps) {
|
|
198
235
|
// An explicit `defaultOpen` always wins; otherwise an ancestor may seed it
|
|
199
236
|
// (screenshot instrumentation); otherwise the turn starts folded.
|
|
200
237
|
const forcedDefaultOpen = useForcedDefaultOpen();
|
|
238
|
+
const searchReveal = useTimelineSearchReveal();
|
|
201
239
|
const foldMemory = useFoldMemory();
|
|
202
240
|
// A remembered resting state outranks author defaults: a fold that already
|
|
203
241
|
// finished its settle collapse (or that the reader closed) mounts closed
|
|
@@ -213,6 +251,19 @@ export function TurnSummary({
|
|
|
213
251
|
const initialSettle = Boolean(settleFold) && !restingOpen && remembered === undefined;
|
|
214
252
|
const [settling, setSettling] = useState(initialSettle);
|
|
215
253
|
const [open, setOpen] = useState(initialSettle ? true : restingOpen);
|
|
254
|
+
const reportOpen = useRef(onOpenStateChange);
|
|
255
|
+
reportOpen.current = onOpenStateChange;
|
|
256
|
+
// Before paint: a listener may need to start motion in the same frame.
|
|
257
|
+
useLayoutEffect(() => {
|
|
258
|
+
reportOpen.current?.(open);
|
|
259
|
+
}, [open]);
|
|
260
|
+
const readerOwnsOpen = useRef(remembered !== undefined);
|
|
261
|
+
useEffect(() => {
|
|
262
|
+
// Readable work can produce primary media or fail after mounting. Reveal
|
|
263
|
+
// that output without remounting existing tool controls, while preserving
|
|
264
|
+
// every explicit reader-owned open/closed choice.
|
|
265
|
+
if (status && defaultOpen && remembered === undefined && !readerOwnsOpen.current) setOpen(true);
|
|
266
|
+
}, [status, defaultOpen, remembered]);
|
|
216
267
|
// While true, a close uses the slow settle collapse. Cleared after that
|
|
217
268
|
// auto-collapse finishes (or on first user interaction) so later manual
|
|
218
269
|
// closes are the fast disclose pair.
|
|
@@ -311,7 +362,20 @@ export function TurnSummary({
|
|
|
311
362
|
}
|
|
312
363
|
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
313
364
|
}, [settleFold]);
|
|
365
|
+
useEffect(() => {
|
|
366
|
+
if (!searchReveal) return;
|
|
367
|
+
clearSettleTimers();
|
|
368
|
+
settleArmedRef.current = false;
|
|
369
|
+
setSettling(false);
|
|
370
|
+
setSettlePhase(false);
|
|
371
|
+
setNestSuppressLatch(false);
|
|
372
|
+
setOpen(true);
|
|
373
|
+
rememberResting("open");
|
|
374
|
+
// Search is an explicit, persistent reader action, not a new fold default.
|
|
375
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
376
|
+
}, [searchReveal]);
|
|
314
377
|
const onOpenChange = (next: boolean) => {
|
|
378
|
+
readerOwnsOpen.current = true;
|
|
315
379
|
// The reader took over — cancel the pending auto-collapse for good.
|
|
316
380
|
// Clear settle CSS phase immediately (fast collapse) but keep nest latch
|
|
317
381
|
// through the disclose window so nested chips stay force-open mid-close
|
|
@@ -364,9 +428,25 @@ export function TurnSummary({
|
|
|
364
428
|
() => resolveTurnSummaryFacets(facetConfiguration),
|
|
365
429
|
[facetConfiguration],
|
|
366
430
|
);
|
|
431
|
+
const statusKind = status?.kind;
|
|
367
432
|
const facets = useMemo(
|
|
368
433
|
() =>
|
|
369
434
|
facetDefinitions.flatMap((facet) => {
|
|
435
|
+
// The status line owns elapsed time; a live line keeps only the step
|
|
436
|
+
// count (plus host facets) so it stays one short line.
|
|
437
|
+
if (
|
|
438
|
+
statusKind &&
|
|
439
|
+
(facet.id === "duration" ||
|
|
440
|
+
(facet === BUILT_IN_TURN_SUMMARY_FACETS[0] &&
|
|
441
|
+
context.items.every(
|
|
442
|
+
(item) => item.kind === "startup-phase" || item.kind === "agent-message",
|
|
443
|
+
)) ||
|
|
444
|
+
(statusKind !== "worked" &&
|
|
445
|
+
facet.id !== "steps" &&
|
|
446
|
+
BUILT_IN_TURN_SUMMARY_FACET_IDS.includes(facet.id as BuiltInTurnSummaryFacetId)))
|
|
447
|
+
) {
|
|
448
|
+
return [];
|
|
449
|
+
}
|
|
370
450
|
try {
|
|
371
451
|
const result = facet.summarize(context);
|
|
372
452
|
return result && hasFacetContent(result.content) ? [{ facet, result }] : [];
|
|
@@ -376,7 +456,7 @@ export function TurnSummary({
|
|
|
376
456
|
return [];
|
|
377
457
|
}
|
|
378
458
|
}),
|
|
379
|
-
[context, facetDefinitions],
|
|
459
|
+
[context, facetDefinitions, statusKind],
|
|
380
460
|
);
|
|
381
461
|
|
|
382
462
|
// Live open shell: keep the chip in-flow (so settle never inserts layout)
|
|
@@ -389,6 +469,8 @@ export function TurnSummary({
|
|
|
389
469
|
// Nested chips stay force-open for this window (stable height).
|
|
390
470
|
const settleChrome = settling || settlePhase || nestSuppressLatch;
|
|
391
471
|
|
|
472
|
+
const statusLine = status ? turnSummaryStatusLine(status) : null;
|
|
473
|
+
|
|
392
474
|
// Copy only on the collapsed chip — when open, per-message copy is enough
|
|
393
475
|
// and a second control on the summary row felt crowded / off.
|
|
394
476
|
const copyable = Boolean(
|
|
@@ -399,6 +481,7 @@ export function TurnSummary({
|
|
|
399
481
|
<TurnSettleChromeContext.Provider value={settleChrome}>
|
|
400
482
|
<div className={cn(copyable && "group/copy relative")}>
|
|
401
483
|
<Collapsible.Root
|
|
484
|
+
data-og-work-section={bare ? undefined : ""}
|
|
402
485
|
open={open}
|
|
403
486
|
onOpenChange={onOpenChange}
|
|
404
487
|
// History-only entrance. Never toggle this on after mount — see
|
|
@@ -406,7 +489,12 @@ export function TurnSummary({
|
|
|
406
489
|
className={allowEnterAnimation && !liveShell ? "animate-og-enter" : undefined}
|
|
407
490
|
>
|
|
408
491
|
<Collapsible.Trigger
|
|
492
|
+
data-og-work-header={bare ? "nested" : "outer"}
|
|
409
493
|
className={cn(
|
|
494
|
+
// The section, not the viewport, bounds this sticky row. Content
|
|
495
|
+
// is a sibling: its disclosure overflow never traps the header.
|
|
496
|
+
// Nested rail folds must never stack additional sticky headers.
|
|
497
|
+
!bare && open && "sticky top-[var(--og-work-header-top,0px)] z-10 bg-og-bg",
|
|
410
498
|
settling && "animate-og-settle-chip",
|
|
411
499
|
// Top-level turn fold and (when used) nested cluster folds render as
|
|
412
500
|
// FLAT rail rows — chevron + glyph + facets on the page background, no
|
|
@@ -428,6 +516,8 @@ export function TurnSummary({
|
|
|
428
516
|
? "hover:bg-og-status-failed/[0.06] hover:text-og-fg"
|
|
429
517
|
: "hover:bg-og-surface-1 hover:text-og-fg",
|
|
430
518
|
liveShell && "text-og-fg-subtle",
|
|
519
|
+
// Phones hide the hint, so keep the copy control clear of the separator.
|
|
520
|
+
status && copyable && "max-sm:pr-10",
|
|
431
521
|
)}
|
|
432
522
|
>
|
|
433
523
|
{/* Disclosure grammar matches the rows: chevron leads (far left), then any
|
|
@@ -443,7 +533,9 @@ export function TurnSummary({
|
|
|
443
533
|
/>
|
|
444
534
|
{/* Completion is the quiet default and needs no repeated glyph. Failed,
|
|
445
535
|
cancelled, and still-running folds retain a visible state marker. */}
|
|
446
|
-
{
|
|
536
|
+
{status ||
|
|
537
|
+
outcome === "complete" ||
|
|
538
|
+
(!outcome && (liveHeader || context.settled)) ? null : (
|
|
447
539
|
<span
|
|
448
540
|
className={cn(
|
|
449
541
|
"inline-flex shrink-0 items-center justify-center",
|
|
@@ -461,23 +553,30 @@ export function TurnSummary({
|
|
|
461
553
|
</span>
|
|
462
554
|
)}
|
|
463
555
|
<span
|
|
464
|
-
className={cn(
|
|
556
|
+
className={cn(
|
|
557
|
+
"min-w-0 truncate",
|
|
558
|
+
status?.kind === "worked" ? "shrink" : "flex-1",
|
|
559
|
+
bare ? "text-og-sm" : "text-og-fg-muted",
|
|
560
|
+
)}
|
|
465
561
|
>
|
|
466
|
-
{
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
<
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
562
|
+
{statusLine}
|
|
563
|
+
{liveHeader && !open && !status
|
|
564
|
+
? liveHeader
|
|
565
|
+
: facets.map(({ facet, result }, index) => (
|
|
566
|
+
<FacetRenderBoundary key={facet.id}>
|
|
567
|
+
<>
|
|
568
|
+
{index > 0 || statusLine ? " · " : null}
|
|
569
|
+
<span aria-label={result.ariaLabel} title={result.title}>
|
|
570
|
+
{result.icon ? (
|
|
571
|
+
<span aria-hidden className="mr-1 inline-flex align-[-0.125em]">
|
|
572
|
+
{result.icon}
|
|
573
|
+
</span>
|
|
574
|
+
) : null}
|
|
575
|
+
{result.content}
|
|
474
576
|
</span>
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
</>
|
|
479
|
-
</FacetRenderBoundary>
|
|
480
|
-
))}
|
|
577
|
+
</>
|
|
578
|
+
</FacetRenderBoundary>
|
|
579
|
+
))}
|
|
481
580
|
{outcome === "failed" && failureText ? (
|
|
482
581
|
<span className="text-og-status-failed"> · {failureText}</span>
|
|
483
582
|
) : null}
|
|
@@ -485,24 +584,28 @@ export function TurnSummary({
|
|
|
485
584
|
<span className="text-og-fg-subtle"> · interrupted</span>
|
|
486
585
|
) : null}
|
|
487
586
|
</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>
|
|
587
|
+
{/* A settled exchange reads as a separator above its answer. */}
|
|
588
|
+
{status?.kind === "worked" ? (
|
|
589
|
+
<span aria-hidden className="ml-1 h-px min-w-0 flex-1 bg-og-border" />
|
|
590
|
+
) : null}
|
|
591
|
+
{status && status.kind !== "worked" && (contextCompactionCount ?? 0) > 0 ? (
|
|
592
|
+
<ShrinkIcon
|
|
593
|
+
className="size-3.5 shrink-0"
|
|
594
|
+
aria-label="Context compacted; expand for details"
|
|
595
|
+
/>
|
|
596
|
+
) : null}
|
|
505
597
|
</Collapsible.Trigger>
|
|
598
|
+
{status && !open && status.preview ? (
|
|
599
|
+
// Readable progress under the status line; the line above stays
|
|
600
|
+
// the one disclosure control, so a click here is a mouse shortcut.
|
|
601
|
+
<div
|
|
602
|
+
data-og-exchange-preview=""
|
|
603
|
+
className="flex min-w-0 cursor-pointer flex-col gap-0.5 pb-1 pl-6"
|
|
604
|
+
onClick={() => onOpenChange(true)}
|
|
605
|
+
>
|
|
606
|
+
{status.preview ? <div className="min-w-0">{status.preview}</div> : null}
|
|
607
|
+
</div>
|
|
608
|
+
) : null}
|
|
506
609
|
<Collapsible.Content
|
|
507
610
|
{...(nestSuppressLatch ? { forceMount: true as const } : {})}
|
|
508
611
|
data-og-fold-content=""
|
|
@@ -532,6 +635,58 @@ export function TurnSummary({
|
|
|
532
635
|
);
|
|
533
636
|
}
|
|
534
637
|
|
|
638
|
+
/**
|
|
639
|
+
* "Working · 2m 14s", "Waiting for 2 agents · 3m 5s", or "Worked for 4m 10s";
|
|
640
|
+
* null when a settled span is too short to state.
|
|
641
|
+
*/
|
|
642
|
+
function turnSummaryStatusLine(status: TurnSummaryStatus): ReactNode {
|
|
643
|
+
if (status.kind === "worked") {
|
|
644
|
+
return status.durationMs !== undefined &&
|
|
645
|
+
Number.isFinite(status.durationMs) &&
|
|
646
|
+
status.durationMs >= 1000 ? (
|
|
647
|
+
<span data-og-exchange-status="worked">
|
|
648
|
+
{status.label ?? "Worked for"} {formatElapsed(status.durationMs)}
|
|
649
|
+
</span>
|
|
650
|
+
) : null;
|
|
651
|
+
}
|
|
652
|
+
const label = status.label ?? (status.kind === "working" ? "Working" : "Waiting");
|
|
653
|
+
return (
|
|
654
|
+
<span data-og-exchange-status={status.kind}>
|
|
655
|
+
<span className={status.kind === "working" ? "og-shimmer-text" : undefined}>{label}</span>
|
|
656
|
+
{status.since ? <LiveElapsed since={status.since} /> : null}
|
|
657
|
+
</span>
|
|
658
|
+
);
|
|
659
|
+
}
|
|
660
|
+
|
|
661
|
+
/** A second-resolution clock; unmounts with the live row. */
|
|
662
|
+
function LiveElapsed({ since }: { since: string }) {
|
|
663
|
+
const startedAt = Date.parse(since);
|
|
664
|
+
const [now, setNow] = useState(() => Date.now());
|
|
665
|
+
useEffect(() => {
|
|
666
|
+
const timer = setInterval(() => setNow(Date.now()), 1000);
|
|
667
|
+
return () => clearInterval(timer);
|
|
668
|
+
}, []);
|
|
669
|
+
if (!Number.isFinite(startedAt)) return null;
|
|
670
|
+
return (
|
|
671
|
+
<span className="tabular-nums">{` · ${formatElapsed(Math.max(0, now - startedAt))}`}</span>
|
|
672
|
+
);
|
|
673
|
+
}
|
|
674
|
+
|
|
675
|
+
/** Elapsed wall time with seconds below an hour: "14s", "2m 14s", "1h 05m". */
|
|
676
|
+
export function formatElapsed(durationMs: number): string {
|
|
677
|
+
const totalSeconds = Math.max(0, Math.floor(durationMs / 1000));
|
|
678
|
+
if (totalSeconds < 60) {
|
|
679
|
+
return `${totalSeconds}s`;
|
|
680
|
+
}
|
|
681
|
+
const totalMinutes = Math.floor(totalSeconds / 60);
|
|
682
|
+
if (totalMinutes < 60) {
|
|
683
|
+
const seconds = totalSeconds % 60;
|
|
684
|
+
return seconds ? `${totalMinutes}m ${seconds}s` : `${totalMinutes}m`;
|
|
685
|
+
}
|
|
686
|
+
const hours = Math.floor(totalMinutes / 60);
|
|
687
|
+
return `${hours}h ${String(totalMinutes % 60).padStart(2, "0")}m`;
|
|
688
|
+
}
|
|
689
|
+
|
|
535
690
|
function createTurnSummaryContext(
|
|
536
691
|
items: ActivityItem[],
|
|
537
692
|
outcome: TurnOutcome | undefined,
|
|
@@ -544,10 +699,15 @@ function createTurnSummaryContext(
|
|
|
544
699
|
itemSnapshot.filter((item): item is ToolCallItem => item.kind === "tool-call"),
|
|
545
700
|
);
|
|
546
701
|
const settled = itemSnapshot.every((item) => {
|
|
547
|
-
if (item.kind === "reasoning") {
|
|
702
|
+
if (item.kind === "reasoning" || item.kind === "agent-message") {
|
|
548
703
|
return !item.streaming;
|
|
549
704
|
}
|
|
550
|
-
if (
|
|
705
|
+
if (
|
|
706
|
+
item.kind === "tool-call" ||
|
|
707
|
+
item.kind === "worker" ||
|
|
708
|
+
item.kind === "sandbox" ||
|
|
709
|
+
item.kind === "startup-phase"
|
|
710
|
+
) {
|
|
551
711
|
return item.status !== "running";
|
|
552
712
|
}
|
|
553
713
|
return true;
|
|
@@ -566,9 +726,17 @@ function createTurnSummaryContext(
|
|
|
566
726
|
const BUILT_IN_TURN_SUMMARY_FACETS: readonly TurnSummaryFacet[] = Object.freeze([
|
|
567
727
|
{
|
|
568
728
|
id: "steps",
|
|
569
|
-
summarize: ({ items }) =>
|
|
570
|
-
|
|
571
|
-
|
|
729
|
+
summarize: ({ items }) => {
|
|
730
|
+
// Progress notes narrate steps; they are not steps themselves.
|
|
731
|
+
const count = items.filter(
|
|
732
|
+
(item) => item.kind !== "startup-phase" && item.kind !== "agent-message",
|
|
733
|
+
).length;
|
|
734
|
+
return count
|
|
735
|
+
? { content: `${count} ${count === 1 ? "step" : "steps"}` }
|
|
736
|
+
: items.some((item) => item.kind === "startup-phase")
|
|
737
|
+
? { content: "Preparation" }
|
|
738
|
+
: null;
|
|
739
|
+
},
|
|
572
740
|
},
|
|
573
741
|
{
|
|
574
742
|
id: "files",
|
|
@@ -596,11 +764,17 @@ const BUILT_IN_TURN_SUMMARY_FACETS: readonly TurnSummaryFacet[] = Object.freeze(
|
|
|
596
764
|
summarize: ({ toolCalls }) => {
|
|
597
765
|
let screenshots = 0;
|
|
598
766
|
for (const item of toolCalls) {
|
|
767
|
+
const leaf = mcpToolLeaf(item.name);
|
|
599
768
|
if (
|
|
600
769
|
(rawTypeOf(item) === "computer_call" ||
|
|
601
770
|
item.name === "computer_call" ||
|
|
602
|
-
item.name === "computer_screenshot"
|
|
603
|
-
|
|
771
|
+
item.name === "computer_screenshot" ||
|
|
772
|
+
leaf === "browser_screenshot" ||
|
|
773
|
+
leaf === "browser_observe" ||
|
|
774
|
+
leaf === "browser_act") &&
|
|
775
|
+
(retainedScreenshotMetadata(item.output) !== null ||
|
|
776
|
+
screenshotDataUrl(item.output) !== null ||
|
|
777
|
+
mediaPreviewFact(item.output) !== null)
|
|
604
778
|
) {
|
|
605
779
|
screenshots += 1;
|
|
606
780
|
}
|