@opengeni/react 3.3.2 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +769 -22
- package/dist/accounts.js +2 -0
- 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-4EUKJXUO.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-XYRDDSXF.js → chunk-2I6R3GCZ.js} +4285 -3980
- package/dist/chunk-2I6R3GCZ.js.map +1 -0
- package/dist/{chunk-JAQ5K7W6.js → chunk-2SFFYIH3.js} +1178 -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-3RJKUVCA.js +14068 -0
- package/dist/chunk-3RJKUVCA.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-ZPBTI3TE.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-YVCHAQZY.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-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-IOLVN74D.js → chunk-V5ZUJT2T.js} +175 -42
- package/dist/chunk-V5ZUJT2T.js.map +1 -0
- package/dist/chunk-WBJY57A3.js +402 -0
- package/dist/chunk-WBJY57A3.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-3AGBGTRT.js → chunk-X5UVUIMF.js} +1712 -1174
- 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/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 +35 -28
- 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/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 +26 -5
- 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 +24 -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 +2340 -6603
- 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 -1333
- 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/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 +106 -7
- 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 +193 -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 +5 -3
- 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 +2370 -667
- 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 +252 -429
- 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/tool-action-review.tsx +650 -0
- package/src/components/tool-review-history.tsx +88 -0
- 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 +2 -2
- 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 +227 -44
- 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 +79 -9
- package/src/hooks/use-last-started-turn-policy.ts +37 -11
- 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 +531 -335
- 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 +30 -2
- 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 +74 -7
- 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 +205 -10
- 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 -550
- 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/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 +1742 -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-MKKFRRRV.js +0 -14
- package/dist/chunk-2DZVYHVO.js +0 -470
- package/dist/chunk-2DZVYHVO.js.map +0 -1
- package/dist/chunk-3AGBGTRT.js.map +0 -1
- package/dist/chunk-4MDLEHXL.js.map +0 -1
- package/dist/chunk-5YK2ZDIG.js.map +0 -1
- package/dist/chunk-7EAFGICR.js +0 -302
- package/dist/chunk-7EAFGICR.js.map +0 -1
- package/dist/chunk-ELIYWBZR.js.map +0 -1
- package/dist/chunk-H5YGYNXS.js.map +0 -1
- package/dist/chunk-HUIKIDM5.js.map +0 -1
- package/dist/chunk-ICA6R6TW.js.map +0 -1
- package/dist/chunk-IOLVN74D.js.map +0 -1
- package/dist/chunk-JAQ5K7W6.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-NEXLLTP4.js.map +0 -1
- package/dist/chunk-PEI6RANI.js.map +0 -1
- package/dist/chunk-VTOREEXF.js +0 -142
- package/dist/chunk-VTOREEXF.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-XYRDDSXF.js.map +0 -1
- package/dist/chunk-YG4QEQF5.js +0 -9557
- package/dist/chunk-YG4QEQF5.js.map +0 -1
- package/dist/chunk-YVCHAQZY.js.map +0 -1
- package/dist/chunk-ZPBTI3TE.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-MKKFRRRV.js.map → browser-viewer-ZWR6MWJ7.js.map} +0 -0
- /package/dist/{computer-viewer-FWEZISW4.js.map → chat-interactive-block-4EUKJXUO.js.map} +0 -0
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import type { OpenGeniClient, OpenGeniLinkTarget } from "@opengeni/sdk";
|
|
2
|
+
import { createContext, useContext, useMemo, type ReactNode } from "react";
|
|
3
|
+
|
|
4
|
+
export type { OpenGeniLinkTarget };
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* How the host opens one Opengeni object an agent linked in chat Markdown.
|
|
8
|
+
*
|
|
9
|
+
* - `{ href }` renders a real link (new tab) — use it for a host page URL.
|
|
10
|
+
* - `{ open }` renders a button that runs the action (download, open a panel,
|
|
11
|
+
* client-side navigation) with loading and retry states.
|
|
12
|
+
* - `null` / `undefined` means "not handled here": the next resolver is asked,
|
|
13
|
+
* and when none handles it the text renders as an unavailable reference —
|
|
14
|
+
* never as a navigation that would 404 inside the host.
|
|
15
|
+
*/
|
|
16
|
+
export type OpenGeniLinkResolution =
|
|
17
|
+
| { href: string; open?: undefined }
|
|
18
|
+
| { open: () => void | Promise<void>; href?: undefined };
|
|
19
|
+
|
|
20
|
+
export type OpenGeniLinkResolver = (
|
|
21
|
+
target: OpenGeniLinkTarget,
|
|
22
|
+
) => OpenGeniLinkResolution | null | undefined;
|
|
23
|
+
|
|
24
|
+
const OpenGeniLinkContext = createContext<OpenGeniLinkResolver | null>(null);
|
|
25
|
+
|
|
26
|
+
/** First resolver that handles a target wins. */
|
|
27
|
+
export function chainLinkResolvers(
|
|
28
|
+
...resolvers: ReadonlyArray<OpenGeniLinkResolver | null | undefined>
|
|
29
|
+
): OpenGeniLinkResolver | null {
|
|
30
|
+
const active = resolvers.filter((resolver): resolver is OpenGeniLinkResolver =>
|
|
31
|
+
Boolean(resolver),
|
|
32
|
+
);
|
|
33
|
+
if (active.length === 0) return null;
|
|
34
|
+
if (active.length === 1) return active[0]!;
|
|
35
|
+
return (target) => {
|
|
36
|
+
for (const resolver of active) {
|
|
37
|
+
const resolution = resolver(target);
|
|
38
|
+
if (resolution) return resolution;
|
|
39
|
+
}
|
|
40
|
+
return null;
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Resolve Opengeni object links (`artifact:`, `sandbox:`, editable artifacts,
|
|
46
|
+
* Sites) for every {@link Markdown} body below. An inner provider is asked
|
|
47
|
+
* before an outer one, so a host can override a single kind and keep defaults.
|
|
48
|
+
*/
|
|
49
|
+
export function OpenGeniLinkProvider({
|
|
50
|
+
resolveLink,
|
|
51
|
+
children,
|
|
52
|
+
}: {
|
|
53
|
+
resolveLink: OpenGeniLinkResolver | null | undefined;
|
|
54
|
+
children: ReactNode;
|
|
55
|
+
}) {
|
|
56
|
+
const parent = useContext(OpenGeniLinkContext);
|
|
57
|
+
const value = useMemo(() => chainLinkResolvers(resolveLink, parent), [resolveLink, parent]);
|
|
58
|
+
return <OpenGeniLinkContext.Provider value={value}>{children}</OpenGeniLinkContext.Provider>;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/** The effective resolver from the nearest {@link OpenGeniLinkProvider}. */
|
|
62
|
+
export function useOpenGeniLinkResolver(): OpenGeniLinkResolver | null {
|
|
63
|
+
return useContext(OpenGeniLinkContext);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// Every sandbox read the proxy forwards is bounded by the API's own maximum.
|
|
67
|
+
const SANDBOX_DOWNLOAD_MAX_BYTES = 25 * 1024 * 1024;
|
|
68
|
+
|
|
69
|
+
type SessionLinkClient = Partial<Pick<OpenGeniClient, "createFileDownloadUrl" | "fsRead">>;
|
|
70
|
+
|
|
71
|
+
function saveBlob(blob: Blob, filename: string): void {
|
|
72
|
+
const url = URL.createObjectURL(blob);
|
|
73
|
+
const link = document.createElement("a");
|
|
74
|
+
link.href = url;
|
|
75
|
+
link.download = filename;
|
|
76
|
+
link.rel = "noopener";
|
|
77
|
+
document.body.append(link);
|
|
78
|
+
link.click();
|
|
79
|
+
link.remove();
|
|
80
|
+
setTimeout(() => URL.revokeObjectURL(url), 60_000);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
function openUrl(url: string): void {
|
|
84
|
+
// A signed download URL is attachment-disposition; an anchor click keeps the
|
|
85
|
+
// page and survives popup blockers after the awaited URL request.
|
|
86
|
+
const link = document.createElement("a");
|
|
87
|
+
link.href = url;
|
|
88
|
+
link.rel = "noopener noreferrer";
|
|
89
|
+
link.target = "_blank";
|
|
90
|
+
document.body.append(link);
|
|
91
|
+
link.click();
|
|
92
|
+
link.remove();
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
function base64Bytes(content: string): Uint8Array<ArrayBuffer> {
|
|
96
|
+
const binary = atob(content);
|
|
97
|
+
const bytes = new Uint8Array(binary.length);
|
|
98
|
+
for (let index = 0; index < binary.length; index += 1) bytes[index] = binary.charCodeAt(index);
|
|
99
|
+
return bytes;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Default resolver for a session conversation that talks to Opengeni through
|
|
104
|
+
* the normal SDK client (for example behind `createSessionProxyHandler`):
|
|
105
|
+
*
|
|
106
|
+
* - `artifact:<file>` downloads the retained file through a short-lived URL.
|
|
107
|
+
* - `sandbox:<path>` downloads when enabled by the host proxy capability.
|
|
108
|
+
*
|
|
109
|
+
* Editable artifacts and Sites have no default: they need a host surface
|
|
110
|
+
* (see `@opengeni/react/artifacts/*` and `@opengeni/react/sites`), so they stay
|
|
111
|
+
* unavailable until the host resolves them.
|
|
112
|
+
*/
|
|
113
|
+
export function sessionLinkResolver(input: {
|
|
114
|
+
client: SessionLinkClient;
|
|
115
|
+
workspaceId: string;
|
|
116
|
+
sessionId: string;
|
|
117
|
+
sandboxFiles?: boolean;
|
|
118
|
+
}): OpenGeniLinkResolver {
|
|
119
|
+
const { client, workspaceId, sessionId } = input;
|
|
120
|
+
return (target) => {
|
|
121
|
+
if (target.kind === "file") {
|
|
122
|
+
if (target.workspaceId !== null && target.workspaceId !== workspaceId) return null;
|
|
123
|
+
if (typeof client.createFileDownloadUrl !== "function") return null;
|
|
124
|
+
return {
|
|
125
|
+
open: async () => {
|
|
126
|
+
const { url } = await client.createFileDownloadUrl!(workspaceId, target.fileId, {
|
|
127
|
+
sessionId,
|
|
128
|
+
});
|
|
129
|
+
openUrl(url);
|
|
130
|
+
},
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
if (target.kind === "sandbox-file") {
|
|
134
|
+
if (input.sandboxFiles === false) return null;
|
|
135
|
+
if (typeof client.fsRead !== "function") return null;
|
|
136
|
+
return {
|
|
137
|
+
open: async () => {
|
|
138
|
+
const file = await client.fsRead!(workspaceId, sessionId, {
|
|
139
|
+
path: target.path,
|
|
140
|
+
encoding: "base64",
|
|
141
|
+
maxBytes: SANDBOX_DOWNLOAD_MAX_BYTES,
|
|
142
|
+
});
|
|
143
|
+
if (file.truncated) throw new Error("File is too large to download here.");
|
|
144
|
+
const name = file.path.split(/[\\/]/u).at(-1) || "download";
|
|
145
|
+
const bytes =
|
|
146
|
+
file.encoding === "base64"
|
|
147
|
+
? base64Bytes(file.content)
|
|
148
|
+
: new TextEncoder().encode(file.content);
|
|
149
|
+
saveBlob(new Blob([bytes], { type: "application/octet-stream" }), name);
|
|
150
|
+
},
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
return null;
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/** An editable artifact or Site to open in a host-mounted viewer. */
|
|
158
|
+
export type OpenGeniViewerTarget = Readonly<{
|
|
159
|
+
kind: "editable-artifact" | "site";
|
|
160
|
+
artifactId: string;
|
|
161
|
+
/** The link text the agent wrote, until the viewer loads the real title. */
|
|
162
|
+
title?: string | undefined;
|
|
163
|
+
}>;
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* "Open in host viewer": resolve agent links to editable artifacts and Sites
|
|
167
|
+
* in this workspace to `open(target)`, for example to mount
|
|
168
|
+
* `SessionArtifactViewer` beside the conversation. Other targets fall through.
|
|
169
|
+
*/
|
|
170
|
+
export function viewerLinkResolver(input: {
|
|
171
|
+
workspaceId: string;
|
|
172
|
+
open: (target: OpenGeniViewerTarget) => void;
|
|
173
|
+
}): OpenGeniLinkResolver {
|
|
174
|
+
return (target) => {
|
|
175
|
+
if (target.kind !== "editable-artifact" && target.kind !== "site") return null;
|
|
176
|
+
if (target.workspaceId !== input.workspaceId) return null;
|
|
177
|
+
return { open: () => input.open({ kind: target.kind, artifactId: target.artifactId }) };
|
|
178
|
+
};
|
|
179
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { SVGProps } from "react";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Simple Icons, CC0; https://github.com/simple-icons/simple-icons
|
|
5
|
+
* Source: https://raw.githubusercontent.com/simple-icons/simple-icons/develop/icons/openrouter.svg
|
|
6
|
+
*/
|
|
7
|
+
export function OpenRouterMark(props: SVGProps<SVGSVGElement>) {
|
|
8
|
+
return (
|
|
9
|
+
<svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" {...props}>
|
|
10
|
+
<path d="M16.778 1.844v1.919q-.569-.026-1.138-.032-.708-.008-1.415.037c-1.93.126-4.023.728-6.149 2.237-2.911 2.066-2.731 1.95-4.14 2.75-.396.223-1.342.574-2.185.798-.841.225-1.753.333-1.751.333v4.229s.768.108 1.61.333c.842.224 1.789.575 2.185.799 1.41.798 1.228.683 4.14 2.75 2.126 1.509 4.22 2.11 6.148 2.236.88.058 1.716.041 2.555.005v1.918l7.222-4.168-7.222-4.17v2.176c-.86.038-1.611.065-2.278.021-1.364-.09-2.417-.357-3.979-1.465-2.244-1.593-2.866-2.027-3.68-2.508.889-.518 1.449-.906 3.822-2.59 1.56-1.109 2.614-1.377 3.978-1.466.667-.044 1.418-.017 2.278.02v2.176L24 6.014Z" />
|
|
11
|
+
</svg>
|
|
12
|
+
);
|
|
13
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { SVGProps } from "react";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Opper's mark (the leaf-and-star symbol of the opper.ai wordmark), redrawn
|
|
5
|
+
* as a single currentColor path on a square box.
|
|
6
|
+
* Source: https://opper.ai (header logo SVG).
|
|
7
|
+
*/
|
|
8
|
+
export function OpperMark(props: SVGProps<SVGSVGElement>) {
|
|
9
|
+
return (
|
|
10
|
+
<svg viewBox="-49.5 0 315 315" fill="currentColor" aria-hidden="true" {...props}>
|
|
11
|
+
<path
|
|
12
|
+
fillRule="evenodd"
|
|
13
|
+
clipRule="evenodd"
|
|
14
|
+
d="M159.78 315C71.53 315 0 244.49 0 157.5C0 -18.9499 159.78 0.650075 159.78 0.650075C159.78 87.2201 88.36 157.4 0.2 157.5C149.8 157.64 159.78 315 159.78 315ZM160.52 217.98C160.52 217.98 156.94 161.65 105.04 157.52C120.6 157.34 160.52 151.54 160.52 96.5601C160.52 151.54 200.44 157.34 216 157.52C164.1 161.63 160.52 217.98 160.52 217.98Z"
|
|
15
|
+
/>
|
|
16
|
+
</svg>
|
|
17
|
+
);
|
|
18
|
+
}
|
|
@@ -7,9 +7,15 @@ import {
|
|
|
7
7
|
Suspense,
|
|
8
8
|
useEffect,
|
|
9
9
|
useState,
|
|
10
|
+
useSyncExternalStore,
|
|
10
11
|
} from "react";
|
|
11
12
|
import { cn } from "../lib/cn";
|
|
12
13
|
import { gitFileDiffToPatch } from "../lib/git-patch";
|
|
14
|
+
import {
|
|
15
|
+
loadPierreDiffs,
|
|
16
|
+
pierreDiffsRevision,
|
|
17
|
+
subscribePierreDiffs,
|
|
18
|
+
} from "../lib/pierre-diffs-loader";
|
|
13
19
|
|
|
14
20
|
/** Pierre `PatchDiff` props subset we drive. */
|
|
15
21
|
type PatchDiffComponent = ComponentType<{
|
|
@@ -50,10 +56,10 @@ export type PierreDiffProps = {
|
|
|
50
56
|
|
|
51
57
|
// Lazy-load `@pierre/diffs/react` so Shiki + the worker pool stay off the
|
|
52
58
|
// critical path (and out of an SSR bundle) until a diff is actually shown. The
|
|
53
|
-
//
|
|
54
|
-
//
|
|
59
|
+
// peer is loaded only through the host-registered loader (see
|
|
60
|
+
// `enablePierreDiffs`); without one the load rejects and we render `fallback`.
|
|
55
61
|
const LazyPatchDiff = lazy(async () => {
|
|
56
|
-
const mod = (await
|
|
62
|
+
const mod = (await loadPierreDiffs()) as {
|
|
57
63
|
PatchDiff: PatchDiffComponent;
|
|
58
64
|
};
|
|
59
65
|
return { default: mod.PatchDiff };
|
|
@@ -78,6 +84,7 @@ export function PierreDiff({
|
|
|
78
84
|
className,
|
|
79
85
|
}: PierreDiffProps) {
|
|
80
86
|
const [failed, setFailed] = useState(false);
|
|
87
|
+
const [ready, setReady] = useState(false);
|
|
81
88
|
const [forcedColors, setForcedColors] = useState(false);
|
|
82
89
|
|
|
83
90
|
// Pierre's rich renderer distinguishes additions/deletions primarily through
|
|
@@ -95,16 +102,29 @@ export function PierreDiff({
|
|
|
95
102
|
|
|
96
103
|
// Probe the import once so a hard failure (peer missing) shows `fallback`
|
|
97
104
|
// rather than a Suspense boundary that never resolves. Skipped when `plain`.
|
|
105
|
+
const loaderRevision = useSyncExternalStore(
|
|
106
|
+
subscribePierreDiffs,
|
|
107
|
+
pierreDiffsRevision,
|
|
108
|
+
pierreDiffsRevision,
|
|
109
|
+
);
|
|
98
110
|
useEffect(() => {
|
|
99
111
|
if (plain) return;
|
|
100
112
|
let cancelled = false;
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
113
|
+
setFailed(false);
|
|
114
|
+
// Mount the lazy renderer only after the peer loaded, so a missing peer
|
|
115
|
+
// never poisons React.lazy's cached result for the rest of the page.
|
|
116
|
+
loadPierreDiffs().then(
|
|
117
|
+
() => {
|
|
118
|
+
if (!cancelled) setReady(true);
|
|
119
|
+
},
|
|
120
|
+
() => {
|
|
121
|
+
if (!cancelled) setFailed(true);
|
|
122
|
+
},
|
|
123
|
+
);
|
|
104
124
|
return () => {
|
|
105
125
|
cancelled = true;
|
|
106
126
|
};
|
|
107
|
-
}, [plain]);
|
|
127
|
+
}, [plain, loaderRevision]);
|
|
108
128
|
|
|
109
129
|
if (plain || failed || forcedColors) {
|
|
110
130
|
// `plain` opts out of highlighting; `failed` = `@pierre/diffs` not installed.
|
|
@@ -147,6 +167,9 @@ export function PierreDiff({
|
|
|
147
167
|
"--diffs-light-bg": "var(--og-color-bg)",
|
|
148
168
|
"--diffs-bg-buffer-override": "var(--og-color-surface-1)",
|
|
149
169
|
"--diffs-bg-separator-override": "var(--og-color-surface-1)",
|
|
170
|
+
// Pierre's default (fg mixed 65% into bg) falls under 4.5:1 on the lifted
|
|
171
|
+
// graphite separator; quiet meta text keeps AA on every diff surface.
|
|
172
|
+
"--diffs-fg-number-override": "var(--og-color-fg-subtle)",
|
|
150
173
|
"--diffs-addition-color-override": "var(--og-color-status-idle)",
|
|
151
174
|
"--diffs-deletion-color-override": "var(--og-color-status-failed)",
|
|
152
175
|
"--diffs-fg-number-addition-override": "var(--og-color-status-idle)",
|
|
@@ -168,15 +191,17 @@ export function PierreDiff({
|
|
|
168
191
|
return (
|
|
169
192
|
<div className={cn("min-w-0", className)} data-opengeni-pierre-diff style={pierreVars}>
|
|
170
193
|
<Suspense fallback={loading ?? <DiffSkeleton />}>
|
|
171
|
-
{
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
194
|
+
{ready
|
|
195
|
+
? diff.map((file) => (
|
|
196
|
+
<div key={file.path} className="mb-2">
|
|
197
|
+
<LazyPatchDiff
|
|
198
|
+
patch={gitFileDiffToPatch(file)}
|
|
199
|
+
options={options}
|
|
200
|
+
{...(disableWorkerPool !== undefined ? { disableWorkerPool } : {})}
|
|
201
|
+
/>
|
|
202
|
+
</div>
|
|
203
|
+
))
|
|
204
|
+
: (loading ?? <DiffSkeleton />)}
|
|
180
205
|
</Suspense>
|
|
181
206
|
</div>
|
|
182
207
|
);
|
|
@@ -6,8 +6,14 @@ import {
|
|
|
6
6
|
Suspense,
|
|
7
7
|
useEffect,
|
|
8
8
|
useState,
|
|
9
|
+
useSyncExternalStore,
|
|
9
10
|
} from "react";
|
|
10
11
|
import { cn } from "../lib/cn";
|
|
12
|
+
import {
|
|
13
|
+
loadPierreDiffs,
|
|
14
|
+
pierreDiffsRevision,
|
|
15
|
+
subscribePierreDiffs,
|
|
16
|
+
} from "../lib/pierre-diffs-loader";
|
|
11
17
|
|
|
12
18
|
/** Pierre `File` props subset we drive — the single-file, syntax-highlighted view
|
|
13
19
|
* (Shiki), the read counterpart of `PatchDiff`. */
|
|
@@ -44,7 +50,7 @@ export type PierreFileProps = {
|
|
|
44
50
|
// Lazy-load `@pierre/diffs/react`'s `File` so Shiki + the worker pool stay off the
|
|
45
51
|
// critical path (and out of an SSR bundle) until a file is actually viewed.
|
|
46
52
|
const LazyFile = lazy(async () => {
|
|
47
|
-
const mod = (await
|
|
53
|
+
const mod = (await loadPierreDiffs()) as { File: FileComponent };
|
|
48
54
|
return { default: mod.File };
|
|
49
55
|
});
|
|
50
56
|
|
|
@@ -65,18 +71,30 @@ export function PierreFile({
|
|
|
65
71
|
className,
|
|
66
72
|
}: PierreFileProps) {
|
|
67
73
|
const [failed, setFailed] = useState(false);
|
|
74
|
+
const [ready, setReady] = useState(false);
|
|
68
75
|
|
|
69
76
|
// Probe the import once so a hard failure (peer missing) shows `fallback`
|
|
70
77
|
// rather than a Suspense boundary that never resolves.
|
|
78
|
+
const loaderRevision = useSyncExternalStore(
|
|
79
|
+
subscribePierreDiffs,
|
|
80
|
+
pierreDiffsRevision,
|
|
81
|
+
pierreDiffsRevision,
|
|
82
|
+
);
|
|
71
83
|
useEffect(() => {
|
|
72
84
|
let cancelled = false;
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
85
|
+
setFailed(false);
|
|
86
|
+
loadPierreDiffs().then(
|
|
87
|
+
() => {
|
|
88
|
+
if (!cancelled) setReady(true);
|
|
89
|
+
},
|
|
90
|
+
() => {
|
|
91
|
+
if (!cancelled) setFailed(true);
|
|
92
|
+
},
|
|
93
|
+
);
|
|
76
94
|
return () => {
|
|
77
95
|
cancelled = true;
|
|
78
96
|
};
|
|
79
|
-
}, []);
|
|
97
|
+
}, [loaderRevision]);
|
|
80
98
|
|
|
81
99
|
const name = path.split("/").filter(Boolean).pop() ?? path;
|
|
82
100
|
|
|
@@ -108,6 +126,9 @@ export function PierreFile({
|
|
|
108
126
|
"--diffs-light-bg": "var(--og-color-bg)",
|
|
109
127
|
"--diffs-bg-buffer-override": "var(--og-color-surface-1)",
|
|
110
128
|
"--diffs-bg-separator-override": "var(--og-color-surface-1)",
|
|
129
|
+
// Pierre's default (fg mixed 65% into bg) falls under 4.5:1 on the lifted
|
|
130
|
+
// graphite separator; quiet meta text keeps AA on every diff surface.
|
|
131
|
+
"--diffs-fg-number-override": "var(--og-color-fg-subtle)",
|
|
111
132
|
"--diffs-font-size": "var(--og-code-font-size)",
|
|
112
133
|
"--diffs-line-height": "var(--og-code-line-height)",
|
|
113
134
|
} as CSSProperties;
|
|
@@ -117,11 +138,15 @@ export function PierreFile({
|
|
|
117
138
|
<Suspense fallback={loading ?? <FileSkeleton />}>
|
|
118
139
|
{/* `cacheKey` keys Pierre's worker-pool highlight cache on path+size so a
|
|
119
140
|
re-select of the same file is instant but an edited file re-highlights. */}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
141
|
+
{ready ? (
|
|
142
|
+
<LazyFile
|
|
143
|
+
file={{ name, contents }}
|
|
144
|
+
options={options}
|
|
145
|
+
{...(disableWorkerPool !== undefined ? { disableWorkerPool } : {})}
|
|
146
|
+
/>
|
|
147
|
+
) : (
|
|
148
|
+
(loading ?? <FileSkeleton />)
|
|
149
|
+
)}
|
|
125
150
|
</Suspense>
|
|
126
151
|
</div>
|
|
127
152
|
);
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { useEffect, useRef } from "react";
|
|
2
|
+
import { paintPreviewLoading } from "../preview-loading-paint";
|
|
3
|
+
|
|
4
|
+
/** Private loading surface: never receives or executes the unfinished fence. */
|
|
5
|
+
export function PreviewLoading() {
|
|
6
|
+
const ref = useRef<HTMLCanvasElement>(null);
|
|
7
|
+
useEffect(() => {
|
|
8
|
+
const canvas = ref.current;
|
|
9
|
+
if (!canvas) return;
|
|
10
|
+
let ctx: CanvasRenderingContext2D | null;
|
|
11
|
+
try {
|
|
12
|
+
ctx = canvas.getContext("2d");
|
|
13
|
+
} catch {
|
|
14
|
+
return; // The CSS grid and status remain when canvas is unavailable.
|
|
15
|
+
}
|
|
16
|
+
if (!ctx) return;
|
|
17
|
+
const context = ctx;
|
|
18
|
+
const motion = window.matchMedia?.("(prefers-reduced-motion: reduce)");
|
|
19
|
+
let frame: number | undefined;
|
|
20
|
+
let time = 2;
|
|
21
|
+
let last: number | undefined;
|
|
22
|
+
let disposed = false;
|
|
23
|
+
// Without visibility observation, keep a static surface rather than doing
|
|
24
|
+
// unbounded work for previews that may be outside the viewport.
|
|
25
|
+
let visible = false;
|
|
26
|
+
const canAnimate = () => !disposed && visible && !document.hidden && motion?.matches === false;
|
|
27
|
+
|
|
28
|
+
function draw() {
|
|
29
|
+
const w = canvas!.clientWidth;
|
|
30
|
+
const h = canvas!.clientHeight;
|
|
31
|
+
if (!w || !h || document.hidden || disposed) return;
|
|
32
|
+
const d = Math.min(window.devicePixelRatio || 1, 2);
|
|
33
|
+
if (canvas!.width !== Math.round(w * d) || canvas!.height !== Math.round(h * d)) {
|
|
34
|
+
canvas!.width = Math.round(w * d);
|
|
35
|
+
canvas!.height = Math.round(h * d);
|
|
36
|
+
}
|
|
37
|
+
const style = getComputedStyle(canvas!);
|
|
38
|
+
const ink = style.getPropertyValue("--_og-preview-ink").trim() || "#9fdccd";
|
|
39
|
+
const glowColor = style.getPropertyValue("--_og-preview-glow").trim() || "#5fb8a3";
|
|
40
|
+
context.setTransform(d, 0, 0, d, 0, 0);
|
|
41
|
+
paintPreviewLoading(context, w, h, time, ink, glowColor);
|
|
42
|
+
canvas!.dataset.painted = "true";
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function stop() {
|
|
46
|
+
if (frame !== undefined) window.cancelAnimationFrame(frame);
|
|
47
|
+
frame = undefined;
|
|
48
|
+
last = undefined;
|
|
49
|
+
}
|
|
50
|
+
function tick(stamp: number) {
|
|
51
|
+
frame = undefined;
|
|
52
|
+
if (!canAnimate()) return;
|
|
53
|
+
if (last !== undefined) time += Math.min((stamp - last) / 1000, 0.05);
|
|
54
|
+
last = stamp;
|
|
55
|
+
draw();
|
|
56
|
+
frame = window.requestAnimationFrame(tick);
|
|
57
|
+
}
|
|
58
|
+
function refresh() {
|
|
59
|
+
stop();
|
|
60
|
+
if (disposed || document.hidden || (!visible && intersection)) return;
|
|
61
|
+
draw();
|
|
62
|
+
if (canAnimate() && typeof window.requestAnimationFrame === "function") {
|
|
63
|
+
frame = window.requestAnimationFrame(tick);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
const intersection =
|
|
67
|
+
typeof IntersectionObserver === "function"
|
|
68
|
+
? new IntersectionObserver(([entry]) => {
|
|
69
|
+
visible = entry?.isIntersecting === true;
|
|
70
|
+
refresh();
|
|
71
|
+
})
|
|
72
|
+
: undefined;
|
|
73
|
+
intersection?.observe(canvas);
|
|
74
|
+
const resize = typeof ResizeObserver === "function" ? new ResizeObserver(refresh) : undefined;
|
|
75
|
+
resize?.observe(canvas);
|
|
76
|
+
// Observe only ancestors, not the document subtree. This also updates the
|
|
77
|
+
// static reduced-motion canvas when a host changes its local theme.
|
|
78
|
+
const theme =
|
|
79
|
+
typeof MutationObserver === "function" ? new MutationObserver(refresh) : undefined;
|
|
80
|
+
for (let ancestor = canvas.parentElement; ancestor; ancestor = ancestor.parentElement) {
|
|
81
|
+
theme?.observe(ancestor, {
|
|
82
|
+
attributes: true,
|
|
83
|
+
attributeFilter: ["class", "style", "data-og-theme"],
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
motion?.addEventListener?.("change", refresh);
|
|
87
|
+
document.addEventListener("visibilitychange", refresh);
|
|
88
|
+
window.addEventListener("resize", refresh);
|
|
89
|
+
// Old hosts get one still frame; observed surfaces wait until onscreen.
|
|
90
|
+
if (!intersection) draw();
|
|
91
|
+
return () => {
|
|
92
|
+
disposed = true;
|
|
93
|
+
stop();
|
|
94
|
+
intersection?.disconnect();
|
|
95
|
+
resize?.disconnect();
|
|
96
|
+
theme?.disconnect();
|
|
97
|
+
motion?.removeEventListener?.("change", refresh);
|
|
98
|
+
document.removeEventListener("visibilitychange", refresh);
|
|
99
|
+
window.removeEventListener("resize", refresh);
|
|
100
|
+
};
|
|
101
|
+
}, []);
|
|
102
|
+
|
|
103
|
+
return (
|
|
104
|
+
<div className="og-preview-loading">
|
|
105
|
+
<canvas ref={ref} aria-hidden="true" />
|
|
106
|
+
<span className="og-preview-loading-label">Preparing preview…</span>
|
|
107
|
+
</div>
|
|
108
|
+
);
|
|
109
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Clock3Icon } from "lucide-react";
|
|
2
|
+
|
|
3
|
+
import { cn } from "../lib/cn";
|
|
4
|
+
import { providerRecoveryRetryingText, type ProviderRecoveryFacts } from "../lib/provider-recovery";
|
|
5
|
+
|
|
6
|
+
export type ProviderRecoveryNoticeProps = {
|
|
7
|
+
/** From `currentProviderRecovery(session, events)`; renders nothing when null. */
|
|
8
|
+
recovery: ProviderRecoveryFacts | null | undefined;
|
|
9
|
+
/** Replaces the secondary line; `null` hides it. */
|
|
10
|
+
detail?: string | null | undefined;
|
|
11
|
+
className?: string | undefined;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export const PROVIDER_RECOVERY_NOTICE_DETAIL =
|
|
15
|
+
"Your message is saved. Opengeni keeps retrying automatically for a few minutes.";
|
|
16
|
+
|
|
17
|
+
export const SANDBOX_WAIT_NOTICE_DETAIL =
|
|
18
|
+
"The turn continues automatically as soon as the sandbox is ready.";
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* One calm, live status line while the same turn waits for an automatic retry
|
|
22
|
+
* after a transient provider failure. It replaces itself on every attempt
|
|
23
|
+
* instead of adding timeline rows, and disappears once the turn runs again.
|
|
24
|
+
*/
|
|
25
|
+
export function ProviderRecoveryNotice({
|
|
26
|
+
recovery,
|
|
27
|
+
detail,
|
|
28
|
+
className,
|
|
29
|
+
}: ProviderRecoveryNoticeProps) {
|
|
30
|
+
if (!recovery) return null;
|
|
31
|
+
const secondary =
|
|
32
|
+
detail === undefined
|
|
33
|
+
? recovery.sandboxWait
|
|
34
|
+
? SANDBOX_WAIT_NOTICE_DETAIL
|
|
35
|
+
: PROVIDER_RECOVERY_NOTICE_DETAIL
|
|
36
|
+
: detail;
|
|
37
|
+
return (
|
|
38
|
+
<div
|
|
39
|
+
className={cn("flex items-start gap-2 text-og-sm text-og-fg-muted", className)}
|
|
40
|
+
data-og-provider-recovery=""
|
|
41
|
+
>
|
|
42
|
+
<Clock3Icon aria-hidden="true" className="mt-0.5 size-4 shrink-0" />
|
|
43
|
+
<div className="min-w-0" role="status" aria-live="polite">
|
|
44
|
+
<p className="font-medium text-og-fg">{providerRecoveryRetryingText(recovery)}</p>
|
|
45
|
+
{secondary ? <p className="mt-0.5 text-og-xs">{secondary}</p> : null}
|
|
46
|
+
</div>
|
|
47
|
+
</div>
|
|
48
|
+
);
|
|
49
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One presentation rule for a queued item, shared by the full queue and the
|
|
3
|
+
* compact session-chrome dock so the two cannot drift. A turn with an empty
|
|
4
|
+
* prompt and timeline annotations is valid content; an item with neither is a
|
|
5
|
+
* malformed or legacy object that gets an explicit fallback, never a blank row.
|
|
6
|
+
*/
|
|
7
|
+
export type QueueItemContent = "text" | "annotations" | "unavailable";
|
|
8
|
+
|
|
9
|
+
export const QUEUE_ITEM_CONTENT_UNAVAILABLE = "Content unavailable";
|
|
10
|
+
|
|
11
|
+
export function queueItemContent(text: string, annotationCount: number): QueueItemContent {
|
|
12
|
+
if (text.length > 0) return "text";
|
|
13
|
+
return annotationCount > 0 ? "annotations" : "unavailable";
|
|
14
|
+
}
|