@opengeni/react 3.1.0 → 3.1.2
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
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { useEffect, useState } from "react";
|
|
2
|
+
import type { RealtimeControllerClient, RealtimeModelOption } from "../realtime/session-realtime";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Voice models this user can start in the workspace, or an empty list while
|
|
6
|
+
* disabled, unsupported or unknown. Shares the stock voice control's catalog
|
|
7
|
+
* cache, without eagerly loading voice code for a text-only embed.
|
|
8
|
+
*/
|
|
9
|
+
export function useRealtimeVoiceModels(
|
|
10
|
+
client: unknown,
|
|
11
|
+
workspaceId: string,
|
|
12
|
+
enabled: boolean,
|
|
13
|
+
): RealtimeModelOption[] {
|
|
14
|
+
const [snapshot, setSnapshot] = useState<{
|
|
15
|
+
client: unknown;
|
|
16
|
+
workspaceId: string;
|
|
17
|
+
models: RealtimeModelOption[];
|
|
18
|
+
} | null>(null);
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
if (!enabled || !workspaceId) return;
|
|
21
|
+
const controller = new AbortController();
|
|
22
|
+
void import("../realtime/session-realtime")
|
|
23
|
+
.then(async ({ loadRealtimeModelCatalog }) => {
|
|
24
|
+
const models = await loadRealtimeModelCatalog(
|
|
25
|
+
client as RealtimeControllerClient,
|
|
26
|
+
workspaceId,
|
|
27
|
+
controller.signal,
|
|
28
|
+
);
|
|
29
|
+
if (!controller.signal.aborted) {
|
|
30
|
+
setSnapshot({
|
|
31
|
+
client,
|
|
32
|
+
workspaceId,
|
|
33
|
+
models: models?.filter((model) => model.available) ?? [],
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
})
|
|
37
|
+
.catch(() => undefined);
|
|
38
|
+
return () => controller.abort();
|
|
39
|
+
}, [client, workspaceId, enabled]);
|
|
40
|
+
return enabled &&
|
|
41
|
+
snapshot !== null &&
|
|
42
|
+
snapshot.client === client &&
|
|
43
|
+
snapshot.workspaceId === workspaceId
|
|
44
|
+
? snapshot.models
|
|
45
|
+
: [];
|
|
46
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type {
|
|
2
|
+
FileSystemRouteIdentity,
|
|
2
3
|
FsChangedPayload,
|
|
3
4
|
FsReadResponse,
|
|
4
5
|
FsTreeNode,
|
|
@@ -84,6 +85,9 @@ export type UseSandboxFilesOptions = ClientOverride & {
|
|
|
84
85
|
events?: SessionEvent[] | undefined;
|
|
85
86
|
/** Initial path to list (workspace root by default). */
|
|
86
87
|
rootPath?: string | undefined;
|
|
88
|
+
/** Exact capability identity for the selected filesystem route. A route/root
|
|
89
|
+
* change resets this hook and makes stale provider requests fail retryably. */
|
|
90
|
+
route?: FileSystemRouteIdentity | undefined;
|
|
87
91
|
/** Hold off the initial list (e.g. panel collapsed). Default true. */
|
|
88
92
|
enabled?: boolean | undefined;
|
|
89
93
|
/** Pause live reads/invalidation while preserving the last rendered result. */
|
|
@@ -169,8 +173,12 @@ function normalizeRoot(root: string): string {
|
|
|
169
173
|
return normalized === "." ? "" : normalized;
|
|
170
174
|
}
|
|
171
175
|
|
|
176
|
+
function isAbsoluteTreePath(path: string): boolean {
|
|
177
|
+
return path.startsWith("/") || /^[A-Za-z]:\//u.test(path);
|
|
178
|
+
}
|
|
179
|
+
|
|
172
180
|
function joinTreeRoot(root: string, path: string): string {
|
|
173
|
-
if (!root || path
|
|
181
|
+
if (!root || isAbsoluteTreePath(path)) return path;
|
|
174
182
|
return root === "/" ? `/${path}` : `${root}/${path}`;
|
|
175
183
|
}
|
|
176
184
|
|
|
@@ -301,6 +309,7 @@ const FS_LIST_BATCH_REQUEST_LIMIT = 16;
|
|
|
301
309
|
function initialDirectoryFrontier(rootPath: string, repoPaths: readonly string[]): string[] {
|
|
302
310
|
const root = normalizeRoot(rootPath);
|
|
303
311
|
const rootParts = root.split("/").filter(Boolean);
|
|
312
|
+
const rootPrefix = root.startsWith("//") ? "//" : root.startsWith("/") ? "/" : "";
|
|
304
313
|
const paths = new Set<string>();
|
|
305
314
|
for (const repoPath of repoPaths) {
|
|
306
315
|
const canonicalRepoPath = joinTreeRoot(root, normalizeRoot(repoPath));
|
|
@@ -308,7 +317,7 @@ function initialDirectoryFrontier(rootPath: string, repoPaths: readonly string[]
|
|
|
308
317
|
if (rootParts.some((part, index) => parts[index] !== part)) continue;
|
|
309
318
|
for (let depth = rootParts.length + 1; depth <= parts.length; depth += 1) {
|
|
310
319
|
const path = parts.slice(0, depth).join("/");
|
|
311
|
-
paths.add(
|
|
320
|
+
paths.add(`${rootPrefix}${path}`);
|
|
312
321
|
}
|
|
313
322
|
}
|
|
314
323
|
// A workspace with hundreds of repositories should remain lazy. This still
|
|
@@ -491,6 +500,15 @@ export function useSandboxFiles(
|
|
|
491
500
|
const enabled = (options.enabled ?? true) && Boolean(sessionId);
|
|
492
501
|
const active = options.active ?? true;
|
|
493
502
|
const rootPath = options.rootPath ?? "";
|
|
503
|
+
const routeEpoch = options.route?.epoch ?? null;
|
|
504
|
+
const routeRoot = options.route?.root ?? null;
|
|
505
|
+
const route = useMemo<FileSystemRouteIdentity | undefined>(
|
|
506
|
+
() =>
|
|
507
|
+
routeEpoch !== null && routeRoot !== null
|
|
508
|
+
? { epoch: routeEpoch, root: routeRoot }
|
|
509
|
+
: undefined,
|
|
510
|
+
[routeEpoch, routeRoot],
|
|
511
|
+
);
|
|
494
512
|
const repoPathsKey = [
|
|
495
513
|
...new Set((options.repoPaths?.length ? options.repoPaths : [rootPath]).map(normalizeRoot)),
|
|
496
514
|
].join("\u0000");
|
|
@@ -503,7 +521,7 @@ export function useSandboxFiles(
|
|
|
503
521
|
const acceptsEventReadsRef = useRef(acceptsEventReads);
|
|
504
522
|
acceptsEventReadsRef.current = acceptsEventReads;
|
|
505
523
|
const hasLiveIoFence = options.liveness !== undefined;
|
|
506
|
-
const identityKey = `${workspaceId}\u0000${sessionId ?? ""}\u0000${rootPath}\u0000${repoPathsKey}`;
|
|
524
|
+
const identityKey = `${workspaceId}\u0000${sessionId ?? ""}\u0000${rootPath}\u0000${repoPathsKey}\u0000${routeEpoch ?? ""}\u0000${routeRoot ?? ""}`;
|
|
507
525
|
|
|
508
526
|
const [tree, setTree] = useState<FileTreeNode[]>([]);
|
|
509
527
|
// A ref mirror of the current tree — lets the optimistic path snapshot the
|
|
@@ -597,6 +615,7 @@ export function useSandboxFiles(
|
|
|
597
615
|
const listRequests = [rootPath, ...frontierPaths].map((path) => ({
|
|
598
616
|
path,
|
|
599
617
|
depth: 1,
|
|
618
|
+
...(route ? { route } : {}),
|
|
600
619
|
}));
|
|
601
620
|
// Root plus the bounded repository frontier share one API request, one
|
|
602
621
|
// direct holder, and one provider attach. The old per-directory fan-out
|
|
@@ -677,7 +696,7 @@ export function useSandboxFiles(
|
|
|
677
696
|
if (refreshGenerationRef.current === generation) setGitLoading(false);
|
|
678
697
|
if (refreshAbortRef.current === refreshAbort) refreshAbortRef.current = null;
|
|
679
698
|
}
|
|
680
|
-
}, [client, workspaceId, sessionId, rootPath, repoPaths, applyStatus]);
|
|
699
|
+
}, [client, workspaceId, sessionId, rootPath, repoPaths, route, applyStatus]);
|
|
681
700
|
|
|
682
701
|
// Seed (or re-seed) the tree from a turn-end capture — the COLD/offline paint,
|
|
683
702
|
// zero Channel-A calls. The tree index is workspace-relative (`treeIndex`); the
|
|
@@ -737,7 +756,7 @@ export function useSandboxFiles(
|
|
|
737
756
|
const listed = await client.fsList(
|
|
738
757
|
workspaceId,
|
|
739
758
|
sessionId,
|
|
740
|
-
{ path, depth: 1 },
|
|
759
|
+
{ path, depth: 1, ...(route ? { route } : {}) },
|
|
741
760
|
{ signal: identitySignal },
|
|
742
761
|
);
|
|
743
762
|
if (identityGenerationRef.current !== identityGeneration) return;
|
|
@@ -757,7 +776,7 @@ export function useSandboxFiles(
|
|
|
757
776
|
}
|
|
758
777
|
}
|
|
759
778
|
},
|
|
760
|
-
[client, workspaceId, sessionId, capture, source, applyStatus],
|
|
779
|
+
[client, workspaceId, sessionId, capture, source, route, applyStatus],
|
|
761
780
|
);
|
|
762
781
|
|
|
763
782
|
const readFile = useCallback(
|
|
@@ -850,9 +869,14 @@ export function useSandboxFiles(
|
|
|
850
869
|
}
|
|
851
870
|
throw new Error("Captured file download failed after refreshing its URL.");
|
|
852
871
|
}
|
|
853
|
-
return await client.fsRead(
|
|
872
|
+
return await client.fsRead(
|
|
873
|
+
workspaceId,
|
|
874
|
+
sessionId,
|
|
875
|
+
{ path, ...(route ? { route } : {}) },
|
|
876
|
+
{ signal },
|
|
877
|
+
);
|
|
854
878
|
},
|
|
855
|
-
[client, workspaceId, sessionId, capture, source],
|
|
879
|
+
[client, workspaceId, sessionId, capture, source, route],
|
|
856
880
|
);
|
|
857
881
|
|
|
858
882
|
// TARGETED reconcile of a single directory — re-list ONE parent at depth 1 and
|
|
@@ -874,7 +898,12 @@ export function useSandboxFiles(
|
|
|
874
898
|
// visible to update; they re-list fresh on the next expand).
|
|
875
899
|
if (!parentIsLoaded(treeRef.current, path, rootPath)) return;
|
|
876
900
|
try {
|
|
877
|
-
const listed = await client.fsList(
|
|
901
|
+
const listed = await client.fsList(
|
|
902
|
+
workspaceId,
|
|
903
|
+
sessionId,
|
|
904
|
+
{ path, depth: 1, ...(route ? { route } : {}) },
|
|
905
|
+
{ signal },
|
|
906
|
+
);
|
|
878
907
|
if (identityGenerationRef.current !== identityGeneration) return;
|
|
879
908
|
const children = (listed.root.children ?? []).map((node) => fsNodeToTree(node));
|
|
880
909
|
if (path === normalizeRoot(rootPath)) {
|
|
@@ -892,7 +921,7 @@ export function useSandboxFiles(
|
|
|
892
921
|
// root-refresh here (that would collapse the tree the user is working in).
|
|
893
922
|
}
|
|
894
923
|
},
|
|
895
|
-
[client, workspaceId, sessionId, rootPath, applyStatus],
|
|
924
|
+
[client, workspaceId, sessionId, rootPath, route, applyStatus],
|
|
896
925
|
);
|
|
897
926
|
|
|
898
927
|
// Reconcile the visible directory frontier through bounded batch requests.
|
|
@@ -915,7 +944,13 @@ export function useSandboxFiles(
|
|
|
915
944
|
const listed = await client.fsListBatch(
|
|
916
945
|
workspaceId,
|
|
917
946
|
sessionId,
|
|
918
|
-
{
|
|
947
|
+
{
|
|
948
|
+
requests: chunk.map((path) => ({
|
|
949
|
+
path,
|
|
950
|
+
depth: 1,
|
|
951
|
+
...(route ? { route } : {}),
|
|
952
|
+
})),
|
|
953
|
+
},
|
|
919
954
|
{ signal },
|
|
920
955
|
);
|
|
921
956
|
if (identityGenerationRef.current !== identityGeneration) return;
|
|
@@ -943,7 +978,7 @@ export function useSandboxFiles(
|
|
|
943
978
|
}
|
|
944
979
|
}
|
|
945
980
|
},
|
|
946
|
-
[client, workspaceId, sessionId, rootPath, applyStatus],
|
|
981
|
+
[client, workspaceId, sessionId, rootPath, route, applyStatus],
|
|
947
982
|
);
|
|
948
983
|
|
|
949
984
|
// Run a Channel-A op behind an OPTIMISTIC tree edit. `apply` splices the change
|
|
@@ -1027,7 +1062,7 @@ export function useSandboxFiles(
|
|
|
1027
1062
|
const live = await client.fsRead(
|
|
1028
1063
|
workspaceId,
|
|
1029
1064
|
sessionId,
|
|
1030
|
-
{ path },
|
|
1065
|
+
{ path, ...(route ? { route } : {}) },
|
|
1031
1066
|
{ signal: identitySignal },
|
|
1032
1067
|
);
|
|
1033
1068
|
if (identityGenerationRef.current !== identityGeneration) {
|
|
@@ -1046,12 +1081,13 @@ export function useSandboxFiles(
|
|
|
1046
1081
|
path,
|
|
1047
1082
|
content,
|
|
1048
1083
|
overwrite: true,
|
|
1084
|
+
...(route ? { route } : {}),
|
|
1049
1085
|
});
|
|
1050
1086
|
},
|
|
1051
1087
|
exists ? [] : [parent],
|
|
1052
1088
|
);
|
|
1053
1089
|
},
|
|
1054
|
-
[client, workspaceId, sessionId, tree, rootPath, runOptimistic],
|
|
1090
|
+
[client, workspaceId, sessionId, tree, rootPath, route, runOptimistic],
|
|
1055
1091
|
);
|
|
1056
1092
|
|
|
1057
1093
|
const createFile = useCallback(
|
|
@@ -1072,11 +1108,12 @@ export function useSandboxFiles(
|
|
|
1072
1108
|
path,
|
|
1073
1109
|
content: "",
|
|
1074
1110
|
overwrite: false,
|
|
1111
|
+
...(route ? { route } : {}),
|
|
1075
1112
|
}),
|
|
1076
1113
|
[parent],
|
|
1077
1114
|
);
|
|
1078
1115
|
},
|
|
1079
|
-
[client, workspaceId, sessionId, rootPath, runOptimistic],
|
|
1116
|
+
[client, workspaceId, sessionId, rootPath, route, runOptimistic],
|
|
1080
1117
|
);
|
|
1081
1118
|
|
|
1082
1119
|
const createDir = useCallback(
|
|
@@ -1094,11 +1131,16 @@ export function useSandboxFiles(
|
|
|
1094
1131
|
await runOptimistic(
|
|
1095
1132
|
"create folder",
|
|
1096
1133
|
(nodes) => insertNode(nodes, parent, node, rootPath),
|
|
1097
|
-
() =>
|
|
1134
|
+
() =>
|
|
1135
|
+
client.fsMkdir(workspaceId, sessionId, {
|
|
1136
|
+
path,
|
|
1137
|
+
recursive: true,
|
|
1138
|
+
...(route ? { route } : {}),
|
|
1139
|
+
}),
|
|
1098
1140
|
[parent],
|
|
1099
1141
|
);
|
|
1100
1142
|
},
|
|
1101
|
-
[client, workspaceId, sessionId, rootPath, runOptimistic],
|
|
1143
|
+
[client, workspaceId, sessionId, rootPath, route, runOptimistic],
|
|
1102
1144
|
);
|
|
1103
1145
|
|
|
1104
1146
|
const deleteEntry = useCallback(
|
|
@@ -1107,11 +1149,16 @@ export function useSandboxFiles(
|
|
|
1107
1149
|
await runOptimistic(
|
|
1108
1150
|
"delete",
|
|
1109
1151
|
(nodes) => removeNode(nodes, path, rootPath),
|
|
1110
|
-
() =>
|
|
1152
|
+
() =>
|
|
1153
|
+
client.fsDelete(workspaceId, sessionId, {
|
|
1154
|
+
path,
|
|
1155
|
+
recursive,
|
|
1156
|
+
...(route ? { route } : {}),
|
|
1157
|
+
}),
|
|
1111
1158
|
[parentWithinTree(path, rootPath)],
|
|
1112
1159
|
);
|
|
1113
1160
|
},
|
|
1114
|
-
[client, workspaceId, sessionId, rootPath, runOptimistic],
|
|
1161
|
+
[client, workspaceId, sessionId, rootPath, route, runOptimistic],
|
|
1115
1162
|
);
|
|
1116
1163
|
|
|
1117
1164
|
const moveEntry = useCallback(
|
|
@@ -1133,11 +1180,12 @@ export function useSandboxFiles(
|
|
|
1133
1180
|
path,
|
|
1134
1181
|
newPath,
|
|
1135
1182
|
overwrite: opts?.overwrite ?? false,
|
|
1183
|
+
...(route ? { route } : {}),
|
|
1136
1184
|
}),
|
|
1137
1185
|
to === from ? [from] : [from, to],
|
|
1138
1186
|
);
|
|
1139
1187
|
},
|
|
1140
|
-
[client, workspaceId, sessionId, rootPath, runOptimistic],
|
|
1188
|
+
[client, workspaceId, sessionId, rootPath, route, runOptimistic],
|
|
1141
1189
|
);
|
|
1142
1190
|
|
|
1143
1191
|
// Initial paint + reset on identity change. Source selection:
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { SessionBackgroundCommand } from "@opengeni/sdk";
|
|
2
|
-
import { useCallback } from "react";
|
|
2
|
+
import { useCallback, useEffect, useRef } from "react";
|
|
3
3
|
|
|
4
4
|
import { useOpenGeni, type ClientOverride } from "../provider";
|
|
5
5
|
import { usePolledValue } from "./internal";
|
|
@@ -23,28 +23,39 @@ export function useSessionBackgroundCommands(
|
|
|
23
23
|
): UseSessionBackgroundCommandsResult {
|
|
24
24
|
const { client, workspaceId } = useOpenGeni(options);
|
|
25
25
|
const enabled = (options.enabled ?? true) && Boolean(sessionId);
|
|
26
|
-
const load = useCallback(
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
26
|
+
const load = useCallback(
|
|
27
|
+
async (signal?: AbortSignal) => {
|
|
28
|
+
if (!sessionId) return { commands: [] };
|
|
29
|
+
if (!client.listSessionBackgroundCommands) {
|
|
30
|
+
throw new Error("The configured Opengeni client does not support background commands");
|
|
31
|
+
}
|
|
32
|
+
return await client.listSessionBackgroundCommands(workspaceId, sessionId, { signal });
|
|
33
|
+
},
|
|
34
|
+
[client, workspaceId, sessionId],
|
|
35
|
+
);
|
|
33
36
|
const state = usePolledValue(load, {
|
|
34
37
|
enabled,
|
|
35
38
|
pollIntervalMs: options.pollIntervalMs,
|
|
36
39
|
});
|
|
37
40
|
const refresh = state.refresh;
|
|
41
|
+
const generation = useRef(0);
|
|
42
|
+
useEffect(() => {
|
|
43
|
+
generation.current += 1;
|
|
44
|
+
return () => {
|
|
45
|
+
generation.current += 1;
|
|
46
|
+
};
|
|
47
|
+
}, [client, workspaceId, sessionId, enabled]);
|
|
38
48
|
const cancel = useCallback(
|
|
39
49
|
async (commandId: string): Promise<void> => {
|
|
40
50
|
if (!sessionId) return;
|
|
41
51
|
if (!client.cancelSessionBackgroundCommand) {
|
|
42
|
-
throw new Error("The configured
|
|
52
|
+
throw new Error("The configured Opengeni client does not support background commands");
|
|
43
53
|
}
|
|
54
|
+
const ticket = generation.current;
|
|
44
55
|
await client.cancelSessionBackgroundCommand(workspaceId, sessionId, commandId);
|
|
45
|
-
await refresh();
|
|
56
|
+
if (enabled && ticket === generation.current) await refresh();
|
|
46
57
|
},
|
|
47
|
-
[client, workspaceId, sessionId, refresh],
|
|
58
|
+
[client, workspaceId, sessionId, refresh, enabled],
|
|
48
59
|
);
|
|
49
60
|
return {
|
|
50
61
|
commands: state.data?.commands ?? [],
|
|
@@ -9,6 +9,7 @@ import { useCallback, useEffect, useRef, useState } from "react";
|
|
|
9
9
|
import { useOpenGeni, type ClientOverride } from "../provider";
|
|
10
10
|
import { sandboxAcceptsLiveIo } from "../lib/sandbox-liveness";
|
|
11
11
|
import { terminalCanAcquirePty } from "../lib/terminal-capability";
|
|
12
|
+
import { normalizeError } from "../lib/error-message";
|
|
12
13
|
import { usePageLiveActivity } from "./internal";
|
|
13
14
|
|
|
14
15
|
// "on-demand" is the boxless-benign resting state: the lease is not currently
|
|
@@ -289,7 +290,7 @@ export function useSessionCapabilities(
|
|
|
289
290
|
return;
|
|
290
291
|
}
|
|
291
292
|
setState("error");
|
|
292
|
-
setError(
|
|
293
|
+
setError(normalizeError(cause));
|
|
293
294
|
}
|
|
294
295
|
});
|
|
295
296
|
}, warmingPollMs);
|
|
@@ -469,7 +470,7 @@ export function useSessionCapabilities(
|
|
|
469
470
|
return;
|
|
470
471
|
}
|
|
471
472
|
setState("error");
|
|
472
|
-
setError(
|
|
473
|
+
setError(normalizeError(cause));
|
|
473
474
|
}
|
|
474
475
|
})();
|
|
475
476
|
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import type { SendMessageInput } from "@opengeni/sdk";
|
|
2
|
+
import { useLayoutEffect, useMemo, useRef } from "react";
|
|
3
|
+
import { projectPendingApprovals } from "../approvals";
|
|
4
|
+
import { conversationTimeline } from "../conversation-timeline";
|
|
5
|
+
import { useOpenGeni, type ClientOverride } from "../session-context";
|
|
6
|
+
import { useWorkspaceModelCatalog } from "./use-available-models";
|
|
7
|
+
import { useClientConfigFlags } from "./use-client-config-flags";
|
|
8
|
+
import { useComposer, type UseComposerOptions } from "./use-composer";
|
|
9
|
+
import { useFileAttachments } from "./use-file-attachments";
|
|
10
|
+
import { useHumanInputRequests } from "./use-human-input";
|
|
11
|
+
import { useSession } from "./use-session";
|
|
12
|
+
import { useSessionControl } from "./use-session-control";
|
|
13
|
+
import { useSessionEvents } from "./use-session-events";
|
|
14
|
+
import { useTurnQueue } from "./use-turn-queue";
|
|
15
|
+
|
|
16
|
+
export type UseSessionConversationOptions = ClientOverride & {
|
|
17
|
+
/** Uploads remain subject to the client's capabilities. Defaults to true. */
|
|
18
|
+
attachments?: boolean | undefined;
|
|
19
|
+
/** Defaults to the client's model-selection offer. */
|
|
20
|
+
modelPicker?: boolean | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* Optional host context and notifications. The stock composer still owns
|
|
23
|
+
* draft validation, annotations, retry identity, queueing and delivery.
|
|
24
|
+
* File cleanup and upload blocking are composed with, not replaced by, these hooks.
|
|
25
|
+
*/
|
|
26
|
+
composerOptions?:
|
|
27
|
+
| Pick<
|
|
28
|
+
UseComposerOptions,
|
|
29
|
+
"sendExtras" | "sendBlocked" | "onSubmitted" | "onSent" | "onDeliveryError" | "initialDraft"
|
|
30
|
+
>
|
|
31
|
+
| undefined;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export type SessionConversationController = ReturnType<typeof useSessionConversation>;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* The complete conversation's state, independent of its layout. Mount once in
|
|
38
|
+
* a stable host and pass the result to SessionConversationView, or compose the
|
|
39
|
+
* stock timeline/chrome/composer around the same controller. Unmounting a view
|
|
40
|
+
* does not dispose the stream, draft or uploads while this hook stays mounted.
|
|
41
|
+
* The ordinary SessionConversation component uses this exact implementation.
|
|
42
|
+
*/
|
|
43
|
+
export function useSessionConversation(
|
|
44
|
+
sessionId: string,
|
|
45
|
+
options: UseSessionConversationOptions = {},
|
|
46
|
+
) {
|
|
47
|
+
const context = useOpenGeni(options);
|
|
48
|
+
const scope = { client: context.client, workspaceId: context.workspaceId };
|
|
49
|
+
const config = useClientConfigFlags(context.client);
|
|
50
|
+
const showModelPicker = options.modelPicker ?? config.modelSelection;
|
|
51
|
+
const catalog = useWorkspaceModelCatalog({ ...scope, enabled: showModelPicker });
|
|
52
|
+
const feed = useSessionEvents(sessionId, scope);
|
|
53
|
+
const eventOptions = { ...scope, events: feed.events };
|
|
54
|
+
const detail = useSession(sessionId, eventOptions);
|
|
55
|
+
const queue = useTurnQueue(sessionId, eventOptions);
|
|
56
|
+
const human = useHumanInputRequests(sessionId, eventOptions);
|
|
57
|
+
const control = useSessionControl(sessionId, scope);
|
|
58
|
+
const approvals = useMemo(() => projectPendingApprovals(feed.events), [feed.events]);
|
|
59
|
+
const files = useFileAttachments(scope);
|
|
60
|
+
const clearFiles = files.clear;
|
|
61
|
+
const attachmentSession = useRef(sessionId);
|
|
62
|
+
useLayoutEffect(() => {
|
|
63
|
+
if (attachmentSession.current === sessionId) return;
|
|
64
|
+
attachmentSession.current = sessionId;
|
|
65
|
+
// Upload transport is workspace-scoped; these unsent cards belong to one
|
|
66
|
+
// conversation. Retiring them also makes late settlements no-ops because
|
|
67
|
+
// their local attachment identities no longer exist in the queue.
|
|
68
|
+
clearFiles();
|
|
69
|
+
}, [clearFiles, sessionId]);
|
|
70
|
+
const uploadsEnabled = (options.attachments ?? true) && config.uploads;
|
|
71
|
+
const status = feed.sessionStatus ?? detail.session?.status;
|
|
72
|
+
const terminal = status === "cancelled";
|
|
73
|
+
const importedArchive = detail.session?.importedArchive?.readOnly === true;
|
|
74
|
+
const host = options.composerOptions;
|
|
75
|
+
const resolveExtras = () =>
|
|
76
|
+
typeof host?.sendExtras === "function" ? host.sendExtras() : host?.sendExtras;
|
|
77
|
+
const releaseSentFiles = (input: SendMessageInput) =>
|
|
78
|
+
files.removeReadyFiles(
|
|
79
|
+
(input.resources ?? []).flatMap((resource) =>
|
|
80
|
+
resource.kind === "file" ? [resource.fileId] : [],
|
|
81
|
+
),
|
|
82
|
+
);
|
|
83
|
+
const composer = useComposer(sessionId, {
|
|
84
|
+
...eventOptions,
|
|
85
|
+
initialDraft: host?.initialDraft,
|
|
86
|
+
effectiveControl: queue.effectiveControl ?? detail.session?.effectiveControl,
|
|
87
|
+
sendDestination: () => (queue.queue.length > 0 || status === "running" ? "queue" : "chat"),
|
|
88
|
+
sendExtras: () => {
|
|
89
|
+
const extras = resolveExtras();
|
|
90
|
+
return {
|
|
91
|
+
...extras,
|
|
92
|
+
resources: [...(extras?.resources ?? []), ...(uploadsEnabled ? files.readyResources : [])],
|
|
93
|
+
};
|
|
94
|
+
},
|
|
95
|
+
sendBlocked: () =>
|
|
96
|
+
terminal ||
|
|
97
|
+
importedArchive ||
|
|
98
|
+
(uploadsEnabled && files.hasUnresolved) ||
|
|
99
|
+
host?.sendBlocked?.() === true,
|
|
100
|
+
onSubmitted: (text, input) => {
|
|
101
|
+
releaseSentFiles(input);
|
|
102
|
+
return host?.onSubmitted?.(text, input);
|
|
103
|
+
},
|
|
104
|
+
onSent: (text, input) => {
|
|
105
|
+
releaseSentFiles(input);
|
|
106
|
+
return host?.onSent?.(text, input);
|
|
107
|
+
},
|
|
108
|
+
onDeliveryError: host?.onDeliveryError,
|
|
109
|
+
});
|
|
110
|
+
const timeline = useMemo(
|
|
111
|
+
() => conversationTimeline(feed.timeline, queue, composer),
|
|
112
|
+
[feed.timeline, queue, composer],
|
|
113
|
+
);
|
|
114
|
+
const error = detail.error ?? feed.error ?? human.error;
|
|
115
|
+
const loadFailed = Boolean(feed.error) && !feed.initialHistoryReady;
|
|
116
|
+
const retry = async () => {
|
|
117
|
+
await Promise.all([
|
|
118
|
+
...(detail.error ? [detail.refresh()] : []),
|
|
119
|
+
...(human.error ? [human.refresh()] : []),
|
|
120
|
+
...(feed.error ? [feed.jumpToLatest()] : []),
|
|
121
|
+
]);
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
return {
|
|
125
|
+
...scope,
|
|
126
|
+
sessionId,
|
|
127
|
+
config,
|
|
128
|
+
catalog,
|
|
129
|
+
showModelPicker,
|
|
130
|
+
feed,
|
|
131
|
+
detail,
|
|
132
|
+
queue,
|
|
133
|
+
human,
|
|
134
|
+
control,
|
|
135
|
+
approvals,
|
|
136
|
+
files,
|
|
137
|
+
uploadsEnabled,
|
|
138
|
+
composer,
|
|
139
|
+
/** The same live application context for text and durable voice messages. */
|
|
140
|
+
getModelContext: () => resolveExtras()?.modelContext,
|
|
141
|
+
timeline,
|
|
142
|
+
status,
|
|
143
|
+
terminal,
|
|
144
|
+
importedArchive,
|
|
145
|
+
running: status === "running" || status === "recovering" || status === "waiting_capacity",
|
|
146
|
+
error,
|
|
147
|
+
loadFailed,
|
|
148
|
+
retry,
|
|
149
|
+
};
|
|
150
|
+
}
|