@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
|
@@ -17,6 +17,7 @@ import {
|
|
|
17
17
|
} from "@dnd-kit/sortable";
|
|
18
18
|
import { CSS } from "@dnd-kit/utilities";
|
|
19
19
|
import type { SessionPendingInputPreview, SessionTurn, TimelineAnnotation } from "@opengeni/sdk";
|
|
20
|
+
import { modelDisplayName } from "@opengeni/sdk/model-display";
|
|
20
21
|
import {
|
|
21
22
|
ArrowDownToLineIcon,
|
|
22
23
|
ArrowUpToLineIcon,
|
|
@@ -37,6 +38,7 @@ import {
|
|
|
37
38
|
} from "react";
|
|
38
39
|
|
|
39
40
|
import { DropdownMenu } from "radix-ui";
|
|
41
|
+
import { MENU_ITEM_CLASS, MENU_SEPARATOR_CLASS, MENU_SURFACE_CLASS } from "../lib/menu-styles";
|
|
40
42
|
import type { ComposerState } from "../hooks/use-composer";
|
|
41
43
|
import type { QueueMutationKind, UseTurnQueueResult } from "../hooks/use-turn-queue";
|
|
42
44
|
import {
|
|
@@ -45,9 +47,23 @@ import {
|
|
|
45
47
|
usePortalTokenStyle,
|
|
46
48
|
} from "../lib/use-portal-token-style";
|
|
47
49
|
import { requestQueueDraftEdit } from "./queue-draft-policy";
|
|
50
|
+
import {
|
|
51
|
+
projectPendingQueueMove,
|
|
52
|
+
QUEUE_COLLAPSED_PREVIEW_CHARACTERS,
|
|
53
|
+
QUEUE_REPLACE_DRAFT_COPY,
|
|
54
|
+
QUEUE_ROW_PREVIEW_CHARACTERS,
|
|
55
|
+
queueContentPreview,
|
|
56
|
+
queueMovePlan,
|
|
57
|
+
queuePromptPreview,
|
|
58
|
+
queueTurnPreview,
|
|
59
|
+
} from "../queue-presentation-model";
|
|
60
|
+
import { QUEUE_ITEM_CONTENT_UNAVAILABLE, queueItemContent } from "./queue-item-content";
|
|
48
61
|
import { QueueErrorAlert, QueueStoppingStatus } from "./queue-surface-state";
|
|
49
62
|
import { TimelineAnnotationsChip } from "./timeline-annotations";
|
|
50
63
|
|
|
64
|
+
// Queued prompts can be long; menu rows wrap instead of truncating.
|
|
65
|
+
const QUEUE_MENU_ITEM_CLASS = `${MENU_ITEM_CLASS} whitespace-normal break-words`;
|
|
66
|
+
|
|
51
67
|
/** The sole pending-input surface: compact above Goal, Agents, and composer. */
|
|
52
68
|
type QueueSurfaceCommonProps = {
|
|
53
69
|
/** Focus the composer owned by this queue after checkout/removal. */
|
|
@@ -121,36 +137,21 @@ export function QueueSurface({
|
|
|
121
137
|
if (oldIndex < 0) return queue.queue;
|
|
122
138
|
return arrayMove(queue.queue, oldIndex, keyboardDrag.projectedIndex);
|
|
123
139
|
}
|
|
124
|
-
if (
|
|
125
|
-
!pendingMove ||
|
|
126
|
-
pendingMove.baseVersion === null ||
|
|
127
|
-
queue.snapshot?.version !== pendingMove.baseVersion
|
|
128
|
-
) {
|
|
129
|
-
return queue.queue;
|
|
130
|
-
}
|
|
131
|
-
const byId = new Map(queue.queue.map((turn) => [turn.id, turn]));
|
|
132
|
-
const projected = pendingMove.turnIds.map((turnId) => byId.get(turnId));
|
|
133
140
|
// Never let an optimistic ordering projection omit or invent a row. Any
|
|
134
141
|
// concurrent authoritative membership change wins immediately.
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
}
|
|
138
|
-
return projected as SessionTurn[];
|
|
139
|
-
}, [keyboardDrag, pendingMove, queue.queue, queue.snapshot?.version]);
|
|
142
|
+
return projectPendingQueueMove(queue.queue, pendingMove, queue.snapshot);
|
|
143
|
+
}, [keyboardDrag, pendingMove, queue.queue, queue.snapshot]);
|
|
140
144
|
|
|
141
145
|
const ids = useMemo(() => displayedQueue.map((turn) => turn.id), [displayedQueue]);
|
|
142
146
|
const moveToIndex = useCallback(
|
|
143
147
|
async (turnId: string, nextIndex: number): Promise<void> => {
|
|
144
148
|
if (queue.mutating || pendingMove) return;
|
|
145
|
-
const
|
|
146
|
-
if (
|
|
147
|
-
const
|
|
148
|
-
if (oldIndex === boundedIndex) return;
|
|
149
|
-
const ordered = arrayMove(queue.queue, oldIndex, boundedIndex);
|
|
150
|
-
const beforeTurnId = ordered[boundedIndex + 1]?.id ?? null;
|
|
149
|
+
const plan = queueMovePlan(queue.queue, turnId, nextIndex);
|
|
150
|
+
if (!plan) return;
|
|
151
|
+
const { beforeTurnId, index: boundedIndex } = plan;
|
|
151
152
|
setPendingMove({
|
|
152
153
|
baseVersion: queue.snapshot?.version ?? null,
|
|
153
|
-
turnIds:
|
|
154
|
+
turnIds: plan.turnIds,
|
|
154
155
|
});
|
|
155
156
|
setAnnouncement(`Saving queued prompt at position ${boundedIndex + 1}.`);
|
|
156
157
|
try {
|
|
@@ -504,314 +505,6 @@ function PendingMachineInputs({
|
|
|
504
505
|
);
|
|
505
506
|
}
|
|
506
507
|
|
|
507
|
-
const QUEUE_ROW_PREVIEW_CHARACTERS = 360;
|
|
508
|
-
const QUEUE_COLLAPSED_PREVIEW_CHARACTERS = 180;
|
|
509
|
-
const QUEUE_PREVIEW_GRAPHEME_CONTEXT_CHARACTERS = 32;
|
|
510
|
-
const QUEUE_PREVIEW_REFERENCE_SAMPLE_CHARACTERS = 32;
|
|
511
|
-
const QUEUE_VISIBLE_END_IDENTITY_CHARACTERS = 18;
|
|
512
|
-
const QUEUE_PREVIEW_SEPARATOR = " … ";
|
|
513
|
-
const queuePreviewSegmenter = new Intl.Segmenter(undefined, { granularity: "grapheme" });
|
|
514
|
-
const queuePromptNonRenderingCodePoint =
|
|
515
|
-
/[\p{White_Space}\p{Control}\p{Default_Ignorable_Code_Point}]/u;
|
|
516
|
-
|
|
517
|
-
type BoundedPromptSample = {
|
|
518
|
-
value: string;
|
|
519
|
-
characters: number;
|
|
520
|
-
truncated: boolean;
|
|
521
|
-
};
|
|
522
|
-
|
|
523
|
-
type QueuePromptPreview = {
|
|
524
|
-
summary: string;
|
|
525
|
-
collapsedVisual: string;
|
|
526
|
-
visibleStart: string;
|
|
527
|
-
visibleIdentity: string | null;
|
|
528
|
-
visibleIdentityLabel: "End" | "Safe boundary" | null;
|
|
529
|
-
isFallback: boolean;
|
|
530
|
-
};
|
|
531
|
-
|
|
532
|
-
function annotationOnlyQueuePreview(count: number): QueuePromptPreview {
|
|
533
|
-
const summary = `${count} timeline ${count === 1 ? "annotation" : "annotations"}`;
|
|
534
|
-
return {
|
|
535
|
-
summary,
|
|
536
|
-
collapsedVisual: summary,
|
|
537
|
-
visibleStart: summary,
|
|
538
|
-
visibleIdentity: null,
|
|
539
|
-
visibleIdentityLabel: null,
|
|
540
|
-
isFallback: false,
|
|
541
|
-
};
|
|
542
|
-
}
|
|
543
|
-
|
|
544
|
-
function queueTurnPreview(
|
|
545
|
-
turn: SessionTurn | undefined,
|
|
546
|
-
maxCharacters: number,
|
|
547
|
-
): QueuePromptPreview {
|
|
548
|
-
if (!turn) return queuePromptPreview("", maxCharacters);
|
|
549
|
-
const annotations = turn.annotations ?? [];
|
|
550
|
-
return turn.prompt.length === 0 && annotations.length > 0
|
|
551
|
-
? annotationOnlyQueuePreview(annotations.length)
|
|
552
|
-
: queuePromptPreview(turn.prompt, maxCharacters);
|
|
553
|
-
}
|
|
554
|
-
|
|
555
|
-
/**
|
|
556
|
-
* Build a bounded head/tail summary of an arbitrary queued prompt. Sampling
|
|
557
|
-
* both ends distinguishes prompts with equal long prefixes. Each sampled edge
|
|
558
|
-
* has a small amount of grapheme context so ordinary emoji/combining sequences
|
|
559
|
-
* can be retained whole. A cluster that exceeds that context is omitted rather
|
|
560
|
-
* than fragmented, and malformed UTF-16 is replaced only in the summary. The
|
|
561
|
-
* durable prompt remains exact and no operation scans or copies it in full.
|
|
562
|
-
*/
|
|
563
|
-
function queuePromptPreview(prompt: string, maxCharacters: number): QueuePromptPreview {
|
|
564
|
-
const wholePromptProbe = samplePromptStart(prompt, maxCharacters + 1);
|
|
565
|
-
if (!wholePromptProbe.truncated && wholePromptProbe.characters <= maxCharacters) {
|
|
566
|
-
const summary = replaceLoneSurrogates(wholePromptProbe.value);
|
|
567
|
-
return hasVisiblePromptContent(summary)
|
|
568
|
-
? {
|
|
569
|
-
summary,
|
|
570
|
-
collapsedVisual: summary,
|
|
571
|
-
visibleStart: summary,
|
|
572
|
-
visibleIdentity: null,
|
|
573
|
-
visibleIdentityLabel: null,
|
|
574
|
-
isFallback: false,
|
|
575
|
-
}
|
|
576
|
-
: fallbackPromptPreview(prompt.length, wholePromptProbe.value, wholePromptProbe.value);
|
|
577
|
-
}
|
|
578
|
-
|
|
579
|
-
const suffixCharacters = Math.min(Math.floor(maxCharacters / 3), 120);
|
|
580
|
-
const prefixCharacters =
|
|
581
|
-
maxCharacters - codePointLength(QUEUE_PREVIEW_SEPARATOR) - suffixCharacters;
|
|
582
|
-
const prefixSample = samplePromptStart(
|
|
583
|
-
prompt,
|
|
584
|
-
prefixCharacters + QUEUE_PREVIEW_GRAPHEME_CONTEXT_CHARACTERS,
|
|
585
|
-
);
|
|
586
|
-
const suffixSample = samplePromptEnd(
|
|
587
|
-
prompt,
|
|
588
|
-
suffixCharacters + QUEUE_PREVIEW_GRAPHEME_CONTEXT_CHARACTERS,
|
|
589
|
-
);
|
|
590
|
-
const prefixSegments = segmentPromptSample(prefixSample.value);
|
|
591
|
-
const suffixSegments = segmentPromptSample(suffixSample.value);
|
|
592
|
-
|
|
593
|
-
// A cluster at a truncated sampling edge may continue outside the sample.
|
|
594
|
-
// Prefix sampling starts at the true source start, so only its last segment
|
|
595
|
-
// is ambiguous. Suffix sampling ends at the true source end, so its first is.
|
|
596
|
-
if (prefixSample.truncated) prefixSegments.pop();
|
|
597
|
-
if (suffixSample.truncated) {
|
|
598
|
-
let ambiguousSegment = suffixSegments.shift();
|
|
599
|
-
// A locally segmented leading fragment ending in ZWJ can join the next
|
|
600
|
-
// pictographic segment when omitted left context supplies its base. Keep
|
|
601
|
-
// backing off until that uncertainty no longer propagates to the right.
|
|
602
|
-
while (ambiguousSegment?.endsWith("\u200d") && suffixSegments.length > 0) {
|
|
603
|
-
ambiguousSegment = suffixSegments.shift();
|
|
604
|
-
}
|
|
605
|
-
// Regional Indicator pairing depends on the parity of the preceding run.
|
|
606
|
-
// If that run reaches the unknown sample boundary, omit all of its visible
|
|
607
|
-
// leading segments rather than potentially recombining halves of flags.
|
|
608
|
-
while (suffixSegments[0] && startsWithRegionalIndicator(suffixSegments[0])) {
|
|
609
|
-
suffixSegments.shift();
|
|
610
|
-
}
|
|
611
|
-
}
|
|
612
|
-
|
|
613
|
-
const prefix = takeWholeGraphemesFromStart(prefixSegments, prefixCharacters);
|
|
614
|
-
const suffix = takeWholeGraphemesFromEnd(suffixSegments, suffixCharacters);
|
|
615
|
-
const reference = boundedPromptSampleReference(
|
|
616
|
-
prompt.length,
|
|
617
|
-
prefixSample.value,
|
|
618
|
-
suffixSample.value,
|
|
619
|
-
);
|
|
620
|
-
|
|
621
|
-
if (!hasVisiblePromptContent(prefix) && !hasVisiblePromptContent(suffix)) {
|
|
622
|
-
return fallbackPromptPreview(prompt.length, prefixSample.value, suffixSample.value);
|
|
623
|
-
}
|
|
624
|
-
|
|
625
|
-
const safeSuffix = hasVisiblePromptContent(suffix)
|
|
626
|
-
? suffix
|
|
627
|
-
: promptPreviewFallbackLabel(reference);
|
|
628
|
-
const summary = `${prefix}${QUEUE_PREVIEW_SEPARATOR}${safeSuffix}`;
|
|
629
|
-
if (!hasVisiblePromptContent(prefix)) {
|
|
630
|
-
return {
|
|
631
|
-
summary,
|
|
632
|
-
collapsedVisual: summary,
|
|
633
|
-
visibleStart: safeSuffix,
|
|
634
|
-
visibleIdentity: null,
|
|
635
|
-
visibleIdentityLabel: null,
|
|
636
|
-
isFallback: false,
|
|
637
|
-
};
|
|
638
|
-
}
|
|
639
|
-
|
|
640
|
-
const endIdentity = takeWholeGraphemesFromEnd(
|
|
641
|
-
suffixSegments,
|
|
642
|
-
QUEUE_VISIBLE_END_IDENTITY_CHARACTERS,
|
|
643
|
-
);
|
|
644
|
-
return {
|
|
645
|
-
summary,
|
|
646
|
-
collapsedVisual: summary,
|
|
647
|
-
visibleStart: prefix,
|
|
648
|
-
visibleIdentity: hasVisiblePromptContent(endIdentity) ? endIdentity : `ref ${reference}`,
|
|
649
|
-
visibleIdentityLabel: hasVisiblePromptContent(endIdentity) ? "End" : "Safe boundary",
|
|
650
|
-
isFallback: false,
|
|
651
|
-
};
|
|
652
|
-
}
|
|
653
|
-
|
|
654
|
-
function fallbackPromptPreview(
|
|
655
|
-
promptLength: number,
|
|
656
|
-
startSample: string,
|
|
657
|
-
endSample: string,
|
|
658
|
-
): QueuePromptPreview {
|
|
659
|
-
const reference = boundedPromptSampleReference(promptLength, startSample, endSample);
|
|
660
|
-
const summary = promptPreviewFallbackLabel(reference);
|
|
661
|
-
return {
|
|
662
|
-
summary,
|
|
663
|
-
collapsedVisual: `Omitted · ${reference}`,
|
|
664
|
-
// The complete fallback remains the canonical accessible summary. Narrow
|
|
665
|
-
// collapsed/row layouts paint the bounded reference in a compact truthful
|
|
666
|
-
// form so ellipsis cannot hide the only identifying portion.
|
|
667
|
-
visibleStart: `Omitted · ${reference}`,
|
|
668
|
-
visibleIdentity: null,
|
|
669
|
-
visibleIdentityLabel: null,
|
|
670
|
-
isFallback: true,
|
|
671
|
-
};
|
|
672
|
-
}
|
|
673
|
-
|
|
674
|
-
function promptPreviewFallbackLabel(reference: string): string {
|
|
675
|
-
return `Content omitted at safe boundary · ref ${reference}`;
|
|
676
|
-
}
|
|
677
|
-
|
|
678
|
-
function boundedPromptSampleReference(
|
|
679
|
-
promptLength: number,
|
|
680
|
-
startSample: string,
|
|
681
|
-
endSample: string,
|
|
682
|
-
): string {
|
|
683
|
-
const head = samplePromptStart(startSample, QUEUE_PREVIEW_REFERENCE_SAMPLE_CHARACTERS).value;
|
|
684
|
-
const tail = samplePromptEnd(endSample, QUEUE_PREVIEW_REFERENCE_SAMPLE_CHARACTERS).value;
|
|
685
|
-
let hash = 0x811c9dc5;
|
|
686
|
-
for (const value of [String(promptLength), head, tail]) {
|
|
687
|
-
for (let index = 0; index < value.length; index += 1) {
|
|
688
|
-
hash ^= value.charCodeAt(index);
|
|
689
|
-
hash = Math.imul(hash, 0x01000193);
|
|
690
|
-
}
|
|
691
|
-
hash ^= 0xffff;
|
|
692
|
-
hash = Math.imul(hash, 0x01000193);
|
|
693
|
-
}
|
|
694
|
-
return (hash >>> 0).toString(16).padStart(8, "0").toUpperCase();
|
|
695
|
-
}
|
|
696
|
-
|
|
697
|
-
function hasVisiblePromptContent(value: string): boolean {
|
|
698
|
-
// Callers pass only the already-bounded whole/head/tail preview samples.
|
|
699
|
-
// Default-ignorables and controls can survive trim() while painting no row
|
|
700
|
-
// identity at all (for example ZWJ, VS16, bidi controls, and tag characters).
|
|
701
|
-
for (const character of value) {
|
|
702
|
-
if (!queuePromptNonRenderingCodePoint.test(character)) return true;
|
|
703
|
-
}
|
|
704
|
-
return false;
|
|
705
|
-
}
|
|
706
|
-
|
|
707
|
-
function samplePromptStart(prompt: string, maxCharacters: number): BoundedPromptSample {
|
|
708
|
-
let end = 0;
|
|
709
|
-
let characters = 0;
|
|
710
|
-
while (end < prompt.length && characters < maxCharacters) {
|
|
711
|
-
const first = prompt.charCodeAt(end);
|
|
712
|
-
end +=
|
|
713
|
-
isHighSurrogate(first) &&
|
|
714
|
-
end + 1 < prompt.length &&
|
|
715
|
-
isLowSurrogate(prompt.charCodeAt(end + 1))
|
|
716
|
-
? 2
|
|
717
|
-
: 1;
|
|
718
|
-
characters += 1;
|
|
719
|
-
}
|
|
720
|
-
return { value: prompt.slice(0, end), characters, truncated: end < prompt.length };
|
|
721
|
-
}
|
|
722
|
-
|
|
723
|
-
function samplePromptEnd(prompt: string, maxCharacters: number): BoundedPromptSample {
|
|
724
|
-
let start = prompt.length;
|
|
725
|
-
let characters = 0;
|
|
726
|
-
while (start > 0 && characters < maxCharacters) {
|
|
727
|
-
start -= 1;
|
|
728
|
-
if (
|
|
729
|
-
isLowSurrogate(prompt.charCodeAt(start)) &&
|
|
730
|
-
start > 0 &&
|
|
731
|
-
isHighSurrogate(prompt.charCodeAt(start - 1))
|
|
732
|
-
) {
|
|
733
|
-
start -= 1;
|
|
734
|
-
}
|
|
735
|
-
characters += 1;
|
|
736
|
-
}
|
|
737
|
-
return { value: prompt.slice(start), characters, truncated: start > 0 };
|
|
738
|
-
}
|
|
739
|
-
|
|
740
|
-
function segmentPromptSample(sample: string): string[] {
|
|
741
|
-
return Array.from(
|
|
742
|
-
queuePreviewSegmenter.segment(replaceLoneSurrogates(sample)),
|
|
743
|
-
({ segment }) => segment,
|
|
744
|
-
);
|
|
745
|
-
}
|
|
746
|
-
|
|
747
|
-
function replaceLoneSurrogates(value: string): string {
|
|
748
|
-
let sanitized = "";
|
|
749
|
-
for (let index = 0; index < value.length; index += 1) {
|
|
750
|
-
const current = value.charCodeAt(index);
|
|
751
|
-
if (
|
|
752
|
-
isHighSurrogate(current) &&
|
|
753
|
-
index + 1 < value.length &&
|
|
754
|
-
isLowSurrogate(value.charCodeAt(index + 1))
|
|
755
|
-
) {
|
|
756
|
-
sanitized += value.slice(index, index + 2);
|
|
757
|
-
index += 1;
|
|
758
|
-
} else if (isHighSurrogate(current) || isLowSurrogate(current)) {
|
|
759
|
-
sanitized += "�";
|
|
760
|
-
} else {
|
|
761
|
-
sanitized += value[index];
|
|
762
|
-
}
|
|
763
|
-
}
|
|
764
|
-
return sanitized;
|
|
765
|
-
}
|
|
766
|
-
|
|
767
|
-
function takeWholeGraphemesFromStart(segments: string[], maxCharacters: number): string {
|
|
768
|
-
const selected: string[] = [];
|
|
769
|
-
let characters = 0;
|
|
770
|
-
for (const segment of segments) {
|
|
771
|
-
const segmentCharacters = codePointLength(segment);
|
|
772
|
-
if (characters + segmentCharacters > maxCharacters) break;
|
|
773
|
-
selected.push(segment);
|
|
774
|
-
characters += segmentCharacters;
|
|
775
|
-
}
|
|
776
|
-
while (selected.at(-1)?.trim().length === 0) selected.pop();
|
|
777
|
-
return selected.join("");
|
|
778
|
-
}
|
|
779
|
-
|
|
780
|
-
function takeWholeGraphemesFromEnd(segments: string[], maxCharacters: number): string {
|
|
781
|
-
const selected: string[] = [];
|
|
782
|
-
let characters = 0;
|
|
783
|
-
for (let index = segments.length - 1; index >= 0; index -= 1) {
|
|
784
|
-
const segment = segments[index];
|
|
785
|
-
if (!segment) continue;
|
|
786
|
-
const segmentCharacters = codePointLength(segment);
|
|
787
|
-
if (characters + segmentCharacters > maxCharacters) break;
|
|
788
|
-
selected.unshift(segment);
|
|
789
|
-
characters += segmentCharacters;
|
|
790
|
-
}
|
|
791
|
-
while (selected[0]?.trim().length === 0) selected.shift();
|
|
792
|
-
while (selected.at(-1)?.trim().length === 0) selected.pop();
|
|
793
|
-
return selected.join("");
|
|
794
|
-
}
|
|
795
|
-
|
|
796
|
-
function codePointLength(value: string): number {
|
|
797
|
-
let characters = 0;
|
|
798
|
-
for (const _character of value) characters += 1;
|
|
799
|
-
return characters;
|
|
800
|
-
}
|
|
801
|
-
|
|
802
|
-
function startsWithRegionalIndicator(value: string): boolean {
|
|
803
|
-
const codePoint = value.codePointAt(0);
|
|
804
|
-
return codePoint !== undefined && codePoint >= 0x1f1e6 && codePoint <= 0x1f1ff;
|
|
805
|
-
}
|
|
806
|
-
|
|
807
|
-
function isHighSurrogate(codeUnit: number): boolean {
|
|
808
|
-
return codeUnit >= 0xd800 && codeUnit <= 0xdbff;
|
|
809
|
-
}
|
|
810
|
-
|
|
811
|
-
function isLowSurrogate(codeUnit: number): boolean {
|
|
812
|
-
return codeUnit >= 0xdc00 && codeUnit <= 0xdfff;
|
|
813
|
-
}
|
|
814
|
-
|
|
815
508
|
function QueuePrompt({
|
|
816
509
|
prompt,
|
|
817
510
|
annotations,
|
|
@@ -825,11 +518,9 @@ function QueuePrompt({
|
|
|
825
518
|
}) {
|
|
826
519
|
const [expanded, setExpanded] = useState(false);
|
|
827
520
|
const fullContentId = useId();
|
|
521
|
+
const content = queueItemContent(prompt, annotations.length);
|
|
828
522
|
const preview = useMemo(
|
|
829
|
-
() =>
|
|
830
|
-
prompt.length === 0 && annotations.length > 0
|
|
831
|
-
? annotationOnlyQueuePreview(annotations.length)
|
|
832
|
-
: queuePromptPreview(prompt, QUEUE_ROW_PREVIEW_CHARACTERS),
|
|
523
|
+
() => queueContentPreview(prompt, annotations.length, QUEUE_ROW_PREVIEW_CHARACTERS),
|
|
833
524
|
[annotations.length, prompt],
|
|
834
525
|
);
|
|
835
526
|
|
|
@@ -880,6 +571,14 @@ function QueuePrompt({
|
|
|
880
571
|
className={prompt ? "mt-1" : undefined}
|
|
881
572
|
/>
|
|
882
573
|
) : null}
|
|
574
|
+
{content === "unavailable" ? (
|
|
575
|
+
<p
|
|
576
|
+
className="text-og-control leading-5 text-fg-muted italic"
|
|
577
|
+
data-testid={`queue-prompt-unavailable-${index + 1}`}
|
|
578
|
+
>
|
|
579
|
+
{QUEUE_ITEM_CONTENT_UNAVAILABLE}
|
|
580
|
+
</p>
|
|
581
|
+
) : null}
|
|
883
582
|
{prompt ? (
|
|
884
583
|
<button
|
|
885
584
|
type="button"
|
|
@@ -953,7 +652,7 @@ function ReadOnlyQueueRow({
|
|
|
953
652
|
{turn.tools.length} tool{turn.tools.length === 1 ? "" : "s"}
|
|
954
653
|
</span>
|
|
955
654
|
) : null}
|
|
956
|
-
<span className="min-w-0 truncate">{turn.model}</span>
|
|
655
|
+
<span className="min-w-0 truncate">{modelDisplayName(turn.model)}</span>
|
|
957
656
|
<span className="shrink-0">{turn.reasoningEffort}</span>
|
|
958
657
|
</div>
|
|
959
658
|
</div>
|
|
@@ -1051,7 +750,7 @@ function SortableQueueRow({
|
|
|
1051
750
|
{turn.tools.length} tool{turn.tools.length === 1 ? "" : "s"}
|
|
1052
751
|
</span>
|
|
1053
752
|
) : null}
|
|
1054
|
-
<span className="min-w-0 truncate">{turn.model}</span>
|
|
753
|
+
<span className="min-w-0 truncate">{modelDisplayName(turn.model)}</span>
|
|
1055
754
|
<span className="shrink-0">{turn.reasoningEffort}</span>
|
|
1056
755
|
</div>
|
|
1057
756
|
{pending ? (
|
|
@@ -1075,6 +774,7 @@ function SortableQueueRow({
|
|
|
1075
774
|
disabled={pending !== null}
|
|
1076
775
|
onClick={onSteer}
|
|
1077
776
|
aria-label={`Steer queued prompt ${index + 1}`}
|
|
777
|
+
data-analytics-action="steer"
|
|
1078
778
|
title="Steer — interrupt the current turn and send this message now"
|
|
1079
779
|
className="inline-flex h-7 shrink-0 items-center justify-center gap-1 rounded-md px-2 text-og-control font-medium text-fg outline-hidden transition-[background-color] hover:bg-surface-2 focus-visible:ring-2 focus-visible:ring-ring/40 disabled:pointer-events-none disabled:opacity-50 pointer-coarse:min-h-[44px] pointer-coarse:min-w-[44px]"
|
|
1080
780
|
>
|
|
@@ -1118,48 +818,46 @@ function SortableQueueRow({
|
|
|
1118
818
|
<DropdownMenu.Content
|
|
1119
819
|
align="end"
|
|
1120
820
|
sideOffset={4}
|
|
1121
|
-
|
|
821
|
+
collisionPadding={8}
|
|
822
|
+
className={`${MENU_SURFACE_CLASS} og-root z-50 max-h-(--radix-dropdown-menu-content-available-height) w-52 max-w-[calc(100vw-16px)] overflow-x-hidden overflow-y-auto`}
|
|
1122
823
|
style={portalTokenStyle}
|
|
1123
824
|
data-testid={`queue-actions-menu-${index + 1}`}
|
|
1124
825
|
>
|
|
1125
826
|
{onEdit ? (
|
|
1126
827
|
<>
|
|
1127
|
-
<DropdownMenu.Item
|
|
1128
|
-
|
|
1129
|
-
onSelect={onEdit}
|
|
1130
|
-
>
|
|
1131
|
-
<PencilIcon className="size-3.5" /> Edit in composer
|
|
828
|
+
<DropdownMenu.Item className={QUEUE_MENU_ITEM_CLASS} onSelect={onEdit}>
|
|
829
|
+
<PencilIcon /> Edit in composer
|
|
1132
830
|
</DropdownMenu.Item>
|
|
1133
|
-
<DropdownMenu.Separator className=
|
|
831
|
+
<DropdownMenu.Separator className={MENU_SEPARATOR_CLASS} />
|
|
1134
832
|
</>
|
|
1135
833
|
) : null}
|
|
1136
834
|
<DropdownMenu.Item
|
|
1137
|
-
className=
|
|
835
|
+
className={QUEUE_MENU_ITEM_CLASS}
|
|
1138
836
|
disabled={index === 0}
|
|
1139
837
|
onSelect={() => onMove(0)}
|
|
1140
838
|
>
|
|
1141
|
-
<ArrowUpToLineIcon
|
|
839
|
+
<ArrowUpToLineIcon /> Move to top
|
|
1142
840
|
</DropdownMenu.Item>
|
|
1143
841
|
<DropdownMenu.Item
|
|
1144
|
-
className=
|
|
842
|
+
className={QUEUE_MENU_ITEM_CLASS}
|
|
1145
843
|
disabled={index === 0}
|
|
1146
844
|
onSelect={() => onMove(index - 1)}
|
|
1147
845
|
>
|
|
1148
846
|
Move up
|
|
1149
847
|
</DropdownMenu.Item>
|
|
1150
848
|
<DropdownMenu.Item
|
|
1151
|
-
className=
|
|
849
|
+
className={QUEUE_MENU_ITEM_CLASS}
|
|
1152
850
|
disabled={index === count - 1}
|
|
1153
851
|
onSelect={() => onMove(index + 1)}
|
|
1154
852
|
>
|
|
1155
853
|
Move down
|
|
1156
854
|
</DropdownMenu.Item>
|
|
1157
855
|
<DropdownMenu.Item
|
|
1158
|
-
className=
|
|
856
|
+
className={QUEUE_MENU_ITEM_CLASS}
|
|
1159
857
|
disabled={index === count - 1}
|
|
1160
858
|
onSelect={() => onMove(count - 1)}
|
|
1161
859
|
>
|
|
1162
|
-
<ArrowDownToLineIcon
|
|
860
|
+
<ArrowDownToLineIcon /> Move to bottom
|
|
1163
861
|
</DropdownMenu.Item>
|
|
1164
862
|
</DropdownMenu.Content>
|
|
1165
863
|
</DropdownMenu.Portal>
|
|
@@ -1168,25 +866,22 @@ function SortableQueueRow({
|
|
|
1168
866
|
</div>
|
|
1169
867
|
{confirmingReplace ? (
|
|
1170
868
|
<div className="mx-3 mb-2 rounded-md border border-status-waiting/30 bg-status-waiting/10 p-2 text-og-control text-fg">
|
|
1171
|
-
<p>
|
|
1172
|
-
<p className="mt-0.5 text-fg-muted">
|
|
1173
|
-
The current draft will be permanently discarded; this queued prompt is preserved until
|
|
1174
|
-
you confirm.
|
|
1175
|
-
</p>
|
|
869
|
+
<p>{QUEUE_REPLACE_DRAFT_COPY.title}</p>
|
|
870
|
+
<p className="mt-0.5 text-fg-muted">{QUEUE_REPLACE_DRAFT_COPY.detail}</p>
|
|
1176
871
|
<div className="mt-2 flex justify-end gap-1.5">
|
|
1177
872
|
<button
|
|
1178
873
|
type="button"
|
|
1179
874
|
className="rounded-md px-2 py-1 font-medium hover:bg-surface-2 focus-visible:ring-2 focus-visible:ring-ring/40"
|
|
1180
875
|
onClick={onCancelReplace}
|
|
1181
876
|
>
|
|
1182
|
-
|
|
877
|
+
{QUEUE_REPLACE_DRAFT_COPY.keep}
|
|
1183
878
|
</button>
|
|
1184
879
|
<button
|
|
1185
880
|
type="button"
|
|
1186
|
-
className="rounded-md bg-
|
|
881
|
+
className="rounded-md border border-og-primary-border bg-og-primary text-og-primary-fg px-2 py-1 font-medium hover:bg-og-primary-hover focus-visible:ring-2 focus-visible:ring-ring/40"
|
|
1187
882
|
onClick={onConfirmReplace}
|
|
1188
883
|
>
|
|
1189
|
-
|
|
884
|
+
{QUEUE_REPLACE_DRAFT_COPY.replace}
|
|
1190
885
|
</button>
|
|
1191
886
|
</div>
|
|
1192
887
|
</div>
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Loader2Icon, RotateCwIcon } from "lucide-react";
|
|
2
2
|
|
|
3
3
|
import type { UseTurnQueueResult } from "../hooks/use-turn-queue";
|
|
4
|
+
import { useErrorMessage } from "../lib/error-message";
|
|
4
5
|
|
|
5
6
|
type QueueStateProps = {
|
|
6
7
|
queue: UseTurnQueueResult;
|
|
@@ -60,6 +61,7 @@ export function QueueErrorAlert({
|
|
|
60
61
|
queue,
|
|
61
62
|
dividerBefore = false,
|
|
62
63
|
}: QueueStateProps & { dividerBefore?: boolean }) {
|
|
64
|
+
const formatError = useErrorMessage();
|
|
63
65
|
return (
|
|
64
66
|
<div className={`${dividerBefore ? "border-t border-border" : ""} p-2`}>
|
|
65
67
|
<div
|
|
@@ -74,7 +76,7 @@ export function QueueErrorAlert({
|
|
|
74
76
|
data-testid="queue-error-message"
|
|
75
77
|
dir="auto"
|
|
76
78
|
>
|
|
77
|
-
{(queue.mutationError ?? queue.error)
|
|
79
|
+
{formatError(queue.mutationError ?? queue.error)}
|
|
78
80
|
</span>
|
|
79
81
|
<button
|
|
80
82
|
type="button"
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import type { SecretTextTokenLike } from "../secrets-ui";
|
|
2
|
+
|
|
3
|
+
/* Turn secret references in rendered Markdown into chip placeholders
|
|
4
|
+
(`<span data-og-secret-ref="{{secret:…}}">`), which the Markdown `span`
|
|
5
|
+
renderer draws as a SecretRefChip.
|
|
6
|
+
|
|
7
|
+
Where references become chips:
|
|
8
|
+
- prose text (paragraphs, lists, tables, headings, emphasis);
|
|
9
|
+
- inline code whose whole content is exactly one reference, because the
|
|
10
|
+
agent often writes `{{secret:GitHub/password}}` in backticks and the chip
|
|
11
|
+
says the same thing more clearly.
|
|
12
|
+
Where they stay literal:
|
|
13
|
+
- fenced code blocks and inline code with anything else in it, so code reads
|
|
14
|
+
and copies exactly as written;
|
|
15
|
+
- link text, so a chip never nests inside a link.
|
|
16
|
+
|
|
17
|
+
Structural hast types keep the module dependency-free, like stream-reveal. */
|
|
18
|
+
|
|
19
|
+
type HastText = { type: "text"; value: string; position?: unknown };
|
|
20
|
+
type HastElement = {
|
|
21
|
+
type: "element";
|
|
22
|
+
tagName: string;
|
|
23
|
+
properties?: Record<string, unknown>;
|
|
24
|
+
children: HastChild[];
|
|
25
|
+
};
|
|
26
|
+
type HastChild = HastText | HastElement | { type: string; children?: HastChild[] };
|
|
27
|
+
type HastParent = { children?: HastChild[] };
|
|
28
|
+
|
|
29
|
+
const MARKER = "{{secret";
|
|
30
|
+
|
|
31
|
+
export function rehypeSecretRefs(options: { tokenize: (text: string) => SecretTextTokenLike[] }) {
|
|
32
|
+
const { tokenize } = options;
|
|
33
|
+
return (tree: HastParent) => {
|
|
34
|
+
walk(tree);
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
function walk(node: HastParent): void {
|
|
38
|
+
if (!node.children) return;
|
|
39
|
+
let changed = false;
|
|
40
|
+
const next: HastChild[] = [];
|
|
41
|
+
for (const child of node.children) {
|
|
42
|
+
if (child.type === "text" && (child as HastText).value.includes(MARKER)) {
|
|
43
|
+
const split = splitText(child as HastText);
|
|
44
|
+
if (split) {
|
|
45
|
+
next.push(...split);
|
|
46
|
+
changed = true;
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
} else if (child.type === "element") {
|
|
50
|
+
const element = child as HastElement;
|
|
51
|
+
if (element.tagName === "code") {
|
|
52
|
+
const chip = wholeReference(element);
|
|
53
|
+
if (chip) {
|
|
54
|
+
next.push(chip);
|
|
55
|
+
changed = true;
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
} else if (element.tagName !== "pre" && element.tagName !== "a") {
|
|
59
|
+
walk(element);
|
|
60
|
+
}
|
|
61
|
+
} else if ("children" in child) {
|
|
62
|
+
walk(child as HastParent);
|
|
63
|
+
}
|
|
64
|
+
next.push(child);
|
|
65
|
+
}
|
|
66
|
+
if (changed) node.children = next;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
function splitText(node: HastText): HastChild[] | null {
|
|
70
|
+
const tokens = tokenize(node.value);
|
|
71
|
+
if (!tokens.some((token) => token.type === "reference")) return null;
|
|
72
|
+
return tokens.map((token) =>
|
|
73
|
+
token.type === "reference"
|
|
74
|
+
? chipPlaceholder(token.reference.raw)
|
|
75
|
+
: ({ type: "text", value: token.type === "text" ? token.value : token.raw } as HastText),
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
function wholeReference(code: HastElement): HastElement | null {
|
|
80
|
+
if (code.children.length !== 1) return null;
|
|
81
|
+
const only = code.children[0]!;
|
|
82
|
+
if (only.type !== "text") return null;
|
|
83
|
+
const value = (only as HastText).value;
|
|
84
|
+
if (!value.includes(MARKER)) return null;
|
|
85
|
+
const tokens = tokenize(value.trim());
|
|
86
|
+
const token = tokens.length === 1 ? tokens[0]! : null;
|
|
87
|
+
return token?.type === "reference" ? chipPlaceholder(token.reference.raw) : null;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
function chipPlaceholder(raw: string): HastElement {
|
|
92
|
+
return {
|
|
93
|
+
type: "element",
|
|
94
|
+
tagName: "span",
|
|
95
|
+
properties: { dataOgSecretRef: raw },
|
|
96
|
+
children: [{ type: "text", value: raw }],
|
|
97
|
+
};
|
|
98
|
+
}
|