@opengeni/react 3.1.0 → 3.1.3-canary.38890816741001
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +769 -22
- package/dist/accounts.js +89 -11
- package/dist/accounts.js.map +1 -1
- package/dist/approvals.d.ts +2 -1
- package/dist/artifacts-document.js +5 -3
- package/dist/artifacts-presentation.js +5 -3
- package/dist/artifacts-spreadsheet.d.ts +1 -1
- package/dist/artifacts-spreadsheet.js +5 -3
- package/dist/artifacts.d.ts +5 -1
- package/dist/artifacts.js +536 -42
- package/dist/artifacts.js.map +1 -1
- package/dist/browser-viewer-ZWR6MWJ7.js +19 -0
- package/dist/capability-catalog-row.d.ts +20 -0
- package/dist/capability-logo-fallback.d.ts +3 -0
- package/dist/chat-interactive-block-BO2IWXVK.js +14 -0
- package/dist/chunk-2DDJ6YH6.js +41 -0
- package/dist/chunk-2DDJ6YH6.js.map +1 -0
- package/dist/chunk-2HVLQ26H.js +183 -0
- package/dist/chunk-2HVLQ26H.js.map +1 -0
- package/dist/{chunk-RGALCTWO.js → chunk-2I6R3GCZ.js} +4285 -3980
- package/dist/chunk-2I6R3GCZ.js.map +1 -0
- package/dist/{chunk-D3UIAJKY.js → chunk-2SFFYIH3.js} +1179 -166
- package/dist/chunk-2SFFYIH3.js.map +1 -0
- package/dist/chunk-3PVDYTTB.js +24 -0
- package/dist/chunk-3PVDYTTB.js.map +1 -0
- package/dist/chunk-3UZCWK46.js +298 -0
- package/dist/chunk-3UZCWK46.js.map +1 -0
- package/dist/chunk-47CKUXTW.js +293 -0
- package/dist/chunk-47CKUXTW.js.map +1 -0
- package/dist/chunk-4QYP6QUI.js +109 -0
- package/dist/chunk-4QYP6QUI.js.map +1 -0
- package/dist/chunk-5EY26VZ7.js +1053 -0
- package/dist/chunk-5EY26VZ7.js.map +1 -0
- package/dist/chunk-5I4VRWBB.js +56 -0
- package/dist/chunk-5I4VRWBB.js.map +1 -0
- package/dist/chunk-5WOR7UCL.js +191 -0
- package/dist/chunk-5WOR7UCL.js.map +1 -0
- package/dist/chunk-5YJLGOM5.js +51 -0
- package/dist/chunk-5YJLGOM5.js.map +1 -0
- package/dist/chunk-6JFN3OWG.js +386 -0
- package/dist/chunk-6JFN3OWG.js.map +1 -0
- package/dist/chunk-7QJT5O4S.js +35 -0
- package/dist/chunk-7QJT5O4S.js.map +1 -0
- package/dist/chunk-A55KV72M.js +402 -0
- package/dist/chunk-A55KV72M.js.map +1 -0
- package/dist/chunk-ADWCLI4G.js +2028 -0
- package/dist/chunk-ADWCLI4G.js.map +1 -0
- package/dist/chunk-B27E3V37.js +29 -0
- package/dist/chunk-B27E3V37.js.map +1 -0
- package/dist/chunk-B7TC2A33.js +83 -0
- package/dist/chunk-B7TC2A33.js.map +1 -0
- package/dist/chunk-BLL56F7R.js +385 -0
- package/dist/chunk-BLL56F7R.js.map +1 -0
- package/dist/chunk-BOFEQC6K.js +162 -0
- package/dist/chunk-BOFEQC6K.js.map +1 -0
- package/dist/chunk-CM7LVUKC.js +35 -0
- package/dist/chunk-CM7LVUKC.js.map +1 -0
- package/dist/chunk-CORUP6JB.js +122 -0
- package/dist/chunk-CORUP6JB.js.map +1 -0
- package/dist/chunk-CSX5FFKZ.js +35 -0
- package/dist/chunk-CSX5FFKZ.js.map +1 -0
- package/dist/chunk-EGVHJKGJ.js +3125 -0
- package/dist/chunk-EGVHJKGJ.js.map +1 -0
- package/dist/{chunk-NEXLLTP4.js → chunk-G76LSA76.js} +6 -5
- package/dist/chunk-G76LSA76.js.map +1 -0
- package/dist/{chunk-PEI6RANI.js → chunk-GQMRL52F.js} +311 -75
- package/dist/chunk-GQMRL52F.js.map +1 -0
- package/dist/{chunk-ELIYWBZR.js → chunk-GUUXOISA.js} +1113 -457
- package/dist/chunk-GUUXOISA.js.map +1 -0
- package/dist/{chunk-HUIKIDM5.js → chunk-I7X2P4FU.js} +225 -116
- package/dist/chunk-I7X2P4FU.js.map +1 -0
- package/dist/chunk-IGFZFLI2.js +1390 -0
- package/dist/chunk-IGFZFLI2.js.map +1 -0
- package/dist/{chunk-4MDLEHXL.js → chunk-IMSUVYQB.js} +26 -13
- package/dist/chunk-IMSUVYQB.js.map +1 -0
- package/dist/chunk-IOYHDEP3.js +38 -0
- package/dist/chunk-IOYHDEP3.js.map +1 -0
- package/dist/chunk-IZV5FTJC.js +55 -0
- package/dist/chunk-IZV5FTJC.js.map +1 -0
- package/dist/chunk-KF33GTWN.js +343 -0
- package/dist/chunk-KF33GTWN.js.map +1 -0
- package/dist/chunk-KSGQ5ODA.js +457 -0
- package/dist/chunk-KSGQ5ODA.js.map +1 -0
- package/dist/{chunk-OAM4WAAM.js → chunk-KZC6QRNR.js} +1513 -697
- package/dist/chunk-KZC6QRNR.js.map +1 -0
- package/dist/chunk-LJUMYUBO.js +218 -0
- package/dist/chunk-LJUMYUBO.js.map +1 -0
- package/dist/chunk-LSW2OJVV.js +380 -0
- package/dist/chunk-LSW2OJVV.js.map +1 -0
- package/dist/chunk-M357MHH3.js +2 -0
- package/dist/chunk-M357MHH3.js.map +1 -0
- package/dist/chunk-MK2TQO4Y.js +24 -0
- package/dist/chunk-MK2TQO4Y.js.map +1 -0
- package/dist/chunk-N7S72EXK.js +25 -0
- package/dist/chunk-N7S72EXK.js.map +1 -0
- package/dist/{chunk-XXWH2JLC.js → chunk-NKMYZFHA.js} +616 -621
- package/dist/chunk-NKMYZFHA.js.map +1 -0
- package/dist/chunk-NX4ADH73.js +14 -0
- package/dist/chunk-NX4ADH73.js.map +1 -0
- package/dist/chunk-O7F6UJO4.js +71 -0
- package/dist/chunk-O7F6UJO4.js.map +1 -0
- package/dist/chunk-OVB5WIG5.js +14064 -0
- package/dist/chunk-OVB5WIG5.js.map +1 -0
- package/dist/chunk-OYQQJL3J.js +16 -0
- package/dist/chunk-OYQQJL3J.js.map +1 -0
- package/dist/{chunk-H5YGYNXS.js → chunk-P4BNUO57.js} +60 -17
- package/dist/chunk-P4BNUO57.js.map +1 -0
- package/dist/{chunk-JVYQRRC4.js → chunk-PEHTX3V7.js} +21 -1
- package/dist/chunk-PEHTX3V7.js.map +1 -0
- package/dist/chunk-PMV53IMM.js +26 -0
- package/dist/chunk-PMV53IMM.js.map +1 -0
- package/dist/{chunk-KCGXPP5V.js → chunk-PYEOPA4M.js} +13 -7
- package/dist/chunk-PYEOPA4M.js.map +1 -0
- package/dist/{chunk-KZ73RL76.js → chunk-QHUE7E4N.js} +8 -3
- package/dist/chunk-QHUE7E4N.js.map +1 -0
- package/dist/chunk-QV3DJVRZ.js +11 -0
- package/dist/chunk-QV3DJVRZ.js.map +1 -0
- package/dist/chunk-R5SBNG7S.js +810 -0
- package/dist/chunk-R5SBNG7S.js.map +1 -0
- package/dist/chunk-RI42H5IU.js +326 -0
- package/dist/chunk-RI42H5IU.js.map +1 -0
- package/dist/chunk-S2QH6EZ5.js +211 -0
- package/dist/chunk-S2QH6EZ5.js.map +1 -0
- package/dist/chunk-SHLZMAJN.js +304 -0
- package/dist/chunk-SHLZMAJN.js.map +1 -0
- package/dist/chunk-TGXK4BAZ.js +293 -0
- package/dist/chunk-TGXK4BAZ.js.map +1 -0
- package/dist/{chunk-5YK2ZDIG.js → chunk-TNEZNMSN.js} +4 -10
- package/dist/chunk-TNEZNMSN.js.map +1 -0
- package/dist/{chunk-22KP6LR5.js → chunk-TXS65BB2.js} +3 -1
- package/dist/{chunk-22KP6LR5.js.map → chunk-TXS65BB2.js.map} +1 -1
- package/dist/chunk-UNJPZGNK.js +63 -0
- package/dist/chunk-UNJPZGNK.js.map +1 -0
- package/dist/{chunk-MZ2G2XBA.js → chunk-V5ZUJT2T.js} +205 -45
- package/dist/chunk-V5ZUJT2T.js.map +1 -0
- package/dist/chunk-VIUEOHXY.js +394 -0
- package/dist/chunk-VIUEOHXY.js.map +1 -0
- package/dist/chunk-WIUKB3LD.js +1911 -0
- package/dist/chunk-WIUKB3LD.js.map +1 -0
- package/dist/{chunk-ICA6R6TW.js → chunk-WNN7NO2N.js} +1451 -355
- package/dist/chunk-WNN7NO2N.js.map +1 -0
- package/dist/{chunk-YJFGAFBD.js → chunk-X5UVUIMF.js} +1892 -1223
- package/dist/chunk-X5UVUIMF.js.map +1 -0
- package/dist/chunk-XDA5QJE7.js +402 -0
- package/dist/chunk-XDA5QJE7.js.map +1 -0
- package/dist/{chunk-VZTQ73XT.js → chunk-XEA5BCMA.js} +3 -1
- package/dist/{chunk-VZTQ73XT.js.map → chunk-XEA5BCMA.js.map} +1 -1
- package/dist/chunk-XHF7OYAN.js +1150 -0
- package/dist/chunk-XHF7OYAN.js.map +1 -0
- package/dist/chunk-YSRBFJMQ.js +43 -0
- package/dist/chunk-YSRBFJMQ.js.map +1 -0
- package/dist/chunk-ZOZAPAUO.js +174 -0
- package/dist/chunk-ZOZAPAUO.js.map +1 -0
- package/dist/chunk-ZQV5W7YC.js +809 -0
- package/dist/chunk-ZQV5W7YC.js.map +1 -0
- package/dist/chunk-ZUWF4NF7.js +13 -0
- package/dist/chunk-ZUWF4NF7.js.map +1 -0
- package/dist/client.d.ts +16 -7
- package/dist/clipboard.js +3 -1
- package/dist/commands/types.d.ts +2 -0
- package/dist/components/anthropic-mark.d.ts +3 -0
- package/dist/components/approval-surface.d.ts +19 -6
- package/dist/components/artifacts/artifact-chrome.d.ts +120 -0
- package/dist/components/artifacts/artifact-sandbox.d.ts +30 -0
- package/dist/components/artifacts/artifact-surface.d.ts +4 -2
- package/dist/components/artifacts/chat-interactive-block.d.ts +29 -0
- package/dist/components/artifacts/deferred-chat-media.d.ts +15 -0
- package/dist/components/artifacts/document-editor.d.ts +4 -2
- package/dist/components/artifacts/editable-artifact-ui.d.ts +2 -1
- package/dist/components/artifacts/editable-artifact-view.d.ts +48 -0
- package/dist/components/artifacts/editable-document.d.ts +1 -1
- package/dist/components/artifacts/editable-presentation.d.ts +2 -2
- package/dist/components/artifacts/editable-spreadsheet.d.ts +8 -3
- package/dist/components/artifacts/index.d.ts +9 -2
- package/dist/components/artifacts/inline-html-document.d.ts +2 -0
- package/dist/components/artifacts/latest-task-runner.d.ts +15 -0
- package/dist/components/artifacts/presentation-editor.d.ts +6 -2
- package/dist/components/artifacts/published-html-artifact-frame.d.ts +23 -3
- package/dist/components/artifacts/session-artifact-viewer.d.ts +39 -0
- package/dist/components/artifacts/site-view.d.ts +26 -0
- package/dist/components/artifacts/spreadsheet-command-queue.d.ts +20 -0
- package/dist/components/artifacts/spreadsheet-download.d.ts +7 -0
- package/dist/components/artifacts/spreadsheet-general-display.d.ts +24 -0
- package/dist/components/artifacts/spreadsheet-grid.d.ts +10 -3
- package/dist/components/artifacts/spreadsheet-resize.d.ts +50 -0
- package/dist/components/artifacts/spreadsheet-submissions.d.ts +9 -0
- package/dist/components/artifacts/visualization-assets.gen.d.ts +2 -0
- package/dist/components/browser-select-control.d.ts +16 -0
- package/dist/components/browser-viewer.d.ts +11 -2
- package/dist/components/chat-composer.d.ts +21 -3
- package/dist/components/child-session-link.d.ts +9 -0
- package/dist/components/claude-mark.d.ts +3 -0
- package/dist/components/code-editor.d.ts +1 -4
- package/dist/components/composer-transcription-control.d.ts +7 -0
- package/dist/components/composer.d.ts +34 -67
- package/dist/components/computer-viewer.d.ts +1 -1
- package/dist/components/copy-button.d.ts +3 -1
- package/dist/components/desktop-viewer.d.ts +1 -1
- package/dist/components/fleet-tile.d.ts +2 -2
- package/dist/components/grok-mark.d.ts +26 -0
- package/dist/components/human-input-form.d.ts +28 -32
- package/dist/components/human-input-surface.d.ts +7 -2
- package/dist/components/linkified-text.d.ts +18 -0
- package/dist/components/machine-input-display.d.ts +22 -1
- package/dist/components/machines/agent-status-icon.d.ts +6 -0
- package/dist/components/machines/machine-detail.d.ts +7 -1
- package/dist/components/machines/machine-status.d.ts +48 -0
- package/dist/components/markdown-table-layout.d.ts +18 -0
- package/dist/components/markdown.d.ts +37 -4
- package/dist/components/message-timeline.d.ts +86 -7
- package/dist/components/model-mark.d.ts +29 -0
- package/dist/components/model-policy-picker-menu.d.ts +9 -0
- package/dist/components/model-policy-picker.d.ts +41 -25
- package/dist/components/new-conversation.d.ts +32 -0
- package/dist/components/open-geni-chat.d.ts +73 -0
- package/dist/components/open-geni-links.d.ts +68 -0
- package/dist/components/openrouter-mark.d.ts +6 -0
- package/dist/components/opper-mark.d.ts +7 -0
- package/dist/components/preview-loading.d.ts +2 -0
- package/dist/components/provider-recovery-notice.d.ts +16 -0
- package/dist/components/queue-item-content.d.ts +9 -0
- package/dist/components/rehype-secret-refs.d.ts +23 -0
- package/dist/components/remark-soft-line-breaks.d.ts +38 -0
- package/dist/components/sandbox-files.d.ts +3 -1
- package/dist/components/sandbox-workspace.d.ts +18 -0
- package/dist/components/secret-question-field.d.ts +31 -0
- package/dist/components/secret-ref-chip.d.ts +35 -0
- package/dist/components/session-capability-frame.d.ts +37 -0
- package/dist/components/session-chrome.d.ts +57 -8
- package/dist/components/session-commands-panel.d.ts +6 -0
- package/dist/components/session-commands.d.ts +6 -0
- package/dist/components/session-connection-request.d.ts +8 -0
- package/dist/components/session-conversation.d.ts +157 -0
- package/dist/components/session-list.d.ts +39 -0
- package/dist/components/session-mcp-capability-card.d.ts +41 -0
- package/dist/components/session-proxy-scope.d.ts +35 -0
- package/dist/components/session-status.d.ts +4 -1
- package/dist/components/session-usage-limit-notice.d.ts +39 -0
- package/dist/components/timeline-anchor.d.ts +24 -0
- package/dist/components/timeline-annotation-chrome.d.ts +25 -0
- package/dist/components/timeline-annotation-layout.d.ts +42 -0
- package/dist/components/timeline-annotation-markers.d.ts +8 -0
- package/dist/components/timeline-annotation-reveal-context.d.ts +4 -0
- package/dist/components/timeline-annotation-shared.d.ts +31 -0
- package/dist/components/timeline-annotations-dialog.d.ts +3 -2
- package/dist/components/timeline-annotations.d.ts +13 -3
- package/dist/components/timeline-reading-progress.d.ts +11 -0
- package/dist/components/timeline-search.d.ts +34 -0
- package/dist/components/timeline-settlement.d.ts +16 -0
- package/dist/components/tip-follow.d.ts +16 -0
- package/dist/components/tool-action-review.d.ts +47 -0
- package/dist/components/tool-review-history.d.ts +25 -0
- package/dist/components/usage-limit-notice.d.ts +49 -0
- package/dist/components/usage-member-list.d.ts +91 -0
- package/dist/components/usage-meter.d.ts +73 -0
- package/dist/components/use-viewer-menu-dismiss.d.ts +2 -0
- package/dist/components/user-message-body.d.ts +10 -1
- package/dist/composer-messages.d.ts +74 -0
- package/dist/composer-messages.js +9 -0
- package/dist/composer-messages.js.map +1 -0
- package/dist/composer-voice-events.d.ts +8 -0
- package/dist/composer.d.ts +5 -4
- package/dist/composer.js +26 -13
- package/dist/computer-viewer-GMLDXPON.js +20 -0
- package/dist/computer-viewer-GMLDXPON.js.map +1 -0
- package/dist/connect-account-identity.d.ts +8 -0
- package/dist/connect-accounts.d.ts +15 -0
- package/dist/connect-chooser.d.ts +18 -0
- package/dist/connect-panel.d.ts +18 -0
- package/dist/connect-setup.d.ts +18 -0
- package/dist/connect.d.ts +21 -0
- package/dist/connect.js +2149 -0
- package/dist/connect.js.map +1 -0
- package/dist/connection-catalog.d.ts +38 -0
- package/dist/connection-discovery.d.ts +12 -0
- package/dist/connection-installed.d.ts +17 -0
- package/dist/connection-logo.d.ts +9 -0
- package/dist/connection-service-logo.d.ts +8 -0
- package/dist/connection-service-presentation.d.ts +13 -0
- package/dist/connection-skeleton.d.ts +5 -0
- package/dist/connection-type-picker.d.ts +6 -0
- package/dist/conversation-timeline.d.ts +5 -0
- package/dist/desktop.d.ts +7 -0
- package/dist/desktop.js +27 -0
- package/dist/desktop.js.map +1 -0
- package/dist/device-authorization.d.ts +23 -0
- package/dist/diffs.d.ts +8 -0
- package/dist/diffs.js +15 -0
- package/dist/diffs.js.map +1 -0
- package/dist/discovery-cache.d.ts +5 -0
- package/dist/editor.d.ts +7 -0
- package/dist/editor.js +22 -0
- package/dist/editor.js.map +1 -0
- package/dist/embedded-new-voice-OCRNT6U5.js +18 -0
- package/dist/embedded-new-voice-OCRNT6U5.js.map +1 -0
- package/dist/embedded-voice-RPHPYVBT.js +18 -0
- package/dist/embedded-voice-RPHPYVBT.js.map +1 -0
- package/dist/{fleet-decision-row-GGCAT4E4.js → fleet-decision-row-SI63O5V4.js} +4 -1
- package/dist/fleet-decision-row-SI63O5V4.js.map +1 -0
- package/dist/hooks/latest-question.d.ts +25 -0
- package/dist/hooks/shared-machines-list.d.ts +4 -0
- package/dist/hooks/shared-query.d.ts +113 -0
- package/dist/hooks/use-attached-browsers.d.ts +1 -1
- package/dist/hooks/use-auth-runs.d.ts +1 -4
- package/dist/hooks/use-available-models.d.ts +1 -1
- package/dist/hooks/use-browser-frame-stream.d.ts +1 -1
- package/dist/hooks/use-browser-session.d.ts +12 -1
- package/dist/hooks/use-client-config-flags.d.ts +49 -0
- package/dist/hooks/use-codex-accounts.d.ts +59 -10
- package/dist/hooks/use-composer.d.ts +24 -2
- package/dist/hooks/use-computer-frame-stream.d.ts +1 -1
- package/dist/hooks/use-computer-input-posture.d.ts +13 -0
- package/dist/hooks/use-computer-session.d.ts +4 -0
- package/dist/hooks/use-connect.d.ts +23 -0
- package/dist/hooks/use-desktop-stream.d.ts +1 -1
- package/dist/hooks/use-file-attachments.d.ts +12 -0
- package/dist/hooks/use-goal.d.ts +2 -1
- package/dist/hooks/use-last-started-turn-policy.d.ts +5 -1
- package/dist/hooks/use-new-conversation.d.ts +56 -0
- package/dist/hooks/use-new-session-draft.d.ts +74 -0
- package/dist/hooks/use-realtime-voice-models.d.ts +7 -0
- package/dist/hooks/use-sandbox-files.d.ts +4 -1
- package/dist/hooks/use-session-conversation.d.ts +49 -0
- package/dist/hooks/use-session-events.d.ts +28 -7
- package/dist/hooks/use-session-mcp-approval-policy.d.ts +2 -2
- package/dist/hooks/use-session-model-account.d.ts +48 -0
- package/dist/hooks/use-supergrok-accounts.d.ts +7 -1
- package/dist/hooks/use-terminal-stream.d.ts +11 -5
- package/dist/hooks/use-usage.d.ts +40 -0
- package/dist/hooks/use-vaults.d.ts +53 -0
- package/dist/hooks/use-voice-input.d.ts +8 -1
- package/dist/hooks/use-workspace-edit.d.ts +4 -0
- package/dist/hooks/use-workspace-sessions.d.ts +22 -5
- package/dist/human-input-model.d.ts +122 -0
- package/dist/identity-link-accounts.d.ts +11 -0
- package/dist/identity-link-consent.d.ts +18 -0
- package/dist/index.d.ts +82 -20
- package/dist/index.js +2350 -6605
- package/dist/index.js.map +1 -1
- package/dist/interaction.d.ts +1 -1
- package/dist/interaction.js +14 -24
- package/dist/interaction.js.map +1 -1
- package/dist/latest-question-R77KWSUP.js +118 -0
- package/dist/latest-question-R77KWSUP.js.map +1 -0
- package/dist/lib/clipboard.d.ts +7 -0
- package/dist/lib/error-message.d.ts +7 -0
- package/dist/lib/format.d.ts +58 -4
- package/dist/lib/host-theme.d.ts +77 -0
- package/dist/lib/interaction-errors.d.ts +3 -0
- package/dist/lib/menu-styles.d.ts +22 -0
- package/dist/lib/notify-observer.d.ts +2 -0
- package/dist/lib/pierre-diffs-loader.d.ts +20 -0
- package/dist/lib/provider-recovery.d.ts +55 -0
- package/dist/lib/scrollbars.d.ts +11 -0
- package/dist/lib/terminal-input-readiness.d.ts +11 -0
- package/dist/lib/transient-retry.d.ts +25 -0
- package/dist/lib/workbench-peers.d.ts +36 -0
- package/dist/lib/xterm-theme.d.ts +7 -5
- package/dist/machines.js +9 -5
- package/dist/markdown-table-layout-3PV2UAAH.js +113 -0
- package/dist/markdown-table-layout-3PV2UAAH.js.map +1 -0
- package/dist/mcp-connection-status.d.ts +14 -0
- package/dist/model-mark-paths.d.ts +34 -0
- package/dist/model-mark-paths.js +16 -0
- package/dist/model-mark-paths.js.map +1 -0
- package/dist/model-picker-model.d.ts +111 -0
- package/dist/model-picker-model.js +25 -0
- package/dist/model-picker-model.js.map +1 -0
- package/dist/model-policy-picker-menu-7GJ5URPR.js +17 -0
- package/dist/model-policy-picker-menu-7GJ5URPR.js.map +1 -0
- package/dist/model-policy.d.ts +30 -3
- package/dist/model-policy.js +14 -1
- package/dist/native-previews.d.ts +28 -0
- package/dist/native-previews.js +82 -0
- package/dist/native-previews.js.map +1 -0
- package/dist/new-session-draft.d.ts +7 -0
- package/dist/new-session-draft.js +639 -0
- package/dist/new-session-draft.js.map +1 -0
- package/dist/notification-text.d.ts +27 -0
- package/dist/{noto-sans-arabic-loader-IA2T4X2A.js → noto-sans-arabic-loader-XSH2KYWJ.js} +3 -1
- package/dist/{noto-sans-arabic-loader-IA2T4X2A.js.map → noto-sans-arabic-loader-XSH2KYWJ.js.map} +1 -1
- package/dist/{noto-sans-jp-loader.generated-HFGLYBR3.js → noto-sans-jp-loader.generated-MR5L6V7K.js} +3 -1
- package/dist/{noto-sans-jp-loader.generated-HFGLYBR3.js.map → noto-sans-jp-loader.generated-MR5L6V7K.js.map} +1 -1
- package/dist/older-history.d.ts +3 -2
- package/dist/organization-model.d.ts +32 -0
- package/dist/organization-model.js +65 -0
- package/dist/organization-model.js.map +1 -0
- package/dist/{platform-activity-row-BJHUHXAT.js → platform-activity-row-5OCKOQWZ.js} +16 -78
- package/dist/platform-activity-row-5OCKOQWZ.js.map +1 -0
- package/dist/plugin-details.d.ts +14 -0
- package/dist/plugin-discovery.d.ts +25 -0
- package/dist/preview-loading-paint.d.ts +20 -0
- package/dist/provider.d.ts +25 -2
- package/dist/queue-presentation-model.d.ts +72 -0
- package/dist/queue-presentation-model.js +38 -0
- package/dist/queue-presentation-model.js.map +1 -0
- package/dist/{queue-surface-implementation-BSKUWHRI.js → queue-surface-implementation-GJBH7NKO.js} +65 -265
- package/dist/queue-surface-implementation-GJBH7NKO.js.map +1 -0
- package/dist/realtime/embedded-new-voice.d.ts +1 -0
- package/dist/realtime/embedded-voice.d.ts +1 -0
- package/dist/realtime/realtime-control.d.ts +4 -65
- package/dist/realtime/session-realtime.d.ts +78 -0
- package/dist/realtime.js +25 -1294
- package/dist/realtime.js.map +1 -1
- package/dist/sandbox-files-O27IPOZW.js +21 -0
- package/dist/sandbox-files-O27IPOZW.js.map +1 -0
- package/dist/sandbox-label-model.d.ts +30 -0
- package/dist/sandbox-label-model.js +20 -0
- package/dist/sandbox-label-model.js.map +1 -0
- package/dist/scrollbars.d.ts +1 -0
- package/dist/scrollbars.js +10 -0
- package/dist/scrollbars.js.map +1 -0
- package/dist/secret-reference-label.d.ts +14 -0
- package/dist/secrets-ui.d.ts +57 -0
- package/dist/session-agents-model.d.ts +10 -0
- package/dist/session-agents-model.js +25 -0
- package/dist/session-agents-model.js.map +1 -0
- package/dist/session-attention-model.d.ts +8 -0
- package/dist/session-attention-model.js +47 -0
- package/dist/session-attention-model.js.map +1 -0
- package/dist/session-auth-recommendation.d.ts +5 -0
- package/dist/session-capability-policy.d.ts +31 -0
- package/dist/session-feedback-model.d.ts +20 -0
- package/dist/session-feedback-model.js +56 -0
- package/dist/session-feedback-model.js.map +1 -0
- package/dist/session-list-model.d.ts +138 -0
- package/dist/session-list-model.js +274 -0
- package/dist/session-list-model.js.map +1 -0
- package/dist/session-realtime-7DJOIHQW.js +21 -0
- package/dist/session-realtime-7DJOIHQW.js.map +1 -0
- package/dist/session-realtime.d.ts +7 -0
- package/dist/session-realtime.js +19 -0
- package/dist/session-realtime.js.map +1 -0
- package/dist/session-status-model.d.ts +36 -0
- package/dist/session-ui.d.ts +39 -1
- package/dist/session-ui.js +126 -12
- package/dist/session-ui.js.map +1 -1
- package/dist/session.d.ts +8 -2
- package/dist/session.js +35 -20
- package/dist/site-snapshot.d.ts +14 -0
- package/dist/sites-ui.d.ts +24 -0
- package/dist/sites.d.ts +3 -0
- package/dist/sites.js +14 -0
- package/dist/sites.js.map +1 -0
- package/dist/skill-discovery.d.ts +47 -0
- package/dist/terminal.d.ts +8 -0
- package/dist/terminal.js +32 -0
- package/dist/terminal.js.map +1 -0
- package/dist/testing/session-scenarios.d.ts +10 -0
- package/dist/testing/session-scenarios.js +367 -0
- package/dist/testing/session-scenarios.js.map +1 -0
- package/dist/timeline/activity-rail.d.ts +11 -2
- package/dist/timeline/agent-identity.d.ts +30 -0
- package/dist/timeline/agent-row.d.ts +31 -0
- package/dist/timeline/allowance-exhausted-row.d.ts +24 -0
- package/dist/timeline/compaction-copy.d.ts +46 -0
- package/dist/timeline/entrance.d.ts +13 -1
- package/dist/timeline/focus-sequence.d.ts +9 -0
- package/dist/timeline/genie-copy.d.ts +3 -0
- package/dist/timeline/genie-loading.d.ts +47 -0
- package/dist/timeline/index.d.ts +10 -5
- package/dist/timeline/knowledge-receipt.d.ts +17 -0
- package/dist/timeline/message-sender.d.ts +19 -0
- package/dist/timeline/notice-presentation.d.ts +13 -0
- package/dist/timeline/parsers.d.ts +11 -0
- package/dist/timeline/patch-apply-command.d.ts +18 -0
- package/dist/timeline/platform-activity-presentation.d.ts +21 -0
- package/dist/timeline/platform-activity-row.d.ts +1 -2
- package/dist/timeline/presented-image.d.ts +11 -0
- package/dist/timeline/projection.d.ts +31 -2
- package/dist/timeline/provider-logo.d.ts +15 -0
- package/dist/timeline/question-nav-model.d.ts +23 -0
- package/dist/timeline/registry.d.ts +12 -1
- package/dist/timeline/retained-image.d.ts +18 -0
- package/dist/timeline/retained-loaders.d.ts +27 -0
- package/dist/timeline/rolling-activity.d.ts +11 -0
- package/dist/timeline/screenshot-lightbox.d.ts +23 -1
- package/dist/timeline/session-usage-limit-row.d.ts +11 -0
- package/dist/timeline/shared.d.ts +4 -1
- package/dist/timeline/startup-dispatch-details.d.ts +5 -0
- package/dist/timeline/startup-preference.d.ts +3 -0
- package/dist/timeline/startup-timings.d.ts +4 -0
- package/dist/timeline/tool-display-name.d.ts +5 -2
- package/dist/timeline/tool-presentation.d.ts +172 -0
- package/dist/timeline/turn-summary-model.d.ts +95 -0
- package/dist/timeline/turn-summary.d.ts +20 -54
- package/dist/timeline/types.d.ts +179 -7
- package/dist/timeline/work-presentation.d.ts +60 -0
- package/dist/timeline-annotation-markers-U3G66KUD.js +166 -0
- package/dist/timeline-annotation-markers-U3G66KUD.js.map +1 -0
- package/dist/timeline-annotation-selection-BI7QTPTZ.js +242 -0
- package/dist/timeline-annotation-selection-BI7QTPTZ.js.map +1 -0
- package/dist/timeline-annotations-dialog-FOMHSDTE.js +274 -0
- package/dist/timeline-annotations-dialog-FOMHSDTE.js.map +1 -0
- package/dist/timeline-model.d.ts +29 -0
- package/dist/timeline-model.js +254 -0
- package/dist/timeline-model.js.map +1 -0
- package/dist/usage/allowance-copy.d.ts +25 -0
- package/dist/usage/session-usage-limit.d.ts +88 -0
- package/dist/usage/summary.d.ts +35 -0
- package/dist/usage.d.ts +17 -0
- package/dist/usage.js +1187 -0
- package/dist/usage.js.map +1 -0
- package/dist/voice-recording-owner.d.ts +7 -0
- package/package.json +107 -7
- package/src/accounts.tsx +116 -14
- package/src/approvals.ts +8 -1
- package/src/artifacts-spreadsheet.ts +1 -0
- package/src/artifacts.ts +44 -0
- package/src/assets/README.md +8 -0
- package/src/assets/gmail.ico +0 -0
- package/src/assets/outlook.ico +0 -0
- package/src/capability-catalog-row.tsx +94 -0
- package/src/capability-logo-fallback.ts +22 -0
- package/src/client.ts +20 -31
- package/src/commands/registry.ts +18 -15
- package/src/commands/types.ts +2 -0
- package/src/components/anthropic-mark.tsx +10 -0
- package/src/components/approval-surface.tsx +401 -138
- package/src/components/artifacts/artifact-chrome.tsx +413 -0
- package/src/components/artifacts/artifact-sandbox.tsx +189 -0
- package/src/components/artifacts/artifact-surface.tsx +40 -20
- package/src/components/artifacts/chat-interactive-block.tsx +260 -0
- package/src/components/artifacts/deferred-chat-media.tsx +67 -0
- package/src/components/artifacts/document-editor.tsx +141 -16
- package/src/components/artifacts/editable-artifact-ui.tsx +4 -2
- package/src/components/artifacts/editable-artifact-view.tsx +197 -0
- package/src/components/artifacts/editable-artifact-workbench.tsx +5 -2
- package/src/components/artifacts/editable-document.tsx +37 -36
- package/src/components/artifacts/editable-presentation.tsx +36 -18
- package/src/components/artifacts/editable-spreadsheet.tsx +543 -103
- package/src/components/artifacts/index.ts +45 -0
- package/src/components/artifacts/inline-html-document.ts +24 -0
- package/src/components/artifacts/latest-task-runner.ts +49 -0
- package/src/components/artifacts/presentation-editor.tsx +323 -67
- package/src/components/artifacts/published-html-artifact-frame.tsx +122 -5
- package/src/components/artifacts/session-artifact-viewer.tsx +378 -0
- package/src/components/artifacts/site-view.tsx +121 -0
- package/src/components/artifacts/spreadsheet-canvas.ts +5 -10
- package/src/components/artifacts/spreadsheet-command-queue.ts +184 -0
- package/src/components/artifacts/spreadsheet-download.tsx +109 -0
- package/src/components/artifacts/spreadsheet-general-display.ts +43 -0
- package/src/components/artifacts/spreadsheet-grid.tsx +344 -144
- package/src/components/artifacts/spreadsheet-resize.tsx +421 -0
- package/src/components/artifacts/spreadsheet-submissions.tsx +46 -0
- package/src/components/artifacts/visualization-assets/base.css +1015 -0
- package/src/components/artifacts/visualization-assets/helpers.html +349 -0
- package/src/components/artifacts/visualization-assets.gen.ts +3 -0
- package/src/components/browser-select-control.tsx +312 -0
- package/src/components/browser-viewer.tsx +778 -318
- package/src/components/chat-composer.tsx +47 -5
- package/src/components/child-session-link.tsx +36 -0
- package/src/components/claude-mark.tsx +11 -0
- package/src/components/code-editor.tsx +13 -16
- package/src/components/composer-transcription-control.tsx +128 -30
- package/src/components/composer.tsx +404 -195
- package/src/components/computer-viewer.tsx +880 -253
- package/src/components/copy-button.tsx +13 -5
- package/src/components/desktop-viewer.tsx +1 -1
- package/src/components/enrollment-consent.tsx +1 -1
- package/src/components/enrollment-device-flow.tsx +1 -1
- package/src/components/file-browser.tsx +10 -14
- package/src/components/fleet-tile.tsx +9 -18
- package/src/components/generated-video-player.tsx +4 -2
- package/src/components/grok-mark.tsx +34 -0
- package/src/components/human-input-form.tsx +590 -283
- package/src/components/human-input-surface.tsx +11 -0
- package/src/components/interaction-intervention-banner.tsx +2 -2
- package/src/components/linkified-text.tsx +79 -0
- package/src/components/machine-card.tsx +35 -78
- package/src/components/machine-dock-bar.tsx +1 -1
- package/src/components/machine-input-display.ts +197 -3
- package/src/components/machines/agent-status-icon.tsx +31 -0
- package/src/components/machines/machine-detail.tsx +200 -31
- package/src/components/machines/machine-operation-policy.tsx +1 -1
- package/src/components/machines/machine-status.ts +241 -0
- package/src/components/machines-dashboard.tsx +2 -17
- package/src/components/markdown-table-layout.ts +143 -0
- package/src/components/markdown.tsx +466 -129
- package/src/components/message-timeline.tsx +2567 -728
- package/src/components/model-mark.tsx +102 -0
- package/src/components/model-picker.tsx +15 -4
- package/src/components/model-policy-picker-menu.tsx +371 -0
- package/src/components/model-policy-picker.tsx +256 -412
- package/src/components/new-conversation.tsx +221 -0
- package/src/components/open-geni-chat.tsx +309 -0
- package/src/components/open-geni-links.tsx +179 -0
- package/src/components/openrouter-mark.tsx +13 -0
- package/src/components/opper-mark.tsx +18 -0
- package/src/components/pierre-diff.tsx +41 -16
- package/src/components/pierre-file.tsx +35 -10
- package/src/components/preview-loading.tsx +109 -0
- package/src/components/provider-recovery-notice.tsx +49 -0
- package/src/components/queue-item-content.ts +14 -0
- package/src/components/queue-surface-implementation.tsx +51 -356
- package/src/components/queue-surface-state.tsx +3 -1
- package/src/components/rehype-secret-refs.ts +98 -0
- package/src/components/remark-soft-line-breaks.ts +166 -0
- package/src/components/sandbox-files.tsx +91 -15
- package/src/components/sandbox-terminal.tsx +84 -13
- package/src/components/sandbox-workspace.tsx +147 -51
- package/src/components/secret-question-field.tsx +324 -0
- package/src/components/secret-ref-chip.tsx +185 -0
- package/src/components/session-capability-frame.tsx +197 -0
- package/src/components/session-chrome.tsx +842 -251
- package/src/components/session-commands-panel.tsx +126 -0
- package/src/components/session-commands.tsx +18 -0
- package/src/components/session-connection-request.tsx +97 -0
- package/src/components/session-conversation.tsx +876 -0
- package/src/components/session-list.tsx +257 -0
- package/src/components/session-mcp-capability-card.tsx +680 -0
- package/src/components/session-proxy-scope.tsx +153 -0
- package/src/components/session-status.tsx +26 -17
- package/src/components/session-usage-limit-notice.tsx +174 -0
- package/src/components/timeline-anchor.tsx +119 -0
- package/src/components/timeline-annotation-chrome.tsx +196 -0
- package/src/components/timeline-annotation-layout.ts +268 -0
- package/src/components/timeline-annotation-markers.tsx +185 -0
- package/src/components/timeline-annotation-reveal-context.ts +9 -0
- package/src/components/timeline-annotation-selection.tsx +106 -54
- package/src/components/timeline-annotation-shared.ts +245 -0
- package/src/components/timeline-annotations-dialog.tsx +185 -128
- package/src/components/timeline-annotations.tsx +189 -45
- package/src/components/timeline-reading-progress.ts +80 -0
- package/src/components/timeline-search.tsx +168 -0
- package/src/components/timeline-settlement.ts +60 -0
- package/src/components/tip-follow.ts +52 -0
- package/src/components/tool-action-review.tsx +650 -0
- package/src/components/tool-review-history.tsx +88 -0
- package/src/components/tooltip.tsx +38 -5
- package/src/components/usage-limit-notice.tsx +179 -0
- package/src/components/usage-member-list.tsx +792 -0
- package/src/components/usage-meter.tsx +382 -0
- package/src/components/use-viewer-menu-dismiss.ts +33 -0
- package/src/components/user-message-body.tsx +27 -2
- package/src/components/workspace-dock.tsx +18 -1
- package/src/composer-messages.ts +150 -0
- package/src/composer-voice-events.ts +12 -0
- package/src/composer.ts +6 -1
- package/src/connect-account-identity.tsx +34 -0
- package/src/connect-accounts.tsx +233 -0
- package/src/connect-chooser.tsx +336 -0
- package/src/connect-panel.tsx +99 -0
- package/src/connect-setup.tsx +355 -0
- package/src/connect.ts +60 -0
- package/src/connection-assets.d.ts +4 -0
- package/src/connection-catalog.tsx +162 -0
- package/src/connection-discovery.tsx +238 -0
- package/src/connection-installed.tsx +51 -0
- package/src/connection-logo.tsx +37 -0
- package/src/connection-service-logo.tsx +55 -0
- package/src/connection-service-presentation.ts +46 -0
- package/src/connection-skeleton.tsx +16 -0
- package/src/connection-type-picker.tsx +36 -0
- package/src/conversation-timeline.ts +92 -0
- package/src/desktop.ts +24 -0
- package/src/device-authorization.tsx +98 -0
- package/src/diffs.ts +16 -0
- package/src/discovery-cache.ts +42 -0
- package/src/editor.ts +13 -0
- package/src/hooks/internal.ts +3 -2
- package/src/hooks/latest-question.ts +164 -0
- package/src/hooks/shared-machines-list.ts +34 -1
- package/src/hooks/shared-query.ts +721 -0
- package/src/hooks/use-attached-browsers.ts +1 -1
- package/src/hooks/use-auth-runs.ts +0 -27
- package/src/hooks/use-available-models.ts +21 -15
- package/src/hooks/use-browser-frame-stream.ts +19 -2
- package/src/hooks/use-browser-session.ts +680 -205
- package/src/hooks/use-browser-sessions.ts +32 -1
- package/src/hooks/use-client-config-flags.ts +118 -0
- package/src/hooks/use-codex-accounts.ts +247 -47
- package/src/hooks/use-composer.ts +276 -47
- package/src/hooks/use-computer-frame-stream.ts +25 -7
- package/src/hooks/use-computer-input-posture.ts +94 -0
- package/src/hooks/use-computer-session.ts +409 -95
- package/src/hooks/use-connect.ts +23 -0
- package/src/hooks/use-desktop-stream.ts +19 -28
- package/src/hooks/use-file-attachments.ts +80 -4
- package/src/hooks/use-goal.ts +107 -13
- package/src/hooks/use-last-started-turn-policy.ts +46 -14
- package/src/hooks/use-machines.ts +4 -0
- package/src/hooks/use-new-conversation.ts +374 -0
- package/src/hooks/use-new-session-draft.ts +813 -0
- package/src/hooks/use-realtime-voice-models.ts +46 -0
- package/src/hooks/use-sandbox-files.ts +68 -20
- package/src/hooks/use-session-background-commands.ts +22 -11
- package/src/hooks/use-session-capabilities.ts +3 -2
- package/src/hooks/use-session-conversation.ts +150 -0
- package/src/hooks/use-session-events.ts +703 -382
- package/src/hooks/use-session-lineage.ts +20 -16
- package/src/hooks/use-session-mcp-approval-policy.ts +13 -5
- package/src/hooks/use-session-model-account.ts +174 -0
- package/src/hooks/use-session.ts +53 -21
- package/src/hooks/use-slash-commands.ts +6 -11
- package/src/hooks/use-supergrok-accounts.ts +22 -8
- package/src/hooks/use-terminal-stream.ts +153 -27
- package/src/hooks/use-transcription.ts +6 -0
- package/src/hooks/use-turn-queue.ts +2 -1
- package/src/hooks/use-usage.ts +100 -0
- package/src/hooks/use-vaults.ts +153 -0
- package/src/hooks/use-video-artifact-playback.ts +1 -1
- package/src/hooks/use-voice-input.ts +127 -19
- package/src/hooks/use-workspace-capture.ts +3 -2
- package/src/hooks/use-workspace-edit.ts +23 -5
- package/src/hooks/use-workspace-sessions.ts +97 -32
- package/src/human-input-model.ts +359 -0
- package/src/identity-link-accounts.tsx +148 -0
- package/src/identity-link-consent.tsx +192 -0
- package/src/index.ts +262 -16
- package/src/interaction.ts +1 -0
- package/src/lib/clipboard.ts +29 -0
- package/src/lib/error-message.ts +37 -0
- package/src/lib/format.ts +213 -16
- package/src/lib/host-theme.ts +529 -0
- package/src/lib/interaction-errors.ts +15 -0
- package/src/lib/menu-styles.ts +44 -0
- package/src/lib/notify-observer.ts +15 -0
- package/src/lib/pierre-diffs-loader.ts +53 -0
- package/src/lib/provider-recovery.ts +243 -0
- package/src/lib/scrollbars.ts +30 -0
- package/src/lib/terminal-input-readiness.ts +51 -0
- package/src/lib/transient-retry.ts +99 -0
- package/src/lib/workbench-peers.ts +62 -0
- package/src/lib/xterm-theme.ts +23 -21
- package/src/mcp-connection-status.ts +35 -0
- package/src/model-mark-paths.ts +53 -0
- package/src/model-picker-model.ts +330 -0
- package/src/model-policy.ts +299 -74
- package/src/native-previews.ts +100 -0
- package/src/new-session-draft.ts +22 -0
- package/src/notification-text.ts +81 -0
- package/src/older-history.ts +22 -4
- package/src/organization-model.ts +118 -0
- package/src/plugin-details.tsx +185 -0
- package/src/plugin-discovery.tsx +196 -0
- package/src/preview-loading-paint.ts +68 -0
- package/src/provider.tsx +74 -15
- package/src/queue-presentation-model.ts +464 -0
- package/src/realtime/dropdown-menu.tsx +19 -12
- package/src/realtime/embedded-new-voice.tsx +1 -0
- package/src/realtime/embedded-voice.tsx +3 -0
- package/src/realtime/realtime-control.tsx +138 -501
- package/src/realtime/session-realtime.ts +566 -0
- package/src/sandbox-label-model.ts +53 -0
- package/src/scrollbars.ts +3 -0
- package/src/secret-reference-label.ts +43 -0
- package/src/secrets-ui.tsx +59 -0
- package/src/session-agents-model.ts +33 -0
- package/src/session-attention-model.ts +62 -0
- package/src/session-auth-recommendation.ts +48 -0
- package/src/session-capability-policy.ts +196 -0
- package/src/session-context.ts +3 -4
- package/src/session-feedback-model.ts +95 -0
- package/src/session-list-model.ts +434 -0
- package/src/session-realtime.ts +18 -0
- package/src/session-status-model.ts +99 -0
- package/src/session-ui.ts +98 -1
- package/src/session.ts +17 -1
- package/src/site-snapshot.ts +74 -0
- package/src/sites-ui.tsx +348 -0
- package/src/sites.ts +3 -0
- package/src/skill-discovery.tsx +208 -0
- package/src/terminal.ts +26 -0
- package/src/testing/session-scenarios.ts +404 -0
- package/src/timeline/activity-rail.tsx +242 -101
- package/src/timeline/agent-identity.tsx +84 -0
- package/src/timeline/agent-row.tsx +231 -0
- package/src/timeline/allowance-exhausted-row.tsx +86 -0
- package/src/timeline/compaction-copy.ts +115 -0
- package/src/timeline/entrance.tsx +28 -3
- package/src/timeline/fleet-decision-projection.ts +2 -1
- package/src/timeline/fleet-decision-row.tsx +1 -0
- package/src/timeline/focus-sequence.ts +44 -0
- package/src/timeline/genie-copy.ts +19 -0
- package/src/timeline/genie-loading.tsx +143 -0
- package/src/timeline/index.ts +30 -2
- package/src/timeline/knowledge-receipt.tsx +100 -0
- package/src/timeline/message-sender.tsx +71 -0
- package/src/timeline/notice-presentation.ts +48 -0
- package/src/timeline/parsers.ts +42 -2
- package/src/timeline/patch-apply-command.tsx +135 -0
- package/src/timeline/platform-activity-presentation.ts +166 -0
- package/src/timeline/platform-activity-row.tsx +15 -90
- package/src/timeline/presented-image.ts +63 -0
- package/src/timeline/projection.ts +1746 -76
- package/src/timeline/provider-logo.tsx +53 -0
- package/src/timeline/question-nav-model.ts +28 -0
- package/src/timeline/registry.ts +26 -4
- package/src/timeline/retained-image.ts +97 -0
- package/src/timeline/retained-loaders.ts +91 -0
- package/src/timeline/rolling-activity.tsx +80 -0
- package/src/timeline/screenshot-lightbox.tsx +228 -5
- package/src/timeline/session-usage-limit-row.tsx +42 -0
- package/src/timeline/shared.tsx +42 -15
- package/src/timeline/startup-dispatch-details.tsx +36 -0
- package/src/timeline/startup-preference.ts +33 -0
- package/src/timeline/startup-timings.tsx +145 -0
- package/src/timeline/tool-display-name.ts +19 -7
- package/src/timeline/tool-presentation.ts +1316 -0
- package/src/timeline/tool-renderers.tsx +835 -1138
- package/src/timeline/turn-summary-model.ts +343 -0
- package/src/timeline/turn-summary.tsx +272 -365
- package/src/timeline/types.ts +189 -6
- package/src/timeline/work-presentation.ts +189 -0
- package/src/timeline-model.ts +143 -0
- package/src/usage/allowance-copy.ts +64 -0
- package/src/usage/session-usage-limit.ts +266 -0
- package/src/usage/summary.ts +93 -0
- package/src/usage.ts +70 -0
- package/src/voice-recording-owner.ts +22 -0
- package/styles/compiled.css +2319 -748
- package/styles/connect.css +290 -0
- package/styles/connect.d.ts +1 -0
- package/styles/effective-tokens.css +1 -0
- package/styles/index.css +309 -9
- package/styles/responsive.css +99 -7
- package/styles/session-capability.css +44 -0
- package/styles/tokens.css +134 -66
- package/dist/browser-viewer-AEFHUYZK.js +0 -14
- package/dist/chunk-4MDLEHXL.js.map +0 -1
- package/dist/chunk-5YK2ZDIG.js.map +0 -1
- package/dist/chunk-D3UIAJKY.js.map +0 -1
- package/dist/chunk-ELIYWBZR.js.map +0 -1
- package/dist/chunk-H5YGYNXS.js.map +0 -1
- package/dist/chunk-HQVCKCLG.js +0 -9458
- package/dist/chunk-HQVCKCLG.js.map +0 -1
- package/dist/chunk-HUIKIDM5.js.map +0 -1
- package/dist/chunk-ICA6R6TW.js.map +0 -1
- package/dist/chunk-JVYQRRC4.js.map +0 -1
- package/dist/chunk-KCGXPP5V.js.map +0 -1
- package/dist/chunk-KZ73RL76.js.map +0 -1
- package/dist/chunk-LAKLF4PA.js +0 -141
- package/dist/chunk-LAKLF4PA.js.map +0 -1
- package/dist/chunk-MZ2G2XBA.js.map +0 -1
- package/dist/chunk-NEXLLTP4.js.map +0 -1
- package/dist/chunk-OAM4WAAM.js.map +0 -1
- package/dist/chunk-PEI6RANI.js.map +0 -1
- package/dist/chunk-RGALCTWO.js.map +0 -1
- package/dist/chunk-W6NFJXSA.js +0 -454
- package/dist/chunk-W6NFJXSA.js.map +0 -1
- package/dist/chunk-WSK7G5LE.js +0 -170
- package/dist/chunk-WSK7G5LE.js.map +0 -1
- package/dist/chunk-X4A66EWZ.js +0 -223
- package/dist/chunk-X4A66EWZ.js.map +0 -1
- package/dist/chunk-XXWH2JLC.js.map +0 -1
- package/dist/chunk-YFKJ7VZH.js +0 -268
- package/dist/chunk-YFKJ7VZH.js.map +0 -1
- package/dist/chunk-YJFGAFBD.js.map +0 -1
- package/dist/computer-viewer-FWEZISW4.js +0 -16
- package/dist/fleet-decision-row-GGCAT4E4.js.map +0 -1
- package/dist/hooks/use-environments.d.ts +0 -41
- package/dist/hooks/use-packs.d.ts +0 -32
- package/dist/platform-activity-row-BJHUHXAT.js.map +0 -1
- package/dist/queue-surface-implementation-BSKUWHRI.js.map +0 -1
- package/dist/timeline-annotation-selection-3L7LHGG2.js +0 -187
- package/dist/timeline-annotation-selection-3L7LHGG2.js.map +0 -1
- package/dist/timeline-annotations-dialog-U7EVLR75.js +0 -196
- package/dist/timeline-annotations-dialog-U7EVLR75.js.map +0 -1
- package/src/hooks/use-environments.ts +0 -182
- package/src/hooks/use-packs.ts +0 -157
- /package/dist/{browser-viewer-AEFHUYZK.js.map → browser-viewer-ZWR6MWJ7.js.map} +0 -0
- /package/dist/{computer-viewer-FWEZISW4.js.map → chat-interactive-block-BO2IWXVK.js.map} +0 -0
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import type { ClientModel, EffectiveSessionControl } from "@opengeni/sdk";
|
|
2
2
|
import { LayoutGroup, motion } from "motion/react";
|
|
3
|
-
import
|
|
3
|
+
import {
|
|
4
|
+
useImperativeHandle,
|
|
5
|
+
type ClipboardEvent,
|
|
6
|
+
type ComponentProps,
|
|
7
|
+
type ReactNode,
|
|
8
|
+
type Ref,
|
|
9
|
+
} from "react";
|
|
4
10
|
import type { SlashCommand } from "../commands/types";
|
|
5
11
|
import type { ComposerState } from "../hooks/use-composer";
|
|
6
12
|
import type { UseFileAttachmentsResult } from "../hooks/use-file-attachments";
|
|
@@ -25,10 +31,12 @@ import {
|
|
|
25
31
|
Root,
|
|
26
32
|
SendButton,
|
|
27
33
|
Status,
|
|
34
|
+
StopButton,
|
|
28
35
|
Surface,
|
|
29
36
|
useChatComposerController,
|
|
30
37
|
type ChatComposerMessages,
|
|
31
38
|
type ComposerControlLinks,
|
|
39
|
+
type ComposerRunControl,
|
|
32
40
|
type ResponsiveBasis,
|
|
33
41
|
} from "./composer";
|
|
34
42
|
import {
|
|
@@ -41,6 +49,14 @@ export { OPEN_WORKSTREAM_CONTROL_EVENT };
|
|
|
41
49
|
|
|
42
50
|
export type ChatComposerProps = {
|
|
43
51
|
composer: ComposerState;
|
|
52
|
+
/** Replace only the normal footer, inside the shared composer context.
|
|
53
|
+
* Confirmation, drafts, annotations and attachments remain native. */
|
|
54
|
+
footer?: ReactNode;
|
|
55
|
+
focusRef?: Ref<{ focusInput: () => void }>;
|
|
56
|
+
inputProps?: ComponentProps<typeof Input> & {
|
|
57
|
+
[attribute: `data-${string}`]: string | number | boolean | undefined;
|
|
58
|
+
};
|
|
59
|
+
surfaceClassName?: string;
|
|
44
60
|
/**
|
|
45
61
|
* Measurement surface for responsive chrome. Defaults to the historical
|
|
46
62
|
* viewport breakpoints; opt into `container` for narrow embedded panels.
|
|
@@ -89,6 +105,14 @@ export type ChatComposerProps = {
|
|
|
89
105
|
onClearView?: (() => void) | undefined;
|
|
90
106
|
/** Partial overrides for all composer-owned visible and accessible copy. */
|
|
91
107
|
messages?: Partial<ChatComposerMessages> | undefined;
|
|
108
|
+
/**
|
|
109
|
+
* Run control: `pause` (default) shows the workstream Pause control and
|
|
110
|
+
* paused strip; `stop` shows Stop only while `running`, and the next message
|
|
111
|
+
* continues a stopped conversation; `none` shows neither.
|
|
112
|
+
*/
|
|
113
|
+
runControl?: ComposerRunControl | undefined;
|
|
114
|
+
/** A response is in progress (drives the Stop control). */
|
|
115
|
+
running?: boolean | undefined;
|
|
92
116
|
};
|
|
93
117
|
|
|
94
118
|
/**
|
|
@@ -125,6 +149,12 @@ export function ChatComposer({
|
|
|
125
149
|
commandContext,
|
|
126
150
|
onClearView,
|
|
127
151
|
messages,
|
|
152
|
+
footer,
|
|
153
|
+
focusRef,
|
|
154
|
+
inputProps,
|
|
155
|
+
surfaceClassName,
|
|
156
|
+
runControl,
|
|
157
|
+
running,
|
|
128
158
|
}: ChatComposerProps) {
|
|
129
159
|
const controller = useChatComposerController({
|
|
130
160
|
delivery: composer,
|
|
@@ -141,24 +171,32 @@ export function ChatComposer({
|
|
|
141
171
|
onClearView,
|
|
142
172
|
onPaste,
|
|
143
173
|
messages,
|
|
174
|
+
runControl,
|
|
175
|
+
running,
|
|
144
176
|
});
|
|
145
177
|
const hasControls = Boolean(
|
|
146
178
|
attachments || models || controlsLeading || controlsStart || transcription,
|
|
147
179
|
);
|
|
148
180
|
const stackActions = hasControls && Boolean(actionsStart);
|
|
181
|
+
useImperativeHandle(focusRef, () => ({ focusInput: controller.focusInput }), [
|
|
182
|
+
controller.focusInput,
|
|
183
|
+
]);
|
|
149
184
|
|
|
150
185
|
return (
|
|
151
186
|
<>
|
|
152
187
|
<Root controller={controller} responsiveBasis={responsiveBasis} className={className}>
|
|
153
188
|
<Frame>
|
|
154
189
|
<CommandPalette />
|
|
155
|
-
<Surface>
|
|
190
|
+
<Surface className={surfaceClassName}>
|
|
156
191
|
<PausedState />
|
|
157
192
|
<RestoredResources />
|
|
158
193
|
<Attachments />
|
|
159
194
|
{header}
|
|
160
|
-
{composer.annotations &&
|
|
161
|
-
|
|
195
|
+
{composer.annotations &&
|
|
196
|
+
composer.annotations.length > 0 &&
|
|
197
|
+
composer.updateAnnotation &&
|
|
198
|
+
composer.removeAnnotation ? (
|
|
199
|
+
<div className="px-3.5 pt-2 md:px-4">
|
|
162
200
|
<TimelineAnnotationsChip
|
|
163
201
|
annotations={composer.annotations}
|
|
164
202
|
editable
|
|
@@ -166,12 +204,15 @@ export function ChatComposer({
|
|
|
166
204
|
onFocusConsumed={composer.clearAnnotationReviewTarget}
|
|
167
205
|
onUpdate={composer.updateAnnotation}
|
|
168
206
|
onRemove={composer.removeAnnotation}
|
|
207
|
+
onCommit={controller.focusInput}
|
|
169
208
|
/>
|
|
170
209
|
</div>
|
|
171
210
|
) : null}
|
|
172
|
-
<Input placeholder={placeholder} autoFocus={autoFocus} />
|
|
211
|
+
<Input {...inputProps} placeholder={placeholder} autoFocus={autoFocus} />
|
|
173
212
|
{controller.confirmState ? (
|
|
174
213
|
<Confirmation />
|
|
214
|
+
) : footer !== undefined ? (
|
|
215
|
+
footer
|
|
175
216
|
) : (
|
|
176
217
|
<Footer
|
|
177
218
|
data-og-stack-actions={stackActions ? "" : undefined}
|
|
@@ -226,6 +267,7 @@ export function ChatComposer({
|
|
|
226
267
|
>
|
|
227
268
|
{actionsStart}
|
|
228
269
|
<PauseButton />
|
|
270
|
+
<StopButton />
|
|
229
271
|
<SendButton />
|
|
230
272
|
</Actions>
|
|
231
273
|
</LayoutGroup>
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { isSessionId } from "../timeline/agent-identity";
|
|
2
|
+
import type { MachineInputMember } from "../timeline/types";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Source IDs are routing coordinates only for typed agent updates (child
|
|
6
|
+
* lifecycle notices, agent messages, and agent directions), never parsed from
|
|
7
|
+
* prose.
|
|
8
|
+
*/
|
|
9
|
+
export function ChildSessionLink({
|
|
10
|
+
kind,
|
|
11
|
+
sourceId,
|
|
12
|
+
onOpenSession,
|
|
13
|
+
}: Pick<MachineInputMember, "kind" | "sourceId"> & {
|
|
14
|
+
onOpenSession?: ((sessionId: string) => void) | undefined;
|
|
15
|
+
}) {
|
|
16
|
+
if (
|
|
17
|
+
!onOpenSession ||
|
|
18
|
+
!(
|
|
19
|
+
kind.startsWith("child_") ||
|
|
20
|
+
kind === "agent_message" ||
|
|
21
|
+
kind === "agent_steer_instruction"
|
|
22
|
+
) ||
|
|
23
|
+
!isSessionId(sourceId)
|
|
24
|
+
) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
return (
|
|
28
|
+
<button
|
|
29
|
+
type="button"
|
|
30
|
+
onClick={() => onOpenSession(sourceId)}
|
|
31
|
+
className="mt-1 rounded-og-sm text-og-xs font-medium og-link focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-og-accent"
|
|
32
|
+
>
|
|
33
|
+
View session
|
|
34
|
+
</button>
|
|
35
|
+
);
|
|
36
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { CLAUDE_MARK_PATH } from "../model-mark-paths";
|
|
2
|
+
import type { SVGProps } from "react";
|
|
3
|
+
|
|
4
|
+
/** ClaudeMark: Simple Icons, CC0; https://github.com/simple-icons/simple-icons */
|
|
5
|
+
export function ClaudeMark(props: SVGProps<SVGSVGElement>) {
|
|
6
|
+
return (
|
|
7
|
+
<svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true" {...props}>
|
|
8
|
+
<path d={CLAUDE_MARK_PATH} />
|
|
9
|
+
</svg>
|
|
10
|
+
);
|
|
11
|
+
}
|
|
@@ -8,8 +8,10 @@ import {
|
|
|
8
8
|
useMemo,
|
|
9
9
|
useRef,
|
|
10
10
|
useState,
|
|
11
|
+
useSyncExternalStore,
|
|
11
12
|
} from "react";
|
|
12
13
|
import { cn } from "../lib/cn";
|
|
14
|
+
import { codeEditorPeers, type CodeEditorLanguage } from "../lib/workbench-peers";
|
|
13
15
|
|
|
14
16
|
// --- Lazy CodeMirror surface ----------------------------------------------
|
|
15
17
|
//
|
|
@@ -42,19 +44,8 @@ type EditorBundle = {
|
|
|
42
44
|
languageExtension: unknown | null;
|
|
43
45
|
};
|
|
44
46
|
|
|
45
|
-
/** Language grammar loaders, keyed by the extension class we infer from the path. */
|
|
46
|
-
const LANGUAGE_LOADERS: Record<string, () => Promise<unknown>> = {
|
|
47
|
-
javascript: async () =>
|
|
48
|
-
(await import("@codemirror/lang-javascript")).javascript({ jsx: true, typescript: true }),
|
|
49
|
-
json: async () => (await import("@codemirror/lang-json")).json(),
|
|
50
|
-
python: async () => (await import("@codemirror/lang-python")).python(),
|
|
51
|
-
markdown: async () => (await import("@codemirror/lang-markdown")).markdown(),
|
|
52
|
-
css: async () => (await import("@codemirror/lang-css")).css(),
|
|
53
|
-
html: async () => (await import("@codemirror/lang-html")).html(),
|
|
54
|
-
};
|
|
55
|
-
|
|
56
47
|
/** Map a filename to a grammar key (or null for plain text — still fully editable). */
|
|
57
|
-
export function languageForPath(path: string):
|
|
48
|
+
export function languageForPath(path: string): string | null {
|
|
58
49
|
const name = path.split("/").pop() ?? path;
|
|
59
50
|
const ext = name.includes(".") ? (name.split(".").pop() ?? "").toLowerCase() : "";
|
|
60
51
|
switch (ext) {
|
|
@@ -182,6 +173,11 @@ export function CodeEditor({
|
|
|
182
173
|
}: CodeEditorProps) {
|
|
183
174
|
const [failed, setFailed] = useState(false);
|
|
184
175
|
const [bundle, setBundle] = useState<EditorBundle | null>(null);
|
|
176
|
+
const peerRevision = useSyncExternalStore(
|
|
177
|
+
codeEditorPeers.subscribe,
|
|
178
|
+
codeEditorPeers.revision,
|
|
179
|
+
codeEditorPeers.revision,
|
|
180
|
+
);
|
|
185
181
|
|
|
186
182
|
// The live buffer and its compare-and-swap baseline are one state value so a
|
|
187
183
|
// remote refresh cannot update one without the other.
|
|
@@ -233,12 +229,13 @@ export function CodeEditor({
|
|
|
233
229
|
|
|
234
230
|
// Resolve the lazy bundle (editor + keymap/Prec helpers + language grammar)
|
|
235
231
|
// once, re-resolving the grammar when the file's language class changes.
|
|
236
|
-
const langKey = useMemo(() => languageForPath(path), [path]);
|
|
232
|
+
const langKey = useMemo(() => languageForPath(path) as CodeEditorLanguage | null, [path]);
|
|
237
233
|
useEffect(() => {
|
|
238
234
|
let cancelled = false;
|
|
239
235
|
void (async () => {
|
|
240
236
|
try {
|
|
241
|
-
const
|
|
237
|
+
const peers = await codeEditorPeers.load();
|
|
238
|
+
const cmMod = peers.module as {
|
|
242
239
|
default: ReactCodeMirrorComponent;
|
|
243
240
|
keymap: { of: (binds: unknown[]) => unknown };
|
|
244
241
|
Prec: { highest: (ext: unknown) => unknown };
|
|
@@ -248,7 +245,7 @@ export function CodeEditor({
|
|
|
248
245
|
let languageExtension: unknown | null = null;
|
|
249
246
|
if (langKey) {
|
|
250
247
|
try {
|
|
251
|
-
languageExtension = (await
|
|
248
|
+
languageExtension = (await peers.languages?.[langKey]?.()) ?? null;
|
|
252
249
|
} catch {
|
|
253
250
|
languageExtension = null;
|
|
254
251
|
}
|
|
@@ -283,7 +280,7 @@ export function CodeEditor({
|
|
|
283
280
|
return () => {
|
|
284
281
|
cancelled = true;
|
|
285
282
|
};
|
|
286
|
-
}, [langKey]);
|
|
283
|
+
}, [langKey, peerRevision]);
|
|
287
284
|
|
|
288
285
|
// Keep the freshest save closure reachable from the (stable) keymap binding.
|
|
289
286
|
const saveRef = useRef<() => void>(() => {});
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import {
|
|
2
|
+
COMPOSER_VOICE_INPUT_START_EVENT,
|
|
3
|
+
composerVoiceEventScope,
|
|
4
|
+
} from "../composer-voice-events";
|
|
1
5
|
import type {
|
|
2
6
|
ClientVoiceInputConfig,
|
|
3
7
|
OpenGeniClient,
|
|
@@ -35,6 +39,10 @@ export type ComposerTranscriptionMessages = {
|
|
|
35
39
|
stop: string;
|
|
36
40
|
cancel: string;
|
|
37
41
|
retry: string;
|
|
42
|
+
/** Transcribe a recording that was stopped without transcribing or recovered. */
|
|
43
|
+
transcribeSaved: string;
|
|
44
|
+
/** Shown near the automatic stop; `{seconds}` is replaced. */
|
|
45
|
+
timeRemaining: string;
|
|
38
46
|
pauseRetrying: string;
|
|
39
47
|
requestingPermission: string;
|
|
40
48
|
recording: string;
|
|
@@ -50,6 +58,9 @@ export type ComposerTranscriptionMessages = {
|
|
|
50
58
|
errorPermissionDenied: string;
|
|
51
59
|
errorNotSupported: string;
|
|
52
60
|
errorUnavailable: string;
|
|
61
|
+
errorInsufficientCredits: string;
|
|
62
|
+
errorAllowanceExhausted: string;
|
|
63
|
+
errorPolicyBlocked: string;
|
|
53
64
|
errorTooLarge: string;
|
|
54
65
|
errorInvalidAudio: string;
|
|
55
66
|
errorStorageUnavailable: string;
|
|
@@ -61,28 +72,34 @@ export type ComposerTranscriptionMessages = {
|
|
|
61
72
|
const defaultMessages: ComposerTranscriptionMessages = {
|
|
62
73
|
start: "Start voice input",
|
|
63
74
|
stop: "Stop and transcribe",
|
|
64
|
-
cancel: "
|
|
75
|
+
cancel: "Stop without transcribing",
|
|
65
76
|
retry: "Retry voice input",
|
|
77
|
+
transcribeSaved: "Transcribe saved recording",
|
|
78
|
+
timeRemaining: "Stops and transcribes in {seconds}s",
|
|
66
79
|
pauseRetrying: "Pause automatic retry",
|
|
67
80
|
requestingPermission: "Requesting microphone…",
|
|
68
|
-
recording: "Recording. Press Escape to
|
|
81
|
+
recording: "Recording. Press Escape to stop without transcribing.",
|
|
69
82
|
saving: "Saving audio locally…",
|
|
70
83
|
transcribing: "Transcribing…",
|
|
71
|
-
retrying: "
|
|
72
|
-
recovered: "Recording
|
|
73
|
-
recoveredTranscript: "Transcript saved
|
|
84
|
+
retrying: "Saved. Retrying transcription…",
|
|
85
|
+
recovered: "Recording saved on this device.",
|
|
86
|
+
recoveredTranscript: "Transcript saved. Insert it into your draft?",
|
|
74
87
|
insertRecoveredTranscript: "Insert saved transcript",
|
|
75
88
|
discardRecovered: "Discard saved recording",
|
|
76
89
|
unavailableDisabled: "Voice input is unavailable while the composer is disabled.",
|
|
77
90
|
unavailable: "Voice input is unavailable for this workspace.",
|
|
78
|
-
errorPermissionDenied: "Microphone
|
|
91
|
+
errorPermissionDenied: "Microphone access is blocked. Allow it in site settings, then try again.",
|
|
79
92
|
errorNotSupported: "Voice input is not supported on this device.",
|
|
80
93
|
errorUnavailable: "Voice input is not configured.",
|
|
94
|
+
errorInsufficientCredits:
|
|
95
|
+
"Voice input needs credits. Recording saved; retry after adding credits.",
|
|
96
|
+
errorAllowanceExhausted: "Usage limit reached. Recording saved for later.",
|
|
97
|
+
errorPolicyBlocked: "Voice input isn't allowed for this account or workspace.",
|
|
81
98
|
errorTooLarge: "Recording is too large. Try a shorter message.",
|
|
82
99
|
errorInvalidAudio: "The recording could not be read. Try again.",
|
|
83
100
|
errorStorageUnavailable: "Voice input stopped because audio could not be saved safely.",
|
|
84
|
-
errorRetryable: "
|
|
85
|
-
errorHandoffUncertain: "Transcript
|
|
101
|
+
errorRetryable: "Saved. Transcription failed, retry when ready.",
|
|
102
|
+
errorHandoffUncertain: "Transcript saved. Check your draft before inserting again.",
|
|
86
103
|
errorUnknown: "Voice input could not start. Try again.",
|
|
87
104
|
};
|
|
88
105
|
|
|
@@ -146,12 +163,18 @@ export function ComposerTranscriptionControl({
|
|
|
146
163
|
const capturing = status === "requesting-permission" || status === "recording";
|
|
147
164
|
|
|
148
165
|
const cancelTranscription = transcription.cancel;
|
|
166
|
+
const discardTranscription = transcription.discard;
|
|
167
|
+
const hasRecoverableRecording = transcription.hasRecoverableRecording;
|
|
149
168
|
useEffect(() => {
|
|
150
169
|
if (!suppressed) return;
|
|
151
170
|
if (status === "recording" || status === "requesting-permission") {
|
|
152
171
|
cancelTranscription();
|
|
172
|
+
} else if (status === "error" && !hasRecoverableRecording) {
|
|
173
|
+
// Live voice took over: a stale start error (nothing saved) would only
|
|
174
|
+
// duplicate whatever live voice reports next to it.
|
|
175
|
+
void discardTranscription();
|
|
153
176
|
}
|
|
154
|
-
}, [cancelTranscription, status, suppressed]);
|
|
177
|
+
}, [cancelTranscription, discardTranscription, hasRecoverableRecording, status, suppressed]);
|
|
155
178
|
const active = capturing || status === "saving" || status === "transcribing";
|
|
156
179
|
const recoverable =
|
|
157
180
|
transcription.hasRecoverableRecording &&
|
|
@@ -187,11 +210,22 @@ export function ComposerTranscriptionControl({
|
|
|
187
210
|
? (errorMessage ?? messages.errorUnknown)
|
|
188
211
|
: unavailableMessage;
|
|
189
212
|
|
|
213
|
+
const recoveredLabel = savedTranscript
|
|
214
|
+
? (errorMessage ?? messages.recoveredTranscript)
|
|
215
|
+
: retrying
|
|
216
|
+
? messages.retrying
|
|
217
|
+
: status === "error"
|
|
218
|
+
? (errorMessage ?? messages.errorRetryable)
|
|
219
|
+
: messages.recovered;
|
|
220
|
+
|
|
190
221
|
function start(event: MouseEvent<HTMLButtonElement>) {
|
|
191
222
|
if (unavailableMessage) {
|
|
192
223
|
event.preventDefault();
|
|
193
224
|
return;
|
|
194
225
|
}
|
|
226
|
+
composerVoiceEventScope(event.currentTarget)?.dispatchEvent(
|
|
227
|
+
new Event(COMPOSER_VOICE_INPUT_START_EVENT),
|
|
228
|
+
);
|
|
195
229
|
void transcription.start();
|
|
196
230
|
}
|
|
197
231
|
|
|
@@ -213,6 +247,9 @@ export function ComposerTranscriptionControl({
|
|
|
213
247
|
)}
|
|
214
248
|
data-transcription-status={status}
|
|
215
249
|
data-transcription-capturing={capturing ? "" : undefined}
|
|
250
|
+
data-transcription-attention={
|
|
251
|
+
!capturing && (recoverable || (status === "error" && errorMessage)) ? "" : undefined
|
|
252
|
+
}
|
|
216
253
|
>
|
|
217
254
|
<span className="inline-flex min-w-0 items-center gap-1.5">
|
|
218
255
|
<AnimatePresence mode="popLayout" initial={false}>
|
|
@@ -228,14 +265,11 @@ export function ComposerTranscriptionControl({
|
|
|
228
265
|
"bg-og-surface-2/70 pl-2 pr-1 pointer-coarse:h-11",
|
|
229
266
|
)}
|
|
230
267
|
>
|
|
231
|
-
<span
|
|
232
|
-
{
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
: status === "error"
|
|
237
|
-
? (errorMessage ?? messages.errorRetryable)
|
|
238
|
-
: messages.recovered}
|
|
268
|
+
<span
|
|
269
|
+
title={recoveredLabel}
|
|
270
|
+
className="og-transcription-recovered-label max-w-56 line-clamp-2 text-og-xs leading-tight text-og-fg-muted max-sm:max-w-32"
|
|
271
|
+
>
|
|
272
|
+
{recoveredLabel}
|
|
239
273
|
</span>
|
|
240
274
|
<Tip
|
|
241
275
|
tip={
|
|
@@ -243,11 +277,14 @@ export function ComposerTranscriptionControl({
|
|
|
243
277
|
? messages.insertRecoveredTranscript
|
|
244
278
|
: retrying
|
|
245
279
|
? messages.pauseRetrying
|
|
246
|
-
:
|
|
280
|
+
: status === "recovered"
|
|
281
|
+
? messages.transcribeSaved
|
|
282
|
+
: messages.retry
|
|
247
283
|
}
|
|
248
284
|
>
|
|
249
285
|
<button
|
|
250
286
|
type="button"
|
|
287
|
+
disabled={composer.disabled && !retrying}
|
|
251
288
|
onClick={() =>
|
|
252
289
|
savedTranscript
|
|
253
290
|
? void transcription.insertSavedTranscript()
|
|
@@ -260,12 +297,14 @@ export function ComposerTranscriptionControl({
|
|
|
260
297
|
? messages.insertRecoveredTranscript
|
|
261
298
|
: retrying
|
|
262
299
|
? messages.pauseRetrying
|
|
263
|
-
:
|
|
300
|
+
: status === "recovered"
|
|
301
|
+
? messages.transcribeSaved
|
|
302
|
+
: messages.retry
|
|
264
303
|
}
|
|
265
304
|
className={cn(
|
|
266
305
|
"inline-flex size-7 shrink-0 items-center justify-center rounded-og-sm",
|
|
267
|
-
"bg-og-
|
|
268
|
-
"
|
|
306
|
+
"border border-og-primary-border bg-og-primary text-og-primary-fg hover:bg-og-primary-hover transition-colors duration-150 motion-reduce:transition-none",
|
|
307
|
+
"disabled:cursor-not-allowed disabled:opacity-50 pointer-coarse:size-11",
|
|
269
308
|
)}
|
|
270
309
|
>
|
|
271
310
|
{savedTranscript ? (
|
|
@@ -280,12 +319,13 @@ export function ComposerTranscriptionControl({
|
|
|
280
319
|
<Tip tip={messages.discardRecovered}>
|
|
281
320
|
<button
|
|
282
321
|
type="button"
|
|
322
|
+
disabled={composer.disabled}
|
|
283
323
|
onClick={() => void transcription.discard()}
|
|
284
324
|
aria-label={messages.discardRecovered}
|
|
285
325
|
className={cn(
|
|
286
326
|
"inline-flex size-7 shrink-0 items-center justify-center rounded-og-sm",
|
|
287
327
|
"text-og-fg-muted transition-colors duration-150 motion-reduce:transition-none",
|
|
288
|
-
"hover:bg-og-surface-3 hover:text-og-status-failed pointer-coarse:size-11",
|
|
328
|
+
"hover:bg-og-surface-3 hover:text-og-status-failed disabled:cursor-not-allowed disabled:opacity-50 pointer-coarse:size-11",
|
|
289
329
|
)}
|
|
290
330
|
>
|
|
291
331
|
<Trash2Icon className="size-3.5" />
|
|
@@ -321,6 +361,13 @@ export function ComposerTranscriptionControl({
|
|
|
321
361
|
stream={status === "recording" ? transcription.stream : null}
|
|
322
362
|
mode={status === "recording" ? "recording" : "transcribing"}
|
|
323
363
|
/>
|
|
364
|
+
{status === "recording" && transcription.recordingStartedAt !== null ? (
|
|
365
|
+
<RecordingClock
|
|
366
|
+
startedAt={transcription.recordingStartedAt}
|
|
367
|
+
maxSeconds={transcription.maxRecordingSeconds}
|
|
368
|
+
remainingLabel={messages.timeRemaining}
|
|
369
|
+
/>
|
|
370
|
+
) : null}
|
|
324
371
|
</span>
|
|
325
372
|
)}
|
|
326
373
|
{status === "recording" ? (
|
|
@@ -347,8 +394,8 @@ export function ComposerTranscriptionControl({
|
|
|
347
394
|
aria-label={messages.stop}
|
|
348
395
|
className={cn(
|
|
349
396
|
"inline-flex size-7 shrink-0 items-center justify-center rounded-og-sm",
|
|
350
|
-
"bg-og-
|
|
351
|
-
"
|
|
397
|
+
"border border-og-primary-border bg-og-primary text-og-primary-fg hover:bg-og-primary-hover",
|
|
398
|
+
"transition-colors duration-150 motion-reduce:transition-none pointer-coarse:size-11",
|
|
352
399
|
)}
|
|
353
400
|
>
|
|
354
401
|
<SquareIcon className="size-2.5 fill-current" />
|
|
@@ -392,14 +439,22 @@ export function ComposerTranscriptionControl({
|
|
|
392
439
|
)}
|
|
393
440
|
</AnimatePresence>
|
|
394
441
|
{status === "error" && errorMessage && !recoverable ? (
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
442
|
+
// Nothing is saved in this state, so dismissing loses no speech.
|
|
443
|
+
<button
|
|
444
|
+
type="button"
|
|
445
|
+
title={errorMessage}
|
|
446
|
+
aria-label={`Dismiss: ${errorMessage}`}
|
|
447
|
+
onClick={() => void transcription.discard()}
|
|
448
|
+
className={cn(
|
|
449
|
+
"inline-flex min-w-0 items-center gap-1 rounded-og-sm text-left outline-hidden",
|
|
450
|
+
"text-og-status-failed focus-visible:ring-2 focus-visible:ring-og-accent/45",
|
|
451
|
+
)}
|
|
452
|
+
>
|
|
453
|
+
<span className="og-transcription-error-label max-w-56 line-clamp-2 text-og-xs leading-tight max-sm:max-w-32">
|
|
400
454
|
{errorMessage}
|
|
401
455
|
</span>
|
|
402
|
-
|
|
456
|
+
<XIcon className="size-3 shrink-0 opacity-70" aria-hidden />
|
|
457
|
+
</button>
|
|
403
458
|
) : null}
|
|
404
459
|
<span
|
|
405
460
|
className="sr-only"
|
|
@@ -415,6 +470,42 @@ export function ComposerTranscriptionControl({
|
|
|
415
470
|
);
|
|
416
471
|
}
|
|
417
472
|
|
|
473
|
+
/** Elapsed dictation time; warns before the automatic stop-and-transcribe. */
|
|
474
|
+
function RecordingClock({
|
|
475
|
+
startedAt,
|
|
476
|
+
maxSeconds,
|
|
477
|
+
remainingLabel,
|
|
478
|
+
}: {
|
|
479
|
+
startedAt: number;
|
|
480
|
+
maxSeconds: number | null;
|
|
481
|
+
remainingLabel: string;
|
|
482
|
+
}) {
|
|
483
|
+
const [now, setNow] = useState(() => Date.now());
|
|
484
|
+
useEffect(() => {
|
|
485
|
+
const timer = setInterval(() => setNow(Date.now()), 500);
|
|
486
|
+
return () => clearInterval(timer);
|
|
487
|
+
}, []);
|
|
488
|
+
const elapsed = Math.max(0, Math.floor((now - startedAt) / 1_000));
|
|
489
|
+
const remaining = maxSeconds === null ? null : Math.max(0, maxSeconds - elapsed);
|
|
490
|
+
const warn = remaining !== null && remaining <= 15;
|
|
491
|
+
const label = `${Math.floor(elapsed / 60)}:${String(elapsed % 60).padStart(2, "0")}`;
|
|
492
|
+
return (
|
|
493
|
+
<span
|
|
494
|
+
data-recording-clock
|
|
495
|
+
title={warn ? remainingLabel.replace("{seconds}", String(remaining)) : undefined}
|
|
496
|
+
className={cn(
|
|
497
|
+
"min-w-[2.25rem] text-right text-og-xs tabular-nums",
|
|
498
|
+
warn ? "font-medium text-og-status-failed" : "text-og-fg-muted",
|
|
499
|
+
)}
|
|
500
|
+
>
|
|
501
|
+
{label}
|
|
502
|
+
{warn ? (
|
|
503
|
+
<span className="sr-only">{remainingLabel.replace("{seconds}", String(remaining))}</span>
|
|
504
|
+
) : null}
|
|
505
|
+
</span>
|
|
506
|
+
);
|
|
507
|
+
}
|
|
508
|
+
|
|
418
509
|
function VoiceWaveform({
|
|
419
510
|
stream,
|
|
420
511
|
mode,
|
|
@@ -516,6 +607,13 @@ function restingLevels(count: number): number[] {
|
|
|
516
607
|
|
|
517
608
|
function transcriptionErrorMessage(code: string, messages: ComposerTranscriptionMessages): string {
|
|
518
609
|
switch (code) {
|
|
610
|
+
case "insufficient_credits":
|
|
611
|
+
return messages.errorInsufficientCredits;
|
|
612
|
+
case "allowance_exhausted":
|
|
613
|
+
case "monthly_model_cost_limit":
|
|
614
|
+
return messages.errorAllowanceExhausted;
|
|
615
|
+
case "policy_blocked":
|
|
616
|
+
return messages.errorPolicyBlocked;
|
|
519
617
|
case "permission_denied":
|
|
520
618
|
return messages.errorPermissionDenied;
|
|
521
619
|
case "not_supported":
|