@opengeni/react 3.1.0 → 3.1.3-canary.38890816741001
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 +769 -22
- package/dist/accounts.js +89 -11
- package/dist/accounts.js.map +1 -1
- package/dist/approvals.d.ts +2 -1
- package/dist/artifacts-document.js +5 -3
- package/dist/artifacts-presentation.js +5 -3
- package/dist/artifacts-spreadsheet.d.ts +1 -1
- package/dist/artifacts-spreadsheet.js +5 -3
- package/dist/artifacts.d.ts +5 -1
- package/dist/artifacts.js +536 -42
- package/dist/artifacts.js.map +1 -1
- package/dist/browser-viewer-ZWR6MWJ7.js +19 -0
- package/dist/capability-catalog-row.d.ts +20 -0
- package/dist/capability-logo-fallback.d.ts +3 -0
- package/dist/chat-interactive-block-BO2IWXVK.js +14 -0
- package/dist/chunk-2DDJ6YH6.js +41 -0
- package/dist/chunk-2DDJ6YH6.js.map +1 -0
- package/dist/chunk-2HVLQ26H.js +183 -0
- package/dist/chunk-2HVLQ26H.js.map +1 -0
- package/dist/{chunk-RGALCTWO.js → chunk-2I6R3GCZ.js} +4285 -3980
- package/dist/chunk-2I6R3GCZ.js.map +1 -0
- package/dist/{chunk-D3UIAJKY.js → chunk-2SFFYIH3.js} +1179 -166
- package/dist/chunk-2SFFYIH3.js.map +1 -0
- package/dist/chunk-3PVDYTTB.js +24 -0
- package/dist/chunk-3PVDYTTB.js.map +1 -0
- package/dist/chunk-3UZCWK46.js +298 -0
- package/dist/chunk-3UZCWK46.js.map +1 -0
- package/dist/chunk-47CKUXTW.js +293 -0
- package/dist/chunk-47CKUXTW.js.map +1 -0
- package/dist/chunk-4QYP6QUI.js +109 -0
- package/dist/chunk-4QYP6QUI.js.map +1 -0
- package/dist/chunk-5EY26VZ7.js +1053 -0
- package/dist/chunk-5EY26VZ7.js.map +1 -0
- package/dist/chunk-5I4VRWBB.js +56 -0
- package/dist/chunk-5I4VRWBB.js.map +1 -0
- package/dist/chunk-5WOR7UCL.js +191 -0
- package/dist/chunk-5WOR7UCL.js.map +1 -0
- package/dist/chunk-5YJLGOM5.js +51 -0
- package/dist/chunk-5YJLGOM5.js.map +1 -0
- package/dist/chunk-6JFN3OWG.js +386 -0
- package/dist/chunk-6JFN3OWG.js.map +1 -0
- package/dist/chunk-7QJT5O4S.js +35 -0
- package/dist/chunk-7QJT5O4S.js.map +1 -0
- package/dist/chunk-A55KV72M.js +402 -0
- package/dist/chunk-A55KV72M.js.map +1 -0
- package/dist/chunk-ADWCLI4G.js +2028 -0
- package/dist/chunk-ADWCLI4G.js.map +1 -0
- package/dist/chunk-B27E3V37.js +29 -0
- package/dist/chunk-B27E3V37.js.map +1 -0
- package/dist/chunk-B7TC2A33.js +83 -0
- package/dist/chunk-B7TC2A33.js.map +1 -0
- package/dist/chunk-BLL56F7R.js +385 -0
- package/dist/chunk-BLL56F7R.js.map +1 -0
- package/dist/chunk-BOFEQC6K.js +162 -0
- package/dist/chunk-BOFEQC6K.js.map +1 -0
- package/dist/chunk-CM7LVUKC.js +35 -0
- package/dist/chunk-CM7LVUKC.js.map +1 -0
- package/dist/chunk-CORUP6JB.js +122 -0
- package/dist/chunk-CORUP6JB.js.map +1 -0
- package/dist/chunk-CSX5FFKZ.js +35 -0
- package/dist/chunk-CSX5FFKZ.js.map +1 -0
- package/dist/chunk-EGVHJKGJ.js +3125 -0
- package/dist/chunk-EGVHJKGJ.js.map +1 -0
- package/dist/{chunk-NEXLLTP4.js → chunk-G76LSA76.js} +6 -5
- package/dist/chunk-G76LSA76.js.map +1 -0
- package/dist/{chunk-PEI6RANI.js → chunk-GQMRL52F.js} +311 -75
- package/dist/chunk-GQMRL52F.js.map +1 -0
- package/dist/{chunk-ELIYWBZR.js → chunk-GUUXOISA.js} +1113 -457
- package/dist/chunk-GUUXOISA.js.map +1 -0
- package/dist/{chunk-HUIKIDM5.js → chunk-I7X2P4FU.js} +225 -116
- package/dist/chunk-I7X2P4FU.js.map +1 -0
- package/dist/chunk-IGFZFLI2.js +1390 -0
- package/dist/chunk-IGFZFLI2.js.map +1 -0
- package/dist/{chunk-4MDLEHXL.js → chunk-IMSUVYQB.js} +26 -13
- package/dist/chunk-IMSUVYQB.js.map +1 -0
- package/dist/chunk-IOYHDEP3.js +38 -0
- package/dist/chunk-IOYHDEP3.js.map +1 -0
- package/dist/chunk-IZV5FTJC.js +55 -0
- package/dist/chunk-IZV5FTJC.js.map +1 -0
- package/dist/chunk-KF33GTWN.js +343 -0
- package/dist/chunk-KF33GTWN.js.map +1 -0
- package/dist/chunk-KSGQ5ODA.js +457 -0
- package/dist/chunk-KSGQ5ODA.js.map +1 -0
- package/dist/{chunk-OAM4WAAM.js → chunk-KZC6QRNR.js} +1513 -697
- package/dist/chunk-KZC6QRNR.js.map +1 -0
- package/dist/chunk-LJUMYUBO.js +218 -0
- package/dist/chunk-LJUMYUBO.js.map +1 -0
- package/dist/chunk-LSW2OJVV.js +380 -0
- package/dist/chunk-LSW2OJVV.js.map +1 -0
- package/dist/chunk-M357MHH3.js +2 -0
- package/dist/chunk-M357MHH3.js.map +1 -0
- package/dist/chunk-MK2TQO4Y.js +24 -0
- package/dist/chunk-MK2TQO4Y.js.map +1 -0
- package/dist/chunk-N7S72EXK.js +25 -0
- package/dist/chunk-N7S72EXK.js.map +1 -0
- package/dist/{chunk-XXWH2JLC.js → chunk-NKMYZFHA.js} +616 -621
- package/dist/chunk-NKMYZFHA.js.map +1 -0
- package/dist/chunk-NX4ADH73.js +14 -0
- package/dist/chunk-NX4ADH73.js.map +1 -0
- package/dist/chunk-O7F6UJO4.js +71 -0
- package/dist/chunk-O7F6UJO4.js.map +1 -0
- package/dist/chunk-OVB5WIG5.js +14064 -0
- package/dist/chunk-OVB5WIG5.js.map +1 -0
- package/dist/chunk-OYQQJL3J.js +16 -0
- package/dist/chunk-OYQQJL3J.js.map +1 -0
- package/dist/{chunk-H5YGYNXS.js → chunk-P4BNUO57.js} +60 -17
- package/dist/chunk-P4BNUO57.js.map +1 -0
- package/dist/{chunk-JVYQRRC4.js → chunk-PEHTX3V7.js} +21 -1
- package/dist/chunk-PEHTX3V7.js.map +1 -0
- package/dist/chunk-PMV53IMM.js +26 -0
- package/dist/chunk-PMV53IMM.js.map +1 -0
- package/dist/{chunk-KCGXPP5V.js → chunk-PYEOPA4M.js} +13 -7
- package/dist/chunk-PYEOPA4M.js.map +1 -0
- package/dist/{chunk-KZ73RL76.js → chunk-QHUE7E4N.js} +8 -3
- package/dist/chunk-QHUE7E4N.js.map +1 -0
- package/dist/chunk-QV3DJVRZ.js +11 -0
- package/dist/chunk-QV3DJVRZ.js.map +1 -0
- package/dist/chunk-R5SBNG7S.js +810 -0
- package/dist/chunk-R5SBNG7S.js.map +1 -0
- package/dist/chunk-RI42H5IU.js +326 -0
- package/dist/chunk-RI42H5IU.js.map +1 -0
- package/dist/chunk-S2QH6EZ5.js +211 -0
- package/dist/chunk-S2QH6EZ5.js.map +1 -0
- package/dist/chunk-SHLZMAJN.js +304 -0
- package/dist/chunk-SHLZMAJN.js.map +1 -0
- package/dist/chunk-TGXK4BAZ.js +293 -0
- package/dist/chunk-TGXK4BAZ.js.map +1 -0
- package/dist/{chunk-5YK2ZDIG.js → chunk-TNEZNMSN.js} +4 -10
- package/dist/chunk-TNEZNMSN.js.map +1 -0
- package/dist/{chunk-22KP6LR5.js → chunk-TXS65BB2.js} +3 -1
- package/dist/{chunk-22KP6LR5.js.map → chunk-TXS65BB2.js.map} +1 -1
- package/dist/chunk-UNJPZGNK.js +63 -0
- package/dist/chunk-UNJPZGNK.js.map +1 -0
- package/dist/{chunk-MZ2G2XBA.js → chunk-V5ZUJT2T.js} +205 -45
- package/dist/chunk-V5ZUJT2T.js.map +1 -0
- package/dist/chunk-VIUEOHXY.js +394 -0
- package/dist/chunk-VIUEOHXY.js.map +1 -0
- package/dist/chunk-WIUKB3LD.js +1911 -0
- package/dist/chunk-WIUKB3LD.js.map +1 -0
- package/dist/{chunk-ICA6R6TW.js → chunk-WNN7NO2N.js} +1451 -355
- package/dist/chunk-WNN7NO2N.js.map +1 -0
- package/dist/{chunk-YJFGAFBD.js → chunk-X5UVUIMF.js} +1892 -1223
- package/dist/chunk-X5UVUIMF.js.map +1 -0
- package/dist/chunk-XDA5QJE7.js +402 -0
- package/dist/chunk-XDA5QJE7.js.map +1 -0
- package/dist/{chunk-VZTQ73XT.js → chunk-XEA5BCMA.js} +3 -1
- package/dist/{chunk-VZTQ73XT.js.map → chunk-XEA5BCMA.js.map} +1 -1
- package/dist/chunk-XHF7OYAN.js +1150 -0
- package/dist/chunk-XHF7OYAN.js.map +1 -0
- package/dist/chunk-YSRBFJMQ.js +43 -0
- package/dist/chunk-YSRBFJMQ.js.map +1 -0
- package/dist/chunk-ZOZAPAUO.js +174 -0
- package/dist/chunk-ZOZAPAUO.js.map +1 -0
- package/dist/chunk-ZQV5W7YC.js +809 -0
- package/dist/chunk-ZQV5W7YC.js.map +1 -0
- package/dist/chunk-ZUWF4NF7.js +13 -0
- package/dist/chunk-ZUWF4NF7.js.map +1 -0
- package/dist/client.d.ts +16 -7
- package/dist/clipboard.js +3 -1
- package/dist/commands/types.d.ts +2 -0
- package/dist/components/anthropic-mark.d.ts +3 -0
- package/dist/components/approval-surface.d.ts +19 -6
- package/dist/components/artifacts/artifact-chrome.d.ts +120 -0
- package/dist/components/artifacts/artifact-sandbox.d.ts +30 -0
- package/dist/components/artifacts/artifact-surface.d.ts +4 -2
- 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 +48 -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 +8 -3
- package/dist/components/artifacts/index.d.ts +9 -2
- 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 +23 -3
- package/dist/components/artifacts/session-artifact-viewer.d.ts +39 -0
- package/dist/components/artifacts/site-view.d.ts +26 -0
- package/dist/components/artifacts/spreadsheet-command-queue.d.ts +20 -0
- package/dist/components/artifacts/spreadsheet-download.d.ts +7 -0
- package/dist/components/artifacts/spreadsheet-general-display.d.ts +24 -0
- package/dist/components/artifacts/spreadsheet-grid.d.ts +10 -3
- package/dist/components/artifacts/spreadsheet-resize.d.ts +50 -0
- package/dist/components/artifacts/spreadsheet-submissions.d.ts +9 -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 +11 -2
- package/dist/components/chat-composer.d.ts +21 -3
- package/dist/components/child-session-link.d.ts +9 -0
- package/dist/components/claude-mark.d.ts +3 -0
- package/dist/components/code-editor.d.ts +1 -4
- package/dist/components/composer-transcription-control.d.ts +7 -0
- package/dist/components/composer.d.ts +34 -67
- package/dist/components/computer-viewer.d.ts +1 -1
- package/dist/components/copy-button.d.ts +3 -1
- package/dist/components/desktop-viewer.d.ts +1 -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 +28 -32
- package/dist/components/human-input-surface.d.ts +7 -2
- package/dist/components/linkified-text.d.ts +18 -0
- package/dist/components/machine-input-display.d.ts +22 -1
- package/dist/components/machines/agent-status-icon.d.ts +6 -0
- package/dist/components/machines/machine-detail.d.ts +7 -1
- package/dist/components/machines/machine-status.d.ts +48 -0
- package/dist/components/markdown-table-layout.d.ts +18 -0
- package/dist/components/markdown.d.ts +37 -4
- package/dist/components/message-timeline.d.ts +86 -7
- 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 +41 -25
- package/dist/components/new-conversation.d.ts +32 -0
- package/dist/components/open-geni-chat.d.ts +73 -0
- package/dist/components/open-geni-links.d.ts +68 -0
- package/dist/components/openrouter-mark.d.ts +6 -0
- package/dist/components/opper-mark.d.ts +7 -0
- package/dist/components/preview-loading.d.ts +2 -0
- package/dist/components/provider-recovery-notice.d.ts +16 -0
- package/dist/components/queue-item-content.d.ts +9 -0
- package/dist/components/rehype-secret-refs.d.ts +23 -0
- package/dist/components/remark-soft-line-breaks.d.ts +38 -0
- package/dist/components/sandbox-files.d.ts +3 -1
- package/dist/components/sandbox-workspace.d.ts +18 -0
- package/dist/components/secret-question-field.d.ts +31 -0
- package/dist/components/secret-ref-chip.d.ts +35 -0
- package/dist/components/session-capability-frame.d.ts +37 -0
- package/dist/components/session-chrome.d.ts +57 -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 +157 -0
- package/dist/components/session-list.d.ts +39 -0
- package/dist/components/session-mcp-capability-card.d.ts +41 -0
- package/dist/components/session-proxy-scope.d.ts +35 -0
- package/dist/components/session-status.d.ts +4 -1
- package/dist/components/session-usage-limit-notice.d.ts +39 -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/tool-action-review.d.ts +47 -0
- package/dist/components/tool-review-history.d.ts +25 -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/composer-messages.d.ts +74 -0
- package/dist/composer-messages.js +9 -0
- package/dist/composer-messages.js.map +1 -0
- package/dist/composer-voice-events.d.ts +8 -0
- package/dist/composer.d.ts +5 -4
- package/dist/composer.js +26 -13
- package/dist/computer-viewer-GMLDXPON.js +20 -0
- package/dist/computer-viewer-GMLDXPON.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 +18 -0
- package/dist/connect.d.ts +21 -0
- package/dist/connect.js +2149 -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 +27 -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 +15 -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 +22 -0
- package/dist/editor.js.map +1 -0
- package/dist/embedded-new-voice-OCRNT6U5.js +18 -0
- package/dist/embedded-new-voice-OCRNT6U5.js.map +1 -0
- package/dist/embedded-voice-RPHPYVBT.js +18 -0
- package/dist/embedded-voice-RPHPYVBT.js.map +1 -0
- package/dist/{fleet-decision-row-GGCAT4E4.js → fleet-decision-row-SI63O5V4.js} +4 -1
- package/dist/fleet-decision-row-SI63O5V4.js.map +1 -0
- package/dist/hooks/latest-question.d.ts +25 -0
- package/dist/hooks/shared-machines-list.d.ts +4 -0
- package/dist/hooks/shared-query.d.ts +113 -0
- package/dist/hooks/use-attached-browsers.d.ts +1 -1
- package/dist/hooks/use-auth-runs.d.ts +1 -4
- package/dist/hooks/use-available-models.d.ts +1 -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-client-config-flags.d.ts +49 -0
- package/dist/hooks/use-codex-accounts.d.ts +59 -10
- package/dist/hooks/use-composer.d.ts +24 -2
- 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 +4 -0
- package/dist/hooks/use-connect.d.ts +23 -0
- package/dist/hooks/use-desktop-stream.d.ts +1 -1
- package/dist/hooks/use-file-attachments.d.ts +12 -0
- package/dist/hooks/use-goal.d.ts +2 -1
- package/dist/hooks/use-last-started-turn-policy.d.ts +5 -1
- package/dist/hooks/use-new-conversation.d.ts +56 -0
- package/dist/hooks/use-new-session-draft.d.ts +74 -0
- package/dist/hooks/use-realtime-voice-models.d.ts +7 -0
- package/dist/hooks/use-sandbox-files.d.ts +4 -1
- package/dist/hooks/use-session-conversation.d.ts +49 -0
- package/dist/hooks/use-session-events.d.ts +28 -7
- package/dist/hooks/use-session-mcp-approval-policy.d.ts +2 -2
- package/dist/hooks/use-session-model-account.d.ts +48 -0
- package/dist/hooks/use-supergrok-accounts.d.ts +7 -1
- package/dist/hooks/use-terminal-stream.d.ts +11 -5
- package/dist/hooks/use-usage.d.ts +40 -0
- package/dist/hooks/use-vaults.d.ts +53 -0
- package/dist/hooks/use-voice-input.d.ts +8 -1
- package/dist/hooks/use-workspace-edit.d.ts +4 -0
- package/dist/hooks/use-workspace-sessions.d.ts +22 -5
- package/dist/human-input-model.d.ts +122 -0
- package/dist/identity-link-accounts.d.ts +11 -0
- package/dist/identity-link-consent.d.ts +18 -0
- package/dist/index.d.ts +82 -20
- package/dist/index.js +2350 -6605
- package/dist/index.js.map +1 -1
- package/dist/interaction.d.ts +1 -1
- package/dist/interaction.js +14 -24
- package/dist/interaction.js.map +1 -1
- package/dist/latest-question-R77KWSUP.js +118 -0
- package/dist/latest-question-R77KWSUP.js.map +1 -0
- package/dist/lib/clipboard.d.ts +7 -0
- package/dist/lib/error-message.d.ts +7 -0
- package/dist/lib/format.d.ts +58 -4
- package/dist/lib/host-theme.d.ts +77 -0
- package/dist/lib/interaction-errors.d.ts +3 -0
- package/dist/lib/menu-styles.d.ts +22 -0
- package/dist/lib/notify-observer.d.ts +2 -0
- package/dist/lib/pierre-diffs-loader.d.ts +20 -0
- package/dist/lib/provider-recovery.d.ts +55 -0
- package/dist/lib/scrollbars.d.ts +11 -0
- package/dist/lib/terminal-input-readiness.d.ts +11 -0
- package/dist/lib/transient-retry.d.ts +25 -0
- package/dist/lib/workbench-peers.d.ts +36 -0
- package/dist/lib/xterm-theme.d.ts +7 -5
- package/dist/machines.js +9 -5
- package/dist/markdown-table-layout-3PV2UAAH.js +113 -0
- package/dist/markdown-table-layout-3PV2UAAH.js.map +1 -0
- package/dist/mcp-connection-status.d.ts +14 -0
- package/dist/model-mark-paths.d.ts +34 -0
- package/dist/model-mark-paths.js +16 -0
- package/dist/model-mark-paths.js.map +1 -0
- package/dist/model-picker-model.d.ts +111 -0
- package/dist/model-picker-model.js +25 -0
- package/dist/model-picker-model.js.map +1 -0
- package/dist/model-policy-picker-menu-7GJ5URPR.js +17 -0
- package/dist/model-policy-picker-menu-7GJ5URPR.js.map +1 -0
- package/dist/model-policy.d.ts +30 -3
- package/dist/model-policy.js +14 -1
- package/dist/native-previews.d.ts +28 -0
- package/dist/native-previews.js +82 -0
- package/dist/native-previews.js.map +1 -0
- package/dist/new-session-draft.d.ts +7 -0
- package/dist/new-session-draft.js +639 -0
- package/dist/new-session-draft.js.map +1 -0
- package/dist/notification-text.d.ts +27 -0
- package/dist/{noto-sans-arabic-loader-IA2T4X2A.js → noto-sans-arabic-loader-XSH2KYWJ.js} +3 -1
- package/dist/{noto-sans-arabic-loader-IA2T4X2A.js.map → noto-sans-arabic-loader-XSH2KYWJ.js.map} +1 -1
- package/dist/{noto-sans-jp-loader.generated-HFGLYBR3.js → noto-sans-jp-loader.generated-MR5L6V7K.js} +3 -1
- package/dist/{noto-sans-jp-loader.generated-HFGLYBR3.js.map → noto-sans-jp-loader.generated-MR5L6V7K.js.map} +1 -1
- package/dist/older-history.d.ts +3 -2
- package/dist/organization-model.d.ts +32 -0
- package/dist/organization-model.js +65 -0
- package/dist/organization-model.js.map +1 -0
- package/dist/{platform-activity-row-BJHUHXAT.js → platform-activity-row-5OCKOQWZ.js} +16 -78
- package/dist/platform-activity-row-5OCKOQWZ.js.map +1 -0
- package/dist/plugin-details.d.ts +14 -0
- package/dist/plugin-discovery.d.ts +25 -0
- package/dist/preview-loading-paint.d.ts +20 -0
- package/dist/provider.d.ts +25 -2
- package/dist/queue-presentation-model.d.ts +72 -0
- package/dist/queue-presentation-model.js +38 -0
- package/dist/queue-presentation-model.js.map +1 -0
- package/dist/{queue-surface-implementation-BSKUWHRI.js → queue-surface-implementation-GJBH7NKO.js} +65 -265
- package/dist/queue-surface-implementation-GJBH7NKO.js.map +1 -0
- package/dist/realtime/embedded-new-voice.d.ts +1 -0
- package/dist/realtime/embedded-voice.d.ts +1 -0
- package/dist/realtime/realtime-control.d.ts +4 -65
- package/dist/realtime/session-realtime.d.ts +78 -0
- package/dist/realtime.js +25 -1294
- package/dist/realtime.js.map +1 -1
- package/dist/sandbox-files-O27IPOZW.js +21 -0
- package/dist/sandbox-files-O27IPOZW.js.map +1 -0
- package/dist/sandbox-label-model.d.ts +30 -0
- package/dist/sandbox-label-model.js +20 -0
- package/dist/sandbox-label-model.js.map +1 -0
- package/dist/scrollbars.d.ts +1 -0
- package/dist/scrollbars.js +10 -0
- package/dist/scrollbars.js.map +1 -0
- package/dist/secret-reference-label.d.ts +14 -0
- package/dist/secrets-ui.d.ts +57 -0
- package/dist/session-agents-model.d.ts +10 -0
- package/dist/session-agents-model.js +25 -0
- package/dist/session-agents-model.js.map +1 -0
- package/dist/session-attention-model.d.ts +8 -0
- package/dist/session-attention-model.js +47 -0
- package/dist/session-attention-model.js.map +1 -0
- package/dist/session-auth-recommendation.d.ts +5 -0
- package/dist/session-capability-policy.d.ts +31 -0
- package/dist/session-feedback-model.d.ts +20 -0
- package/dist/session-feedback-model.js +56 -0
- package/dist/session-feedback-model.js.map +1 -0
- package/dist/session-list-model.d.ts +138 -0
- package/dist/session-list-model.js +274 -0
- package/dist/session-list-model.js.map +1 -0
- package/dist/session-realtime-7DJOIHQW.js +21 -0
- package/dist/session-realtime-7DJOIHQW.js.map +1 -0
- package/dist/session-realtime.d.ts +7 -0
- package/dist/session-realtime.js +19 -0
- package/dist/session-realtime.js.map +1 -0
- package/dist/session-status-model.d.ts +36 -0
- package/dist/session-ui.d.ts +39 -1
- package/dist/session-ui.js +126 -12
- package/dist/session-ui.js.map +1 -1
- package/dist/session.d.ts +8 -2
- package/dist/session.js +35 -20
- package/dist/site-snapshot.d.ts +14 -0
- package/dist/sites-ui.d.ts +24 -0
- package/dist/sites.d.ts +3 -0
- package/dist/sites.js +14 -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 +32 -0
- package/dist/terminal.js.map +1 -0
- package/dist/testing/session-scenarios.d.ts +10 -0
- package/dist/testing/session-scenarios.js +367 -0
- package/dist/testing/session-scenarios.js.map +1 -0
- package/dist/timeline/activity-rail.d.ts +11 -2
- package/dist/timeline/agent-identity.d.ts +30 -0
- package/dist/timeline/agent-row.d.ts +31 -0
- package/dist/timeline/allowance-exhausted-row.d.ts +24 -0
- package/dist/timeline/compaction-copy.d.ts +46 -0
- package/dist/timeline/entrance.d.ts +13 -1
- package/dist/timeline/focus-sequence.d.ts +9 -0
- package/dist/timeline/genie-copy.d.ts +3 -0
- package/dist/timeline/genie-loading.d.ts +47 -0
- package/dist/timeline/index.d.ts +10 -5
- package/dist/timeline/knowledge-receipt.d.ts +17 -0
- package/dist/timeline/message-sender.d.ts +19 -0
- package/dist/timeline/notice-presentation.d.ts +13 -0
- package/dist/timeline/parsers.d.ts +11 -0
- package/dist/timeline/patch-apply-command.d.ts +18 -0
- package/dist/timeline/platform-activity-presentation.d.ts +21 -0
- package/dist/timeline/platform-activity-row.d.ts +1 -2
- package/dist/timeline/presented-image.d.ts +11 -0
- package/dist/timeline/projection.d.ts +31 -2
- package/dist/timeline/provider-logo.d.ts +15 -0
- package/dist/timeline/question-nav-model.d.ts +23 -0
- package/dist/timeline/registry.d.ts +12 -1
- package/dist/timeline/retained-image.d.ts +18 -0
- package/dist/timeline/retained-loaders.d.ts +27 -0
- package/dist/timeline/rolling-activity.d.ts +11 -0
- package/dist/timeline/screenshot-lightbox.d.ts +23 -1
- package/dist/timeline/session-usage-limit-row.d.ts +11 -0
- package/dist/timeline/shared.d.ts +4 -1
- package/dist/timeline/startup-dispatch-details.d.ts +5 -0
- 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 +5 -2
- package/dist/timeline/tool-presentation.d.ts +172 -0
- package/dist/timeline/turn-summary-model.d.ts +95 -0
- package/dist/timeline/turn-summary.d.ts +20 -54
- package/dist/timeline/types.d.ts +179 -7
- package/dist/timeline/work-presentation.d.ts +60 -0
- package/dist/timeline-annotation-markers-U3G66KUD.js +166 -0
- package/dist/timeline-annotation-markers-U3G66KUD.js.map +1 -0
- package/dist/timeline-annotation-selection-BI7QTPTZ.js +242 -0
- package/dist/timeline-annotation-selection-BI7QTPTZ.js.map +1 -0
- package/dist/timeline-annotations-dialog-FOMHSDTE.js +274 -0
- package/dist/timeline-annotations-dialog-FOMHSDTE.js.map +1 -0
- package/dist/timeline-model.d.ts +29 -0
- package/dist/timeline-model.js +254 -0
- package/dist/timeline-model.js.map +1 -0
- package/dist/usage/allowance-copy.d.ts +25 -0
- package/dist/usage/session-usage-limit.d.ts +88 -0
- package/dist/usage/summary.d.ts +35 -0
- package/dist/usage.d.ts +17 -0
- package/dist/usage.js +1187 -0
- package/dist/usage.js.map +1 -0
- package/dist/voice-recording-owner.d.ts +7 -0
- package/package.json +107 -7
- package/src/accounts.tsx +116 -14
- package/src/approvals.ts +8 -1
- package/src/artifacts-spreadsheet.ts +1 -0
- package/src/artifacts.ts +44 -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 +20 -31
- 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 +401 -138
- package/src/components/artifacts/artifact-chrome.tsx +413 -0
- package/src/components/artifacts/artifact-sandbox.tsx +189 -0
- package/src/components/artifacts/artifact-surface.tsx +40 -20
- 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 +197 -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 +543 -103
- package/src/components/artifacts/index.ts +45 -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 +122 -5
- package/src/components/artifacts/session-artifact-viewer.tsx +378 -0
- package/src/components/artifacts/site-view.tsx +121 -0
- package/src/components/artifacts/spreadsheet-canvas.ts +5 -10
- package/src/components/artifacts/spreadsheet-command-queue.ts +184 -0
- package/src/components/artifacts/spreadsheet-download.tsx +109 -0
- package/src/components/artifacts/spreadsheet-general-display.ts +43 -0
- package/src/components/artifacts/spreadsheet-grid.tsx +344 -144
- package/src/components/artifacts/spreadsheet-resize.tsx +421 -0
- package/src/components/artifacts/spreadsheet-submissions.tsx +46 -0
- 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 +778 -318
- package/src/components/chat-composer.tsx +47 -5
- package/src/components/child-session-link.tsx +36 -0
- package/src/components/claude-mark.tsx +11 -0
- package/src/components/code-editor.tsx +13 -16
- package/src/components/composer-transcription-control.tsx +128 -30
- package/src/components/composer.tsx +404 -195
- package/src/components/computer-viewer.tsx +880 -253
- package/src/components/copy-button.tsx +13 -5
- package/src/components/desktop-viewer.tsx +1 -1
- package/src/components/enrollment-consent.tsx +1 -1
- package/src/components/enrollment-device-flow.tsx +1 -1
- package/src/components/file-browser.tsx +10 -14
- package/src/components/fleet-tile.tsx +9 -18
- package/src/components/generated-video-player.tsx +4 -2
- package/src/components/grok-mark.tsx +34 -0
- package/src/components/human-input-form.tsx +590 -283
- package/src/components/human-input-surface.tsx +11 -0
- package/src/components/interaction-intervention-banner.tsx +2 -2
- package/src/components/linkified-text.tsx +79 -0
- package/src/components/machine-card.tsx +35 -78
- package/src/components/machine-dock-bar.tsx +1 -1
- package/src/components/machine-input-display.ts +197 -3
- package/src/components/machines/agent-status-icon.tsx +31 -0
- package/src/components/machines/machine-detail.tsx +200 -31
- package/src/components/machines/machine-operation-policy.tsx +1 -1
- package/src/components/machines/machine-status.ts +241 -0
- package/src/components/machines-dashboard.tsx +2 -17
- package/src/components/markdown-table-layout.ts +143 -0
- package/src/components/markdown.tsx +466 -129
- package/src/components/message-timeline.tsx +2567 -728
- package/src/components/model-mark.tsx +102 -0
- package/src/components/model-picker.tsx +15 -4
- package/src/components/model-policy-picker-menu.tsx +371 -0
- package/src/components/model-policy-picker.tsx +256 -412
- package/src/components/new-conversation.tsx +221 -0
- package/src/components/open-geni-chat.tsx +309 -0
- package/src/components/open-geni-links.tsx +179 -0
- package/src/components/openrouter-mark.tsx +13 -0
- package/src/components/opper-mark.tsx +18 -0
- package/src/components/pierre-diff.tsx +41 -16
- package/src/components/pierre-file.tsx +35 -10
- package/src/components/preview-loading.tsx +109 -0
- package/src/components/provider-recovery-notice.tsx +49 -0
- package/src/components/queue-item-content.ts +14 -0
- package/src/components/queue-surface-implementation.tsx +51 -356
- package/src/components/queue-surface-state.tsx +3 -1
- package/src/components/rehype-secret-refs.ts +98 -0
- package/src/components/remark-soft-line-breaks.ts +166 -0
- package/src/components/sandbox-files.tsx +91 -15
- package/src/components/sandbox-terminal.tsx +84 -13
- package/src/components/sandbox-workspace.tsx +147 -51
- package/src/components/secret-question-field.tsx +324 -0
- package/src/components/secret-ref-chip.tsx +185 -0
- package/src/components/session-capability-frame.tsx +197 -0
- package/src/components/session-chrome.tsx +842 -251
- 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 +876 -0
- package/src/components/session-list.tsx +257 -0
- package/src/components/session-mcp-capability-card.tsx +680 -0
- package/src/components/session-proxy-scope.tsx +153 -0
- package/src/components/session-status.tsx +26 -17
- package/src/components/session-usage-limit-notice.tsx +174 -0
- 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 +52 -0
- package/src/components/tool-action-review.tsx +650 -0
- package/src/components/tool-review-history.tsx +88 -0
- 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 +27 -2
- package/src/components/workspace-dock.tsx +18 -1
- package/src/composer-messages.ts +150 -0
- package/src/composer-voice-events.ts +12 -0
- 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 +355 -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 +238 -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/hooks/internal.ts +3 -2
- package/src/hooks/latest-question.ts +164 -0
- package/src/hooks/shared-machines-list.ts +34 -1
- package/src/hooks/shared-query.ts +721 -0
- package/src/hooks/use-attached-browsers.ts +1 -1
- package/src/hooks/use-auth-runs.ts +0 -27
- package/src/hooks/use-available-models.ts +21 -15
- package/src/hooks/use-browser-frame-stream.ts +19 -2
- package/src/hooks/use-browser-session.ts +680 -205
- package/src/hooks/use-browser-sessions.ts +32 -1
- package/src/hooks/use-client-config-flags.ts +118 -0
- package/src/hooks/use-codex-accounts.ts +247 -47
- package/src/hooks/use-composer.ts +276 -47
- package/src/hooks/use-computer-frame-stream.ts +25 -7
- package/src/hooks/use-computer-input-posture.ts +94 -0
- package/src/hooks/use-computer-session.ts +409 -95
- package/src/hooks/use-connect.ts +23 -0
- package/src/hooks/use-desktop-stream.ts +19 -28
- package/src/hooks/use-file-attachments.ts +80 -4
- package/src/hooks/use-goal.ts +107 -13
- package/src/hooks/use-last-started-turn-policy.ts +46 -14
- package/src/hooks/use-machines.ts +4 -0
- package/src/hooks/use-new-conversation.ts +374 -0
- package/src/hooks/use-new-session-draft.ts +813 -0
- package/src/hooks/use-realtime-voice-models.ts +46 -0
- package/src/hooks/use-sandbox-files.ts +68 -20
- package/src/hooks/use-session-background-commands.ts +22 -11
- package/src/hooks/use-session-capabilities.ts +3 -2
- package/src/hooks/use-session-conversation.ts +150 -0
- package/src/hooks/use-session-events.ts +703 -382
- package/src/hooks/use-session-lineage.ts +20 -16
- package/src/hooks/use-session-mcp-approval-policy.ts +13 -5
- package/src/hooks/use-session-model-account.ts +174 -0
- package/src/hooks/use-session.ts +53 -21
- package/src/hooks/use-slash-commands.ts +6 -11
- package/src/hooks/use-supergrok-accounts.ts +22 -8
- package/src/hooks/use-terminal-stream.ts +153 -27
- package/src/hooks/use-transcription.ts +6 -0
- package/src/hooks/use-turn-queue.ts +2 -1
- package/src/hooks/use-usage.ts +100 -0
- package/src/hooks/use-vaults.ts +153 -0
- package/src/hooks/use-video-artifact-playback.ts +1 -1
- package/src/hooks/use-voice-input.ts +127 -19
- 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 +97 -32
- package/src/human-input-model.ts +359 -0
- package/src/identity-link-accounts.tsx +148 -0
- package/src/identity-link-consent.tsx +192 -0
- package/src/index.ts +262 -16
- package/src/interaction.ts +1 -0
- package/src/lib/clipboard.ts +29 -0
- package/src/lib/error-message.ts +37 -0
- package/src/lib/format.ts +213 -16
- package/src/lib/host-theme.ts +529 -0
- package/src/lib/interaction-errors.ts +15 -0
- package/src/lib/menu-styles.ts +44 -0
- package/src/lib/notify-observer.ts +15 -0
- package/src/lib/pierre-diffs-loader.ts +53 -0
- package/src/lib/provider-recovery.ts +243 -0
- package/src/lib/scrollbars.ts +30 -0
- package/src/lib/terminal-input-readiness.ts +51 -0
- package/src/lib/transient-retry.ts +99 -0
- package/src/lib/workbench-peers.ts +62 -0
- package/src/lib/xterm-theme.ts +23 -21
- package/src/mcp-connection-status.ts +35 -0
- package/src/model-mark-paths.ts +53 -0
- package/src/model-picker-model.ts +330 -0
- package/src/model-policy.ts +299 -74
- package/src/native-previews.ts +100 -0
- package/src/new-session-draft.ts +22 -0
- package/src/notification-text.ts +81 -0
- package/src/older-history.ts +22 -4
- package/src/organization-model.ts +118 -0
- package/src/plugin-details.tsx +185 -0
- package/src/plugin-discovery.tsx +196 -0
- package/src/preview-loading-paint.ts +68 -0
- package/src/provider.tsx +74 -15
- package/src/queue-presentation-model.ts +464 -0
- package/src/realtime/dropdown-menu.tsx +19 -12
- package/src/realtime/embedded-new-voice.tsx +1 -0
- package/src/realtime/embedded-voice.tsx +3 -0
- package/src/realtime/realtime-control.tsx +138 -501
- package/src/realtime/session-realtime.ts +566 -0
- package/src/sandbox-label-model.ts +53 -0
- package/src/scrollbars.ts +3 -0
- package/src/secret-reference-label.ts +43 -0
- package/src/secrets-ui.tsx +59 -0
- package/src/session-agents-model.ts +33 -0
- package/src/session-attention-model.ts +62 -0
- package/src/session-auth-recommendation.ts +48 -0
- package/src/session-capability-policy.ts +196 -0
- package/src/session-context.ts +3 -4
- package/src/session-feedback-model.ts +95 -0
- package/src/session-list-model.ts +434 -0
- package/src/session-realtime.ts +18 -0
- package/src/session-status-model.ts +99 -0
- package/src/session-ui.ts +98 -1
- package/src/session.ts +17 -1
- package/src/site-snapshot.ts +74 -0
- package/src/sites-ui.tsx +348 -0
- package/src/sites.ts +3 -0
- package/src/skill-discovery.tsx +208 -0
- package/src/terminal.ts +26 -0
- package/src/testing/session-scenarios.ts +404 -0
- package/src/timeline/activity-rail.tsx +242 -101
- package/src/timeline/agent-identity.tsx +84 -0
- package/src/timeline/agent-row.tsx +231 -0
- package/src/timeline/allowance-exhausted-row.tsx +86 -0
- package/src/timeline/compaction-copy.ts +115 -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/focus-sequence.ts +44 -0
- package/src/timeline/genie-copy.ts +19 -0
- package/src/timeline/genie-loading.tsx +143 -0
- package/src/timeline/index.ts +30 -2
- package/src/timeline/knowledge-receipt.tsx +100 -0
- package/src/timeline/message-sender.tsx +71 -0
- package/src/timeline/notice-presentation.ts +48 -0
- package/src/timeline/parsers.ts +42 -2
- package/src/timeline/patch-apply-command.tsx +135 -0
- package/src/timeline/platform-activity-presentation.ts +166 -0
- package/src/timeline/platform-activity-row.tsx +15 -90
- package/src/timeline/presented-image.ts +63 -0
- package/src/timeline/projection.ts +1746 -76
- package/src/timeline/provider-logo.tsx +53 -0
- package/src/timeline/question-nav-model.ts +28 -0
- package/src/timeline/registry.ts +26 -4
- package/src/timeline/retained-image.ts +97 -0
- package/src/timeline/retained-loaders.ts +91 -0
- package/src/timeline/rolling-activity.tsx +80 -0
- package/src/timeline/screenshot-lightbox.tsx +228 -5
- package/src/timeline/session-usage-limit-row.tsx +42 -0
- package/src/timeline/shared.tsx +42 -15
- package/src/timeline/startup-dispatch-details.tsx +36 -0
- package/src/timeline/startup-preference.ts +33 -0
- package/src/timeline/startup-timings.tsx +145 -0
- package/src/timeline/tool-display-name.ts +19 -7
- package/src/timeline/tool-presentation.ts +1316 -0
- package/src/timeline/tool-renderers.tsx +835 -1138
- package/src/timeline/turn-summary-model.ts +343 -0
- package/src/timeline/turn-summary.tsx +272 -365
- package/src/timeline/types.ts +189 -6
- package/src/timeline/work-presentation.ts +189 -0
- package/src/timeline-model.ts +143 -0
- package/src/usage/allowance-copy.ts +64 -0
- package/src/usage/session-usage-limit.ts +266 -0
- package/src/usage/summary.ts +93 -0
- package/src/usage.ts +70 -0
- package/src/voice-recording-owner.ts +22 -0
- package/styles/compiled.css +2319 -748
- package/styles/connect.css +290 -0
- package/styles/connect.d.ts +1 -0
- package/styles/effective-tokens.css +1 -0
- package/styles/index.css +309 -9
- package/styles/responsive.css +99 -7
- package/styles/session-capability.css +44 -0
- package/styles/tokens.css +134 -66
- package/dist/browser-viewer-AEFHUYZK.js +0 -14
- package/dist/chunk-4MDLEHXL.js.map +0 -1
- package/dist/chunk-5YK2ZDIG.js.map +0 -1
- package/dist/chunk-D3UIAJKY.js.map +0 -1
- package/dist/chunk-ELIYWBZR.js.map +0 -1
- package/dist/chunk-H5YGYNXS.js.map +0 -1
- package/dist/chunk-HQVCKCLG.js +0 -9458
- package/dist/chunk-HQVCKCLG.js.map +0 -1
- package/dist/chunk-HUIKIDM5.js.map +0 -1
- package/dist/chunk-ICA6R6TW.js.map +0 -1
- package/dist/chunk-JVYQRRC4.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-MZ2G2XBA.js.map +0 -1
- package/dist/chunk-NEXLLTP4.js.map +0 -1
- package/dist/chunk-OAM4WAAM.js.map +0 -1
- package/dist/chunk-PEI6RANI.js.map +0 -1
- package/dist/chunk-RGALCTWO.js.map +0 -1
- package/dist/chunk-W6NFJXSA.js +0 -454
- package/dist/chunk-W6NFJXSA.js.map +0 -1
- package/dist/chunk-WSK7G5LE.js +0 -170
- package/dist/chunk-WSK7G5LE.js.map +0 -1
- package/dist/chunk-X4A66EWZ.js +0 -223
- package/dist/chunk-X4A66EWZ.js.map +0 -1
- package/dist/chunk-XXWH2JLC.js.map +0 -1
- package/dist/chunk-YFKJ7VZH.js +0 -268
- package/dist/chunk-YFKJ7VZH.js.map +0 -1
- package/dist/chunk-YJFGAFBD.js.map +0 -1
- package/dist/computer-viewer-FWEZISW4.js +0 -16
- package/dist/fleet-decision-row-GGCAT4E4.js.map +0 -1
- package/dist/hooks/use-environments.d.ts +0 -41
- package/dist/hooks/use-packs.d.ts +0 -32
- package/dist/platform-activity-row-BJHUHXAT.js.map +0 -1
- package/dist/queue-surface-implementation-BSKUWHRI.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-environments.ts +0 -182
- package/src/hooks/use-packs.ts +0 -157
- /package/dist/{browser-viewer-AEFHUYZK.js.map → browser-viewer-ZWR6MWJ7.js.map} +0 -0
- /package/dist/{computer-viewer-FWEZISW4.js.map → chat-interactive-block-BO2IWXVK.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,
|
|
@@ -13,17 +14,32 @@ import { Collapsible } from "radix-ui";
|
|
|
13
14
|
import { CopyButton } from "../components/copy-button";
|
|
14
15
|
import { cn } from "../lib/cn";
|
|
15
16
|
import { MOTION_INSPECT_SCALE } from "../lib/motion-inspect";
|
|
17
|
+
import { presentTurnFailureText } from "./compaction-copy";
|
|
16
18
|
import { useForcedDefaultOpen } from "./disclosure-context";
|
|
19
|
+
import { useTimelineSearchReveal } from "../components/timeline-search";
|
|
17
20
|
import { useEntranceAnimation } from "./entrance";
|
|
18
21
|
import { useFoldMemory, type FoldRestingState } from "./fold-memory";
|
|
19
22
|
import {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
BUILT_IN_TURN_SUMMARY_FACET_IDS,
|
|
24
|
+
createTurnSummaryContext,
|
|
25
|
+
formatElapsed,
|
|
26
|
+
resolveTurnSummaryFacets,
|
|
27
|
+
selectTurnSummaryFacets,
|
|
28
|
+
type TurnSummaryFacetConfiguration,
|
|
29
|
+
type TurnSummaryStatus,
|
|
30
|
+
} from "./turn-summary-model";
|
|
31
|
+
import type { ActivityItem, TurnOutcome } from "./types";
|
|
32
|
+
|
|
33
|
+
export { BUILT_IN_TURN_SUMMARY_FACET_IDS, formatElapsed };
|
|
34
|
+
export type {
|
|
35
|
+
BuiltInTurnSummaryFacetId,
|
|
36
|
+
TurnSummaryContext,
|
|
37
|
+
TurnSummaryFacet,
|
|
38
|
+
TurnSummaryFacetConfiguration,
|
|
39
|
+
TurnSummaryFacetResult,
|
|
40
|
+
TurnSummaryOptions,
|
|
41
|
+
TurnSummaryStatus,
|
|
42
|
+
} from "./turn-summary-model";
|
|
27
43
|
export type { TurnOutcome } from "./types";
|
|
28
44
|
|
|
29
45
|
/* ----------------------------------------------------------------------------
|
|
@@ -51,80 +67,15 @@ export function useTurnSettleOpen(): boolean {
|
|
|
51
67
|
return useContext(TurnSettleChromeContext);
|
|
52
68
|
}
|
|
53
69
|
|
|
54
|
-
export const BUILT_IN_TURN_SUMMARY_FACET_IDS = [
|
|
55
|
-
"steps",
|
|
56
|
-
"files",
|
|
57
|
-
"commands",
|
|
58
|
-
"screenshots",
|
|
59
|
-
"memories",
|
|
60
|
-
"compacted",
|
|
61
|
-
"duration",
|
|
62
|
-
] as const;
|
|
63
|
-
|
|
64
|
-
export type BuiltInTurnSummaryFacetId = (typeof BUILT_IN_TURN_SUMMARY_FACET_IDS)[number];
|
|
65
|
-
|
|
66
|
-
export type TurnSummaryContext = Readonly<{
|
|
67
|
-
/** Every normalized activity item folded into this summary. */
|
|
68
|
-
items: readonly ActivityItem[];
|
|
69
|
-
/** Tool calls from `items`, retained in timeline order for convenient aggregation. */
|
|
70
|
-
toolCalls: readonly ToolCallItem[];
|
|
71
|
-
/** The settled turn verdict, or absent for a neutral/incomplete cluster. */
|
|
72
|
-
outcome: TurnOutcome | undefined;
|
|
73
|
-
/** The bounded failure reason rendered by the enclosing summary, when present. */
|
|
74
|
-
failureText: string | undefined;
|
|
75
|
-
/** Total turn duration when the enclosing group has both valid timestamps. */
|
|
76
|
-
durationMs: number | undefined;
|
|
77
|
-
/** False when any projected activity is still running or streaming. */
|
|
78
|
-
settled: boolean;
|
|
79
|
-
/**
|
|
80
|
-
* Adjacent compaction landmarks next to this fold. Landmark remains the
|
|
81
|
-
* primary UI; this is a secondary chip signal only.
|
|
82
|
-
*/
|
|
83
|
-
contextCompactionCount: number;
|
|
84
|
-
}>;
|
|
85
|
-
|
|
86
|
-
export type TurnSummaryFacetResult = Readonly<{
|
|
87
|
-
icon?: ReactNode;
|
|
88
|
-
content: ReactNode;
|
|
89
|
-
ariaLabel?: string;
|
|
90
|
-
title?: string;
|
|
91
|
-
}>;
|
|
92
|
-
|
|
93
|
-
export type TurnSummaryFacet = Readonly<{
|
|
94
|
-
/** Stable identity used for removal and deterministic de-duplication. */
|
|
95
|
-
id: string;
|
|
96
|
-
/** Return null when this facet has nothing useful to show. */
|
|
97
|
-
summarize(context: TurnSummaryContext): TurnSummaryFacetResult | null;
|
|
98
|
-
}>;
|
|
99
|
-
|
|
100
|
-
type ModifyTurnSummaryFacets = Readonly<{
|
|
101
|
-
/** Appended after the remaining built-ins, in supplied order. */
|
|
102
|
-
add?: readonly TurnSummaryFacet[];
|
|
103
|
-
/** Built-ins to omit before custom facets are appended. */
|
|
104
|
-
remove?: readonly BuiltInTurnSummaryFacetId[];
|
|
105
|
-
replace?: never;
|
|
106
|
-
}>;
|
|
107
|
-
|
|
108
|
-
type ReplaceTurnSummaryFacets = Readonly<{
|
|
109
|
-
/** The complete ordered facet list. Mutually exclusive with add/remove. */
|
|
110
|
-
replace: readonly TurnSummaryFacet[];
|
|
111
|
-
add?: never;
|
|
112
|
-
remove?: never;
|
|
113
|
-
}>;
|
|
114
|
-
|
|
115
|
-
export type TurnSummaryFacetConfiguration = ModifyTurnSummaryFacets | ReplaceTurnSummaryFacets;
|
|
116
|
-
|
|
117
|
-
export type TurnSummaryOptions = Readonly<{
|
|
118
|
-
facets?: TurnSummaryFacetConfiguration;
|
|
119
|
-
}>;
|
|
120
|
-
|
|
121
70
|
export type TurnSummaryProps = {
|
|
71
|
+
/** Reports the disclosure's actual open state on mount and on every change. */
|
|
72
|
+
onOpenStateChange?: ((open: boolean) => void) | undefined;
|
|
122
73
|
/** The activity items in the turn (used only to compute the facet counts). */
|
|
123
74
|
items: ActivityItem[];
|
|
124
75
|
/**
|
|
125
76
|
* The settled verdict — or absent for a completed CLUSTER of a still-running
|
|
126
|
-
* turn, which folds neutrally
|
|
127
|
-
*
|
|
77
|
+
* turn, which folds neutrally. Only unfinished activity inside this summary
|
|
78
|
+
* animates; the parent turn may still be composing a response elsewhere.
|
|
128
79
|
*/
|
|
129
80
|
outcome?: TurnOutcome | undefined;
|
|
130
81
|
/** A short failure reason shown inline on a failed chip (never hidden). */
|
|
@@ -133,6 +84,7 @@ export type TurnSummaryProps = {
|
|
|
133
84
|
durationMs?: number | undefined;
|
|
134
85
|
/** Start expanded. */
|
|
135
86
|
defaultOpen?: boolean | undefined;
|
|
87
|
+
liveHeader?: ReactNode;
|
|
136
88
|
/**
|
|
137
89
|
* A nested fold — a cluster or sub-turn INSIDE an already-expanded turn. It
|
|
138
90
|
* drops the bordered/filled chip and renders as a plain disclosure node on the
|
|
@@ -170,6 +122,16 @@ export type TurnSummaryProps = {
|
|
|
170
122
|
copyText?: string | undefined;
|
|
171
123
|
/** Adjacent compaction landmark count for the secondary chip facet. */
|
|
172
124
|
contextCompactionCount?: number | undefined;
|
|
125
|
+
/**
|
|
126
|
+
* Exchange status line (compact progress presentation). Replaces the state
|
|
127
|
+
* marker and the duration facet; a settled `worked` row reads as a separator.
|
|
128
|
+
*/
|
|
129
|
+
status?: TurnSummaryStatus | undefined;
|
|
130
|
+
/**
|
|
131
|
+
* False when the fold has nothing to reveal: the row renders without a
|
|
132
|
+
* chevron and is not a disclosure control. Defaults to true.
|
|
133
|
+
*/
|
|
134
|
+
expandable?: boolean | undefined;
|
|
173
135
|
/** The rendered activity rail revealed on expand. */
|
|
174
136
|
children: ReactNode;
|
|
175
137
|
};
|
|
@@ -187,17 +149,22 @@ export function TurnSummary({
|
|
|
187
149
|
failureText,
|
|
188
150
|
durationMs,
|
|
189
151
|
defaultOpen,
|
|
152
|
+
liveHeader,
|
|
190
153
|
bare,
|
|
191
154
|
facets: facetConfiguration,
|
|
192
155
|
settleFold,
|
|
193
156
|
foldKey,
|
|
194
157
|
copyText,
|
|
195
158
|
contextCompactionCount,
|
|
159
|
+
status,
|
|
160
|
+
expandable = true,
|
|
161
|
+
onOpenStateChange,
|
|
196
162
|
children,
|
|
197
163
|
}: TurnSummaryProps) {
|
|
198
164
|
// An explicit `defaultOpen` always wins; otherwise an ancestor may seed it
|
|
199
165
|
// (screenshot instrumentation); otherwise the turn starts folded.
|
|
200
166
|
const forcedDefaultOpen = useForcedDefaultOpen();
|
|
167
|
+
const searchReveal = useTimelineSearchReveal();
|
|
201
168
|
const foldMemory = useFoldMemory();
|
|
202
169
|
// A remembered resting state outranks author defaults: a fold that already
|
|
203
170
|
// finished its settle collapse (or that the reader closed) mounts closed
|
|
@@ -212,7 +179,22 @@ export function TurnSummary({
|
|
|
212
179
|
: (defaultOpen ?? forcedDefaultOpen ?? false);
|
|
213
180
|
const initialSettle = Boolean(settleFold) && !restingOpen && remembered === undefined;
|
|
214
181
|
const [settling, setSettling] = useState(initialSettle);
|
|
215
|
-
const [
|
|
182
|
+
const [openState, setOpen] = useState(initialSettle ? true : restingOpen);
|
|
183
|
+
// A fold with nothing to reveal never reads as open.
|
|
184
|
+
const open = expandable && openState;
|
|
185
|
+
const reportOpen = useRef(onOpenStateChange);
|
|
186
|
+
reportOpen.current = onOpenStateChange;
|
|
187
|
+
// Before paint: a listener may need to start motion in the same frame.
|
|
188
|
+
useLayoutEffect(() => {
|
|
189
|
+
reportOpen.current?.(open);
|
|
190
|
+
}, [open]);
|
|
191
|
+
const readerOwnsOpen = useRef(remembered !== undefined);
|
|
192
|
+
useEffect(() => {
|
|
193
|
+
// Readable work can produce primary media or fail after mounting. Reveal
|
|
194
|
+
// that output without remounting existing tool controls, while preserving
|
|
195
|
+
// every explicit reader-owned open/closed choice.
|
|
196
|
+
if (status && defaultOpen && remembered === undefined && !readerOwnsOpen.current) setOpen(true);
|
|
197
|
+
}, [status, defaultOpen, remembered]);
|
|
216
198
|
// While true, a close uses the slow settle collapse. Cleared after that
|
|
217
199
|
// auto-collapse finishes (or on first user interaction) so later manual
|
|
218
200
|
// closes are the fast disclose pair.
|
|
@@ -311,7 +293,20 @@ export function TurnSummary({
|
|
|
311
293
|
}
|
|
312
294
|
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
313
295
|
}, [settleFold]);
|
|
296
|
+
useEffect(() => {
|
|
297
|
+
if (!searchReveal) return;
|
|
298
|
+
clearSettleTimers();
|
|
299
|
+
settleArmedRef.current = false;
|
|
300
|
+
setSettling(false);
|
|
301
|
+
setSettlePhase(false);
|
|
302
|
+
setNestSuppressLatch(false);
|
|
303
|
+
setOpen(true);
|
|
304
|
+
rememberResting("open");
|
|
305
|
+
// Search is an explicit, persistent reader action, not a new fold default.
|
|
306
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
307
|
+
}, [searchReveal]);
|
|
314
308
|
const onOpenChange = (next: boolean) => {
|
|
309
|
+
readerOwnsOpen.current = true;
|
|
315
310
|
// The reader took over — cancel the pending auto-collapse for good.
|
|
316
311
|
// Clear settle CSS phase immediately (fast collapse) but keep nest latch
|
|
317
312
|
// through the disclose window so nested chips stay force-open mid-close
|
|
@@ -364,20 +359,13 @@ export function TurnSummary({
|
|
|
364
359
|
() => resolveTurnSummaryFacets(facetConfiguration),
|
|
365
360
|
[facetConfiguration],
|
|
366
361
|
);
|
|
362
|
+
const statusKind = status?.kind;
|
|
367
363
|
const facets = useMemo(
|
|
368
|
-
() =>
|
|
369
|
-
|
|
370
|
-
try {
|
|
371
|
-
const result = facet.summarize(context);
|
|
372
|
-
return result && hasFacetContent(result.content) ? [{ facet, result }] : [];
|
|
373
|
-
} catch {
|
|
374
|
-
// A host extension is presentation-only. It must never take down the
|
|
375
|
-
// durable timeline or hide the remaining built-in evidence.
|
|
376
|
-
return [];
|
|
377
|
-
}
|
|
378
|
-
}),
|
|
379
|
-
[context, facetDefinitions],
|
|
364
|
+
() => selectTurnSummaryFacets(facetDefinitions, context, statusKind),
|
|
365
|
+
[context, facetDefinitions, statusKind],
|
|
380
366
|
);
|
|
367
|
+
// The chip names the failure; recorded technical text stays a hover title.
|
|
368
|
+
const failure = outcome === "failed" ? presentTurnFailureText(failureText) : null;
|
|
381
369
|
|
|
382
370
|
// Live open shell: keep the chip in-flow (so settle never inserts layout)
|
|
383
371
|
// and quieter until there is an outcome or a settle beat — but still
|
|
@@ -389,136 +377,191 @@ export function TurnSummary({
|
|
|
389
377
|
// Nested chips stay force-open for this window (stable height).
|
|
390
378
|
const settleChrome = settling || settlePhase || nestSuppressLatch;
|
|
391
379
|
|
|
380
|
+
const statusLine = status ? turnSummaryStatusLine(status) : null;
|
|
381
|
+
|
|
392
382
|
// Copy only on the collapsed chip — when open, per-message copy is enough
|
|
393
383
|
// and a second control on the summary row felt crowded / off.
|
|
394
384
|
const copyable = Boolean(
|
|
395
385
|
copyText && copyText.trim().length > 0 && !bare && !liveShell && !open && !settlePhase,
|
|
396
386
|
);
|
|
397
387
|
|
|
388
|
+
const headerClassName = cn(
|
|
389
|
+
// The section, not the viewport, bounds this sticky row. Content
|
|
390
|
+
// is a sibling: its disclosure overflow never traps the header.
|
|
391
|
+
// Nested rail folds must never stack additional sticky headers.
|
|
392
|
+
!bare && open && "sticky top-[var(--og-work-header-top,0px)] z-10 bg-og-bg",
|
|
393
|
+
settling && expandable && "animate-og-settle-chip",
|
|
394
|
+
// Top-level turn fold and (when used) nested cluster folds render as
|
|
395
|
+
// FLAT rail rows — chevron + glyph + facets on the page background, no
|
|
396
|
+
// border, no fill. Only a hover tint hints the row is expandable, so a
|
|
397
|
+
// collapsed turn never reads as a boxed card. The top-level row is a
|
|
398
|
+
// touch larger (base text, size-5 glyph, wider gap) so it still reads
|
|
399
|
+
// as a turn landmark above any nested cluster rows it groups.
|
|
400
|
+
"group flex w-full items-center rounded-og-sm text-left transition-colors",
|
|
401
|
+
// A folded turn is a touch target on coarse pointers: grow the row so it
|
|
402
|
+
// clears the 44px minimum without disturbing the calm desktop rhythm.
|
|
403
|
+
expandable && "pointer-coarse:min-h-11 pointer-coarse:py-2.5",
|
|
404
|
+
bare
|
|
405
|
+
? "gap-2 px-1.5 py-1.5 text-og-sm text-og-fg-muted"
|
|
406
|
+
: "-mx-2 gap-2.5 px-2 py-1.5 text-og-base text-og-fg-muted",
|
|
407
|
+
// A failed fold keeps its red accent (glyph + inline reason below) and a
|
|
408
|
+
// faint red hover wash so attention still lands there; every other
|
|
409
|
+
// outcome gets the neutral surface hover. A row with nothing to reveal
|
|
410
|
+
// is not a control and gets no hover.
|
|
411
|
+
!expandable
|
|
412
|
+
? undefined
|
|
413
|
+
: outcome === "failed"
|
|
414
|
+
? "hover:bg-og-status-failed/[0.06] hover:text-og-fg"
|
|
415
|
+
: "hover:bg-og-surface-1 hover:text-og-fg",
|
|
416
|
+
liveShell && "text-og-fg-subtle",
|
|
417
|
+
// Phones hide the hint, so keep the copy control clear of the separator.
|
|
418
|
+
status && copyable && "max-sm:pr-10",
|
|
419
|
+
);
|
|
420
|
+
const headerContent = (
|
|
421
|
+
<>
|
|
422
|
+
{/* Disclosure grammar matches the rows: chevron leads (far left), then any
|
|
423
|
+
exceptional or active state, then the facets — one expand affordance
|
|
424
|
+
side everywhere. A row with nothing to reveal keeps the chevron's space
|
|
425
|
+
so its text stays aligned with neighbouring rows. */}
|
|
426
|
+
{expandable ? (
|
|
427
|
+
<ChevronRightIcon
|
|
428
|
+
className={cn(
|
|
429
|
+
"size-3.5 shrink-0 text-og-fg-subtle transition-transform ease-og-in-out group-data-[state=open]:rotate-90",
|
|
430
|
+
settlePhase
|
|
431
|
+
? "duration-[var(--_og-duration-disclose-settle)]"
|
|
432
|
+
: "duration-[var(--_og-duration-disclose)]",
|
|
433
|
+
)}
|
|
434
|
+
/>
|
|
435
|
+
) : (
|
|
436
|
+
<span aria-hidden className="size-3.5 shrink-0" />
|
|
437
|
+
)}
|
|
438
|
+
{/* Completion is the quiet default and needs no repeated glyph. Failed,
|
|
439
|
+
cancelled, and still-running folds retain a visible state marker. */}
|
|
440
|
+
{status || outcome === "complete" || (!outcome && (liveHeader || context.settled)) ? null : (
|
|
441
|
+
<span
|
|
442
|
+
className={cn(
|
|
443
|
+
"inline-flex shrink-0 items-center justify-center",
|
|
444
|
+
bare ? "size-3.5" : "size-5",
|
|
445
|
+
outcome === "failed" ? "text-og-status-failed" : "text-og-fg-subtle",
|
|
446
|
+
)}
|
|
447
|
+
>
|
|
448
|
+
{outcome === "failed" ? (
|
|
449
|
+
<TriangleAlertIcon className="size-3" />
|
|
450
|
+
) : outcome === "cancelled" ? (
|
|
451
|
+
<CircleSlashIcon className="size-3" />
|
|
452
|
+
) : (
|
|
453
|
+
<span className="size-1.5 animate-og-pulse rounded-full bg-og-fg-subtle" />
|
|
454
|
+
)}
|
|
455
|
+
</span>
|
|
456
|
+
)}
|
|
457
|
+
<span
|
|
458
|
+
className={cn(
|
|
459
|
+
"min-w-0 truncate",
|
|
460
|
+
status?.kind === "worked" ? "shrink" : "flex-1",
|
|
461
|
+
bare ? "text-og-sm" : "text-og-fg-muted",
|
|
462
|
+
)}
|
|
463
|
+
>
|
|
464
|
+
{statusLine}
|
|
465
|
+
{liveHeader && !open && !status
|
|
466
|
+
? liveHeader
|
|
467
|
+
: facets.map(({ facet, result }, index) => (
|
|
468
|
+
<FacetRenderBoundary key={facet.id}>
|
|
469
|
+
<>
|
|
470
|
+
{index > 0 || statusLine ? " · " : null}
|
|
471
|
+
<span aria-label={result.ariaLabel} title={result.title}>
|
|
472
|
+
{result.icon ? (
|
|
473
|
+
<span aria-hidden className="mr-1 inline-flex align-[-0.125em]">
|
|
474
|
+
{result.icon}
|
|
475
|
+
</span>
|
|
476
|
+
) : null}
|
|
477
|
+
{result.content}
|
|
478
|
+
</span>
|
|
479
|
+
</>
|
|
480
|
+
</FacetRenderBoundary>
|
|
481
|
+
))}
|
|
482
|
+
{failure ? (
|
|
483
|
+
<span className="text-og-status-failed" title={failure.detail}>
|
|
484
|
+
{" "}
|
|
485
|
+
· {failure.summary}
|
|
486
|
+
</span>
|
|
487
|
+
) : null}
|
|
488
|
+
{outcome === "cancelled" ? <span className="text-og-fg-subtle"> · interrupted</span> : null}
|
|
489
|
+
</span>
|
|
490
|
+
{/* A settled exchange reads as a separator above its answer. */}
|
|
491
|
+
{status?.kind === "worked" ? (
|
|
492
|
+
<span aria-hidden className="ml-1 h-px min-w-0 flex-1 bg-og-border" />
|
|
493
|
+
) : null}
|
|
494
|
+
{status && status.kind !== "worked" && (contextCompactionCount ?? 0) > 0 ? (
|
|
495
|
+
<ShrinkIcon
|
|
496
|
+
className="size-3.5 shrink-0"
|
|
497
|
+
aria-label="Context compacted; expand for details"
|
|
498
|
+
/>
|
|
499
|
+
) : null}
|
|
500
|
+
</>
|
|
501
|
+
);
|
|
502
|
+
|
|
398
503
|
return (
|
|
399
504
|
<TurnSettleChromeContext.Provider value={settleChrome}>
|
|
400
505
|
<div className={cn(copyable && "group/copy relative")}>
|
|
401
506
|
<Collapsible.Root
|
|
507
|
+
data-og-work-section={bare ? undefined : ""}
|
|
402
508
|
open={open}
|
|
403
509
|
onOpenChange={onOpenChange}
|
|
404
510
|
// History-only entrance. Never toggle this on after mount — see
|
|
405
511
|
// allowEnterAnimation. Settle uses animate-og-settle-chip on the trigger.
|
|
406
512
|
className={allowEnterAnimation && !liveShell ? "animate-og-enter" : undefined}
|
|
407
513
|
>
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
>
|
|
433
|
-
{/* Disclosure grammar matches the rows: chevron leads (far left), then any
|
|
434
|
-
exceptional or active state, then the facets — one expand affordance
|
|
435
|
-
side everywhere. */}
|
|
436
|
-
<ChevronRightIcon
|
|
514
|
+
{expandable ? (
|
|
515
|
+
<Collapsible.Trigger
|
|
516
|
+
data-og-work-header={bare ? "nested" : "outer"}
|
|
517
|
+
className={headerClassName}
|
|
518
|
+
>
|
|
519
|
+
{headerContent}
|
|
520
|
+
</Collapsible.Trigger>
|
|
521
|
+
) : (
|
|
522
|
+
// Nothing to reveal: a plain status row, not a disclosure control.
|
|
523
|
+
<div data-og-work-header={bare ? "nested" : "outer"} className={headerClassName}>
|
|
524
|
+
{headerContent}
|
|
525
|
+
</div>
|
|
526
|
+
)}
|
|
527
|
+
{status?.guidance ? (
|
|
528
|
+
// Guidance the reader needs stays visible in both fold states.
|
|
529
|
+
<div data-og-exchange-guidance="" className="min-w-0 pb-1 pl-6">
|
|
530
|
+
{status.guidance}
|
|
531
|
+
</div>
|
|
532
|
+
) : null}
|
|
533
|
+
{status && !open && status.preview ? (
|
|
534
|
+
// Readable progress under the status line; the line above stays
|
|
535
|
+
// the one disclosure control, so a click here is a mouse shortcut.
|
|
536
|
+
<div
|
|
537
|
+
data-og-exchange-preview=""
|
|
437
538
|
className={cn(
|
|
438
|
-
"
|
|
439
|
-
|
|
440
|
-
? "duration-[var(--_og-duration-disclose-settle)]"
|
|
441
|
-
: "duration-[var(--_og-duration-disclose)]",
|
|
539
|
+
"flex min-w-0 flex-col gap-0.5 pb-1 pl-6",
|
|
540
|
+
expandable && "cursor-pointer",
|
|
442
541
|
)}
|
|
443
|
-
|
|
444
|
-
{/* Completion is the quiet default and needs no repeated glyph. Failed,
|
|
445
|
-
cancelled, and still-running folds retain a visible state marker. */}
|
|
446
|
-
{outcome === "complete" ? null : (
|
|
447
|
-
<span
|
|
448
|
-
className={cn(
|
|
449
|
-
"inline-flex shrink-0 items-center justify-center",
|
|
450
|
-
bare ? "size-3.5" : "size-5",
|
|
451
|
-
outcome === "failed" ? "text-og-status-failed" : "text-og-fg-subtle",
|
|
452
|
-
)}
|
|
453
|
-
>
|
|
454
|
-
{outcome === "failed" ? (
|
|
455
|
-
<TriangleAlertIcon className="size-3" />
|
|
456
|
-
) : outcome === "cancelled" ? (
|
|
457
|
-
<CircleSlashIcon className="size-3" />
|
|
458
|
-
) : (
|
|
459
|
-
<span className="size-1.5 animate-og-pulse rounded-full bg-og-fg-subtle" />
|
|
460
|
-
)}
|
|
461
|
-
</span>
|
|
462
|
-
)}
|
|
463
|
-
<span
|
|
464
|
-
className={cn("min-w-0 flex-1 truncate", bare ? "text-og-sm" : "text-og-fg-muted")}
|
|
542
|
+
onClick={expandable ? () => onOpenChange(true) : undefined}
|
|
465
543
|
>
|
|
466
|
-
{
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
{result.icon}
|
|
474
|
-
</span>
|
|
475
|
-
) : null}
|
|
476
|
-
{result.content}
|
|
477
|
-
</span>
|
|
478
|
-
</>
|
|
479
|
-
</FacetRenderBoundary>
|
|
480
|
-
))}
|
|
481
|
-
{outcome === "failed" && failureText ? (
|
|
482
|
-
<span className="text-og-status-failed"> · {failureText}</span>
|
|
483
|
-
) : null}
|
|
484
|
-
{outcome === "cancelled" ? (
|
|
485
|
-
<span className="text-og-fg-subtle"> · interrupted</span>
|
|
486
|
-
) : null}
|
|
487
|
-
</span>
|
|
488
|
-
{/* The disclosure hint. Calm at rest on fine pointers (revealed on hover
|
|
489
|
-
and keyboard focus), but always present on coarse pointers where there
|
|
490
|
-
is no hover to lean on — so the fold never reads as a static status
|
|
491
|
-
line. Purely visual: the trigger's aria-expanded already conveys state
|
|
492
|
-
to assistive tech, so the hint is hidden from the accessible name. */}
|
|
493
|
-
<span
|
|
494
|
-
aria-hidden
|
|
544
|
+
{status.preview ? <div className="min-w-0">{status.preview}</div> : null}
|
|
545
|
+
</div>
|
|
546
|
+
) : null}
|
|
547
|
+
{expandable ? (
|
|
548
|
+
<Collapsible.Content
|
|
549
|
+
{...(nestSuppressLatch ? { forceMount: true as const } : {})}
|
|
550
|
+
data-og-fold-content=""
|
|
495
551
|
className={cn(
|
|
496
|
-
"
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
552
|
+
"overflow-hidden",
|
|
553
|
+
expandReady && "data-[state=open]:animate-og-expand",
|
|
554
|
+
// Auto-close: slow settle. Manual close (settlePhase cleared): fast.
|
|
555
|
+
settlePhase
|
|
556
|
+
? "data-[state=closed]:animate-og-settle-collapse"
|
|
557
|
+
: "data-[state=closed]:animate-og-collapse",
|
|
501
558
|
)}
|
|
502
559
|
>
|
|
503
|
-
{
|
|
504
|
-
</span>
|
|
505
|
-
</Collapsible.Trigger>
|
|
506
|
-
<Collapsible.Content
|
|
507
|
-
{...(nestSuppressLatch ? { forceMount: true as const } : {})}
|
|
508
|
-
data-og-fold-content=""
|
|
509
|
-
className={cn(
|
|
510
|
-
"overflow-hidden",
|
|
511
|
-
expandReady && "data-[state=open]:animate-og-expand",
|
|
512
|
-
// Auto-close: slow settle. Manual close (settlePhase cleared): fast.
|
|
513
|
-
settlePhase
|
|
514
|
-
? "data-[state=closed]:animate-og-settle-collapse"
|
|
515
|
-
: "data-[state=closed]:animate-og-collapse",
|
|
516
|
-
)}
|
|
517
|
-
>
|
|
518
|
-
{/* A nested node indents its revealed rows under the glyph (thread nesting
|
|
560
|
+
{/* A nested node indents its revealed rows under the glyph (thread nesting
|
|
519
561
|
off the parent rail); the top-level turn body owns its own rail. */}
|
|
520
|
-
|
|
521
|
-
|
|
562
|
+
<div className={bare ? "pt-1 pl-5" : "pt-2"}>{children}</div>
|
|
563
|
+
</Collapsible.Content>
|
|
564
|
+
) : null}
|
|
522
565
|
</Collapsible.Root>
|
|
523
566
|
{copyable ? (
|
|
524
567
|
<div className="pointer-events-none absolute top-1.5 right-0 z-10">
|
|
@@ -532,160 +575,41 @@ export function TurnSummary({
|
|
|
532
575
|
);
|
|
533
576
|
}
|
|
534
577
|
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
578
|
+
/**
|
|
579
|
+
* "Working · 2m 14s", "Waiting for 2 agents · 3m 5s", or "Worked for 4m 10s";
|
|
580
|
+
* null when a settled span is too short to state.
|
|
581
|
+
*/
|
|
582
|
+
function turnSummaryStatusLine(status: TurnSummaryStatus): ReactNode {
|
|
583
|
+
if (status.kind === "worked") {
|
|
584
|
+
return status.durationMs !== undefined &&
|
|
585
|
+
Number.isFinite(status.durationMs) &&
|
|
586
|
+
status.durationMs >= 1000 ? (
|
|
587
|
+
<span data-og-exchange-status="worked">
|
|
588
|
+
{status.label ?? "Worked for"} {formatElapsed(status.durationMs)}
|
|
589
|
+
</span>
|
|
590
|
+
) : null;
|
|
591
|
+
}
|
|
592
|
+
const label = status.label ?? (status.kind === "working" ? "Working" : "Waiting");
|
|
593
|
+
return (
|
|
594
|
+
<span data-og-exchange-status={status.kind}>
|
|
595
|
+
<span className={status.kind === "working" ? "og-shimmer-text" : undefined}>{label}</span>
|
|
596
|
+
{status.since ? <LiveElapsed since={status.since} /> : null}
|
|
597
|
+
</span>
|
|
545
598
|
);
|
|
546
|
-
const settled = itemSnapshot.every((item) => {
|
|
547
|
-
if (item.kind === "reasoning") {
|
|
548
|
-
return !item.streaming;
|
|
549
|
-
}
|
|
550
|
-
if (
|
|
551
|
-
item.kind === "tool-call" ||
|
|
552
|
-
item.kind === "worker" ||
|
|
553
|
-
item.kind === "sandbox" ||
|
|
554
|
-
item.kind === "startup-phase"
|
|
555
|
-
) {
|
|
556
|
-
return item.status !== "running";
|
|
557
|
-
}
|
|
558
|
-
return true;
|
|
559
|
-
});
|
|
560
|
-
return Object.freeze({
|
|
561
|
-
items: itemSnapshot,
|
|
562
|
-
toolCalls,
|
|
563
|
-
outcome,
|
|
564
|
-
failureText,
|
|
565
|
-
durationMs,
|
|
566
|
-
settled,
|
|
567
|
-
contextCompactionCount: Math.max(0, Math.floor(contextCompactionCount)),
|
|
568
|
-
});
|
|
569
|
-
}
|
|
570
|
-
|
|
571
|
-
const BUILT_IN_TURN_SUMMARY_FACETS: readonly TurnSummaryFacet[] = Object.freeze([
|
|
572
|
-
{
|
|
573
|
-
id: "steps",
|
|
574
|
-
summarize: ({ items }) => ({
|
|
575
|
-
content: `${items.length} ${items.length === 1 ? "step" : "steps"}`,
|
|
576
|
-
}),
|
|
577
|
-
},
|
|
578
|
-
{
|
|
579
|
-
id: "files",
|
|
580
|
-
summarize: ({ toolCalls }) => {
|
|
581
|
-
let files = 0;
|
|
582
|
-
for (const item of toolCalls) {
|
|
583
|
-
if (isApplyPatch(item)) {
|
|
584
|
-
files += applyPatchOpsFromToolItem(item).length;
|
|
585
|
-
}
|
|
586
|
-
}
|
|
587
|
-
return files ? { content: `${files} ${files === 1 ? "file" : "files"} edited` } : null;
|
|
588
|
-
},
|
|
589
|
-
},
|
|
590
|
-
{
|
|
591
|
-
id: "commands",
|
|
592
|
-
summarize: ({ toolCalls }) => {
|
|
593
|
-
const commands = toolCalls.filter((item) => item.name === "exec_command").length;
|
|
594
|
-
return commands
|
|
595
|
-
? { content: `${commands} ${commands === 1 ? "command" : "commands"}` }
|
|
596
|
-
: null;
|
|
597
|
-
},
|
|
598
|
-
},
|
|
599
|
-
{
|
|
600
|
-
id: "screenshots",
|
|
601
|
-
summarize: ({ toolCalls }) => {
|
|
602
|
-
let screenshots = 0;
|
|
603
|
-
for (const item of toolCalls) {
|
|
604
|
-
if (
|
|
605
|
-
(rawTypeOf(item) === "computer_call" ||
|
|
606
|
-
item.name === "computer_call" ||
|
|
607
|
-
item.name === "computer_screenshot") &&
|
|
608
|
-
(screenshotDataUrl(item.output) !== null || mediaPreviewFact(item.output) !== null)
|
|
609
|
-
) {
|
|
610
|
-
screenshots += 1;
|
|
611
|
-
}
|
|
612
|
-
}
|
|
613
|
-
return screenshots
|
|
614
|
-
? {
|
|
615
|
-
content: `${screenshots} ${screenshots === 1 ? "screenshot" : "screenshots"}`,
|
|
616
|
-
}
|
|
617
|
-
: null;
|
|
618
|
-
},
|
|
619
|
-
},
|
|
620
|
-
{
|
|
621
|
-
id: "memories",
|
|
622
|
-
summarize: ({ items }) => {
|
|
623
|
-
let saved = 0;
|
|
624
|
-
let updated = 0;
|
|
625
|
-
for (const item of items) {
|
|
626
|
-
if (item.kind !== "memory") {
|
|
627
|
-
continue;
|
|
628
|
-
}
|
|
629
|
-
if (item.variant === "corrected") {
|
|
630
|
-
updated += 1;
|
|
631
|
-
} else {
|
|
632
|
-
saved += 1;
|
|
633
|
-
}
|
|
634
|
-
}
|
|
635
|
-
const parts: string[] = [];
|
|
636
|
-
if (saved) {
|
|
637
|
-
parts.push(`${saved} ${saved === 1 ? "memory" : "memories"} saved`);
|
|
638
|
-
}
|
|
639
|
-
if (updated) {
|
|
640
|
-
parts.push(`${updated} ${updated === 1 ? "memory" : "memories"} updated`);
|
|
641
|
-
}
|
|
642
|
-
return parts.length > 0 ? { content: parts.join(" · ") } : null;
|
|
643
|
-
},
|
|
644
|
-
},
|
|
645
|
-
{
|
|
646
|
-
id: "compacted",
|
|
647
|
-
summarize: ({ contextCompactionCount }) =>
|
|
648
|
-
contextCompactionCount > 0
|
|
649
|
-
? {
|
|
650
|
-
content:
|
|
651
|
-
contextCompactionCount === 1 ? "compacted" : `${contextCompactionCount} compacts`,
|
|
652
|
-
ariaLabel:
|
|
653
|
-
contextCompactionCount === 1
|
|
654
|
-
? "Conversation history compacted"
|
|
655
|
-
: `${contextCompactionCount} conversation history compactions`,
|
|
656
|
-
}
|
|
657
|
-
: null,
|
|
658
|
-
},
|
|
659
|
-
{
|
|
660
|
-
id: "duration",
|
|
661
|
-
summarize: ({ durationMs }) => {
|
|
662
|
-
const duration = formatDurationFacet(durationMs);
|
|
663
|
-
return duration ? { content: duration } : null;
|
|
664
|
-
},
|
|
665
|
-
},
|
|
666
|
-
]);
|
|
667
|
-
|
|
668
|
-
function resolveTurnSummaryFacets(
|
|
669
|
-
configuration: TurnSummaryFacetConfiguration | undefined,
|
|
670
|
-
): readonly TurnSummaryFacet[] {
|
|
671
|
-
const requested: readonly TurnSummaryFacet[] = configuration?.replace ?? [
|
|
672
|
-
...BUILT_IN_TURN_SUMMARY_FACETS.filter(
|
|
673
|
-
(facet) => !configuration?.remove?.includes(facet.id as BuiltInTurnSummaryFacetId),
|
|
674
|
-
),
|
|
675
|
-
...(configuration?.add ?? []),
|
|
676
|
-
];
|
|
677
|
-
const seen = new Set<string>();
|
|
678
|
-
return requested.filter((facet) => {
|
|
679
|
-
if (!facet.id || seen.has(facet.id)) {
|
|
680
|
-
return false;
|
|
681
|
-
}
|
|
682
|
-
seen.add(facet.id);
|
|
683
|
-
return true;
|
|
684
|
-
});
|
|
685
599
|
}
|
|
686
600
|
|
|
687
|
-
|
|
688
|
-
|
|
601
|
+
/** A second-resolution clock; unmounts with the live row. */
|
|
602
|
+
function LiveElapsed({ since }: { since: string }) {
|
|
603
|
+
const startedAt = Date.parse(since);
|
|
604
|
+
const [now, setNow] = useState(() => Date.now());
|
|
605
|
+
useEffect(() => {
|
|
606
|
+
const timer = setInterval(() => setNow(Date.now()), 1000);
|
|
607
|
+
return () => clearInterval(timer);
|
|
608
|
+
}, []);
|
|
609
|
+
if (!Number.isFinite(startedAt)) return null;
|
|
610
|
+
return (
|
|
611
|
+
<span className="tabular-nums">{` · ${formatElapsed(Math.max(0, now - startedAt))}`}</span>
|
|
612
|
+
);
|
|
689
613
|
}
|
|
690
614
|
|
|
691
615
|
class FacetRenderBoundary extends Component<{ children: ReactNode }, { failed: boolean }> {
|
|
@@ -699,20 +623,3 @@ class FacetRenderBoundary extends Component<{ children: ReactNode }, { failed: b
|
|
|
699
623
|
return this.state.failed ? null : this.props.children;
|
|
700
624
|
}
|
|
701
625
|
}
|
|
702
|
-
|
|
703
|
-
function formatDurationFacet(durationMs: number | undefined): string | null {
|
|
704
|
-
if (durationMs === undefined || !Number.isFinite(durationMs) || durationMs < 1000) {
|
|
705
|
-
return null;
|
|
706
|
-
}
|
|
707
|
-
const totalSeconds = Math.floor(durationMs / 1000);
|
|
708
|
-
if (totalSeconds < 60) {
|
|
709
|
-
return `${totalSeconds}s`;
|
|
710
|
-
}
|
|
711
|
-
const totalMinutes = Math.floor(totalSeconds / 60);
|
|
712
|
-
if (totalMinutes < 60) {
|
|
713
|
-
return `${totalMinutes}m`;
|
|
714
|
-
}
|
|
715
|
-
const hours = Math.floor(totalMinutes / 60);
|
|
716
|
-
const minutes = totalMinutes % 60;
|
|
717
|
-
return `${hours}h ${String(minutes).padStart(2, "0")}m`;
|
|
718
|
-
}
|