@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
|
@@ -58,11 +58,39 @@ import { useWorkspaceCapture } from "../hooks/use-workspace-capture";
|
|
|
58
58
|
import { useMachineChip, type MachineChip } from "../hooks/use-machine-chip";
|
|
59
59
|
import { MACHINES_SESSION_POLL_MS, useMachines } from "../hooks/use-machines";
|
|
60
60
|
import type { MachineView } from "../types/machines";
|
|
61
|
-
import {
|
|
61
|
+
import type { SandboxFilesProps } from "./sandbox-files";
|
|
62
62
|
import { WorkbenchChanges } from "./workbench-changes";
|
|
63
63
|
import { SandboxTerminal, type XtermTheme } from "./sandbox-terminal";
|
|
64
64
|
import { WorkspaceDock, type WorkspaceDockProps, type WorkspaceTab } from "./workspace-dock";
|
|
65
65
|
|
|
66
|
+
const LazySandboxFiles = lazy(() =>
|
|
67
|
+
import("./sandbox-files")
|
|
68
|
+
.then(({ SandboxFiles }) => ({ default: SandboxFiles }))
|
|
69
|
+
// A host may already have attempted stale-deployment recovery. Keep an
|
|
70
|
+
// optional chunk failure inside Files rather than unmounting the chat.
|
|
71
|
+
.catch(() => ({ default: FilesLoadFailed })),
|
|
72
|
+
);
|
|
73
|
+
|
|
74
|
+
function FilesLoadFailed() {
|
|
75
|
+
return (
|
|
76
|
+
<CenteredState tone="danger" icon={<TriangleAlertIcon className="size-5" aria-hidden />}>
|
|
77
|
+
<p className="text-og-sm font-medium text-og-fg">Files could not be loaded.</p>
|
|
78
|
+
<DockActionButton onClick={() => window.location.reload()}>
|
|
79
|
+
<RefreshCwIcon className="size-3" aria-hidden />
|
|
80
|
+
Reload
|
|
81
|
+
</DockActionButton>
|
|
82
|
+
</CenteredState>
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function FilesTabBody(props: SandboxFilesProps) {
|
|
87
|
+
return (
|
|
88
|
+
<Suspense fallback={<WorkbenchSurfaceLoading name="Files" />}>
|
|
89
|
+
<LazySandboxFiles {...props} />
|
|
90
|
+
</Suspense>
|
|
91
|
+
);
|
|
92
|
+
}
|
|
93
|
+
|
|
66
94
|
const LazyBrowserViewer = lazy(async () => {
|
|
67
95
|
const { BrowserViewer } = await import("./browser-viewer");
|
|
68
96
|
return { default: BrowserViewer };
|
|
@@ -102,6 +130,12 @@ function isWorkbenchSurface(value: string): value is SandboxWorkspaceSurface {
|
|
|
102
130
|
return (WORKBENCH_SURFACES as readonly string[]).includes(value);
|
|
103
131
|
}
|
|
104
132
|
|
|
133
|
+
function isCanonicalAbsoluteSandboxPath(value: string | null | undefined): boolean {
|
|
134
|
+
if (!value) return false;
|
|
135
|
+
const portable = value.replaceAll("\\", "/");
|
|
136
|
+
return portable.startsWith("/") || /^[A-Za-z]:\//u.test(portable);
|
|
137
|
+
}
|
|
138
|
+
|
|
105
139
|
function sourceDrivenDefaultTab(
|
|
106
140
|
hasChanges: boolean,
|
|
107
141
|
changesEnabled: boolean,
|
|
@@ -113,20 +147,7 @@ function sourceDrivenDefaultTab(
|
|
|
113
147
|
return null;
|
|
114
148
|
}
|
|
115
149
|
|
|
116
|
-
function
|
|
117
|
-
switch (reason) {
|
|
118
|
-
case "repository_discovery_timed_out":
|
|
119
|
-
return "Workspace capture is incomplete because repository discovery timed out. Live files remain authoritative.";
|
|
120
|
-
case "repository_discovery_result_limit_exceeded":
|
|
121
|
-
return "Workspace capture is incomplete because the repository limit was exceeded. Live files remain authoritative.";
|
|
122
|
-
case "repository_read_unavailable":
|
|
123
|
-
return "Workspace capture is incomplete because repository changes could not be read. Live files remain authoritative.";
|
|
124
|
-
default:
|
|
125
|
-
return "Workspace capture is incomplete because repository discovery failed. Live files remain authoritative.";
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
function WorkbenchSurfaceLoading({ name }: { name: "Browser" | "Desktop" }) {
|
|
150
|
+
function WorkbenchSurfaceLoading({ name }: { name: "Files" | "Browser" | "Desktop" }) {
|
|
130
151
|
return (
|
|
131
152
|
<CenteredState
|
|
132
153
|
icon={
|
|
@@ -272,6 +293,13 @@ export type UseSandboxWorkspaceTabsOptions = ClientOverride & {
|
|
|
272
293
|
* attachment, and navigation callbacks are not activated.
|
|
273
294
|
*/
|
|
274
295
|
surfaces?: readonly SandboxWorkspaceSurface[] | undefined;
|
|
296
|
+
/**
|
|
297
|
+
* Whether this viewer may read the workspace machine fleet
|
|
298
|
+
* (`GET /machines`, permission `enrollments:read`). Defaults to true. Pass
|
|
299
|
+
* false for a viewer without it: the dock then never requests the fleet and
|
|
300
|
+
* the machine chip derives from the session's own capabilities alone.
|
|
301
|
+
*/
|
|
302
|
+
machinesEnabled?: boolean | undefined;
|
|
275
303
|
/** Override the source-driven default tab (e.g. a host landing tab id). When
|
|
276
304
|
* omitted the workbench picks Changes-vs-Files from capture or live Git. */
|
|
277
305
|
initialTab?: string | null | undefined;
|
|
@@ -376,6 +404,7 @@ export function useSandboxWorkspaceTabs(
|
|
|
376
404
|
const initialTab = options.initialTab ?? null;
|
|
377
405
|
const activeTab = options.activeTab ?? initialTab;
|
|
378
406
|
const workspaceVisible = options.workspaceVisible ?? true;
|
|
407
|
+
const machinesEnabled = options.machinesEnabled ?? true;
|
|
379
408
|
const requestedSurfaces = options.surfaces ?? WORKBENCH_SURFACES;
|
|
380
409
|
const surfaceSet = new Set<SandboxWorkspaceSurface>(requestedSurfaces);
|
|
381
410
|
const changesEnabled = surfaceSet.has(WORKBENCH_TAB_CHANGES);
|
|
@@ -424,6 +453,11 @@ export function useSandboxWorkspaceTabs(
|
|
|
424
453
|
const warmIntents =
|
|
425
454
|
storedWarmIntents.sessionId === sessionId ? storedWarmIntents : emptyWarmIntents(sessionId);
|
|
426
455
|
const { warmTerminal, warmFiles } = warmIntents;
|
|
456
|
+
// A host-requested file is itself explicit live-file intent. Derive the wake
|
|
457
|
+
// directly from the request instead of relying on a follow-up effect to copy
|
|
458
|
+
// it into local state; otherwise a missing or delayed effect leaves the file
|
|
459
|
+
// waiting for a sandbox that this hook never asks to start.
|
|
460
|
+
const filesWarmRequested = warmFiles || Boolean(requestedFilePath);
|
|
427
461
|
const requestWarmIntent = useCallback(
|
|
428
462
|
(intent: Exclude<keyof SessionWarmIntents, "sessionId">) => {
|
|
429
463
|
setStoredWarmIntents((previous) => {
|
|
@@ -433,17 +467,13 @@ export function useSandboxWorkspaceTabs(
|
|
|
433
467
|
},
|
|
434
468
|
[sessionId],
|
|
435
469
|
);
|
|
436
|
-
useEffect(() => {
|
|
437
|
-
if (requestedFilePath) requestWarmIntent("warmFiles");
|
|
438
|
-
}, [requestWarmIntent, requestedFilePath, requestedFileRequestId]);
|
|
439
|
-
|
|
440
470
|
// The session's machine fleet + the active-sandbox pointer. Drives the header
|
|
441
471
|
// chip (which machine + its connection state). Shares the session list poll.
|
|
442
472
|
const machines = useMachines({
|
|
443
473
|
workspaceId,
|
|
444
474
|
sessionId,
|
|
445
475
|
pollIntervalMs: MACHINES_SESSION_POLL_MS,
|
|
446
|
-
enabled: machineSurfaceEnabled,
|
|
476
|
+
enabled: machineSurfaceEnabled && machinesEnabled,
|
|
447
477
|
});
|
|
448
478
|
const activeMachine: MachineView | null =
|
|
449
479
|
machines.machines.find((m) => m.sandboxId === machines.activeSandboxId) ??
|
|
@@ -457,7 +487,7 @@ export function useSandboxWorkspaceTabs(
|
|
|
457
487
|
attachTerminal: terminalEnabled && warmTerminal,
|
|
458
488
|
// Explicit live-file intent only — NOT "the Files tab is open". A cold edit
|
|
459
489
|
// or guarded-file open wakes the box; a glance at the tree/diff does not.
|
|
460
|
-
attachFiles: workspaceDataEnabled &&
|
|
490
|
+
attachFiles: workspaceDataEnabled && filesWarmRequested,
|
|
461
491
|
});
|
|
462
492
|
const capabilities = caps.capabilities;
|
|
463
493
|
const liveness = capabilities?.liveness;
|
|
@@ -467,6 +497,9 @@ export function useSandboxWorkspaceTabs(
|
|
|
467
497
|
// is still pending.
|
|
468
498
|
const liveIoLiveness = liveness ?? null;
|
|
469
499
|
const fileSystemOn = capabilities?.FileSystem.available ?? false;
|
|
500
|
+
const fileSystemRoute = capabilities
|
|
501
|
+
? { epoch: capabilities.leaseEpoch, root: capabilities.FileSystem.root }
|
|
502
|
+
: undefined;
|
|
470
503
|
// The FS is writable only when it's live AND not read-only. A self-hosted box
|
|
471
504
|
// that's offline (or any read-only advertisement) or a capture-served cold tree
|
|
472
505
|
// must not offer create/rename/delete/edit affordances — you cannot mutate a
|
|
@@ -545,23 +578,6 @@ export function useSandboxWorkspaceTabs(
|
|
|
545
578
|
if (advertised.length > 0) return advertised;
|
|
546
579
|
return captureState.capture?.repos.map((repo) => repo.root) ?? [];
|
|
547
580
|
}, [capabilities?.Git.repos, captureState.capture]);
|
|
548
|
-
const notifiedCaptureDegradedReason = useRef<{
|
|
549
|
-
sessionId: string;
|
|
550
|
-
reason: string | null;
|
|
551
|
-
}>({
|
|
552
|
-
sessionId,
|
|
553
|
-
reason: null,
|
|
554
|
-
});
|
|
555
|
-
if (notifiedCaptureDegradedReason.current.sessionId !== sessionId) {
|
|
556
|
-
notifiedCaptureDegradedReason.current = { sessionId, reason: null };
|
|
557
|
-
}
|
|
558
|
-
useEffect(() => {
|
|
559
|
-
const reason = captureState.degradedReason;
|
|
560
|
-
if (!reason || notifiedCaptureDegradedReason.current.reason === reason) return;
|
|
561
|
-
notifiedCaptureDegradedReason.current = { sessionId, reason };
|
|
562
|
-
onNotify?.({ kind: "error", message: captureDegradedMessage(reason) });
|
|
563
|
-
}, [sessionId, captureState.degradedReason, onNotify]);
|
|
564
|
-
|
|
565
581
|
const files = useSandboxFiles(sessionId, {
|
|
566
582
|
events,
|
|
567
583
|
// No passive Channel-A reads while cold, even after a conclusive capture
|
|
@@ -574,9 +590,10 @@ export function useSandboxWorkspaceTabs(
|
|
|
574
590
|
active: filesActive && !turnInFlight,
|
|
575
591
|
// A deliberate canonical absolute-path open browses in the selected target's
|
|
576
592
|
// advertised namespace, so the authoritative tree and link share exact paths.
|
|
577
|
-
...(requestedFilePath
|
|
593
|
+
...(isCanonicalAbsoluteSandboxPath(requestedFilePath) && capabilities?.FileSystem.root
|
|
578
594
|
? { rootPath: capabilities.FileSystem.root }
|
|
579
595
|
: {}),
|
|
596
|
+
...(fileSystemRoute ? { route: fileSystemRoute } : {}),
|
|
580
597
|
repoPaths,
|
|
581
598
|
liveness: liveIoLiveness,
|
|
582
599
|
capture: captureState.capture,
|
|
@@ -665,7 +682,7 @@ export function useSandboxWorkspaceTabs(
|
|
|
665
682
|
capabilitiesState: caps.state,
|
|
666
683
|
activeMachineState: activeMachine?.state ?? null,
|
|
667
684
|
activeIsSelfhosted: activeMachine?.kind === "selfhosted",
|
|
668
|
-
wantsWarm: (terminalEnabled && warmTerminal) || (workspaceDataEnabled &&
|
|
685
|
+
wantsWarm: (terminalEnabled && warmTerminal) || (workspaceDataEnabled && filesWarmRequested),
|
|
669
686
|
capturedAt: captureState.capturedAt,
|
|
670
687
|
});
|
|
671
688
|
const workspaceWaking = chip.state === "waking";
|
|
@@ -688,7 +705,8 @@ export function useSandboxWorkspaceTabs(
|
|
|
688
705
|
(captureState.fileCount ?? 0) > 0 ||
|
|
689
706
|
(captureState.capture?.repos.some((repo) => (repo.branchDiff?.length ?? 0) > 0) ?? false);
|
|
690
707
|
const captureUnavailable =
|
|
691
|
-
|
|
708
|
+
!captureState.loading &&
|
|
709
|
+
((captureState.fileCount === 0 && !captureHasChanges) || captureState.error !== null);
|
|
692
710
|
if (defaultTabRef.current.value === null) {
|
|
693
711
|
if (initialTab && (!isWorkbenchSurface(initialTab) || surfaceSet.has(initialTab))) {
|
|
694
712
|
defaultTabRef.current.value = initialTab;
|
|
@@ -700,7 +718,13 @@ export function useSandboxWorkspaceTabs(
|
|
|
700
718
|
);
|
|
701
719
|
} else if (captureUnavailable && initialWorkspaceTab(events) === WORKBENCH_TAB_CHANGES) {
|
|
702
720
|
defaultTabRef.current.value = sourceDrivenDefaultTab(true, changesEnabled, filesEnabled);
|
|
703
|
-
} else if (
|
|
721
|
+
} else if (
|
|
722
|
+
!captureState.loading &&
|
|
723
|
+
(captureState.fileCount !== null || captureState.error !== null)
|
|
724
|
+
) {
|
|
725
|
+
// Metadata may arrive before a signed manifest. While that manifest is
|
|
726
|
+
// loading, neither a positive count nor zero (committed-only changes)
|
|
727
|
+
// proves an unavailable capture, so leave the default unresolved.
|
|
704
728
|
// No durable review surface exists. Files owns the explicit live-workspace
|
|
705
729
|
// gate; a user can open Changes deliberately if they need a fresh Git read.
|
|
706
730
|
defaultTabRef.current.value = sourceDrivenDefaultTab(false, changesEnabled, filesEnabled);
|
|
@@ -725,6 +749,7 @@ export function useSandboxWorkspaceTabs(
|
|
|
725
749
|
comparison={changesComparison}
|
|
726
750
|
onComparisonChange={setChangesComparison}
|
|
727
751
|
captureAvailable={captureAvailable}
|
|
752
|
+
captureDegraded={captureState.degradedReason !== null}
|
|
728
753
|
captureRevision={captureState.revision}
|
|
729
754
|
capturePending={capturePending}
|
|
730
755
|
liveWorkspaceExpected={liveWorkspaceExpected}
|
|
@@ -752,7 +777,7 @@ export function useSandboxWorkspaceTabs(
|
|
|
752
777
|
label: "Files",
|
|
753
778
|
icon: <FileCode2Icon />,
|
|
754
779
|
content: (
|
|
755
|
-
<
|
|
780
|
+
<FilesTabBody
|
|
756
781
|
key={sessionId}
|
|
757
782
|
files={files}
|
|
758
783
|
git={git}
|
|
@@ -770,7 +795,20 @@ export function useSandboxWorkspaceTabs(
|
|
|
770
795
|
}
|
|
771
796
|
workspaceWaking={!liveWorkspaceExpected && !captureAvailable && workspaceWaking}
|
|
772
797
|
liveWorkspaceReady={liveWorkspaceExpected}
|
|
773
|
-
|
|
798
|
+
workspaceError={
|
|
799
|
+
caps.error ??
|
|
800
|
+
(caps.viewerCapReached
|
|
801
|
+
? new Error(
|
|
802
|
+
"The live workspace viewer limit has been reached. Close another viewer and retry.",
|
|
803
|
+
)
|
|
804
|
+
: filesWarmRequested && caps.state === "on-demand" && !fileSystemOn
|
|
805
|
+
? new Error("This machine does not currently expose a live file system.")
|
|
806
|
+
: null)
|
|
807
|
+
}
|
|
808
|
+
onWakeWorkspace={() => {
|
|
809
|
+
if (filesWarmRequested) caps.renegotiate();
|
|
810
|
+
else requestWarmIntent("warmFiles");
|
|
811
|
+
}}
|
|
774
812
|
{...(requestedFilePath
|
|
775
813
|
? {
|
|
776
814
|
requestedPath: requestedFilePath,
|
|
@@ -841,6 +879,7 @@ export function useSandboxWorkspaceTabs(
|
|
|
841
879
|
// start BrowserViewer—the lazy panel is still unmounted until the
|
|
842
880
|
// user/agent first visits it.
|
|
843
881
|
enabled={workspaceVisible}
|
|
882
|
+
active={resolvedActiveTab === WORKBENCH_TAB_BROWSER}
|
|
844
883
|
onNotify={onNotify}
|
|
845
884
|
initialBrowserSessionId={initialBrowserSessionId}
|
|
846
885
|
onBrowserSessionIdChange={onBrowserSessionIdChange}
|
|
@@ -897,6 +936,7 @@ export function useSandboxWorkspaceTabs(
|
|
|
897
936
|
browserEnabled,
|
|
898
937
|
desktopEnabled,
|
|
899
938
|
captureAvailable,
|
|
939
|
+
captureState.degradedReason,
|
|
900
940
|
dirtyCount,
|
|
901
941
|
warmTerminal,
|
|
902
942
|
requestedFilePath,
|
|
@@ -932,6 +972,8 @@ export function useSandboxWorkspaceTabs(
|
|
|
932
972
|
caps.state,
|
|
933
973
|
caps.error,
|
|
934
974
|
caps.viewerCapReached,
|
|
975
|
+
caps.renegotiate,
|
|
976
|
+
filesWarmRequested,
|
|
935
977
|
requestWarmIntent,
|
|
936
978
|
createLinkedComputer,
|
|
937
979
|
]);
|
|
@@ -961,6 +1003,12 @@ export type SandboxWorkspaceProps = ClientOverride & {
|
|
|
961
1003
|
* Terminal, Browser, and Desktop. Disabled surfaces remain behaviorally dormant.
|
|
962
1004
|
*/
|
|
963
1005
|
surfaces?: readonly SandboxWorkspaceSurface[] | undefined;
|
|
1006
|
+
/**
|
|
1007
|
+
* Whether this viewer may read the workspace machine fleet
|
|
1008
|
+
* (`GET /machines`, permission `enrollments:read`). Defaults to true. Pass
|
|
1009
|
+
* false for a viewer without it so the dock never requests the fleet.
|
|
1010
|
+
*/
|
|
1011
|
+
machinesEnabled?: boolean | undefined;
|
|
964
1012
|
/** Host tabs injected BEFORE the workbench tabs (e.g. a "Run" landing tab). */
|
|
965
1013
|
leadingTabs?: WorkspaceTab[] | undefined;
|
|
966
1014
|
/** Host tabs injected AFTER the workbench tabs (e.g. a "Debug" tab). */
|
|
@@ -969,6 +1017,8 @@ export type SandboxWorkspaceProps = ClientOverride & {
|
|
|
969
1017
|
* omitted the workbench decides from the durable workspace capture. */
|
|
970
1018
|
initialTab?: string | undefined;
|
|
971
1019
|
onActiveTabChange?: ((activeTab: string) => void) | undefined;
|
|
1020
|
+
/** Open a built-in or host-injected tab. A new requestId reopens the same tab. */
|
|
1021
|
+
openTabRequest?: { tab: string; requestId: number } | null | undefined;
|
|
972
1022
|
initialFilePath?: string | null | undefined;
|
|
973
1023
|
onFilePathChange?: ((path: string | null) => void) | undefined;
|
|
974
1024
|
/** Presentation-only filter for Files tree nodes and selected-file viewing. */
|
|
@@ -1024,10 +1074,12 @@ export function SandboxWorkspace(props: SandboxWorkspaceProps): ReactNode {
|
|
|
1024
1074
|
events,
|
|
1025
1075
|
primary,
|
|
1026
1076
|
surfaces,
|
|
1077
|
+
machinesEnabled,
|
|
1027
1078
|
leadingTabs,
|
|
1028
1079
|
trailingTabs,
|
|
1029
1080
|
initialTab,
|
|
1030
1081
|
onActiveTabChange,
|
|
1082
|
+
openTabRequest,
|
|
1031
1083
|
initialFilePath,
|
|
1032
1084
|
onFilePathChange,
|
|
1033
1085
|
isFileNodeVisible,
|
|
@@ -1069,6 +1121,32 @@ export function SandboxWorkspace(props: SandboxWorkspaceProps): ReactNode {
|
|
|
1069
1121
|
const nextFileRequestId = useRef(0);
|
|
1070
1122
|
const nextComputerRequestId = useRef(0);
|
|
1071
1123
|
const selectedTab = storedSelection?.sessionId === sessionId ? storedSelection.tab : null;
|
|
1124
|
+
const handledTabRequest = useRef<{ sessionId: string; requestId: number } | null>(null);
|
|
1125
|
+
useEffect(() => {
|
|
1126
|
+
if (
|
|
1127
|
+
!openTabRequest ||
|
|
1128
|
+
(handledTabRequest.current?.sessionId === sessionId &&
|
|
1129
|
+
handledTabRequest.current.requestId === openTabRequest.requestId)
|
|
1130
|
+
)
|
|
1131
|
+
return;
|
|
1132
|
+
const available =
|
|
1133
|
+
[...(leadingTabs ?? []), ...(trailingTabs ?? [])].some(
|
|
1134
|
+
(tab) => tab.id === openTabRequest.tab,
|
|
1135
|
+
) || (surfaces ?? WORKBENCH_SURFACES).some((tab) => tab === openTabRequest.tab);
|
|
1136
|
+
if (!available) return;
|
|
1137
|
+
handledTabRequest.current = { sessionId, requestId: openTabRequest.requestId };
|
|
1138
|
+
setStoredSelection({ sessionId, tab: openTabRequest.tab });
|
|
1139
|
+
onActiveTabChange?.(openTabRequest.tab);
|
|
1140
|
+
onCollapsedChange?.(false);
|
|
1141
|
+
}, [
|
|
1142
|
+
openTabRequest,
|
|
1143
|
+
sessionId,
|
|
1144
|
+
leadingTabs,
|
|
1145
|
+
trailingTabs,
|
|
1146
|
+
surfaces,
|
|
1147
|
+
onActiveTabChange,
|
|
1148
|
+
onCollapsedChange,
|
|
1149
|
+
]);
|
|
1072
1150
|
const activeTabHint = selectedTab ?? initialTab ?? leadingTabs?.[0]?.id ?? null;
|
|
1073
1151
|
const openFile = useCallback(
|
|
1074
1152
|
(path: string, line?: number | null) => {
|
|
@@ -1117,6 +1195,7 @@ export function SandboxWorkspace(props: SandboxWorkspaceProps): ReactNode {
|
|
|
1117
1195
|
sessionId,
|
|
1118
1196
|
events,
|
|
1119
1197
|
...(surfaces ? { surfaces } : {}),
|
|
1198
|
+
...(machinesEnabled !== undefined ? { machinesEnabled } : {}),
|
|
1120
1199
|
...(initialTab ? { initialTab } : {}),
|
|
1121
1200
|
activeTab: activeTabHint,
|
|
1122
1201
|
workspaceVisible: collapsed !== true,
|
|
@@ -1172,7 +1251,12 @@ export function SandboxWorkspace(props: SandboxWorkspaceProps): ReactNode {
|
|
|
1172
1251
|
tabs={tabs}
|
|
1173
1252
|
{...(activeTab !== undefined ? { activeTab } : {})}
|
|
1174
1253
|
onActiveTabChange={selectTab}
|
|
1175
|
-
|
|
1254
|
+
// Browser and Desktop select independent workspace resources, potentially
|
|
1255
|
+
// on another placement. Their own viewers report runtime status; the
|
|
1256
|
+
// agent-session machine chip must not describe those resources.
|
|
1257
|
+
{...(machine.enabled &&
|
|
1258
|
+
activeTab !== WORKBENCH_TAB_BROWSER &&
|
|
1259
|
+
activeTab !== WORKBENCH_TAB_DESKTOP
|
|
1176
1260
|
? {
|
|
1177
1261
|
headerAccessory: <MachineStateChip chip={machine.chip} />,
|
|
1178
1262
|
}
|
|
@@ -1292,6 +1376,7 @@ function ChangesTabContent({
|
|
|
1292
1376
|
git,
|
|
1293
1377
|
comparison,
|
|
1294
1378
|
captureAvailable,
|
|
1379
|
+
captureDegraded,
|
|
1295
1380
|
captureRevision,
|
|
1296
1381
|
capturePending,
|
|
1297
1382
|
liveWorkspaceExpected,
|
|
@@ -1305,6 +1390,7 @@ function ChangesTabContent({
|
|
|
1305
1390
|
git: UseSandboxGitResult;
|
|
1306
1391
|
comparison: SandboxGitComparison;
|
|
1307
1392
|
captureAvailable: boolean;
|
|
1393
|
+
captureDegraded: boolean;
|
|
1308
1394
|
captureRevision: number | null;
|
|
1309
1395
|
capturePending: boolean;
|
|
1310
1396
|
liveWorkspaceExpected: boolean;
|
|
@@ -1398,6 +1484,8 @@ function ChangesTabContent({
|
|
|
1398
1484
|
}
|
|
1399
1485
|
|
|
1400
1486
|
if (!liveWorkspaceExpected && (comparison !== "working" || !captureAvailable)) {
|
|
1487
|
+
// Staged changes are live-only; a failed saved preview is not their blocker.
|
|
1488
|
+
const previewUnavailable = captureDegraded && !captureAvailable && comparison !== "staged";
|
|
1401
1489
|
return (
|
|
1402
1490
|
<CenteredState
|
|
1403
1491
|
icon={
|
|
@@ -1406,22 +1494,30 @@ function ChangesTabContent({
|
|
|
1406
1494
|
className="size-5 animate-spin motion-reduce:animate-none"
|
|
1407
1495
|
aria-hidden
|
|
1408
1496
|
/>
|
|
1497
|
+
) : previewUnavailable ? (
|
|
1498
|
+
<TriangleAlertIcon className="size-5" aria-hidden />
|
|
1409
1499
|
) : (
|
|
1410
1500
|
<CpuIcon className="size-5" aria-hidden />
|
|
1411
1501
|
)
|
|
1412
1502
|
}
|
|
1413
1503
|
>
|
|
1414
1504
|
<p className="text-og-sm font-medium text-og-fg">
|
|
1415
|
-
{workspaceWaking
|
|
1505
|
+
{workspaceWaking
|
|
1506
|
+
? "Waking workspace"
|
|
1507
|
+
: previewUnavailable
|
|
1508
|
+
? "Saved changes preview is unavailable"
|
|
1509
|
+
: "Workspace is resting"}
|
|
1416
1510
|
</p>
|
|
1417
1511
|
<p className="text-og-sm leading-5 text-og-fg-subtle">
|
|
1418
1512
|
{workspaceWaking
|
|
1419
1513
|
? "Connecting to the live working tree…"
|
|
1420
|
-
:
|
|
1421
|
-
? "
|
|
1422
|
-
: comparison === "
|
|
1423
|
-
? "Wake the sandbox to
|
|
1424
|
-
:
|
|
1514
|
+
: previewUnavailable
|
|
1515
|
+
? "Open the live workspace to view current changes."
|
|
1516
|
+
: comparison === "branch"
|
|
1517
|
+
? "Wake the sandbox to compare this branch with the remote default branch."
|
|
1518
|
+
: comparison === "staged"
|
|
1519
|
+
? "Wake the sandbox to inspect staged changes."
|
|
1520
|
+
: "No captured revision is available yet. Wake the sandbox to inspect uncommitted changes."}
|
|
1425
1521
|
</p>
|
|
1426
1522
|
{!workspaceWaking ? (
|
|
1427
1523
|
<DockActionButton onClick={onWake}>
|